From 1e9c763b400fb0556ea5053224f179d465818793 Mon Sep 17 00:00:00 2001 From: minggo Date: Thu, 12 Dec 2013 12:07:20 +0800 Subject: [PATCH] use ssize_t for index and capacity --- cocos/2d/CCActionManager.cpp | 4 +- cocos/2d/CCActionManager.h | 6 +- cocos/2d/CCDirector.cpp | 6 +- cocos/2d/CCNode.cpp | 8 +- cocos/2d/CCNode.h | 8 +- cocos/2d/CCNotificationCenter.cpp | 2 +- cocos/2d/CCParticleBatchNode.cpp | 2 +- cocos/2d/CCParticleBatchNode.h | 2 +- cocos/2d/CCScheduler.cpp | 2 +- cocos/2d/CCSprite.cpp | 2 +- cocos/2d/CCSprite.h | 8 +- cocos/2d/CCSpriteBatchNode.cpp | 34 +++--- cocos/2d/CCSpriteBatchNode.h | 34 +++--- cocos/2d/CCTMXLayer.cpp | 30 ++--- cocos/2d/CCTMXLayer.h | 4 +- cocos/2d/CCTextureAtlas.cpp | 44 +++---- cocos/2d/CCTextureAtlas.h | 42 +++---- cocos/2d/CCTileMapAtlas.cpp | 2 +- cocos/base/CCAutoreleasePool.cpp | 2 +- cocos/base/CCVector.h | 109 +++++++----------- .../cocosbuilder/CCBAnimationManager.cpp | 8 +- .../cocosbuilder/CCNodeLoader.cpp | 8 +- cocos/editor-support/spine/SkeletonJson.cpp | 2 +- cocos/editor-support/spine/extension.cpp | 4 +- cocos/editor-support/spine/extension.h | 2 +- cocos/network/HttpRequest.h | 2 +- cocos/network/HttpResponse.h | 6 +- extensions/GUI/CCScrollView/CCTableView.cpp | 22 ++-- extensions/GUI/CCScrollView/CCTableView.h | 20 ++-- external/json/json_writer.cpp | 2 +- 30 files changed, 202 insertions(+), 225 deletions(-) diff --git a/cocos/2d/CCActionManager.cpp b/cocos/2d/CCActionManager.cpp index 07e721edc3..2fb08fd0bd 100644 --- a/cocos/2d/CCActionManager.cpp +++ b/cocos/2d/CCActionManager.cpp @@ -87,7 +87,7 @@ void ActionManager::actionAllocWithHashElement(tHashElement *element) } -void ActionManager::removeActionAtIndex(int index, tHashElement *element) +void ActionManager::removeActionAtIndex(ssize_t index, tHashElement *element) { Action *action = (Action*)element->actions->arr[index]; @@ -324,7 +324,7 @@ Action* ActionManager::getActionByTag(int tag, const Node *target) const // XXX: Passing "const O *" instead of "const O&" because HASH_FIND_IT requries the address of a pointer // and, it is not possible to get the address of a reference -int ActionManager::getNumberOfRunningActionsInTarget(const Node *target) const +ssize_t ActionManager::getNumberOfRunningActionsInTarget(const Node *target) const { tHashElement *element = NULL; HASH_FIND_PTR(_targets, &target, element); diff --git a/cocos/2d/CCActionManager.h b/cocos/2d/CCActionManager.h index a2fc0dcfb9..0f538e779c 100644 --- a/cocos/2d/CCActionManager.h +++ b/cocos/2d/CCActionManager.h @@ -100,10 +100,10 @@ public: * - If you are running 1 Sequence of 7 actions, it will return 1. * - If you are running 7 Sequences of 2 actions, it will return 7. */ - int getNumberOfRunningActionsInTarget(const Node *target) const; + ssize_t getNumberOfRunningActionsInTarget(const Node *target) const; /** @deprecated use getNumberOfRunningActionsInTarget() instead */ - CC_DEPRECATED_ATTRIBUTE inline int numberOfRunningActionsInTarget(Node *target) const { return getNumberOfRunningActionsInTarget(target); } + CC_DEPRECATED_ATTRIBUTE inline ssize_t numberOfRunningActionsInTarget(Node *target) const { return getNumberOfRunningActionsInTarget(target); } /** Pauses the target: all running actions and newly added actions will be paused. */ @@ -124,7 +124,7 @@ public: protected: // declared in ActionManager.m - void removeActionAtIndex(int index, struct _hashElement *pElement); + void removeActionAtIndex(ssize_t index, struct _hashElement *pElement); void deleteHashElement(struct _hashElement *pElement); void actionAllocWithHashElement(struct _hashElement *pElement); void update(float dt); diff --git a/cocos/2d/CCDirector.cpp b/cocos/2d/CCDirector.cpp index 93ed8b8932..1817371471 100644 --- a/cocos/2d/CCDirector.cpp +++ b/cocos/2d/CCDirector.cpp @@ -595,7 +595,7 @@ void Director::replaceScene(Scene *scene) CCASSERT(_runningScene, "Use runWithScene: instead to start the director"); CCASSERT(scene != nullptr, "the scene should not be null"); - int index = _scenesStack.size(); + ssize_t index = _scenesStack.size(); _sendCleanupToScene = true; _scenesStack.replace(index - 1, scene); @@ -618,7 +618,7 @@ void Director::popScene(void) CCASSERT(_runningScene != nullptr, "running scene should not null"); _scenesStack.popBack(); - int c = _scenesStack.size(); + ssize_t c = _scenesStack.size(); if (c == 0) { @@ -639,7 +639,7 @@ void Director::popToRootScene(void) void Director::popToSceneStackLevel(int level) { CCASSERT(_runningScene != nullptr, "A running Scene is needed"); - int c = _scenesStack.size(); + ssize_t c = _scenesStack.size(); // level 0? -> end if (level == 0) diff --git a/cocos/2d/CCNode.cpp b/cocos/2d/CCNode.cpp index aafec6fd47..c839d686f6 100644 --- a/cocos/2d/CCNode.cpp +++ b/cocos/2d/CCNode.cpp @@ -395,7 +395,7 @@ void Node::setPositionY(float y) setPosition(Point(_position.x, y)); } -int Node::getChildrenCount() const +ssize_t Node::getChildrenCount() const { return _children.size(); } @@ -683,7 +683,7 @@ void Node::removeChild(Node* child, bool cleanup /* = true */) return; } - auto index = _children.getIndex(child); + ssize_t index = _children.getIndex(child); if( index != CC_INVALID_INDEX ) this->detachChild( child, index, cleanup ); } @@ -741,7 +741,7 @@ void Node::removeAllChildrenWithCleanup(bool cleanup) } -void Node::detachChild(Node *child, int childIndex, bool doCleanup) +void Node::detachChild(Node *child, ssize_t childIndex, bool doCleanup) { // IMPORTANT: // -1st do onExit @@ -1055,7 +1055,7 @@ Action * Node::getActionByTag(int tag) return _actionManager->getActionByTag(tag, this); } -int Node::getNumberOfRunningActions() const +ssize_t Node::getNumberOfRunningActions() const { return _actionManager->getNumberOfRunningActionsInTarget(this); } diff --git a/cocos/2d/CCNode.h b/cocos/2d/CCNode.h index 8a82c1bfa3..f93fb77cab 100644 --- a/cocos/2d/CCNode.h +++ b/cocos/2d/CCNode.h @@ -620,7 +620,7 @@ public: * * @return The amount of children. */ - int getChildrenCount() const; + ssize_t getChildrenCount() const; /** * Sets the parent node @@ -1041,10 +1041,10 @@ public: * * @return The number of actions that are running plus the ones that are schedule to run */ - int getNumberOfRunningActions() const; + ssize_t getNumberOfRunningActions() const; /** @deprecated Use getNumberOfRunningActions() instead */ - CC_DEPRECATED_ATTRIBUTE int numberOfRunningActions() const { return getNumberOfRunningActions(); }; + CC_DEPRECATED_ATTRIBUTE ssize_t numberOfRunningActions() const { return getNumberOfRunningActions(); }; /// @} end of Actions @@ -1401,7 +1401,7 @@ protected: void insertChild(Node* child, int z); /// Removes a child, call child->onExit(), do cleanup, remove it from children array. - void detachChild(Node *child, int index, bool doCleanup); + void detachChild(Node *child, ssize_t index, bool doCleanup); /// Convert cocos2d coordinates to UI windows coordinate. Point convertToWindowSpace(const Point& nodePoint) const; diff --git a/cocos/2d/CCNotificationCenter.cpp b/cocos/2d/CCNotificationCenter.cpp index 9d412c9a61..cdd5537404 100644 --- a/cocos/2d/CCNotificationCenter.cpp +++ b/cocos/2d/CCNotificationCenter.cpp @@ -143,7 +143,7 @@ int NotificationCenter::removeAllObservers(Object *target) } _observers->removeObjectsInArray(toRemove); - return toRemove->count(); + return static_cast(toRemove->count()); } void NotificationCenter::registerScriptObserver( Object *target, int handler,const char* name) diff --git a/cocos/2d/CCParticleBatchNode.cpp b/cocos/2d/CCParticleBatchNode.cpp index 3f1b3779bd..ce6e248ec7 100644 --- a/cocos/2d/CCParticleBatchNode.cpp +++ b/cocos/2d/CCParticleBatchNode.cpp @@ -412,7 +412,7 @@ void ParticleBatchNode::draw(void) -void ParticleBatchNode::increaseAtlasCapacityTo(int quantity) +void ParticleBatchNode::increaseAtlasCapacityTo(ssize_t quantity) { CCLOG("cocos2d: ParticleBatchNode: resizing TextureAtlas capacity from [%lu] to [%lu].", (long)_textureAtlas->getCapacity(), diff --git a/cocos/2d/CCParticleBatchNode.h b/cocos/2d/CCParticleBatchNode.h index 9f1a22b2ac..e8b75a3b70 100644 --- a/cocos/2d/CCParticleBatchNode.h +++ b/cocos/2d/CCParticleBatchNode.h @@ -129,7 +129,7 @@ public: private: void updateAllAtlasIndexes(); - void increaseAtlasCapacityTo(int quantity); + void increaseAtlasCapacityTo(ssize_t quantity); int searchNewPositionInChildrenForZ(int z); void getCurrentIndex(int* oldIndex, int* newIndex, Node* child, int z); int addChildHelper(ParticleSystem* child, int z, int aTag); diff --git a/cocos/2d/CCScheduler.cpp b/cocos/2d/CCScheduler.cpp index 5566c3f292..064e13b058 100644 --- a/cocos/2d/CCScheduler.cpp +++ b/cocos/2d/CCScheduler.cpp @@ -677,7 +677,7 @@ unsigned int Scheduler::scheduleScriptFunc(unsigned int handler, float interval, void Scheduler::unscheduleScriptEntry(unsigned int scheduleScriptEntryID) { - for (int i = _scriptHandlerEntries.size() - 1; i >= 0; i--) + for (ssize_t i = _scriptHandlerEntries.size() - 1; i >= 0; i--) { SchedulerScriptHandlerEntry* entry = _scriptHandlerEntries.at(i); if (entry->getEntryId() == (int)scheduleScriptEntryID) diff --git a/cocos/2d/CCSprite.cpp b/cocos/2d/CCSprite.cpp index 824af33470..d79d9d1bcd 100644 --- a/cocos/2d/CCSprite.cpp +++ b/cocos/2d/CCSprite.cpp @@ -1052,7 +1052,7 @@ void Sprite::setSpriteFrame(SpriteFrame *spriteFrame) setTextureRect(spriteFrame->getRect(), _rectRotated, spriteFrame->getOriginalSize()); } -void Sprite::setDisplayFrameWithAnimationName(const std::string& animationName, int frameIndex) +void Sprite::setDisplayFrameWithAnimationName(const std::string& animationName, ssize_t frameIndex) { CCASSERT(animationName.size()>0, "CCSprite#setDisplayFrameWithAnimationName. animationName must not be NULL"); diff --git a/cocos/2d/CCSprite.h b/cocos/2d/CCSprite.h index a78a120589..f61c319756 100644 --- a/cocos/2d/CCSprite.h +++ b/cocos/2d/CCSprite.h @@ -257,7 +257,7 @@ public: * Changes the display frame with animation name and index. * The animation name will be get from the AnimationCache */ - virtual void setDisplayFrameWithAnimationName(const std::string& animationName, int frameIndex); + virtual void setDisplayFrameWithAnimationName(const std::string& animationName, ssize_t frameIndex); /// @} @@ -291,13 +291,13 @@ public: /** * Returns the index used on the TextureAtlas. */ - inline int getAtlasIndex(void) const { return _atlasIndex; } + inline ssize_t getAtlasIndex(void) const { return _atlasIndex; } /** * Sets the index used on the TextureAtlas. * @warning Don't modify this value unless you know what you are doing */ - inline void setAtlasIndex(int atlasIndex) { _atlasIndex = atlasIndex; } + inline void setAtlasIndex(ssize_t atlasIndex) { _atlasIndex = atlasIndex; } /** * Returns the rect of the Sprite in points @@ -535,7 +535,7 @@ protected: // Data used when the sprite is rendered using a SpriteSheet // TextureAtlas* _textureAtlas; /// SpriteBatchNode texture atlas (weak reference) - int _atlasIndex; /// Absolute (real) Index on the SpriteSheet + ssize_t _atlasIndex; /// Absolute (real) Index on the SpriteSheet SpriteBatchNode* _batchNode; /// Used batch node (weak reference) bool _dirty; /// Whether the sprite needs to be updated diff --git a/cocos/2d/CCSpriteBatchNode.cpp b/cocos/2d/CCSpriteBatchNode.cpp index 748a248f58..edeb84747e 100644 --- a/cocos/2d/CCSpriteBatchNode.cpp +++ b/cocos/2d/CCSpriteBatchNode.cpp @@ -51,7 +51,7 @@ NS_CC_BEGIN * creation with Texture2D */ -SpriteBatchNode* SpriteBatchNode::createWithTexture(Texture2D* tex, int capacity/* = DEFAULT_CAPACITY*/) +SpriteBatchNode* SpriteBatchNode::createWithTexture(Texture2D* tex, ssize_t capacity/* = DEFAULT_CAPACITY*/) { SpriteBatchNode *batchNode = new SpriteBatchNode(); batchNode->initWithTexture(tex, capacity); @@ -64,7 +64,7 @@ SpriteBatchNode* SpriteBatchNode::createWithTexture(Texture2D* tex, int capacity * creation with File Image */ -SpriteBatchNode* SpriteBatchNode::create(const char *fileImage, int capacity/* = DEFAULT_CAPACITY*/) +SpriteBatchNode* SpriteBatchNode::create(const char *fileImage, ssize_t capacity/* = DEFAULT_CAPACITY*/) { SpriteBatchNode *batchNode = new SpriteBatchNode(); batchNode->initWithFile(fileImage, capacity); @@ -76,7 +76,7 @@ SpriteBatchNode* SpriteBatchNode::create(const char *fileImage, int capacity/* = /* * init with Texture2D */ -bool SpriteBatchNode::initWithTexture(Texture2D *tex, int capacity) +bool SpriteBatchNode::initWithTexture(Texture2D *tex, ssize_t capacity) { CCASSERT(capacity>=0, "Capacity must be >= 0"); @@ -110,7 +110,7 @@ bool SpriteBatchNode::init() /* * init with FileImage */ -bool SpriteBatchNode::initWithFile(const char* fileImage, int capacity) +bool SpriteBatchNode::initWithFile(const char* fileImage, ssize_t capacity) { Texture2D *texture2D = Director::getInstance()->getTextureCache()->addImage(fileImage); return initWithTexture(texture2D, capacity); @@ -215,7 +215,7 @@ void SpriteBatchNode::removeChild(Node *child, bool cleanup) Node::removeChild(sprite, cleanup); } -void SpriteBatchNode::removeChildAtIndex(int index, bool doCleanup) +void SpriteBatchNode::removeChildAtIndex(ssize_t index, bool doCleanup) { CCASSERT(index>=0 && index < _children.size(), "Invalid index"); removeChild(_children.at(index), doCleanup); @@ -274,7 +274,7 @@ void SpriteBatchNode::sortAllChildren() child->sortAllChildren(); }); - int index=0; + ssize_t index=0; //fast dispatch, give every child a new atlasIndex based on their relative zOrder (keep parent -> child relations intact) // and at the same time reorder descendants and the quads to the right index @@ -288,12 +288,12 @@ void SpriteBatchNode::sortAllChildren() } } -void SpriteBatchNode::updateAtlasIndex(Sprite* sprite, int* curIndex) +void SpriteBatchNode::updateAtlasIndex(Sprite* sprite, ssize_t* curIndex) { auto& array = sprite->getChildren(); auto count = array.size(); - int oldIndex = 0; + ssize_t oldIndex = 0; if( count == 0 ) { @@ -354,7 +354,7 @@ void SpriteBatchNode::updateAtlasIndex(Sprite* sprite, int* curIndex) } } -void SpriteBatchNode::swap(int oldIndex, int newIndex) +void SpriteBatchNode::swap(ssize_t oldIndex, ssize_t newIndex) { CCASSERT(oldIndex>=0 && oldIndex < (int)_descendants.size() && newIndex >=0 && newIndex < (int)_descendants.size(), "Invalid index"); @@ -406,9 +406,9 @@ void SpriteBatchNode::increaseAtlasCapacity(void) // if we're going beyond the current TextureAtlas's capacity, // all the previously initialized sprites will need to redo their texture coords // this is likely computationally expensive - int quantity = (_textureAtlas->getCapacity() + 1) * 4 / 3; + ssize_t quantity = (_textureAtlas->getCapacity() + 1) * 4 / 3; - CCLOG("cocos2d: SpriteBatchNode: resizing TextureAtlas capacity from [%d] to [%d].", + CCLOG("cocos2d: SpriteBatchNode: resizing TextureAtlas capacity from [%zd] to [%zd].", _textureAtlas->getCapacity(), quantity); @@ -420,7 +420,7 @@ void SpriteBatchNode::increaseAtlasCapacity(void) } } -int SpriteBatchNode::rebuildIndexInOrder(Sprite *parent, int index) +ssize_t SpriteBatchNode::rebuildIndexInOrder(Sprite *parent, ssize_t index) { CCASSERT(index>=0 && index < _children.size(), "Invalid index"); @@ -452,7 +452,7 @@ int SpriteBatchNode::rebuildIndexInOrder(Sprite *parent, int index) return index; } -int SpriteBatchNode::highestAtlasIndexInChild(Sprite *sprite) +ssize_t SpriteBatchNode::highestAtlasIndexInChild(Sprite *sprite) { auto& children = sprite->getChildren(); @@ -466,7 +466,7 @@ int SpriteBatchNode::highestAtlasIndexInChild(Sprite *sprite) } } -int SpriteBatchNode::lowestAtlasIndexInChild(Sprite *sprite) +ssize_t SpriteBatchNode::lowestAtlasIndexInChild(Sprite *sprite) { auto& children = sprite->getChildren(); @@ -480,7 +480,7 @@ int SpriteBatchNode::lowestAtlasIndexInChild(Sprite *sprite) } } -int SpriteBatchNode::atlasIndexForChild(Sprite *sprite, int nZ) +ssize_t SpriteBatchNode::atlasIndexForChild(Sprite *sprite, int nZ) { auto& siblings = sprite->getParent()->getChildren(); auto childIndex = siblings.getIndex(sprite); @@ -627,7 +627,7 @@ void SpriteBatchNode::setTexture(Texture2D *texture) // SpriteSheet Extension //implementation SpriteSheet (TMXTiledMapExtension) -void SpriteBatchNode::insertQuadFromSprite(Sprite *sprite, int index) +void SpriteBatchNode::insertQuadFromSprite(Sprite *sprite, ssize_t index) { CCASSERT( sprite != NULL, "Argument must be non-NULL"); CCASSERT( dynamic_cast(sprite), "CCSpriteBatchNode only supports Sprites as children"); @@ -652,7 +652,7 @@ void SpriteBatchNode::insertQuadFromSprite(Sprite *sprite, int index) sprite->updateTransform(); } -void SpriteBatchNode::updateQuadFromSprite(Sprite *sprite, int index) +void SpriteBatchNode::updateQuadFromSprite(Sprite *sprite, ssize_t index) { CCASSERT(sprite != NULL, "Argument must be non-nil"); CCASSERT(dynamic_cast(sprite) != NULL, "CCSpriteBatchNode only supports Sprites as children"); diff --git a/cocos/2d/CCSpriteBatchNode.h b/cocos/2d/CCSpriteBatchNode.h index 6ba402fe57..28c548e948 100644 --- a/cocos/2d/CCSpriteBatchNode.h +++ b/cocos/2d/CCSpriteBatchNode.h @@ -68,13 +68,13 @@ public: /** creates a SpriteBatchNode with a texture2d and capacity of children. The capacity will be increased in 33% in runtime if it run out of space. */ - static SpriteBatchNode* createWithTexture(Texture2D* tex, int capacity = DEFAULT_CAPACITY); + static SpriteBatchNode* createWithTexture(Texture2D* tex, ssize_t capacity = DEFAULT_CAPACITY); /** creates a SpriteBatchNode with a file image (.png, .jpeg, .pvr, etc) and capacity of children. The capacity will be increased in 33% in runtime if it run out of space. The file will be loaded using the TextureMgr. */ - static SpriteBatchNode* create(const char* fileImage, int capacity = DEFAULT_CAPACITY); + static SpriteBatchNode* create(const char* fileImage, ssize_t capacity = DEFAULT_CAPACITY); /** * @js ctor */ @@ -88,14 +88,14 @@ public: /** initializes a SpriteBatchNode with a texture2d and capacity of children. The capacity will be increased in 33% in runtime if it run out of space. */ - bool initWithTexture(Texture2D *tex, int capacity); + bool initWithTexture(Texture2D *tex, ssize_t capacity); /** initializes a SpriteBatchNode with a file image (.png, .jpeg, .pvr, etc) and a capacity of children. The capacity will be increased in 33% in runtime if it run out of space. The file will be loaded using the TextureMgr. * @js init * @lua init */ - bool initWithFile(const char* fileImage, int capacity); + bool initWithFile(const char* fileImage, ssize_t capacity); bool init(); /** returns the TextureAtlas object */ @@ -121,15 +121,15 @@ public: /** removes a child given a certain index. It will also cleanup the running actions depending on the cleanup parameter. @warning Removing a child from a SpriteBatchNode is very slow */ - void removeChildAtIndex(int index, bool doCleanup); + void removeChildAtIndex(ssize_t index, bool doCleanup); void appendChild(Sprite* sprite); void removeSpriteFromAtlas(Sprite *sprite); - int rebuildIndexInOrder(Sprite *parent, int index); - int highestAtlasIndexInChild(Sprite *sprite); - int lowestAtlasIndexInChild(Sprite *sprite); - int atlasIndexForChild(Sprite *sprite, int z); + ssize_t rebuildIndexInOrder(Sprite *parent, ssize_t index); + ssize_t highestAtlasIndexInChild(Sprite *sprite); + ssize_t lowestAtlasIndexInChild(Sprite *sprite); + ssize_t atlasIndexForChild(Sprite *sprite, int z); /* Sprites use this to start sortChildren, don't call this manually */ void reorderBatch(bool reorder); @@ -137,7 +137,7 @@ public: // Overrides // // TextureProtocol - virtual Texture2D* getTexture(void) const override; + virtual Texture2D* getTexture() const override; virtual void setTexture(Texture2D *texture) override; /** *@code @@ -151,9 +151,9 @@ public: * @js NA * @lua NA */ - virtual const BlendFunc& getBlendFunc(void) const override; + virtual const BlendFunc& getBlendFunc() const override; - virtual void visit(void) override; + virtual void visit() override; virtual void addChild(Node* child) override{ Node::addChild(child);} virtual void addChild(Node * child, int zOrder) override { Node::addChild(child, zOrder);} virtual void addChild(Node * child, int zOrder, int tag) override; @@ -162,26 +162,26 @@ public: virtual void removeChild(Node *child, bool cleanup) override; virtual void removeAllChildrenWithCleanup(bool cleanup) override; virtual void sortAllChildren() override; - virtual void draw(void) override; + virtual void draw() override; protected: /** Inserts a quad at a certain index into the texture atlas. The Sprite won't be added into the children array. This method should be called only when you are dealing with very big AtlasSrite and when most of the Sprite won't be updated. For example: a tile map (TMXMap) or a label with lots of characters (LabelBMFont) */ - void insertQuadFromSprite(Sprite *sprite, int index); + void insertQuadFromSprite(Sprite *sprite, ssize_t index); /** Updates a quad at a certain index into the texture atlas. The Sprite won't be added into the children array. This method should be called only when you are dealing with very big AtlasSrite and when most of the Sprite won't be updated. For example: a tile map (TMXMap) or a label with lots of characters (LabelBMFont) */ - void updateQuadFromSprite(Sprite *sprite, int index); + void updateQuadFromSprite(Sprite *sprite, ssize_t index); /* This is the opposite of "addQuadFromSprite. It add the sprite to the children and descendants array, but it doesn't update add it to the texture atlas */ SpriteBatchNode * addSpriteWithoutQuad(Sprite *child, int z, int aTag); - void updateAtlasIndex(Sprite* sprite, int* curIndex); - void swap(int oldIndex, int newIndex); + void updateAtlasIndex(Sprite* sprite, ssize_t* curIndex); + void swap(ssize_t oldIndex, ssize_t newIndex); void updateBlendFunc(); TextureAtlas *_textureAtlas; diff --git a/cocos/2d/CCTMXLayer.cpp b/cocos/2d/CCTMXLayer.cpp index 8515989a6f..fb178a3d55 100644 --- a/cocos/2d/CCTMXLayer.cpp +++ b/cocos/2d/CCTMXLayer.cpp @@ -340,8 +340,8 @@ Sprite * TMXLayer::getTileAt(const Point& pos) tile->setAnchorPoint(Point::ZERO); tile->setOpacity(_opacity); - unsigned int indexForZ = atlasIndexForExistantZ(z); - this->addSpriteWithoutQuad(tile, indexForZ, z); + ssize_t indexForZ = atlasIndexForExistantZ(z); + this->addSpriteWithoutQuad(tile, static_cast(indexForZ), z); } } @@ -379,7 +379,7 @@ Sprite * TMXLayer::insertTileForGID(unsigned int gid, const Point& pos) setupTileSprite(tile, pos, gid); // get atlas index - unsigned int indexForZ = atlasIndexForNewZ(static_cast(z)); + ssize_t indexForZ = atlasIndexForNewZ(static_cast(z)); // Optimization: add the quad without adding a child this->insertQuadFromSprite(tile, indexForZ); @@ -393,7 +393,7 @@ Sprite * TMXLayer::insertTileForGID(unsigned int gid, const Point& pos) Sprite* sp = static_cast(child); if (child) { - int ai = sp->getAtlasIndex(); + ssize_t ai = sp->getAtlasIndex(); if ( ai >= indexForZ ) { sp->setAtlasIndex(ai+1); @@ -416,7 +416,7 @@ Sprite * TMXLayer::updateTileForGID(unsigned int gid, const Point& pos) setupTileSprite(tile ,pos ,gid); // get atlas index - unsigned int indexForZ = atlasIndexForExistantZ(z); + ssize_t indexForZ = atlasIndexForExistantZ(z); tile->setAtlasIndex(indexForZ); tile->setDirty(true); tile->updateTransform(); @@ -441,7 +441,7 @@ Sprite * TMXLayer::appendTileForGID(unsigned int gid, const Point& pos) // optimization: // The difference between appendTileForGID and insertTileforGID is that append is faster, since // it appends the tile at the end of the texture atlas - unsigned int indexForZ = _atlasIndexArray->num; + ssize_t indexForZ = _atlasIndexArray->num; // don't add it using the "standard" way. insertQuadFromSprite(tile, indexForZ); @@ -458,24 +458,24 @@ static inline int compareInts(const void * a, const void * b) return ((*(int*)a) - (*(int*)b)); } -unsigned int TMXLayer::atlasIndexForExistantZ(unsigned int z) +ssize_t TMXLayer::atlasIndexForExistantZ(unsigned int z) { int key=z; int *item = (int*)bsearch((void*)&key, (void*)&_atlasIndexArray->arr[0], _atlasIndexArray->num, sizeof(void*), compareInts); CCASSERT(item, "TMX atlas index not found. Shall not happen"); - int index = ((size_t)item - (size_t)_atlasIndexArray->arr) / sizeof(void*); + ssize_t index = ((size_t)item - (size_t)_atlasIndexArray->arr) / sizeof(void*); return index; } -unsigned int TMXLayer::atlasIndexForNewZ(int z) +ssize_t TMXLayer::atlasIndexForNewZ(int z) { // XXX: This can be improved with a sort of binary search - int i=0; + ssize_t i=0; for (i=0; i< _atlasIndexArray->num ; i++) { - int val = (size_t) _atlasIndexArray->arr[i]; + ssize_t val = (size_t) _atlasIndexArray->arr[i]; if (z < val) { break; @@ -558,8 +558,8 @@ void TMXLayer::removeChild(Node* node, bool cleanup) CCASSERT(_children.contains(sprite), "Tile does not belong to TMXLayer"); - unsigned int atlasIndex = sprite->getAtlasIndex(); - unsigned int zz = (size_t)_atlasIndexArray->arr[atlasIndex]; + ssize_t atlasIndex = sprite->getAtlasIndex(); + ssize_t zz = (size_t)_atlasIndexArray->arr[atlasIndex]; _tiles[zz] = 0; ccCArrayRemoveValueAtIndex(_atlasIndexArray, atlasIndex); SpriteBatchNode::removeChild(sprite, cleanup); @@ -575,7 +575,7 @@ void TMXLayer::removeTileAt(const Point& pos) if (gid) { unsigned int z = (unsigned int)(pos.x + pos.y * _layerSize.width); - unsigned int atlasIndex = atlasIndexForExistantZ(z); + ssize_t atlasIndex = atlasIndexForExistantZ(z); // remove tile from GID map _tiles[z] = 0; @@ -598,7 +598,7 @@ void TMXLayer::removeTileAt(const Point& pos) Sprite* child = static_cast(obj); if (child) { - unsigned int ai = child->getAtlasIndex(); + ssize_t ai = child->getAtlasIndex(); if ( ai >= atlasIndex ) { child->setAtlasIndex(ai-1); diff --git a/cocos/2d/CCTMXLayer.h b/cocos/2d/CCTMXLayer.h index 2667739599..b0bea3f991 100644 --- a/cocos/2d/CCTMXLayer.h +++ b/cocos/2d/CCTMXLayer.h @@ -209,8 +209,8 @@ private: int getVertexZForPos(const Point& pos); // index - unsigned int atlasIndexForExistantZ(unsigned int z); - unsigned int atlasIndexForNewZ(int z); + ssize_t atlasIndexForExistantZ(unsigned int z); + ssize_t atlasIndexForNewZ(int z); protected: //! name of the layer diff --git a/cocos/2d/CCTextureAtlas.cpp b/cocos/2d/CCTextureAtlas.cpp index 1a325d248b..3bf4f994e1 100644 --- a/cocos/2d/CCTextureAtlas.cpp +++ b/cocos/2d/CCTextureAtlas.cpp @@ -74,12 +74,12 @@ TextureAtlas::~TextureAtlas() #endif } -int TextureAtlas::getTotalQuads() const +ssize_t TextureAtlas::getTotalQuads() const { return _totalQuads; } -int TextureAtlas::getCapacity() const +ssize_t TextureAtlas::getCapacity() const { return _capacity; } @@ -110,7 +110,7 @@ void TextureAtlas::setQuads(V3F_C4B_T2F_Quad* quads) // TextureAtlas - alloc & init -TextureAtlas * TextureAtlas::create(const char* file, int capacity) +TextureAtlas * TextureAtlas::create(const char* file, ssize_t capacity) { TextureAtlas * textureAtlas = new TextureAtlas(); if(textureAtlas && textureAtlas->initWithFile(file, capacity)) @@ -122,7 +122,7 @@ TextureAtlas * TextureAtlas::create(const char* file, int capacity) return NULL; } -TextureAtlas * TextureAtlas::createWithTexture(Texture2D *texture, int capacity) +TextureAtlas * TextureAtlas::createWithTexture(Texture2D *texture, ssize_t capacity) { TextureAtlas * textureAtlas = new TextureAtlas(); if (textureAtlas && textureAtlas->initWithTexture(texture, capacity)) @@ -134,7 +134,7 @@ TextureAtlas * TextureAtlas::createWithTexture(Texture2D *texture, int capacity) return NULL; } -bool TextureAtlas::initWithFile(const char * file, int capacity) +bool TextureAtlas::initWithFile(const char * file, ssize_t capacity) { // retained in property Texture2D *texture = Director::getInstance()->getTextureCache()->addImage(file); @@ -150,7 +150,7 @@ bool TextureAtlas::initWithFile(const char * file, int capacity) } } -bool TextureAtlas::initWithTexture(Texture2D *texture, int capacity) +bool TextureAtlas::initWithTexture(Texture2D *texture, ssize_t capacity) { CCASSERT(capacity>=0, "Capacity must be >= 0"); @@ -224,7 +224,7 @@ void TextureAtlas::listenBackToForeground(Object *obj) const char* TextureAtlas::description() const { - return String::createWithFormat("", _totalQuads)->getCString(); + return String::createWithFormat("", _totalQuads)->getCString(); } @@ -317,7 +317,7 @@ void TextureAtlas::mapBuffers() // TextureAtlas - Update, Insert, Move & Remove -void TextureAtlas::updateQuad(V3F_C4B_T2F_Quad *quad, int index) +void TextureAtlas::updateQuad(V3F_C4B_T2F_Quad *quad, ssize_t index) { CCASSERT( index >= 0 && index < _capacity, "updateQuadWithTexture: Invalid index"); @@ -330,7 +330,7 @@ void TextureAtlas::updateQuad(V3F_C4B_T2F_Quad *quad, int index) } -void TextureAtlas::insertQuad(V3F_C4B_T2F_Quad *quad, int index) +void TextureAtlas::insertQuad(V3F_C4B_T2F_Quad *quad, ssize_t index) { CCASSERT( index>=0 && index<_capacity, "insertQuadWithTexture: Invalid index"); @@ -354,7 +354,7 @@ void TextureAtlas::insertQuad(V3F_C4B_T2F_Quad *quad, int index) } -void TextureAtlas::insertQuads(V3F_C4B_T2F_Quad* quads, int index, int amount) +void TextureAtlas::insertQuads(V3F_C4B_T2F_Quad* quads, ssize_t index, ssize_t amount) { CCASSERT(index>=0 && amount>=0 && index+amount<=_capacity, "insertQuadWithTexture: Invalid index + amount"); @@ -375,7 +375,7 @@ void TextureAtlas::insertQuads(V3F_C4B_T2F_Quad* quads, int index, int amount) auto max = index + amount; int j = 0; - for (int i = index; i < max ; i++) + for (ssize_t i = index; i < max ; i++) { _quads[index] = quads[j]; index++; @@ -385,7 +385,7 @@ void TextureAtlas::insertQuads(V3F_C4B_T2F_Quad* quads, int index, int amount) _dirty = true; } -void TextureAtlas::insertQuadFromIndex(int oldIndex, int newIndex) +void TextureAtlas::insertQuadFromIndex(ssize_t oldIndex, ssize_t newIndex) { CCASSERT( newIndex >= 0 && newIndex < _totalQuads, "insertQuadFromIndex:atIndex: Invalid index"); CCASSERT( oldIndex >= 0 && oldIndex < _totalQuads, "insertQuadFromIndex:atIndex: Invalid index"); @@ -414,7 +414,7 @@ void TextureAtlas::insertQuadFromIndex(int oldIndex, int newIndex) _dirty = true; } -void TextureAtlas::removeQuadAtIndex(int index) +void TextureAtlas::removeQuadAtIndex(ssize_t index) { CCASSERT( index>=0 && index<_totalQuads, "removeQuadAtIndex: Invalid index"); @@ -433,7 +433,7 @@ void TextureAtlas::removeQuadAtIndex(int index) _dirty = true; } -void TextureAtlas::removeQuadsAtIndex(int index, int amount) +void TextureAtlas::removeQuadsAtIndex(ssize_t index, ssize_t amount) { CCASSERT(index>=0 && amount>=0 && index+amount<=_totalQuads, "removeQuadAtIndex: index + amount out of bounds"); @@ -455,7 +455,7 @@ void TextureAtlas::removeAllQuads() } // TextureAtlas - Resize -bool TextureAtlas::resizeCapacity(int newCapacity) +bool TextureAtlas::resizeCapacity(ssize_t newCapacity) { CCASSERT(newCapacity>=0, "capacity >= 0"); if( newCapacity == _capacity ) @@ -529,13 +529,13 @@ bool TextureAtlas::resizeCapacity(int newCapacity) return true; } -void TextureAtlas::increaseTotalQuadsWith(int amount) +void TextureAtlas::increaseTotalQuadsWith(ssize_t amount) { CCASSERT(amount>=0, "amount >= 0"); _totalQuads += amount; } -void TextureAtlas::moveQuadsFromIndex(int oldIndex, int amount, int newIndex) +void TextureAtlas::moveQuadsFromIndex(ssize_t oldIndex, ssize_t amount, ssize_t newIndex) { CCASSERT(oldIndex>=0 && amount>=0 && newIndex>=0, "values must be >= 0"); CCASSERT(newIndex + amount <= _totalQuads, "insertQuadFromIndex:atIndex: Invalid index"); @@ -567,7 +567,7 @@ void TextureAtlas::moveQuadsFromIndex(int oldIndex, int amount, int newIndex) _dirty = true; } -void TextureAtlas::moveQuadsFromIndex(int index, int newIndex) +void TextureAtlas::moveQuadsFromIndex(ssize_t index, ssize_t newIndex) { CCASSERT(index>=0 && newIndex>=0, "values must be >= 0"); CCASSERT(newIndex + (_totalQuads - index) <= _capacity, "moveQuadsFromIndex move is out of bounds"); @@ -575,14 +575,14 @@ void TextureAtlas::moveQuadsFromIndex(int index, int newIndex) memmove(_quads + newIndex,_quads + index, (_totalQuads - index) * sizeof(_quads[0])); } -void TextureAtlas::fillWithEmptyQuadsFromIndex(int index, int amount) +void TextureAtlas::fillWithEmptyQuadsFromIndex(ssize_t index, ssize_t amount) { CCASSERT(index>=0 && amount>=0, "values must be >= 0"); V3F_C4B_T2F_Quad quad; memset(&quad, 0, sizeof(quad)); auto to = index + amount; - for (int i = index ; i < to ; i++) + for (ssize_t i = index ; i < to ; i++) { _quads[i] = quad; } @@ -595,13 +595,13 @@ void TextureAtlas::drawQuads() this->drawNumberOfQuads(_totalQuads, 0); } -void TextureAtlas::drawNumberOfQuads(int numberOfQuads) +void TextureAtlas::drawNumberOfQuads(ssize_t numberOfQuads) { CCASSERT(numberOfQuads>=0, "numberOfQuads must be >= 0"); this->drawNumberOfQuads(numberOfQuads, 0); } -void TextureAtlas::drawNumberOfQuads(int numberOfQuads, int start) +void TextureAtlas::drawNumberOfQuads(ssize_t numberOfQuads, ssize_t start) { CCASSERT(numberOfQuads>=0 && start>=0, "numberOfQuads and start must be >= 0"); diff --git a/cocos/2d/CCTextureAtlas.h b/cocos/2d/CCTextureAtlas.h index 47a5c1c484..40b32d8273 100644 --- a/cocos/2d/CCTextureAtlas.h +++ b/cocos/2d/CCTextureAtlas.h @@ -59,13 +59,13 @@ public: /** creates a TextureAtlas with an filename and with an initial capacity for Quads. * The TextureAtlas capacity can be increased in runtime. */ - static TextureAtlas* create(const char* file , int capacity); + static TextureAtlas* create(const char* file , ssize_t capacity); /** creates a TextureAtlas with a previously initialized Texture2D object, and * with an initial capacity for n Quads. * The TextureAtlas capacity can be increased in runtime. */ - static TextureAtlas* createWithTexture(Texture2D *texture, int capacity); + static TextureAtlas* createWithTexture(Texture2D *texture, ssize_t capacity); /** * @js ctor */ @@ -81,7 +81,7 @@ public: * * WARNING: Do not reinitialize the TextureAtlas because it will leak memory (issue #706) */ - bool initWithFile(const char* file, int capacity); + bool initWithFile(const char* file, ssize_t capacity); /** initializes a TextureAtlas with a previously initialized Texture2D object, and * with an initial capacity for Quads. @@ -89,43 +89,43 @@ public: * * WARNING: Do not reinitialize the TextureAtlas because it will leak memory (issue #706) */ - bool initWithTexture(Texture2D *texture, int capacity); + bool initWithTexture(Texture2D *texture, ssize_t capacity); /** updates a Quad (texture, vertex and color) at a certain index * index must be between 0 and the atlas capacity - 1 @since v0.8 */ - void updateQuad(V3F_C4B_T2F_Quad* quad, int index); + void updateQuad(V3F_C4B_T2F_Quad* quad, ssize_t index); /** Inserts a Quad (texture, vertex and color) at a certain index index must be between 0 and the atlas capacity - 1 @since v0.8 */ - void insertQuad(V3F_C4B_T2F_Quad* quad, int index); + void insertQuad(V3F_C4B_T2F_Quad* quad, ssize_t index); /** Inserts a c array of quads at a given index index must be between 0 and the atlas capacity - 1 this method doesn't enlarge the array when amount + index > totalQuads @since v1.1 */ - void insertQuads(V3F_C4B_T2F_Quad* quads, int index, int amount); + void insertQuads(V3F_C4B_T2F_Quad* quads, ssize_t index, ssize_t amount); /** Removes the quad that is located at a certain index and inserts it at a new index This operation is faster than removing and inserting in a quad in 2 different steps @since v0.7.2 */ - void insertQuadFromIndex(int fromIndex, int newIndex); + void insertQuadFromIndex(ssize_t fromIndex, ssize_t newIndex); /** removes a quad at a given index number. The capacity remains the same, but the total number of quads to be drawn is reduced in 1 @since v0.7.2 */ - void removeQuadAtIndex(int index); + void removeQuadAtIndex(ssize_t index); /** removes a amount of quads starting from index @since 1.1 */ - void removeQuadsAtIndex(int index, int amount); + void removeQuadsAtIndex(ssize_t index, ssize_t amount); /** removes all Quads. The TextureAtlas capacity remains untouched. No memory is freed. The total number of quads to be drawn will be 0 @@ -138,19 +138,19 @@ public: * It returns true if the resize was successful. * If it fails to resize the capacity it will return false with a new capacity of 0. */ - bool resizeCapacity(int capacity); + bool resizeCapacity(ssize_t capacity); /** Used internally by ParticleBatchNode don't use this unless you know what you're doing @since 1.1 */ - void increaseTotalQuadsWith(int amount); + void increaseTotalQuadsWith(ssize_t amount); /** Moves an amount of quads from oldIndex at newIndex @since v1.1 */ - void moveQuadsFromIndex(int oldIndex, int amount, int newIndex); + void moveQuadsFromIndex(ssize_t oldIndex, ssize_t amount, ssize_t newIndex); /** Moves quads from index till totalQuads to the newIndex @@ -158,26 +158,26 @@ public: This method doesn't enlarge the array if newIndex + quads to be moved > capacity @since 1.1 */ - void moveQuadsFromIndex(int index, int newIndex); + void moveQuadsFromIndex(ssize_t index, ssize_t newIndex); /** Ensures that after a realloc quads are still empty Used internally by ParticleBatchNode @since 1.1 */ - void fillWithEmptyQuadsFromIndex(int index, int amount); + void fillWithEmptyQuadsFromIndex(ssize_t index, ssize_t amount); /** draws n quads * n can't be greater than the capacity of the Atlas */ - void drawNumberOfQuads(int n); + void drawNumberOfQuads(ssize_t n); /** draws n quads from an index (offset). n + start can't be greater than the capacity of the atlas @since v1.0 */ - void drawNumberOfQuads(int numberOfQuads, int start); + void drawNumberOfQuads(ssize_t numberOfQuads, ssize_t start); /** draws all the Atlas's Quads */ @@ -197,10 +197,10 @@ public: const char* description() const; /** Gets the quantity of quads that are going to be drawn */ - int getTotalQuads() const; + ssize_t getTotalQuads() const; /** Gets the quantity of quads that can be stored with the current texture atlas size */ - int getCapacity() const; + ssize_t getCapacity() const; /** Gets the texture of the texture atlas */ Texture2D* getTexture() const; @@ -226,9 +226,9 @@ protected: GLuint _buffersVBO[2]; //0: vertex 1: indices bool _dirty; //indicates whether or not the array buffer of the VBO needs to be updated /** quantity of quads that are going to be drawn */ - int _totalQuads; + ssize_t _totalQuads; /** quantity of quads that can be stored with the current texture atlas size */ - int _capacity; + ssize_t _capacity; /** Texture of the texture atlas */ Texture2D* _texture; /** Quads that are going to be rendered */ diff --git a/cocos/2d/CCTileMapAtlas.cpp b/cocos/2d/CCTileMapAtlas.cpp index 001a2aca6d..49add06d73 100644 --- a/cocos/2d/CCTileMapAtlas.cpp +++ b/cocos/2d/CCTileMapAtlas.cpp @@ -222,7 +222,7 @@ void TileMapAtlas::updateAtlasValueAt(const Point& pos, const Color3B& value, in quad->bl.colors = color; _textureAtlas->setDirty(true); - int totalQuads = _textureAtlas->getTotalQuads(); + ssize_t totalQuads = _textureAtlas->getTotalQuads(); if (index + 1 > totalQuads) { _textureAtlas->increaseTotalQuadsWith(index + 1 - totalQuads); } diff --git a/cocos/base/CCAutoreleasePool.cpp b/cocos/base/CCAutoreleasePool.cpp index 01f65a7d3a..f1619b3746 100644 --- a/cocos/base/CCAutoreleasePool.cpp +++ b/cocos/base/CCAutoreleasePool.cpp @@ -141,7 +141,7 @@ void PoolManager::pop() return; } - int count = _releasePoolStack.size(); + ssize_t count = _releasePoolStack.size(); _curReleasePool->clear(); diff --git a/cocos/base/CCVector.h b/cocos/base/CCVector.h index 5ae654c8b8..dfe5ef4b88 100644 --- a/cocos/base/CCVector.h +++ b/cocos/base/CCVector.h @@ -37,34 +37,6 @@ template class CC_DLL Vector { public: - // ------------------------------------------ - // Iterators - // ------------------------------------------ - typedef typename std::vector::iterator iterator; - typedef typename std::vector::const_iterator const_iterator; - - typedef typename std::vector::reverse_iterator reverse_iterator; - typedef typename std::vector::const_reverse_iterator const_reverse_iterator; - - iterator begin() { return _data.begin(); } - const_iterator begin() const { return _data.begin(); } - - iterator end() { return _data.end(); } - const_iterator end() const { return _data.end(); } - - const_iterator cbegin() const { return _data.cbegin(); } - const_iterator cend() const { return _data.cend(); } - - reverse_iterator rbegin() { return _data.rbegin(); } - const_reverse_iterator rbegin() const { return _data.rbegin(); } - - reverse_iterator rend() { return _data.rend(); } - const_reverse_iterator rend() const { return _data.rend(); } - - const_reverse_iterator crbegin() const { return _data.crbegin(); } - const_reverse_iterator crend() const { return _data.crend(); } - - /** Constructor */ Vector() : _data() { @@ -133,7 +105,7 @@ public: } /** Returns capacity of the array */ - int capacity() const + ssize_t capacity() const { return _data.capacity(); } @@ -141,9 +113,9 @@ public: // Querying an Array /** Returns element count of the array */ - int size() const + ssize_t size() const { - return static_cast(_data.size()); + return _data.size(); } bool empty() const @@ -154,23 +126,18 @@ public: /** Returns index of a certain object, return UINT_MAX if doesn't contain the object */ ssize_t getIndex(T object) const { - auto iter = std::find(_data.begin(), _data.end(), object); - if (iter != _data.end()) - return iter - _data.begin(); - + ssize_t i = 0; + for (auto it = _data.begin(); it != _data.end(); ++it, ++i) + { + if (*it == object) + { + return i; + } + } + return -1; } - const_iterator find(T object) const - { - return std::find(_data.begin(), _data.end(), object); - } - - iterator find(T object) - { - return std::find(_data.begin(), _data.end(), object); - } - /** Returns an element with a certain index */ T at(ssize_t index) const { @@ -194,7 +161,7 @@ public: { if (!_data.empty()) { - int randIdx = rand() % _data.size(); + ssize_t randIdx = rand() % _data.size(); return *(_data.begin() + randIdx); } return nullptr; @@ -261,9 +228,9 @@ public: _data.pop_back(); last->release(); } - + /** Remove a certain object */ - void erase(T object, bool toRelease = true) + void removeObject(T object, bool toRelease = true) { CCASSERT(object != nullptr, "The object should not be nullptr"); auto iter = std::find(_data.begin(), _data.end(), object); @@ -274,24 +241,7 @@ public: } /** Removes an element with a certain index */ - iterator erase(iterator position) - { - CCASSERT(position >= _data.begin() && position < _data.end(), "Invalid position!"); - (*position)->release(); - return _data.erase(position); - } - - iterator erase(const_iterator first, const_iterator last) - { - for (auto iter = first; iter != last; ++iter) - { - (*iter)->release(); - } - - return _data.erase(first, last); - } - - void erase(int index) + void remove(ssize_t index) { CCASSERT(!_data.empty() && index >=0 && index < size(), "Invalid index!"); auto it = std::next( begin(), index ); @@ -402,6 +352,33 @@ public: }); } + // ------------------------------------------ + // Iterators + // ------------------------------------------ + typedef typename std::vector::iterator iterator; + typedef typename std::vector::const_iterator const_iterator; + + typedef typename std::vector::reverse_iterator reverse_iterator; + typedef typename std::vector::const_reverse_iterator const_reverse_iterator; + + iterator begin() { return _data.begin(); } + const_iterator begin() const { return _data.begin(); } + + iterator end() { return _data.end(); } + const_iterator end() const { return _data.end(); } + + const_iterator cbegin() const { return _data.cbegin(); } + const_iterator cend() const { return _data.cend(); } + + reverse_iterator rbegin() { return _data.rbegin(); } + const_reverse_iterator rbegin() const { return _data.rbegin(); } + + reverse_iterator rend() { return _data.rend(); } + const_reverse_iterator rend() const { return _data.rend(); } + + const_reverse_iterator crbegin() const { return _data.crbegin(); } + const_reverse_iterator crend() const { return _data.crend(); } + protected: void addRefForAllObjects() diff --git a/cocos/editor-support/cocosbuilder/CCBAnimationManager.cpp b/cocos/editor-support/cocosbuilder/CCBAnimationManager.cpp index 431e5453c3..b0daa76b77 100644 --- a/cocos/editor-support/cocosbuilder/CCBAnimationManager.cpp +++ b/cocos/editor-support/cocosbuilder/CCBAnimationManager.cpp @@ -623,7 +623,7 @@ Object* CCBAnimationManager::actionForCallbackChannel(CCBSequenceProperty* chann Vector actions; auto& keyframes = channel->getKeyframes(); - int numKeyframes = keyframes.size(); + ssize_t numKeyframes = keyframes.size(); for (long i = 0; i < numKeyframes; ++i) { @@ -712,7 +712,7 @@ Object* CCBAnimationManager::actionForSoundChannel(CCBSequenceProperty* channel) Vector actions; auto& keyframes = channel->getKeyframes(); - int numKeyframes = keyframes.size(); + ssize_t numKeyframes = keyframes.size(); for (int i = 0; i < numKeyframes; ++i) { @@ -753,7 +753,7 @@ Object* CCBAnimationManager::actionForSoundChannel(CCBSequenceProperty* channel) void CCBAnimationManager::runAction(Node *pNode, CCBSequenceProperty *pSeqProp, float fTweenDuration) { auto& keyframes = pSeqProp->getKeyframes(); - int numKeyframes = keyframes.size(); + ssize_t numKeyframes = keyframes.size(); if (numKeyframes > 1) { @@ -768,7 +768,7 @@ void CCBAnimationManager::runAction(Node *pNode, CCBSequenceProperty *pSeqProp, actions.pushBack(DelayTime::create(timeFirst)); } - for (int i = 0; i < numKeyframes - 1; ++i) + for (ssize_t i = 0; i < numKeyframes - 1; ++i) { CCBKeyframe *kf0 = keyframes.at(i); CCBKeyframe *kf1 = keyframes.at(i+1); diff --git a/cocos/editor-support/cocosbuilder/CCNodeLoader.cpp b/cocos/editor-support/cocosbuilder/CCNodeLoader.cpp index 3dceb6b7dc..895aaaf59d 100644 --- a/cocos/editor-support/cocosbuilder/CCNodeLoader.cpp +++ b/cocos/editor-support/cocosbuilder/CCNodeLoader.cpp @@ -970,9 +970,9 @@ Node * NodeLoader::parsePropTypeCCBFile(Node * pNode, Node * pParent, CCBReader if (!ownerCallbackNames.empty() && !ownerCallbackNodes.empty()) { CCASSERT(ownerCallbackNames.size() == ownerCallbackNodes.size(), ""); - int nCount = ownerCallbackNames.size(); + ssize_t nCount = ownerCallbackNames.size(); - for (int i = 0 ; i < nCount; i++) + for (ssize_t i = 0 ; i < nCount; i++) { pCCBReader->addOwnerCallbackName(ownerCallbackNames[i].asString()); pCCBReader->addOwnerCallbackNode(ownerCallbackNodes.at(i)); @@ -984,9 +984,9 @@ Node * NodeLoader::parsePropTypeCCBFile(Node * pNode, Node * pParent, CCBReader if (!ownerOutletNames.empty() && !ownerOutletNodes.empty()) { CCASSERT(ownerOutletNames.size() == ownerOutletNodes.size(), ""); - int nCount = ownerOutletNames.size(); + ssize_t nCount = ownerOutletNames.size(); - for (int i = 0 ; i < nCount; i++) + for (ssize_t i = 0 ; i < nCount; i++) { pCCBReader->addOwnerOutletName(ownerOutletNames.at(i).asString()); pCCBReader->addOwnerOutletNode(ownerOutletNodes.at(i)); diff --git a/cocos/editor-support/spine/SkeletonJson.cpp b/cocos/editor-support/spine/SkeletonJson.cpp index 9b391ef2db..57aff46a6b 100644 --- a/cocos/editor-support/spine/SkeletonJson.cpp +++ b/cocos/editor-support/spine/SkeletonJson.cpp @@ -61,7 +61,7 @@ void SkeletonJson_dispose (SkeletonJson* self) { void _SkeletonJson_setError (SkeletonJson* self, Json* root, const char* value1, const char* value2) { char message[256]; - int length; + size_t length; FREE(self->error); strcpy(message, value1); length = strlen(value1); diff --git a/cocos/editor-support/spine/extension.cpp b/cocos/editor-support/spine/extension.cpp index 3fa34170b9..48477eb7b0 100644 --- a/cocos/editor-support/spine/extension.cpp +++ b/cocos/editor-support/spine/extension.cpp @@ -50,10 +50,10 @@ void _setFree (void (*free) (void* ptr)) { freeFunc = free; } -char* _readFile (const char* path, int* length) { +char* _readFile (const char* path, ssize_t* length) { char *data; FILE *file = fopen(path, "rb"); - int readBytes = 0; + ssize_t readBytes = 0; if (!file) return 0; fseek(file, 0, SEEK_END); diff --git a/cocos/editor-support/spine/extension.h b/cocos/editor-support/spine/extension.h index a8f64b1b19..e07f18eda4 100644 --- a/cocos/editor-support/spine/extension.h +++ b/cocos/editor-support/spine/extension.h @@ -114,7 +114,7 @@ void _free (void* ptr); void _setMalloc (void* (*_malloc) (size_t size)); void _setFree (void (*_free) (void* ptr)); -char* _readFile (const char* path, int* length); +char* _readFile (const char* path, ssize_t* length); /**/ diff --git a/cocos/network/HttpRequest.h b/cocos/network/HttpRequest.h index 4282193043..7264daeba3 100644 --- a/cocos/network/HttpRequest.h +++ b/cocos/network/HttpRequest.h @@ -129,7 +129,7 @@ public: return nullptr; } /** Get the size of request data back */ - inline int getRequestDataSize() + inline ssize_t getRequestDataSize() { return _requestData.size(); } diff --git a/cocos/network/HttpResponse.h b/cocos/network/HttpResponse.h index ac5fb68b2e..9f4bd10028 100644 --- a/cocos/network/HttpResponse.h +++ b/cocos/network/HttpResponse.h @@ -107,7 +107,7 @@ public: /** Get the http response errorCode * I know that you want to see http 200 :) */ - inline int getResponseCode() + inline long getResponseCode() { return _responseCode; } @@ -150,7 +150,7 @@ public: /** Set the http response errorCode */ - inline void setResponseCode(int value) + inline void setResponseCode(long value) { _responseCode = value; } @@ -172,7 +172,7 @@ protected: bool _succeed; /// to indecate if the http reqeust is successful simply std::vector _responseData; /// the returned raw data. You can also dump it as a string std::vector _responseHeader; /// the returned raw header data. You can also dump it as a string - int _responseCode; /// the status code returned from libcurl, e.g. 200, 404 + long _responseCode; /// the status code returned from libcurl, e.g. 200, 404 std::string _errorBuffer; /// if _responseCode != 200, please read _errorBuffer to find the reason }; diff --git a/extensions/GUI/CCScrollView/CCTableView.cpp b/extensions/GUI/CCScrollView/CCTableView.cpp index b74026cd01..3dc65621f8 100644 --- a/extensions/GUI/CCScrollView/CCTableView.cpp +++ b/extensions/GUI/CCScrollView/CCTableView.cpp @@ -123,7 +123,7 @@ void TableView::reloadData() } } -TableViewCell *TableView::cellAtIndex(long idx) +TableViewCell *TableView::cellAtIndex(ssize_t idx) { if (_indices->find(idx) != _indices->end()) { @@ -139,7 +139,7 @@ TableViewCell *TableView::cellAtIndex(long idx) return nullptr; } -void TableView::updateCellAtIndex(long idx) +void TableView::updateCellAtIndex(ssize_t idx) { if (idx == CC_INVALID_INDEX) { @@ -161,7 +161,7 @@ void TableView::updateCellAtIndex(long idx) this->_addCellIfNecessary(cell); } -void TableView::insertCellAtIndex(long idx) +void TableView::insertCellAtIndex(ssize_t idx) { if (idx == CC_INVALID_INDEX) { @@ -197,7 +197,7 @@ void TableView::insertCellAtIndex(long idx) this->_updateContentSize(); } -void TableView::removeCellAtIndex(long idx) +void TableView::removeCellAtIndex(ssize_t idx) { if (idx == CC_INVALID_INDEX) { @@ -210,7 +210,7 @@ void TableView::removeCellAtIndex(long idx) return; } - unsigned int newIdx = 0; + ssize_t newIdx = 0; TableViewCell* cell = this->cellAtIndex(idx); if (!cell) @@ -226,7 +226,7 @@ void TableView::removeCellAtIndex(long idx) _indices->erase(idx); this->_updateCellPositions(); - for (int i = _cellsUsed.size()-1; i > newIdx; i--) + for (ssize_t i = _cellsUsed.size()-1; i > newIdx; i--) { cell = _cellsUsed.at(i); this->_setIndexForCell(cell->getIdx()-1, cell); @@ -262,7 +262,7 @@ void TableView::_addCellIfNecessary(TableViewCell * cell) void TableView::_updateContentSize() { Size size = Size::ZERO; - unsigned int cellsCount = _dataSource->numberOfCellsInTableView(this); + ssize_t cellsCount = _dataSource->numberOfCellsInTableView(this); if (cellsCount > 0) { @@ -296,7 +296,7 @@ void TableView::_updateContentSize() } -Point TableView::_offsetFromIndex(long index) +Point TableView::_offsetFromIndex(ssize_t index) { Point offset = this->__offsetFromIndex(index); @@ -308,7 +308,7 @@ Point TableView::_offsetFromIndex(long index) return offset; } -Point TableView::__offsetFromIndex(long index) +Point TableView::__offsetFromIndex(ssize_t index) { Point offset; Size cellSize; @@ -409,7 +409,7 @@ void TableView::_moveCellOutOfSight(TableViewCell *cell) } } -void TableView::_setIndexForCell(long index, TableViewCell *cell) +void TableView::_setIndexForCell(ssize_t index, TableViewCell *cell) { cell->setAnchorPoint(Point(0.0f, 0.0f)); cell->setPosition(this->_offsetFromIndex(index)); @@ -464,7 +464,7 @@ void TableView::scrollViewDidScroll(ScrollView* view) _tableViewDelegate->scrollViewDidScroll(this); } - long startIdx = 0, endIdx = 0, idx = 0, maxIdx = 0; + ssize_t startIdx = 0, endIdx = 0, idx = 0, maxIdx = 0; Point offset = this->getContentOffset() * -1; maxIdx = MAX(countOfItems-1, 0); diff --git a/extensions/GUI/CCScrollView/CCTableView.h b/extensions/GUI/CCScrollView/CCTableView.h index 4201a2c1a4..c01b3eb4a2 100644 --- a/extensions/GUI/CCScrollView/CCTableView.h +++ b/extensions/GUI/CCScrollView/CCTableView.h @@ -105,7 +105,7 @@ public: * @param idx the index of a cell to get a size * @return size of a cell at given index */ - virtual Size tableCellSizeForIndex(TableView *table, long idx) { + virtual Size tableCellSizeForIndex(TableView *table, ssize_t idx) { return cellSizeForTable(table); }; /** @@ -123,7 +123,7 @@ public: * @param idx index to search for a cell * @return cell found at idx */ - virtual TableViewCell* tableCellAtIndex(TableView *table, long idx) = 0; + virtual TableViewCell* tableCellAtIndex(TableView *table, ssize_t idx) = 0; /** * Returns number of cells in a given table view. * @@ -228,19 +228,19 @@ public: * * @param idx index to find a cell */ - void updateCellAtIndex(long idx); + void updateCellAtIndex(ssize_t idx); /** * Inserts a new cell at a given index * * @param idx location to insert */ - void insertCellAtIndex(long idx); + void insertCellAtIndex(ssize_t idx); /** * Removes a cell at a given index * * @param idx index to find a cell */ - void removeCellAtIndex(long idx); + void removeCellAtIndex(ssize_t idx); /** * reloads data from data source. the view will be refreshed. */ @@ -258,7 +258,7 @@ public: * @param idx index * @return a cell at a given index */ - TableViewCell *cellAtIndex(long idx); + TableViewCell *cellAtIndex(ssize_t idx); // Overrides virtual void scrollViewDidScroll(ScrollView* view) override; @@ -271,11 +271,11 @@ public: protected: long __indexFromOffset(Point offset); long _indexFromOffset(Point offset); - Point __offsetFromIndex(long index); - Point _offsetFromIndex(long index); + Point __offsetFromIndex(ssize_t index); + Point _offsetFromIndex(ssize_t index); void _moveCellOutOfSight(TableViewCell *cell); - void _setIndexForCell(long index, TableViewCell *cell); + void _setIndexForCell(ssize_t index, TableViewCell *cell); void _addCellIfNecessary(TableViewCell * cell); void _updateCellPositions(); @@ -290,7 +290,7 @@ protected: /** * index set to query the indexes of the cells used. */ - std::set* _indices; + std::set* _indices; /** * vector with all cell positions diff --git a/external/json/json_writer.cpp b/external/json/json_writer.cpp index cdf4188f2e..bcde6089dc 100644 --- a/external/json/json_writer.cpp +++ b/external/json/json_writer.cpp @@ -116,7 +116,7 @@ std::string valueToQuotedString( const char *value ) // We have to walk value and escape any special characters. // Appending to std::string is not efficient, but this should be rare. // (Note: forward slashes are *not* rare, but I am not escaping them.) - unsigned maxsize = strlen(value)*2 + 3; // allescaped+quotes+NULL + size_t maxsize = strlen(value)*2 + 3; // allescaped+quotes+NULL std::string result; result.reserve(maxsize); // to avoid lots of mallocs result += "\"";