joybox 0.0.5 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +8 -8
- data/Gemfile.lock +1 -1
- data/LICENSE +1 -1
- data/LICENSE_Box2D +20 -0
- data/LICENSE_Cocos2D +24 -0
- data/README.md +34 -66
- data/Rakefile +2 -3
- data/bin/joybox +49 -0
- data/command/joybox/USAGE +24 -0
- data/command/joybox/templates/layer.erb +11 -0
- data/command/joybox/templates/layer_spec.erb +3 -0
- data/command/joybox/templates/scene.erb +11 -0
- data/command/joybox/templates/scene_spec.erb +3 -0
- data/command/joybox/templates/sprite.erb +11 -0
- data/command/joybox/templates/sprite_spec.erb +3 -0
- data/command/joybox_generate_command.rb +114 -0
- data/joybox.gemspec +44 -0
- data/lib/joybox/joybox-ios.rb +47 -0
- data/lib/joybox/joybox-osx.rb +47 -0
- data/lib/joybox/version.rb +1 -1
- data/lib/joybox.rb +18 -36
- data/{lib/joybox/cocos2d → motion/joybox}/actions/actions.rb +0 -0
- data/motion/joybox/actions/animate.rb +22 -0
- data/motion/joybox/actions/bezier.rb +33 -0
- data/motion/joybox/actions/blink.rb +24 -0
- data/motion/joybox/actions/ease.rb +149 -0
- data/motion/joybox/actions/fade.rb +38 -0
- data/motion/joybox/actions/jump.rb +39 -0
- data/{lib/joybox/cocos2d → motion/joybox}/actions/move.rb +4 -2
- data/motion/joybox/actions/place.rb +22 -0
- data/{lib/joybox/cocos2d → motion/joybox}/actions/repeat.rb +10 -1
- data/{lib/joybox/cocos2d → motion/joybox}/actions/rotate.rb +4 -2
- data/{lib/joybox/cocos2d → motion/joybox}/actions/scale.rb +4 -2
- data/{lib/joybox/cocos2d → motion/joybox}/actions/sequence.rb +3 -3
- data/{lib/joybox/cocos2d → motion/joybox}/actions/skew.rb +0 -0
- data/motion/joybox/actions/spawn.rb +22 -0
- data/motion/joybox/actions/tint.rb +37 -0
- data/motion/joybox/animations/animation.rb +60 -0
- data/{lib/joybox/cocos2d → motion/joybox}/common/color.rb +12 -1
- data/{lib/joybox/cocos2d → motion/joybox}/common/gc_size.rb +4 -4
- data/{lib/joybox/cocos2d → motion/joybox}/common/ns_set.rb +0 -0
- data/{lib/joybox/cocos2d → motion/joybox}/common/numeric.rb +0 -0
- data/{lib/joybox/cocos2d → motion/joybox}/common/screen.rb +4 -4
- data/motion/joybox/core/layer.rb +51 -0
- data/{lib/joybox/cocos2d → motion/joybox}/core/node.rb +0 -0
- data/{lib/joybox/cocos2d → motion/joybox}/core/scene.rb +0 -0
- data/{lib/joybox/cocos2d → motion/joybox}/core/sprite.rb +22 -3
- data/{lib/joybox/cocos2d → motion/joybox}/core/sprite_batch.rb +0 -0
- data/motion/joybox/core/sprite_frame_cache.rb +147 -0
- data/{lib/joybox/cocos2d/cocos2d.rb → motion/joybox/joybox.rb} +3 -1
- data/{lib/joybox/cocos2d → motion/joybox}/macros.rb +0 -0
- data/{lib/joybox/box2d → motion/joybox/physics}/body.rb +44 -17
- data/{lib/joybox/cocos2d/core → motion/joybox/physics}/physics_sprite.rb +1 -1
- data/motion/joybox/physics/world.rb +79 -0
- data/{lib/joybox/cocos2d → motion/joybox}/ui/label.rb +3 -2
- data/{lib/joybox/cocos2d → motion/joybox}/ui/menu.rb +0 -0
- data/{lib/joybox/cocos2d → motion/joybox}/ui/menu_image.rb +0 -0
- data/{lib/joybox/cocos2d → motion/joybox}/ui/menu_label.rb +0 -0
- data/{lib/joybox/cocos2d → motion/joybox}/ui/ui.rb +0 -0
- data/{lib/joybox/cocos2d → motion/joybox-ios}/common/cg_point.rb +9 -2
- data/{lib/joybox/cocos2d → motion/joybox-ios}/common/ui_touch.rb +1 -1
- data/{lib/joybox/cocos2d → motion/joybox-ios}/configuration/configuration.rb +0 -0
- data/{lib/joybox/cocos2d → motion/joybox-ios}/configuration/file_utils.rb +0 -3
- data/{lib/joybox/cocos2d → motion/joybox-ios}/configuration/gl_view.rb +0 -0
- data/{lib/joybox/cocos2d → motion/joybox-ios}/configuration/texture_2d.rb +0 -0
- data/{lib/joybox/cocos2d → motion/joybox-ios}/core/layer.rb +1 -45
- data/{lib/joybox/cocos2d → motion/joybox-ios}/director.rb +6 -6
- data/motion/joybox-osx/common/ats_point.rb +48 -0
- data/motion/joybox-osx/common/ns_event.rb +8 -0
- data/motion/joybox-osx/configuration/configuration.rb +46 -0
- data/motion/joybox-osx/configuration/gl_view.rb +57 -0
- data/motion/joybox-osx/core/layer.rb +135 -0
- data/motion/joybox-osx/director.rb +42 -0
- data/template/joybox-ios/files/Rakefile.erb +9 -0
- data/{app → template/joybox-ios/files/app}/app_delegate.rb +1 -5
- data/{resources → template/joybox-ios/files/resources}/fps_images-hd.png +0 -0
- data/{resources → template/joybox-ios/files/resources}/fps_images-ipadhd.png +0 -0
- data/{resources → template/joybox-ios/files/resources}/fps_images.png +0 -0
- data/template/joybox-ios/files/spec/main_spec.rb.erb +9 -0
- data/template/joybox-osx/files/Rakefile.erb +9 -0
- data/template/joybox-osx/files/app/app_delegate.rb +23 -0
- data/template/joybox-osx/files/app/layers/default_layer.rb +5 -0
- data/template/joybox-osx/files/app/menu.rb +51 -0
- data/template/joybox-osx/files/resources/Credits.rtf +29 -0
- data/template/joybox-osx/files/resources/fps_images-hd.png +0 -0
- data/template/joybox-osx/files/resources/fps_images-ipadhd.png +0 -0
- data/template/joybox-osx/files/resources/fps_images.png +0 -0
- data/template/joybox-osx/files/spec/main_spec.rb.erb +9 -0
- data/vendor/{Box2D.framework → vendor-ios/Box2D.framework}/Box2D +0 -0
- data/vendor/{Box2D.framework → vendor-ios/Box2D.framework}/Box2D.framework.bridgesupport +47 -37
- data/vendor/{Box2D.framework → vendor-ios/Box2D.framework}/Versions/A/Box2D +0 -0
- data/vendor/{Box2D.framework → vendor-ios/Box2D.framework}/Versions/A/Headers/Collision/B2DContactListener.h +0 -0
- data/vendor/vendor-ios/Box2D.framework/Versions/A/Headers/Collision/Shapes/B2DCircleShape.h +16 -0
- data/vendor/{Box2D.framework → vendor-ios/Box2D.framework}/Versions/A/Headers/Collision/Shapes/B2DEdgeShape.h +0 -0
- data/vendor/{Box2D.framework → vendor-ios/Box2D.framework}/Versions/A/Headers/Collision/Shapes/B2DPolygonShape.h +0 -0
- data/vendor/{Box2D.framework → vendor-ios/Box2D.framework}/Versions/A/Headers/Collision/Shapes/B2DShape.h +0 -0
- data/vendor/{Box2D.framework → vendor-ios/Box2D.framework}/Versions/A/Headers/Dynamics/B2DBody.h +6 -6
- data/vendor/{Box2D.framework → vendor-ios/Box2D.framework}/Versions/A/Headers/Dynamics/B2DWorld.h +0 -0
- data/vendor/{Box2D.framework → vendor-ios/Box2D.framework}/Versions/A/Resources/Box2DConfig.cmake +0 -0
- data/vendor/{Box2D.framework → vendor-ios/Box2D.framework}/Versions/A/Resources/CMakeLists.txt +0 -0
- data/vendor/vendor-ios/Box2D.framework/Versions/A/Resources/LICENSE +22 -0
- data/vendor/vendor-ios/cocos_2d/cocos_2d.bridgesupport +9154 -0
- data/vendor/vendor-ios/cocos_2d/cocos_2d_exceptions.bridgesupport +39 -0
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCAction.h +23 -23
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCActionCamera.h +21 -19
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCActionCatmullRom.h +18 -6
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCActionEase.h +117 -31
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCActionGrid.h +19 -17
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCActionGrid3D.h +45 -42
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCActionInstant.h +21 -13
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCActionInterval.h +123 -81
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCActionManager.h +2 -2
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCActionPageTurn3D.h +2 -1
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCActionProgressTimer.h +4 -4
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCActionTiledGrid.h +46 -38
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCActionTween.h +3 -3
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCAnimation.h +8 -8
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCAnimationCache.h +2 -2
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCAtlasNode.h +19 -17
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCCamera.h +12 -12
- data/vendor/vendor-ios/cocos_2d/include/CCClippingNode.h +77 -0
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCConfiguration.h +31 -13
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCDirector.h +51 -42
- data/vendor/vendor-ios/cocos_2d/include/CCDrawNode.h +65 -0
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCDrawingPrimitives.h +42 -8
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCGLProgram.h +56 -21
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCGrabber.h +2 -2
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCGrid.h +29 -29
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCLabelAtlas.h +5 -2
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCLabelBMFont.h +56 -32
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCLabelTTF.h +20 -20
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCLayer.h +107 -79
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCMenu.h +10 -14
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCMenuItem.h +37 -32
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCMotionStreak.h +18 -19
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCNode+Debug.h +0 -0
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCNode.h +87 -37
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCParallaxNode.h +2 -2
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCParticleBatchNode.h +2 -2
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCParticleExamples.h +22 -0
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCParticleSystem.h +51 -40
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCParticleSystemQuad.h +4 -4
- data/vendor/vendor-ios/cocos_2d/include/CCPhysicsDebugNode.h +58 -0
- data/vendor/vendor-ios/cocos_2d/include/CCPhysicsSprite.h +82 -0
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCProgressTimer.h +9 -11
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCProtocols.h +54 -26
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCRenderTexture.h +29 -9
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCScene.h +4 -0
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCScheduler.h +94 -40
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCShaderCache.h +1 -1
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCSprite.h +21 -28
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCSpriteBatchNode.h +16 -9
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCSpriteFrame.h +10 -10
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCSpriteFrameCache.h +6 -6
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCTMXLayer.h +16 -16
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCTMXObjectGroup.h +4 -4
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCTMXTiledMap.h +9 -9
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCTMXXMLParser.h +44 -33
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCTexture2D.h +17 -25
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCTextureAtlas.h +10 -10
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCTextureCache.h +4 -4
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCTexturePVR.h +25 -8
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCTileMapAtlas.h +6 -6
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCTransition.h +57 -12
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCTransitionPageTurn.h +2 -2
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCTransitionProgress.h +27 -5
- data/vendor/{Cocos2D/include → vendor-ios/cocos_2d/include/Platforms}/CCGL.h +4 -2
- data/vendor/{Cocos2D/include → vendor-ios/cocos_2d/include/Platforms}/CCNS.h +0 -0
- data/vendor/vendor-ios/cocos_2d/include/Platforms/Mac/CCDirectorMac.h +110 -0
- data/vendor/vendor-ios/cocos_2d/include/Platforms/Mac/CCEventDispatcher.h +343 -0
- data/vendor/vendor-ios/cocos_2d/include/Platforms/Mac/CCGLView.h +103 -0
- data/vendor/vendor-ios/cocos_2d/include/Platforms/Mac/CCWindow.h +41 -0
- data/vendor/{Cocos2D/include → vendor-ios/cocos_2d/include/Platforms/iOS}/CCDirectorIOS.h +12 -5
- data/vendor/{Cocos2D/include → vendor-ios/cocos_2d/include/Platforms/iOS}/CCES2Renderer.h +12 -12
- data/vendor/{Cocos2D/include → vendor-ios/cocos_2d/include/Platforms/iOS}/CCESRenderer.h +0 -0
- data/vendor/{Cocos2D/include → vendor-ios/cocos_2d/include/Platforms/iOS}/CCGLView.h +28 -13
- data/vendor/{Cocos2D/include → vendor-ios/cocos_2d/include/Platforms/iOS}/CCTouchDelegateProtocol.h +4 -4
- data/vendor/{Cocos2D/include → vendor-ios/cocos_2d/include/Platforms/iOS}/CCTouchDispatcher.h +2 -2
- data/vendor/{Cocos2D/include → vendor-ios/cocos_2d/include/Platforms/iOS}/CCTouchHandler.h +7 -7
- data/vendor/{Cocos2D/include → vendor-ios/cocos_2d/include/Support}/CCArray.h +1 -1
- data/vendor/vendor-ios/cocos_2d/include/Support/CCFileUtils.h +394 -0
- data/vendor/{Cocos2D/include → vendor-ios/cocos_2d/include/Support}/CCProfiling.h +0 -0
- data/vendor/{Cocos2D/include → vendor-ios/cocos_2d/include/Support}/CCVertex.h +1 -1
- data/vendor/{Cocos2D/include → vendor-ios/cocos_2d/include/Support}/CGPointExtension.h +4 -2
- data/vendor/{Cocos2D/include → vendor-ios/cocos_2d/include/Support}/NSThread+performBlock.h +0 -0
- data/vendor/{Cocos2D/include → vendor-ios/cocos_2d/include/Support}/OpenGL_Internal.h +0 -0
- data/vendor/{Cocos2D/include → vendor-ios/cocos_2d/include/Support}/TGAlib.h +0 -0
- data/vendor/{Cocos2D/include → vendor-ios/cocos_2d/include/Support}/TransformUtils.h +0 -0
- data/vendor/{Cocos2D/include → vendor-ios/cocos_2d/include/Support}/ZipUtils.h +4 -4
- data/vendor/{Cocos2D/include → vendor-ios/cocos_2d/include/Support}/base64.h +0 -0
- data/vendor/{Cocos2D/include → vendor-ios/cocos_2d/include/Support}/ccCArray.h +15 -15
- data/vendor/{Cocos2D/include → vendor-ios/cocos_2d/include/Support}/ccUtils.h +0 -0
- data/vendor/{Cocos2D/include → vendor-ios/cocos_2d/include/Support}/uthash.h +129 -184
- data/vendor/{Cocos2D/include → vendor-ios/cocos_2d/include/Support}/utlist.h +298 -55
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/ccConfig.h +56 -9
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/ccDeprecated.h +131 -0
- data/vendor/vendor-ios/cocos_2d/include/ccFPSImages.h +39 -0
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/ccGLStateCache.h +44 -26
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/ccMacros.h +9 -9
- data/vendor/vendor-ios/cocos_2d/include/ccShader_PositionColorLengthTexture_frag.h +41 -0
- data/vendor/vendor-ios/cocos_2d/include/ccShader_PositionColorLengthTexture_vert.h +47 -0
- data/vendor/vendor-ios/cocos_2d/include/ccShader_PositionColor_frag.h +37 -0
- data/vendor/vendor-ios/cocos_2d/include/ccShader_PositionColor_vert.h +40 -0
- data/vendor/vendor-ios/cocos_2d/include/ccShader_PositionTextureA8Color_frag.h +41 -0
- data/vendor/vendor-ios/cocos_2d/include/ccShader_PositionTextureA8Color_vert.h +45 -0
- data/vendor/vendor-ios/cocos_2d/include/ccShader_PositionTextureColorAlphaTest_frag.h +47 -0
- data/vendor/vendor-ios/cocos_2d/include/ccShader_PositionTextureColor_frag.h +39 -0
- data/vendor/vendor-ios/cocos_2d/include/ccShader_PositionTextureColor_vert.h +45 -0
- data/vendor/vendor-ios/cocos_2d/include/ccShader_PositionTexture_frag.h +38 -0
- data/vendor/vendor-ios/cocos_2d/include/ccShader_PositionTexture_uColor_frag.h +41 -0
- data/vendor/vendor-ios/cocos_2d/include/ccShader_PositionTexture_uColor_vert.h +41 -0
- data/vendor/vendor-ios/cocos_2d/include/ccShader_PositionTexture_vert.h +41 -0
- data/vendor/vendor-ios/cocos_2d/include/ccShader_Position_uColor_frag.h +37 -0
- data/vendor/vendor-ios/cocos_2d/include/ccShader_Position_uColor_vert.h +43 -0
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/ccShaders.h +11 -0
- data/vendor/vendor-ios/cocos_2d/include/ccTypes.h +392 -0
- data/vendor/vendor-ios/cocos_2d/include/cocos2d-ios-exceptions.bridgesupport +39 -0
- data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/cocos2d.h +28 -3
- data/vendor/vendor-ios/cocos_2d/include/gen_cocos2d_bridgesupport.sh +17 -0
- data/vendor/vendor-ios/cocos_2d/include/gen_cocos2d_complement.sh +17 -0
- data/vendor/vendor-ios/cocos_2d/libcocos2d.a +0 -0
- data/vendor/vendor-osx/box_2d/box_2d.bridgesupport +176 -0
- data/vendor/vendor-osx/box_2d/include/B2DBody.h +46 -0
- data/vendor/vendor-osx/box_2d/include/B2DCircleShape.h +16 -0
- data/vendor/vendor-osx/box_2d/include/B2DContactListener.h +30 -0
- data/vendor/vendor-osx/box_2d/include/B2DEdgeShape.h +17 -0
- data/vendor/vendor-osx/box_2d/include/B2DPolygonShape.h +16 -0
- data/vendor/vendor-osx/box_2d/include/B2DShape.h +18 -0
- data/vendor/vendor-osx/box_2d/include/B2DWorld.h +44 -0
- data/vendor/vendor-osx/box_2d/libBox2D.a +0 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d.bridgesupport +8292 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCAction.h +195 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCActionCamera.h +75 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCActionCatmullRom.h +151 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCActionEase.h +245 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCActionGrid.h +167 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCActionGrid3D.h +208 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCActionInstant.h +235 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCActionInterval.h +473 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCActionManager.h +113 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCActionPageTurn3D.h +43 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCActionProgressTimer.h +59 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCActionTiledGrid.h +219 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCActionTween.h +62 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCAnimation.h +150 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCAnimationCache.h +74 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCAtlasNode.h +98 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCCamera.h +98 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCClippingNode.h +77 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCConfiguration.h +144 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCDirector.h +353 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCDrawNode.h +65 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCDrawingPrimitives.h +173 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCGLProgram.h +185 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCGrabber.h +44 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCGrid.h +130 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCLabelAtlas.h +71 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCLabelBMFont.h +240 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCLabelTTF.h +132 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCLayer.h +308 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCMenu.h +96 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCMenuItem.h +428 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCMotionStreak.h +86 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCNode+Debug.h +39 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCNode.h +619 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCParallaxNode.h +50 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCParticleBatchNode.h +99 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCParticleExamples.h +117 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCParticleSystem.h +464 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCParticleSystemQuad.h +73 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCPhysicsDebugNode.h +58 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCPhysicsSprite.h +82 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCProgressTimer.h +92 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCProtocols.h +160 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCRenderTexture.h +159 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCScene.h +47 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCScheduler.h +284 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCShaderCache.h +60 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCSprite.h +281 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCSpriteBatchNode.h +145 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCSpriteFrame.h +126 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCSpriteFrameCache.h +121 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCTMXLayer.h +164 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCTMXObjectGroup.h +67 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCTMXTiledMap.h +145 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCTMXXMLParser.h +228 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCTexture2D.h +349 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCTextureAtlas.h +188 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCTextureCache.h +146 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCTexturePVR.h +146 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCTileMapAtlas.h +83 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCTransition.h +341 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCTransitionPageTurn.h +60 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCTransitionProgress.h +84 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/Platforms/CCGL.h +74 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/Platforms/CCNS.h +54 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/Platforms/Mac/CCDirectorMac.h +110 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/Platforms/Mac/CCEventDispatcher.h +343 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/Platforms/Mac/CCGLView.h +103 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/Platforms/Mac/CCWindow.h +41 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/Support/CCArray.h +119 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/Support/CCFileUtils.h +394 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/Support/CCProfiling.h +89 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/Support/CCVertex.h +36 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/Support/CGPointExtension.h +346 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/Support/NSThread+performBlock.h +22 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/Support/OpenGL_Internal.h +86 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/Support/TGAlib.h +55 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/Support/TransformUtils.h +36 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/Support/ZipUtils.h +91 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/Support/base64.h +33 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/Support/ccCArray.h +229 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/Support/ccUtils.h +36 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/Support/uthash.h +917 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/Support/utlist.h +733 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/ccConfig.h +292 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/ccDeprecated.h +431 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/ccFPSImages.h +39 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/ccGLStateCache.h +156 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/ccMacros.h +353 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/ccShader_PositionColorLengthTexture_frag.h +41 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/ccShader_PositionColorLengthTexture_vert.h +47 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/ccShader_PositionColor_frag.h +37 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/ccShader_PositionColor_vert.h +40 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/ccShader_PositionTextureA8Color_frag.h +41 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/ccShader_PositionTextureA8Color_vert.h +45 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/ccShader_PositionTextureColorAlphaTest_frag.h +47 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/ccShader_PositionTextureColor_frag.h +39 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/ccShader_PositionTextureColor_vert.h +45 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/ccShader_PositionTexture_frag.h +38 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/ccShader_PositionTexture_uColor_frag.h +41 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/ccShader_PositionTexture_uColor_vert.h +41 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/ccShader_PositionTexture_vert.h +41 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/ccShader_Position_uColor_frag.h +37 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/ccShader_Position_uColor_vert.h +43 -0
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/ccShaders.h +56 -0
- data/vendor/{Cocos2D/include → vendor-osx/cocos_2d/cocos_2d_include}/ccTypes.h +39 -35
- data/vendor/vendor-osx/cocos_2d/cocos_2d_include/cocos2d.h +203 -0
- data/vendor/vendor-osx/cocos_2d/libcocos2d.a +0 -0
- metadata +363 -195
- data/app/layers/box2d_layer.rb +0 -109
- data/app/layers/cocos2d_layer.rb +0 -14
- data/app/layers/cocos_motion_layer.rb +0 -145
- data/app/layers/menu_layer.rb +0 -59
- data/lib/joybox/box2d/world.rb +0 -79
- data/resources/box2d/blocks_sprite_sheet.png +0 -0
- data/resources/cocos_motion/dot.png +0 -0
- data/resources/cocos_motion/dot_selected.png +0 -0
- data/resources/cocos_motion/grossini.png +0 -0
- data/resources/cocos_motion/grossinis_sister.png +0 -0
- data/resources/cocos_motion/grossinis_sister_two.png +0 -0
- data/resources/cocos_motion/left_arrow.png +0 -0
- data/resources/cocos_motion/left_arrow_selected.png +0 -0
- data/resources/cocos_motion/right_arrow.png +0 -0
- data/resources/cocos_motion/right_arrow_selected.png +0 -0
- data/vendor/Cocos2D/Cocos2D.bridgesupport +0 -7808
- data/vendor/Cocos2D/include/CCFileUtils.h +0 -188
- data/vendor/Cocos2D/include/CocosDenshion/CDAudioManager.h +0 -243
- data/vendor/Cocos2D/include/CocosDenshion/CDConfig.h +0 -60
- data/vendor/Cocos2D/include/CocosDenshion/CDOpenALSupport.h +0 -77
- data/vendor/Cocos2D/include/CocosDenshion/CDXPropertyModifierAction.h +0 -45
- data/vendor/Cocos2D/include/CocosDenshion/CocosDenshion.h +0 -440
- data/vendor/Cocos2D/include/CocosDenshion/SimpleAudioEngine.h +0 -90
- data/vendor/Cocos2D/include/RubyMotionSchedule.h +0 -7
- data/vendor/Cocos2D/include/ccShader_PositionColor_frag.h +0 -12
- data/vendor/Cocos2D/include/ccShader_PositionColor_vert.h +0 -17
- data/vendor/Cocos2D/include/ccShader_PositionTextureA8Color_frag.h +0 -16
- data/vendor/Cocos2D/include/ccShader_PositionTextureA8Color_vert.h +0 -21
- data/vendor/Cocos2D/include/ccShader_PositionTextureColorAlphaTest_frag.h +0 -23
- data/vendor/Cocos2D/include/ccShader_PositionTextureColor_frag.h +0 -14
- data/vendor/Cocos2D/include/ccShader_PositionTextureColor_vert.h +0 -22
- data/vendor/Cocos2D/include/ccShader_PositionTexture_frag.h +0 -13
- data/vendor/Cocos2D/include/ccShader_PositionTexture_uColor_frag.h +0 -16
- data/vendor/Cocos2D/include/ccShader_PositionTexture_uColor_vert.h +0 -18
- data/vendor/Cocos2D/include/ccShader_PositionTexture_vert.h +0 -17
- data/vendor/Cocos2D/include/ccShader_Position_uColor_frag.h +0 -12
- data/vendor/Cocos2D/include/ccShader_Position_uColor_vert.h +0 -19
- data/vendor/Cocos2D/include/kazmath/GL/mat4stack.h +0 -51
- data/vendor/Cocos2D/include/kazmath/GL/matrix.h +0 -58
- data/vendor/Cocos2D/include/kazmath/aabb.h +0 -53
- data/vendor/Cocos2D/include/kazmath/kazmath.h +0 -39
- data/vendor/Cocos2D/include/kazmath/mat3.h +0 -75
- data/vendor/Cocos2D/include/kazmath/mat4.h +0 -93
- data/vendor/Cocos2D/include/kazmath/neon_matrix_impl.h +0 -41
- data/vendor/Cocos2D/include/kazmath/plane.h +0 -70
- data/vendor/Cocos2D/include/kazmath/quaternion.h +0 -113
- data/vendor/Cocos2D/include/kazmath/ray2.h +0 -50
- data/vendor/Cocos2D/include/kazmath/utility.h +0 -74
- data/vendor/Cocos2D/include/kazmath/vec2.h +0 -64
- data/vendor/Cocos2D/include/kazmath/vec3.h +0 -68
- data/vendor/Cocos2D/include/kazmath/vec4.h +0 -68
- data/vendor/Cocos2D/libCocosDenshion.a +0 -0
- data/vendor/Cocos2D/libcocos2d.a +0 -0
@@ -1,5 +1,5 @@
|
|
1
1
|
/*
|
2
|
-
Copyright (c) 2007-
|
2
|
+
Copyright (c) 2007-2013, Troy D. Hanson http://uthash.sourceforge.net
|
3
3
|
All rights reserved.
|
4
4
|
|
5
5
|
Redistribution and use in source and binary forms, with or without
|
@@ -24,9 +24,11 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
24
24
|
#ifndef UTLIST_H
|
25
25
|
#define UTLIST_H
|
26
26
|
|
27
|
-
#define UTLIST_VERSION 1.9.
|
27
|
+
#define UTLIST_VERSION 1.9.7
|
28
28
|
|
29
|
-
|
29
|
+
#include <assert.h>
|
30
|
+
|
31
|
+
/*
|
30
32
|
* This file contains macros to manipulate singly and doubly-linked lists.
|
31
33
|
*
|
32
34
|
* 1. LL_ macros: singly-linked lists.
|
@@ -36,7 +38,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
36
38
|
* To use singly-linked lists, your structure must have a "next" pointer.
|
37
39
|
* To use doubly-linked lists, your structure must "prev" and "next" pointers.
|
38
40
|
* Either way, the pointer to the head of the list must be initialized to NULL.
|
39
|
-
*
|
41
|
+
*
|
40
42
|
* ----------------.EXAMPLE -------------------------
|
41
43
|
* struct item {
|
42
44
|
* int id;
|
@@ -77,18 +79,18 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
77
79
|
* to dereference its prev/next pointers, and save/restore the real head.*/
|
78
80
|
#ifdef NO_DECLTYPE
|
79
81
|
#define _SV(elt,list) _tmp = (char*)(list); {char **_alias = (char**)&(list); *_alias = (elt); }
|
80
|
-
#define _NEXT(elt,list) ((char*)((list)->next))
|
81
|
-
#define _NEXTASGN(elt,list,to) { char **_alias = (char**)&((list)->next); *_alias=(char*)(to); }
|
82
|
-
#define _PREV(elt,list) ((char*)((list)->prev))
|
83
|
-
#define _PREVASGN(elt,list,to) { char **_alias = (char**)&((list)->prev); *_alias=(char*)(to); }
|
82
|
+
#define _NEXT(elt,list,next) ((char*)((list)->next))
|
83
|
+
#define _NEXTASGN(elt,list,to,next) { char **_alias = (char**)&((list)->next); *_alias=(char*)(to); }
|
84
|
+
/* #define _PREV(elt,list,prev) ((char*)((list)->prev)) */
|
85
|
+
#define _PREVASGN(elt,list,to,prev) { char **_alias = (char**)&((list)->prev); *_alias=(char*)(to); }
|
84
86
|
#define _RS(list) { char **_alias = (char**)&(list); *_alias=_tmp; }
|
85
87
|
#define _CASTASGN(a,b) { char **_alias = (char**)&(a); *_alias=(char*)(b); }
|
86
|
-
#else
|
88
|
+
#else
|
87
89
|
#define _SV(elt,list)
|
88
|
-
#define _NEXT(elt,list) ((elt)->next)
|
89
|
-
#define _NEXTASGN(elt,list,to) ((elt)->next)=(to)
|
90
|
-
#define _PREV(elt,list) ((elt)->prev)
|
91
|
-
#define _PREVASGN(elt,list,to) ((elt)->prev)=(to)
|
90
|
+
#define _NEXT(elt,list,next) ((elt)->next)
|
91
|
+
#define _NEXTASGN(elt,list,to,next) ((elt)->next)=(to)
|
92
|
+
/* #define _PREV(elt,list,prev) ((elt)->prev) */
|
93
|
+
#define _PREVASGN(elt,list,to,prev) ((elt)->prev)=(to)
|
92
94
|
#define _RS(list)
|
93
95
|
#define _CASTASGN(a,b) (a)=(b)
|
94
96
|
#endif
|
@@ -98,6 +100,9 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
98
100
|
* Unwieldy variable names used here to avoid shadowing passed-in variables. *
|
99
101
|
*****************************************************************************/
|
100
102
|
#define LL_SORT(list, cmp) \
|
103
|
+
LL_SORT2(list, cmp, next)
|
104
|
+
|
105
|
+
#define LL_SORT2(list, cmp, next) \
|
101
106
|
do { \
|
102
107
|
LDECLTYPE(list) _ls_p; \
|
103
108
|
LDECLTYPE(list) _ls_q; \
|
@@ -121,22 +126,26 @@ do {
|
|
121
126
|
_ls_psize = 0; \
|
122
127
|
for (_ls_i = 0; _ls_i < _ls_insize; _ls_i++) { \
|
123
128
|
_ls_psize++; \
|
124
|
-
_SV(_ls_q,list); _ls_q = _NEXT(_ls_q,list); _RS(list);
|
129
|
+
_SV(_ls_q,list); _ls_q = _NEXT(_ls_q,list,next); _RS(list); \
|
125
130
|
if (!_ls_q) break; \
|
126
131
|
} \
|
127
132
|
_ls_qsize = _ls_insize; \
|
128
133
|
while (_ls_psize > 0 || (_ls_qsize > 0 && _ls_q)) { \
|
129
134
|
if (_ls_psize == 0) { \
|
130
|
-
_ls_e = _ls_q; _SV(_ls_q,list); _ls_q =
|
135
|
+
_ls_e = _ls_q; _SV(_ls_q,list); _ls_q = \
|
136
|
+
_NEXT(_ls_q,list,next); _RS(list); _ls_qsize--; \
|
131
137
|
} else if (_ls_qsize == 0 || !_ls_q) { \
|
132
|
-
_ls_e = _ls_p; _SV(_ls_p,list); _ls_p =
|
138
|
+
_ls_e = _ls_p; _SV(_ls_p,list); _ls_p = \
|
139
|
+
_NEXT(_ls_p,list,next); _RS(list); _ls_psize--; \
|
133
140
|
} else if (cmp(_ls_p,_ls_q) <= 0) { \
|
134
|
-
_ls_e = _ls_p; _SV(_ls_p,list); _ls_p =
|
141
|
+
_ls_e = _ls_p; _SV(_ls_p,list); _ls_p = \
|
142
|
+
_NEXT(_ls_p,list,next); _RS(list); _ls_psize--; \
|
135
143
|
} else { \
|
136
|
-
_ls_e = _ls_q; _SV(_ls_q,list); _ls_q =
|
144
|
+
_ls_e = _ls_q; _SV(_ls_q,list); _ls_q = \
|
145
|
+
_NEXT(_ls_q,list,next); _RS(list); _ls_qsize--; \
|
137
146
|
} \
|
138
147
|
if (_ls_tail) { \
|
139
|
-
_SV(_ls_tail,list); _NEXTASGN(_ls_tail,list,_ls_e); _RS(list);
|
148
|
+
_SV(_ls_tail,list); _NEXTASGN(_ls_tail,list,_ls_e,next); _RS(list); \
|
140
149
|
} else { \
|
141
150
|
_CASTASGN(list,_ls_e); \
|
142
151
|
} \
|
@@ -144,7 +153,7 @@ do {
|
|
144
153
|
} \
|
145
154
|
_ls_p = _ls_q; \
|
146
155
|
} \
|
147
|
-
_SV(_ls_tail,list); _NEXTASGN(_ls_tail,list,NULL); _RS(list);
|
156
|
+
_SV(_ls_tail,list); _NEXTASGN(_ls_tail,list,NULL,next); _RS(list); \
|
148
157
|
if (_ls_nmerges <= 1) { \
|
149
158
|
_ls_looping=0; \
|
150
159
|
} \
|
@@ -153,7 +162,11 @@ do {
|
|
153
162
|
} else _tmp=NULL; /* quiet gcc unused variable warning */ \
|
154
163
|
} while (0)
|
155
164
|
|
165
|
+
|
156
166
|
#define DL_SORT(list, cmp) \
|
167
|
+
DL_SORT2(list, cmp, prev, next)
|
168
|
+
|
169
|
+
#define DL_SORT2(list, cmp, prev, next) \
|
157
170
|
do { \
|
158
171
|
LDECLTYPE(list) _ls_p; \
|
159
172
|
LDECLTYPE(list) _ls_q; \
|
@@ -177,32 +190,36 @@ do {
|
|
177
190
|
_ls_psize = 0; \
|
178
191
|
for (_ls_i = 0; _ls_i < _ls_insize; _ls_i++) { \
|
179
192
|
_ls_psize++; \
|
180
|
-
_SV(_ls_q,list); _ls_q = _NEXT(_ls_q,list); _RS(list);
|
193
|
+
_SV(_ls_q,list); _ls_q = _NEXT(_ls_q,list,next); _RS(list); \
|
181
194
|
if (!_ls_q) break; \
|
182
195
|
} \
|
183
196
|
_ls_qsize = _ls_insize; \
|
184
197
|
while (_ls_psize > 0 || (_ls_qsize > 0 && _ls_q)) { \
|
185
198
|
if (_ls_psize == 0) { \
|
186
|
-
_ls_e = _ls_q; _SV(_ls_q,list); _ls_q =
|
199
|
+
_ls_e = _ls_q; _SV(_ls_q,list); _ls_q = \
|
200
|
+
_NEXT(_ls_q,list,next); _RS(list); _ls_qsize--; \
|
187
201
|
} else if (_ls_qsize == 0 || !_ls_q) { \
|
188
|
-
_ls_e = _ls_p; _SV(_ls_p,list); _ls_p =
|
202
|
+
_ls_e = _ls_p; _SV(_ls_p,list); _ls_p = \
|
203
|
+
_NEXT(_ls_p,list,next); _RS(list); _ls_psize--; \
|
189
204
|
} else if (cmp(_ls_p,_ls_q) <= 0) { \
|
190
|
-
_ls_e = _ls_p; _SV(_ls_p,list); _ls_p =
|
205
|
+
_ls_e = _ls_p; _SV(_ls_p,list); _ls_p = \
|
206
|
+
_NEXT(_ls_p,list,next); _RS(list); _ls_psize--; \
|
191
207
|
} else { \
|
192
|
-
_ls_e = _ls_q; _SV(_ls_q,list); _ls_q =
|
208
|
+
_ls_e = _ls_q; _SV(_ls_q,list); _ls_q = \
|
209
|
+
_NEXT(_ls_q,list,next); _RS(list); _ls_qsize--; \
|
193
210
|
} \
|
194
211
|
if (_ls_tail) { \
|
195
|
-
_SV(_ls_tail,list); _NEXTASGN(_ls_tail,list,_ls_e); _RS(list);
|
212
|
+
_SV(_ls_tail,list); _NEXTASGN(_ls_tail,list,_ls_e,next); _RS(list); \
|
196
213
|
} else { \
|
197
214
|
_CASTASGN(list,_ls_e); \
|
198
215
|
} \
|
199
|
-
_SV(_ls_e,list); _PREVASGN(_ls_e,list,_ls_tail); _RS(list);
|
216
|
+
_SV(_ls_e,list); _PREVASGN(_ls_e,list,_ls_tail,prev); _RS(list); \
|
200
217
|
_ls_tail = _ls_e; \
|
201
218
|
} \
|
202
219
|
_ls_p = _ls_q; \
|
203
220
|
} \
|
204
221
|
_CASTASGN(list->prev, _ls_tail); \
|
205
|
-
_SV(_ls_tail,list); _NEXTASGN(_ls_tail,list,NULL); _RS(list);
|
222
|
+
_SV(_ls_tail,list); _NEXTASGN(_ls_tail,list,NULL,next); _RS(list); \
|
206
223
|
if (_ls_nmerges <= 1) { \
|
207
224
|
_ls_looping=0; \
|
208
225
|
} \
|
@@ -212,6 +229,9 @@ do {
|
|
212
229
|
} while (0)
|
213
230
|
|
214
231
|
#define CDL_SORT(list, cmp) \
|
232
|
+
CDL_SORT2(list, cmp, prev, next)
|
233
|
+
|
234
|
+
#define CDL_SORT2(list, cmp, prev, next) \
|
215
235
|
do { \
|
216
236
|
LDECLTYPE(list) _ls_p; \
|
217
237
|
LDECLTYPE(list) _ls_q; \
|
@@ -237,10 +257,10 @@ do {
|
|
237
257
|
for (_ls_i = 0; _ls_i < _ls_insize; _ls_i++) { \
|
238
258
|
_ls_psize++; \
|
239
259
|
_SV(_ls_q,list); \
|
240
|
-
if (_NEXT(_ls_q,list) == _ls_oldhead) {
|
260
|
+
if (_NEXT(_ls_q,list,next) == _ls_oldhead) { \
|
241
261
|
_ls_q = NULL; \
|
242
262
|
} else { \
|
243
|
-
_ls_q = _NEXT(_ls_q,list);
|
263
|
+
_ls_q = _NEXT(_ls_q,list,next); \
|
244
264
|
} \
|
245
265
|
_RS(list); \
|
246
266
|
if (!_ls_q) break; \
|
@@ -248,31 +268,35 @@ do {
|
|
248
268
|
_ls_qsize = _ls_insize; \
|
249
269
|
while (_ls_psize > 0 || (_ls_qsize > 0 && _ls_q)) { \
|
250
270
|
if (_ls_psize == 0) { \
|
251
|
-
_ls_e = _ls_q; _SV(_ls_q,list); _ls_q =
|
271
|
+
_ls_e = _ls_q; _SV(_ls_q,list); _ls_q = \
|
272
|
+
_NEXT(_ls_q,list,next); _RS(list); _ls_qsize--; \
|
252
273
|
if (_ls_q == _ls_oldhead) { _ls_q = NULL; } \
|
253
274
|
} else if (_ls_qsize == 0 || !_ls_q) { \
|
254
|
-
_ls_e = _ls_p; _SV(_ls_p,list); _ls_p =
|
275
|
+
_ls_e = _ls_p; _SV(_ls_p,list); _ls_p = \
|
276
|
+
_NEXT(_ls_p,list,next); _RS(list); _ls_psize--; \
|
255
277
|
if (_ls_p == _ls_oldhead) { _ls_p = NULL; } \
|
256
278
|
} else if (cmp(_ls_p,_ls_q) <= 0) { \
|
257
|
-
_ls_e = _ls_p; _SV(_ls_p,list); _ls_p =
|
279
|
+
_ls_e = _ls_p; _SV(_ls_p,list); _ls_p = \
|
280
|
+
_NEXT(_ls_p,list,next); _RS(list); _ls_psize--; \
|
258
281
|
if (_ls_p == _ls_oldhead) { _ls_p = NULL; } \
|
259
282
|
} else { \
|
260
|
-
_ls_e = _ls_q; _SV(_ls_q,list); _ls_q =
|
283
|
+
_ls_e = _ls_q; _SV(_ls_q,list); _ls_q = \
|
284
|
+
_NEXT(_ls_q,list,next); _RS(list); _ls_qsize--; \
|
261
285
|
if (_ls_q == _ls_oldhead) { _ls_q = NULL; } \
|
262
286
|
} \
|
263
287
|
if (_ls_tail) { \
|
264
|
-
_SV(_ls_tail,list); _NEXTASGN(_ls_tail,list,_ls_e); _RS(list);
|
288
|
+
_SV(_ls_tail,list); _NEXTASGN(_ls_tail,list,_ls_e,next); _RS(list); \
|
265
289
|
} else { \
|
266
290
|
_CASTASGN(list,_ls_e); \
|
267
291
|
} \
|
268
|
-
_SV(_ls_e,list); _PREVASGN(_ls_e,list,_ls_tail); _RS(list);
|
292
|
+
_SV(_ls_e,list); _PREVASGN(_ls_e,list,_ls_tail,prev); _RS(list); \
|
269
293
|
_ls_tail = _ls_e; \
|
270
294
|
} \
|
271
295
|
_ls_p = _ls_q; \
|
272
296
|
} \
|
273
297
|
_CASTASGN(list->prev,_ls_tail); \
|
274
298
|
_CASTASGN(_tmp2,list); \
|
275
|
-
_SV(_ls_tail,list); _NEXTASGN(_ls_tail,list,_tmp2); _RS(list);
|
299
|
+
_SV(_ls_tail,list); _NEXTASGN(_ls_tail,list,_tmp2,next); _RS(list); \
|
276
300
|
if (_ls_nmerges <= 1) { \
|
277
301
|
_ls_looping=0; \
|
278
302
|
} \
|
@@ -285,12 +309,33 @@ do {
|
|
285
309
|
* singly linked list macros (non-circular) *
|
286
310
|
*****************************************************************************/
|
287
311
|
#define LL_PREPEND(head,add) \
|
312
|
+
LL_PREPEND2(head,add,next)
|
313
|
+
|
314
|
+
#define LL_PREPEND2(head,add,next) \
|
288
315
|
do { \
|
289
316
|
(add)->next = head; \
|
290
317
|
head = add; \
|
291
318
|
} while (0)
|
292
319
|
|
320
|
+
#define LL_CONCAT(head1,head2) \
|
321
|
+
LL_CONCAT2(head1,head2,next)
|
322
|
+
|
323
|
+
#define LL_CONCAT2(head1,head2,next) \
|
324
|
+
do { \
|
325
|
+
LDECLTYPE(head1) _tmp; \
|
326
|
+
if (head1) { \
|
327
|
+
_tmp = head1; \
|
328
|
+
while (_tmp->next) { _tmp = _tmp->next; } \
|
329
|
+
_tmp->next=(head2); \
|
330
|
+
} else { \
|
331
|
+
(head1)=(head2); \
|
332
|
+
} \
|
333
|
+
} while (0)
|
334
|
+
|
293
335
|
#define LL_APPEND(head,add) \
|
336
|
+
LL_APPEND2(head,add,next)
|
337
|
+
|
338
|
+
#define LL_APPEND2(head,add,next) \
|
294
339
|
do { \
|
295
340
|
LDECLTYPE(head) _tmp; \
|
296
341
|
(add)->next=NULL; \
|
@@ -304,6 +349,9 @@ do {
|
|
304
349
|
} while (0)
|
305
350
|
|
306
351
|
#define LL_DELETE(head,del) \
|
352
|
+
LL_DELETE2(head,del,next)
|
353
|
+
|
354
|
+
#define LL_DELETE2(head,del,next) \
|
307
355
|
do { \
|
308
356
|
LDECLTYPE(head) _tmp; \
|
309
357
|
if ((head) == (del)) { \
|
@@ -321,6 +369,9 @@ do {
|
|
321
369
|
|
322
370
|
/* Here are VS2008 replacements for LL_APPEND and LL_DELETE */
|
323
371
|
#define LL_APPEND_VS2008(head,add) \
|
372
|
+
LL_APPEND2_VS2008(head,add,next)
|
373
|
+
|
374
|
+
#define LL_APPEND2_VS2008(head,add,next) \
|
324
375
|
do { \
|
325
376
|
if (head) { \
|
326
377
|
(add)->next = head; /* use add->next as a temp variable */ \
|
@@ -333,16 +384,19 @@ do {
|
|
333
384
|
} while (0)
|
334
385
|
|
335
386
|
#define LL_DELETE_VS2008(head,del) \
|
387
|
+
LL_DELETE2_VS2008(head,del,next)
|
388
|
+
|
389
|
+
#define LL_DELETE2_VS2008(head,del,next) \
|
336
390
|
do { \
|
337
391
|
if ((head) == (del)) { \
|
338
392
|
(head)=(head)->next; \
|
339
393
|
} else { \
|
340
394
|
char *_tmp = (char*)(head); \
|
341
|
-
while (head->next && (head->next != (del))) {
|
342
|
-
head = head->next;
|
395
|
+
while ((head)->next && ((head)->next != (del))) { \
|
396
|
+
head = (head)->next; \
|
343
397
|
} \
|
344
|
-
if (head->next) {
|
345
|
-
head->next = ((del)->next);
|
398
|
+
if ((head)->next) { \
|
399
|
+
(head)->next = ((del)->next); \
|
346
400
|
} \
|
347
401
|
{ \
|
348
402
|
char **_head_alias = (char**)&(head); \
|
@@ -355,33 +409,95 @@ do {
|
|
355
409
|
#define LL_APPEND LL_APPEND_VS2008
|
356
410
|
#undef LL_DELETE
|
357
411
|
#define LL_DELETE LL_DELETE_VS2008
|
412
|
+
#undef LL_DELETE2
|
413
|
+
#define LL_DELETE2_VS2008
|
414
|
+
#undef LL_APPEND2
|
415
|
+
#define LL_APPEND2 LL_APPEND2_VS2008
|
416
|
+
#undef LL_CONCAT /* no LL_CONCAT_VS2008 */
|
417
|
+
#undef DL_CONCAT /* no DL_CONCAT_VS2008 */
|
358
418
|
#endif
|
359
419
|
/* end VS2008 replacements */
|
360
420
|
|
361
421
|
#define LL_FOREACH(head,el) \
|
362
|
-
|
422
|
+
LL_FOREACH2(head,el,next)
|
423
|
+
|
424
|
+
#define LL_FOREACH2(head,el,next) \
|
425
|
+
for(el=head;el;el=(el)->next)
|
363
426
|
|
364
427
|
#define LL_FOREACH_SAFE(head,el,tmp) \
|
428
|
+
LL_FOREACH_SAFE2(head,el,tmp,next)
|
429
|
+
|
430
|
+
#define LL_FOREACH_SAFE2(head,el,tmp,next) \
|
365
431
|
for((el)=(head);(el) && (tmp = (el)->next, 1); (el) = tmp)
|
366
432
|
|
367
433
|
#define LL_SEARCH_SCALAR(head,out,field,val) \
|
434
|
+
LL_SEARCH_SCALAR2(head,out,field,val,next)
|
435
|
+
|
436
|
+
#define LL_SEARCH_SCALAR2(head,out,field,val,next) \
|
368
437
|
do { \
|
369
|
-
|
438
|
+
LL_FOREACH2(head,out,next) { \
|
370
439
|
if ((out)->field == (val)) break; \
|
371
440
|
} \
|
372
|
-
} while(0)
|
441
|
+
} while(0)
|
373
442
|
|
374
443
|
#define LL_SEARCH(head,out,elt,cmp) \
|
444
|
+
LL_SEARCH2(head,out,elt,cmp,next)
|
445
|
+
|
446
|
+
#define LL_SEARCH2(head,out,elt,cmp,next) \
|
375
447
|
do { \
|
376
|
-
|
448
|
+
LL_FOREACH2(head,out,next) { \
|
377
449
|
if ((cmp(out,elt))==0) break; \
|
378
450
|
} \
|
379
|
-
} while(0)
|
451
|
+
} while(0)
|
452
|
+
|
453
|
+
#define LL_REPLACE_ELEM(head, el, add) \
|
454
|
+
do { \
|
455
|
+
LDECLTYPE(head) _tmp; \
|
456
|
+
assert(head != NULL); \
|
457
|
+
assert(el != NULL); \
|
458
|
+
assert(add != NULL); \
|
459
|
+
(add)->next = (el)->next; \
|
460
|
+
if ((head) == (el)) { \
|
461
|
+
(head) = (add); \
|
462
|
+
} else { \
|
463
|
+
_tmp = head; \
|
464
|
+
while (_tmp->next && (_tmp->next != (el))) { \
|
465
|
+
_tmp = _tmp->next; \
|
466
|
+
} \
|
467
|
+
if (_tmp->next) { \
|
468
|
+
_tmp->next = (add); \
|
469
|
+
} \
|
470
|
+
} \
|
471
|
+
} while (0)
|
472
|
+
|
473
|
+
#define LL_PREPEND_ELEM(head, el, add) \
|
474
|
+
do { \
|
475
|
+
LDECLTYPE(head) _tmp; \
|
476
|
+
assert(head != NULL); \
|
477
|
+
assert(el != NULL); \
|
478
|
+
assert(add != NULL); \
|
479
|
+
(add)->next = (el); \
|
480
|
+
if ((head) == (el)) { \
|
481
|
+
(head) = (add); \
|
482
|
+
} else { \
|
483
|
+
_tmp = head; \
|
484
|
+
while (_tmp->next && (_tmp->next != (el))) { \
|
485
|
+
_tmp = _tmp->next; \
|
486
|
+
} \
|
487
|
+
if (_tmp->next) { \
|
488
|
+
_tmp->next = (add); \
|
489
|
+
} \
|
490
|
+
} \
|
491
|
+
} while (0) \
|
492
|
+
|
380
493
|
|
381
494
|
/******************************************************************************
|
382
495
|
* doubly linked list macros (non-circular) *
|
383
496
|
*****************************************************************************/
|
384
497
|
#define DL_PREPEND(head,add) \
|
498
|
+
DL_PREPEND2(head,add,prev,next)
|
499
|
+
|
500
|
+
#define DL_PREPEND2(head,add,prev,next) \
|
385
501
|
do { \
|
386
502
|
(add)->next = head; \
|
387
503
|
if (head) { \
|
@@ -394,6 +510,9 @@ do {
|
|
394
510
|
} while (0)
|
395
511
|
|
396
512
|
#define DL_APPEND(head,add) \
|
513
|
+
DL_APPEND2(head,add,prev,next)
|
514
|
+
|
515
|
+
#define DL_APPEND2(head,add,prev,next) \
|
397
516
|
do { \
|
398
517
|
if (head) { \
|
399
518
|
(add)->prev = (head)->prev; \
|
@@ -405,10 +524,32 @@ do {
|
|
405
524
|
(head)->prev = (head); \
|
406
525
|
(head)->next = NULL; \
|
407
526
|
} \
|
408
|
-
} while (0)
|
527
|
+
} while (0)
|
528
|
+
|
529
|
+
#define DL_CONCAT(head1,head2) \
|
530
|
+
DL_CONCAT2(head1,head2,prev,next)
|
531
|
+
|
532
|
+
#define DL_CONCAT2(head1,head2,prev,next) \
|
533
|
+
do { \
|
534
|
+
LDECLTYPE(head1) _tmp; \
|
535
|
+
if (head2) { \
|
536
|
+
if (head1) { \
|
537
|
+
_tmp = (head2)->prev; \
|
538
|
+
(head2)->prev = (head1)->prev; \
|
539
|
+
(head1)->prev->next = (head2); \
|
540
|
+
(head1)->prev = _tmp; \
|
541
|
+
} else { \
|
542
|
+
(head1)=(head2); \
|
543
|
+
} \
|
544
|
+
} \
|
545
|
+
} while (0)
|
409
546
|
|
410
547
|
#define DL_DELETE(head,del) \
|
548
|
+
DL_DELETE2(head,del,prev,next)
|
549
|
+
|
550
|
+
#define DL_DELETE2(head,del,prev,next) \
|
411
551
|
do { \
|
552
|
+
assert((del)->prev != NULL); \
|
412
553
|
if ((del)->prev == (del)) { \
|
413
554
|
(head)=NULL; \
|
414
555
|
} else if ((del)==(head)) { \
|
@@ -422,24 +563,77 @@ do {
|
|
422
563
|
(head)->prev = (del)->prev; \
|
423
564
|
} \
|
424
565
|
} \
|
425
|
-
} while (0)
|
566
|
+
} while (0)
|
426
567
|
|
427
568
|
|
428
569
|
#define DL_FOREACH(head,el) \
|
429
|
-
|
570
|
+
DL_FOREACH2(head,el,next)
|
571
|
+
|
572
|
+
#define DL_FOREACH2(head,el,next) \
|
573
|
+
for(el=head;el;el=(el)->next)
|
430
574
|
|
431
575
|
/* this version is safe for deleting the elements during iteration */
|
432
576
|
#define DL_FOREACH_SAFE(head,el,tmp) \
|
577
|
+
DL_FOREACH_SAFE2(head,el,tmp,next)
|
578
|
+
|
579
|
+
#define DL_FOREACH_SAFE2(head,el,tmp,next) \
|
433
580
|
for((el)=(head);(el) && (tmp = (el)->next, 1); (el) = tmp)
|
434
581
|
|
435
582
|
/* these are identical to their singly-linked list counterparts */
|
436
583
|
#define DL_SEARCH_SCALAR LL_SEARCH_SCALAR
|
437
584
|
#define DL_SEARCH LL_SEARCH
|
585
|
+
#define DL_SEARCH_SCALAR2 LL_SEARCH_SCALAR2
|
586
|
+
#define DL_SEARCH2 LL_SEARCH2
|
587
|
+
|
588
|
+
#define DL_REPLACE_ELEM(head, el, add) \
|
589
|
+
do { \
|
590
|
+
assert(head != NULL); \
|
591
|
+
assert(el != NULL); \
|
592
|
+
assert(add != NULL); \
|
593
|
+
if ((head) == (el)) { \
|
594
|
+
(head) = (add); \
|
595
|
+
(add)->next = (el)->next; \
|
596
|
+
if ((el)->next == NULL) { \
|
597
|
+
(add)->prev = (add); \
|
598
|
+
} else { \
|
599
|
+
(add)->prev = (el)->prev; \
|
600
|
+
(add)->next->prev = (add); \
|
601
|
+
} \
|
602
|
+
} else { \
|
603
|
+
(add)->next = (el)->next; \
|
604
|
+
(add)->prev = (el)->prev; \
|
605
|
+
(add)->prev->next = (add); \
|
606
|
+
if ((el)->next == NULL) { \
|
607
|
+
(head)->prev = (add); \
|
608
|
+
} else { \
|
609
|
+
(add)->next->prev = (add); \
|
610
|
+
} \
|
611
|
+
} \
|
612
|
+
} while (0)
|
613
|
+
|
614
|
+
#define DL_PREPEND_ELEM(head, el, add) \
|
615
|
+
do { \
|
616
|
+
assert(head != NULL); \
|
617
|
+
assert(el != NULL); \
|
618
|
+
assert(add != NULL); \
|
619
|
+
(add)->next = (el); \
|
620
|
+
(add)->prev = (el)->prev; \
|
621
|
+
(el)->prev = (add); \
|
622
|
+
if ((head) == (el)) { \
|
623
|
+
(head) = (add); \
|
624
|
+
} else { \
|
625
|
+
(add)->prev->next = (add); \
|
626
|
+
} \
|
627
|
+
} while (0) \
|
628
|
+
|
438
629
|
|
439
630
|
/******************************************************************************
|
440
631
|
* circular doubly linked list macros *
|
441
632
|
*****************************************************************************/
|
442
633
|
#define CDL_PREPEND(head,add) \
|
634
|
+
CDL_PREPEND2(head,add,prev,next)
|
635
|
+
|
636
|
+
#define CDL_PREPEND2(head,add,prev,next) \
|
443
637
|
do { \
|
444
638
|
if (head) { \
|
445
639
|
(add)->prev = (head)->prev; \
|
@@ -454,6 +648,9 @@ do {
|
|
454
648
|
} while (0)
|
455
649
|
|
456
650
|
#define CDL_DELETE(head,del) \
|
651
|
+
CDL_DELETE2(head,del,prev,next)
|
652
|
+
|
653
|
+
#define CDL_DELETE2(head,del,prev,next) \
|
457
654
|
do { \
|
458
655
|
if ( ((head)==(del)) && ((head)->next == (head))) { \
|
459
656
|
(head) = 0L; \
|
@@ -462,29 +659,75 @@ do {
|
|
462
659
|
(del)->prev->next = (del)->next; \
|
463
660
|
if ((del) == (head)) (head)=(del)->next; \
|
464
661
|
} \
|
465
|
-
} while (0)
|
662
|
+
} while (0)
|
466
663
|
|
467
664
|
#define CDL_FOREACH(head,el) \
|
468
|
-
|
665
|
+
CDL_FOREACH2(head,el,next)
|
666
|
+
|
667
|
+
#define CDL_FOREACH2(head,el,next) \
|
668
|
+
for(el=head;el;el=((el)->next==head ? 0L : (el)->next))
|
469
669
|
|
470
670
|
#define CDL_FOREACH_SAFE(head,el,tmp1,tmp2) \
|
671
|
+
CDL_FOREACH_SAFE2(head,el,tmp1,tmp2,prev,next)
|
672
|
+
|
673
|
+
#define CDL_FOREACH_SAFE2(head,el,tmp1,tmp2,prev,next) \
|
471
674
|
for((el)=(head), ((tmp1)=(head)?((head)->prev):NULL); \
|
472
675
|
(el) && ((tmp2)=(el)->next, 1); \
|
473
676
|
((el) = (((el)==(tmp1)) ? 0L : (tmp2))))
|
474
677
|
|
475
678
|
#define CDL_SEARCH_SCALAR(head,out,field,val) \
|
679
|
+
CDL_SEARCH_SCALAR2(head,out,field,val,next)
|
680
|
+
|
681
|
+
#define CDL_SEARCH_SCALAR2(head,out,field,val,next) \
|
476
682
|
do { \
|
477
|
-
|
683
|
+
CDL_FOREACH2(head,out,next) { \
|
478
684
|
if ((out)->field == (val)) break; \
|
479
685
|
} \
|
480
|
-
} while(0)
|
686
|
+
} while(0)
|
481
687
|
|
482
688
|
#define CDL_SEARCH(head,out,elt,cmp) \
|
689
|
+
CDL_SEARCH2(head,out,elt,cmp,next)
|
690
|
+
|
691
|
+
#define CDL_SEARCH2(head,out,elt,cmp,next) \
|
483
692
|
do { \
|
484
|
-
|
693
|
+
CDL_FOREACH2(head,out,next) { \
|
485
694
|
if ((cmp(out,elt))==0) break; \
|
486
695
|
} \
|
487
|
-
} while(0)
|
696
|
+
} while(0)
|
697
|
+
|
698
|
+
#define CDL_REPLACE_ELEM(head, el, add) \
|
699
|
+
do { \
|
700
|
+
assert(head != NULL); \
|
701
|
+
assert(el != NULL); \
|
702
|
+
assert(add != NULL); \
|
703
|
+
if ((el)->next == (el)) { \
|
704
|
+
(add)->next = (add); \
|
705
|
+
(add)->prev = (add); \
|
706
|
+
(head) = (add); \
|
707
|
+
} else { \
|
708
|
+
(add)->next = (el)->next; \
|
709
|
+
(add)->prev = (el)->prev; \
|
710
|
+
(add)->next->prev = (add); \
|
711
|
+
(add)->prev->next = (add); \
|
712
|
+
if ((head) == (el)) { \
|
713
|
+
(head) = (add); \
|
714
|
+
} \
|
715
|
+
} \
|
716
|
+
} while (0)
|
717
|
+
|
718
|
+
#define CDL_PREPEND_ELEM(head, el, add) \
|
719
|
+
do { \
|
720
|
+
assert(head != NULL); \
|
721
|
+
assert(el != NULL); \
|
722
|
+
assert(add != NULL); \
|
723
|
+
(add)->next = (el); \
|
724
|
+
(add)->prev = (el)->prev; \
|
725
|
+
(el)->prev = (add); \
|
726
|
+
(add)->prev->next = (add); \
|
727
|
+
if ((head) == (el)) { \
|
728
|
+
(head) = (add); \
|
729
|
+
} \
|
730
|
+
} while (0) \
|
488
731
|
|
489
732
|
#endif /* UTLIST_H */
|
490
733
|
|