diff --git a/spine-cpp/spine-cpp/include/spine/ContainerUtil.h b/spine-cpp/spine-cpp/include/spine/ContainerUtil.h index 06edc3c2f..c7e8bc125 100644 --- a/spine-cpp/spine-cpp/include/spine/ContainerUtil.h +++ b/spine-cpp/spine-cpp/include/spine/ContainerUtil.h @@ -49,8 +49,8 @@ namespace Spine { static T* findWithName(Vector& items, const String& name) { assert(name.length() > 0); - for (T** i = items.begin(); i != items.end(); ++i) { - T* item = (*i); + for (size_t i = 0; i < items.size(); ++i) { + T* item = items[i]; if (item->getName() == name) { return item; } @@ -81,8 +81,8 @@ namespace Spine { static T* findWithDataName(Vector& items, const String& name) { assert(name.length() > 0); - for (T** i = items.begin(); i != items.end(); ++i) { - T* item = (*i); + for (size_t i = 0; i < items.size(); ++i) { + T* item = items[i]; if (item->getData().getName() == name) { return item; } diff --git a/spine-cpp/spine-cpp/include/spine/Pool.h b/spine-cpp/spine-cpp/include/spine/Pool.h index d14fceb3b..1e19d4c99 100644 --- a/spine-cpp/spine-cpp/include/spine/Pool.h +++ b/spine-cpp/spine-cpp/include/spine/Pool.h @@ -49,7 +49,7 @@ namespace Spine { T* obtain() { if (_objects.size() > 0) { - T** object = _objects.end(); + T** object = &_objects[_objects.size() - 1]; T* ret = *object; _objects.removeAt(_objects.size() - 1); diff --git a/spine-cpp/spine-cpp/include/spine/SkeletonClipping.h b/spine-cpp/spine-cpp/include/spine/SkeletonClipping.h index cbfb65af8..60ff790b1 100644 --- a/spine-cpp/spine-cpp/include/spine/SkeletonClipping.h +++ b/spine-cpp/spine-cpp/include/spine/SkeletonClipping.h @@ -69,7 +69,7 @@ namespace Spine { /** Clips the input triangle against the convex, clockwise clipping area. If the triangle lies entirely within the clipping * area, false is returned. The clipping area must duplicate the first vertex at the end of the vertices list. */ - bool clip(float x1, float y1, float x2, float y2, float x3, float y3, Vector& clippingArea, Vector& output); + bool clip(float x1, float y1, float x2, float y2, float x3, float y3, Vector* clippingArea, Vector* output); static void makeClockwise(Vector& polygon); }; diff --git a/spine-cpp/spine-cpp/include/spine/Vector.h b/spine-cpp/spine-cpp/include/spine/Vector.h index 8fce0bd40..b53be1921 100644 --- a/spine-cpp/spine-cpp/include/spine/Vector.h +++ b/spine-cpp/spine-cpp/include/spine/Vector.h @@ -157,14 +157,6 @@ namespace Spine { return _buffer[inIndex]; } - T* begin() { - return &_buffer[0]; - } - - T* end() { - return &_buffer[_size]; - } - friend bool operator==(Vector& lhs, Vector& rhs) { if (lhs.size() != rhs.size()) { return false; @@ -188,7 +180,7 @@ namespace Spine { size_t _capacity; T* _buffer; - T* allocate(size_t n) { + inline T* allocate(size_t n) { assert(n > 0); T* ptr = SpineExtension::alloc(n, __FILE__, __LINE__); @@ -198,20 +190,17 @@ namespace Spine { return ptr; } - void deallocate(T* buffer) { + inline void deallocate(T* buffer) { if (_buffer) { SpineExtension::free(buffer, __FILE__, __LINE__); } } - void construct(T* buffer, const T& val) { - /// This is a placement new operator - /// which basically means we are contructing a new object - /// using pre-allocated memory + inline void construct(T* buffer, const T& val) { new (buffer) T(val); } - void destroy(T* buffer) { + inline void destroy(T* buffer) { buffer->~T(); } }; diff --git a/spine-cpp/spine-cpp/src/spine/IkConstraint.cpp b/spine-cpp/spine-cpp/src/spine/IkConstraint.cpp index 753ac6848..af6424480 100644 --- a/spine-cpp/spine-cpp/src/spine/IkConstraint.cpp +++ b/spine-cpp/spine-cpp/src/spine/IkConstraint.cpp @@ -248,9 +248,8 @@ namespace Spine { _bendDirection(data.getBendDirection()), _target(skeleton.findBone(data.getTarget()->getName())) { _bones.ensureCapacity(_data.getBones().size()); - for (BoneData** i = _data.getBones().begin(); i != _data.getBones().end(); ++i) { - BoneData* boneData = (*i); - + for (size_t i = 0; i < _data.getBones().size(); i++) { + BoneData* boneData = _data.getBones()[i]; _bones.add(skeleton.findBone(boneData->getName())); } } diff --git a/spine-cpp/spine-cpp/src/spine/PathConstraint.cpp b/spine-cpp/spine-cpp/src/spine/PathConstraint.cpp index 629e59558..c92ba15a3 100644 --- a/spine-cpp/spine-cpp/src/spine/PathConstraint.cpp +++ b/spine-cpp/spine-cpp/src/spine/PathConstraint.cpp @@ -59,9 +59,8 @@ namespace Spine { _rotateMix(data.getRotateMix()), _translateMix(data.getTranslateMix()) { _bones.ensureCapacity(_data.getBones().size()); - for (BoneData** i = _data.getBones().begin(); i != _data.getBones().end(); ++i) { - BoneData* boneData = (*i); - + for (size_t i = 0; i < _data.getBones().size(); i++) { + BoneData* boneData = _data.getBones()[i]; _bones.add(skeleton.findBone(boneData->getName())); } diff --git a/spine-cpp/spine-cpp/src/spine/Skeleton.cpp b/spine-cpp/spine-cpp/src/spine/Skeleton.cpp index 49992ff8e..889eed5d5 100644 --- a/spine-cpp/spine-cpp/src/spine/Skeleton.cpp +++ b/spine-cpp/spine-cpp/src/spine/Skeleton.cpp @@ -63,8 +63,8 @@ namespace Spine { _x(0), _y(0) { _bones.ensureCapacity(_data->getBones().size()); - for (BoneData** i = _data->getBones().begin(); i != _data->getBones().end(); ++i) { - BoneData* data = (*i); + for (size_t i = 0; i < _data->getBones().size(); ++i) { + BoneData* data = _data->getBones()[i]; Bone* bone; if (data->getParent() == NULL) { @@ -81,8 +81,8 @@ namespace Spine { _slots.ensureCapacity(_data->getSlots().size()); _drawOrder.ensureCapacity(_data->getSlots().size()); - for (SlotData** i = _data->getSlots().begin(); i != _data->getSlots().end(); ++i) { - SlotData* data = (*i); + for (size_t i = 0; i < _data->getSlots().size(); ++i) { + SlotData* data = _data->getSlots()[i]; Bone* bone = _bones[data->getBoneData().getIndex()]; Slot* slot = new (__FILE__, __LINE__) Slot(*data, *bone); @@ -92,8 +92,8 @@ namespace Spine { } _ikConstraints.ensureCapacity(_data->getIkConstraints().size()); - for (IkConstraintData** i = _data->getIkConstraints().begin(); i != _data->getIkConstraints().end(); ++i) { - IkConstraintData* data = (*i); + for (size_t i = 0; i < _data->getIkConstraints().size(); ++i) { + IkConstraintData* data = _data->getIkConstraints()[i]; IkConstraint* constraint = new (__FILE__, __LINE__) IkConstraint(*data, *this); @@ -101,8 +101,8 @@ namespace Spine { } _transformConstraints.ensureCapacity(_data->getTransformConstraints().size()); - for (TransformConstraintData** i = _data->getTransformConstraints().begin(); i != _data->getTransformConstraints().end(); ++i) { - TransformConstraintData* data = (*i); + for (size_t i = 0; i < _data->getTransformConstraints().size(); ++i) { + TransformConstraintData* data = _data->getTransformConstraints()[i]; TransformConstraint* constraint = new (__FILE__, __LINE__) TransformConstraint(*data, *this); @@ -110,8 +110,8 @@ namespace Spine { } _pathConstraints.ensureCapacity(_data->getPathConstraints().size()); - for (PathConstraintData** i = _data->getPathConstraints().begin(); i != _data->getPathConstraints().end(); ++i) { - PathConstraintData* data = (*i); + for (size_t i = 0; i < _data->getPathConstraints().size(); ++i) { + PathConstraintData* data = _data->getPathConstraints()[i]; PathConstraint* constraint = new (__FILE__, __LINE__) PathConstraint(*data, *this); @@ -403,8 +403,8 @@ namespace Spine { float maxX = std::numeric_limits::min(); float maxY = std::numeric_limits::min(); - for (Slot** i = _drawOrder.begin(); i != _drawOrder.end(); ++i) { - Slot* slot = (*i); + for (size_t i = 0; i < _drawOrder.size(); ++i) { + Slot* slot = _drawOrder[i]; int verticesLength = 0; Attachment* attachment = slot->getAttachment(); @@ -672,8 +672,8 @@ namespace Spine { } void Skeleton::sortReset(Vector& bones) { - for (Bone** i = bones.begin(); i != bones.end(); ++i) { - Bone* bone = (*i); + for (size_t i = 0; i < bones.size(); ++i) { + Bone* bone = bones[i]; if (bone->_sorted) { sortReset(bone->getChildren()); } diff --git a/spine-cpp/spine-cpp/src/spine/SkeletonClipping.cpp b/spine-cpp/spine-cpp/src/spine/SkeletonClipping.cpp index 005cf909f..72386f60d 100644 --- a/spine-cpp/spine-cpp/src/spine/SkeletonClipping.cpp +++ b/spine-cpp/spine-cpp/src/spine/SkeletonClipping.cpp @@ -56,8 +56,8 @@ namespace Spine { _clippingPolygons = clippingPolygons; - for (Vector** i = _clippingPolygons.begin(); i != _clippingPolygons.end(); ++i) { - Vector* polygonP = (*i); + for (size_t i = 0; i < _clippingPolygons.size(); ++i) { + Vector* polygonP = _clippingPolygons[i]; Vector& polygon = *polygonP; makeClockwise(polygon); polygon.add(polygon[0]); @@ -112,7 +112,7 @@ namespace Spine { for (int p = 0; p < polygonsCount; p++) { int s = static_cast(clippedVertices.size()); - if (clip(x1, y1, x2, y2, x3, y3, *polygons[p], clipOutput)) { + if (clip(x1, y1, x2, y2, x3, y3, &(*polygons[p]), &clipOutput)) { int clipOutputLength = static_cast(clipOutput.size()); if (clipOutputLength == 0) { continue; @@ -192,40 +192,40 @@ namespace Spine { return _clippedUVs; } - bool SkeletonClipping::clip(float x1, float y1, float x2, float y2, float x3, float y3, Vector& clippingArea, Vector& output) { - Vector& originalOutput = output; + bool SkeletonClipping::clip(float x1, float y1, float x2, float y2, float x3, float y3, Vector* clippingArea, Vector* output) { + Vector* originalOutput = output; bool clipped = false; // Avoid copy at the end. - Vector input; - if (clippingArea.size() % 4 >= 2) { + Vector* input; + if (clippingArea->size() % 4 >= 2) { input = output; - output = _scratch; + output = &_scratch; } else { - input = _scratch; + input = &_scratch; } - input.clear(); - input.add(x1); - input.add(y1); - input.add(x2); - input.add(y2); - input.add(x3); - input.add(y3); - input.add(x1); - input.add(y1); - output.clear(); + input->clear(); + input->add(x1); + input->add(y1); + input->add(x2); + input->add(y2); + input->add(x3); + input->add(y3); + input->add(x1); + input->add(y1); + output->clear(); - Vector& clippingVertices = clippingArea; - int clippingVerticesLast = static_cast(clippingArea.size()) - 4; + Vector& clippingVertices = *clippingArea; + int clippingVerticesLast = static_cast(clippingArea->size()) - 4; for (int i = 0; ; i += 2) { float edgeX = clippingVertices[i], edgeY = clippingVertices[i + 1]; float edgeX2 = clippingVertices[i + 2], edgeY2 = clippingVertices[i + 3]; float deltaX = edgeX - edgeX2, deltaY = edgeY - edgeY2; - Vector& inputVertices = input; - int inputVerticesLength = static_cast(input.size()) - 2, outputStart = static_cast(output.size()); + Vector& inputVertices = *input; + int inputVerticesLength = static_cast(input->size()) - 2, outputStart = static_cast(output->size()); for (int ii = 0; ii < inputVerticesLength; ii += 2) { float inputX = inputVertices[ii], inputY = inputVertices[ii + 1]; float inputX2 = inputVertices[ii + 2], inputY2 = inputVertices[ii + 3]; @@ -233,54 +233,54 @@ namespace Spine { if (deltaX * (inputY - edgeY2) - deltaY * (inputX - edgeX2) > 0) { if (side2) { // v1 inside, v2 inside - output.add(inputX2); - output.add(inputY2); + output->add(inputX2); + output->add(inputY2); continue; } // v1 inside, v2 outside float c0 = inputY2 - inputY, c2 = inputX2 - inputX; float ua = (c2 * (edgeY - inputY) - c0 * (edgeX - inputX)) / (c0 * (edgeX2 - edgeX) - c2 * (edgeY2 - edgeY)); - output.add(edgeX + (edgeX2 - edgeX) * ua); - output.add(edgeY + (edgeY2 - edgeY) * ua); + output->add(edgeX + (edgeX2 - edgeX) * ua); + output->add(edgeY + (edgeY2 - edgeY) * ua); } else if (side2) { // v1 outside, v2 inside float c0 = inputY2 - inputY, c2 = inputX2 - inputX; float ua = (c2 * (edgeY - inputY) - c0 * (edgeX - inputX)) / (c0 * (edgeX2 - edgeX) - c2 * (edgeY2 - edgeY)); - output.add(edgeX + (edgeX2 - edgeX) * ua); - output.add(edgeY + (edgeY2 - edgeY) * ua); - output.add(inputX2); - output.add(inputY2); + output->add(edgeX + (edgeX2 - edgeX) * ua); + output->add(edgeY + (edgeY2 - edgeY) * ua); + output->add(inputX2); + output->add(inputY2); } clipped = true; } - if (outputStart == output.size()) { + if (outputStart == output->size()) { // All edges outside. - originalOutput.clear(); + originalOutput->clear(); return true; } - output.add(output[0]); - output.add(output[1]); + output->add((*output)[0]); + output->add((*output)[1]); if (i == clippingVerticesLast) { break; } - Vector temp = output; + Vector* temp = output; output = input; - output.clear(); + output->clear(); input = temp; } if (originalOutput != output) { - originalOutput.clear(); - for (int i = 0, n = static_cast(output.size()) - 2; i < n; ++i) { - originalOutput.add(output[i]); + originalOutput->clear(); + for (int i = 0, n = static_cast(output->size()) - 2; i < n; ++i) { + originalOutput->add((*output)[i]); } } else { - originalOutput.setSize(originalOutput.size() - 2); + originalOutput->setSize(originalOutput->size() - 2); } return clipped; diff --git a/spine-cpp/spine-cpp/src/spine/TransformConstraint.cpp b/spine-cpp/spine-cpp/src/spine/TransformConstraint.cpp index 40061cf49..883ca78fc 100644 --- a/spine-cpp/spine-cpp/src/spine/TransformConstraint.cpp +++ b/spine-cpp/spine-cpp/src/spine/TransformConstraint.cpp @@ -48,8 +48,8 @@ namespace Spine { _scaleMix(data.getScaleMix()), _shearMix(data.getShearMix()) { _bones.ensureCapacity(_data.getBones().size()); - for (BoneData** i = _data.getBones().begin(); i != _data.getBones().end(); ++i) { - BoneData* boneData = (*i); + for (size_t i = 0; i < _data.getBones().size(); ++i) { + BoneData* boneData = _data.getBones()[i]; _bones.add(skeleton.findBone(boneData->getName())); } @@ -137,8 +137,8 @@ namespace Spine { float degRadReflect = ta * td - tb * tc > 0 ? DegRad : -DegRad; float offsetRotation = _data._offsetRotation * degRadReflect, offsetShearY = _data._offsetShearY * degRadReflect; - for (Bone** i = _bones.begin(); i != _bones.end(); ++i) { - Bone* item = (*i); + for (size_t i = 0; i < _bones.size(); ++i) { + Bone* item = _bones[i]; Bone& bone = *item; bool modified = false; @@ -218,8 +218,8 @@ namespace Spine { float ta = target._a, tb = target._b, tc = target._c, td = target._d; float degRadReflect = ta * td - tb * tc > 0 ? DegRad : -DegRad; float offsetRotation = _data._offsetRotation * degRadReflect, offsetShearY = _data._offsetShearY * degRadReflect; - for (Bone** i = _bones.begin(); i != _bones.end(); ++i) { - Bone* item = (*i); + for (size_t i = 0; i < _bones.size(); ++i) { + Bone* item = _bones[i]; Bone& bone = *item; bool modified = false; @@ -291,8 +291,8 @@ namespace Spine { target.updateAppliedTransform(); } - for (Bone** i = _bones.begin(); i != _bones.end(); ++i) { - Bone* item = (*i); + for (size_t i = 0; i < _bones.size(); ++i) { + Bone* item = _bones[i]; Bone& bone = *item; if (!bone._appliedValid) { @@ -341,8 +341,8 @@ namespace Spine { target.updateAppliedTransform(); } - for (Bone** i = _bones.begin(); i != _bones.end(); ++i) { - Bone* item = (*i); + for (size_t i = 0; i < _bones.size(); ++i) { + Bone* item = _bones[i]; Bone& bone = *item; if (!bone._appliedValid) {