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) 2003-
|
2
|
+
Copyright (c) 2003-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
|
@@ -22,10 +22,11 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
22
22
|
*/
|
23
23
|
|
24
24
|
#ifndef UTHASH_H
|
25
|
-
#define UTHASH_H
|
25
|
+
#define UTHASH_H
|
26
26
|
|
27
27
|
#include <string.h> /* memcmp,strlen */
|
28
28
|
#include <stddef.h> /* ptrdiff_t */
|
29
|
+
#include <stdlib.h> /* exit() */
|
29
30
|
|
30
31
|
/* These macros use decltype or the earlier __typeof GNU extension.
|
31
32
|
As decltype is only available in newer compilers (VS2010 or gcc 4.3+
|
@@ -48,7 +49,7 @@ do {
|
|
48
49
|
char **_da_dst = (char**)(&(dst)); \
|
49
50
|
*_da_dst = (char*)(src); \
|
50
51
|
} while(0)
|
51
|
-
#else
|
52
|
+
#else
|
52
53
|
#define DECLTYPE_ASSIGN(dst,src) \
|
53
54
|
do { \
|
54
55
|
(dst) = DECLTYPE(dst)(src); \
|
@@ -58,18 +59,29 @@ do {
|
|
58
59
|
/* a number of the hash function use uint32_t which isn't defined on win32 */
|
59
60
|
#ifdef _MSC_VER
|
60
61
|
typedef unsigned int uint32_t;
|
62
|
+
typedef unsigned char uint8_t;
|
61
63
|
#else
|
62
64
|
#include <inttypes.h> /* uint32_t */
|
63
65
|
#endif
|
64
66
|
|
65
|
-
#define UTHASH_VERSION 1.9.
|
67
|
+
#define UTHASH_VERSION 1.9.7
|
66
68
|
|
69
|
+
#ifndef uthash_fatal
|
67
70
|
#define uthash_fatal(msg) exit(-1) /* fatal error (out of memory,etc) */
|
71
|
+
#endif
|
72
|
+
#ifndef uthash_malloc
|
68
73
|
#define uthash_malloc(sz) malloc(sz) /* malloc fcn */
|
74
|
+
#endif
|
75
|
+
#ifndef uthash_free
|
69
76
|
#define uthash_free(ptr,sz) free(ptr) /* free fcn */
|
77
|
+
#endif
|
70
78
|
|
79
|
+
#ifndef uthash_noexpand_fyi
|
71
80
|
#define uthash_noexpand_fyi(tbl) /* can be defined to log noexpand */
|
81
|
+
#endif
|
82
|
+
#ifndef uthash_expand_fyi
|
72
83
|
#define uthash_expand_fyi(tbl) /* can be defined to log expands */
|
84
|
+
#endif
|
73
85
|
|
74
86
|
/* initial number of buckets */
|
75
87
|
#define HASH_INITIAL_NUM_BUCKETS 32 /* initial number of buckets */
|
@@ -102,12 +114,12 @@ do {
|
|
102
114
|
if (!((tbl)->bloom_bv)) { uthash_fatal( "out of memory"); } \
|
103
115
|
memset((tbl)->bloom_bv, 0, HASH_BLOOM_BYTELEN); \
|
104
116
|
(tbl)->bloom_sig = HASH_BLOOM_SIGNATURE; \
|
105
|
-
} while (0)
|
117
|
+
} while (0)
|
106
118
|
|
107
119
|
#define HASH_BLOOM_FREE(tbl) \
|
108
120
|
do { \
|
109
121
|
uthash_free((tbl)->bloom_bv, HASH_BLOOM_BYTELEN); \
|
110
|
-
} while (0)
|
122
|
+
} while (0)
|
111
123
|
|
112
124
|
#define HASH_BLOOM_BITSET(bv,idx) (bv[(idx)/8] |= (1U << ((idx)%8)))
|
113
125
|
#define HASH_BLOOM_BITTEST(bv,idx) (bv[(idx)/8] & (1U << ((idx)%8)))
|
@@ -119,9 +131,9 @@ do {
|
|
119
131
|
HASH_BLOOM_BITTEST((tbl)->bloom_bv, (hashv & (uint32_t)((1ULL << (tbl)->bloom_nbits) - 1)))
|
120
132
|
|
121
133
|
#else
|
122
|
-
#define HASH_BLOOM_MAKE(tbl)
|
123
|
-
#define HASH_BLOOM_FREE(tbl)
|
124
|
-
#define HASH_BLOOM_ADD(tbl,hashv)
|
134
|
+
#define HASH_BLOOM_MAKE(tbl)
|
135
|
+
#define HASH_BLOOM_FREE(tbl)
|
136
|
+
#define HASH_BLOOM_ADD(tbl,hashv)
|
125
137
|
#define HASH_BLOOM_TEST(tbl,hashv) (1)
|
126
138
|
#endif
|
127
139
|
|
@@ -145,14 +157,14 @@ do {
|
|
145
157
|
} while(0)
|
146
158
|
|
147
159
|
#define HASH_ADD(hh,head,fieldname,keylen_in,add) \
|
148
|
-
HASH_ADD_KEYPTR(hh,head,&add->fieldname,keylen_in,add)
|
149
|
-
|
160
|
+
HASH_ADD_KEYPTR(hh,head,&((add)->fieldname),keylen_in,add)
|
161
|
+
|
150
162
|
#define HASH_ADD_KEYPTR(hh,head,keyptr,keylen_in,add) \
|
151
163
|
do { \
|
152
164
|
unsigned _ha_bkt; \
|
153
165
|
(add)->hh.next = NULL; \
|
154
166
|
(add)->hh.key = (char*)keyptr; \
|
155
|
-
(add)->hh.keylen = keylen_in; \
|
167
|
+
(add)->hh.keylen = (unsigned)keylen_in; \
|
156
168
|
if (!(head)) { \
|
157
169
|
head = (add); \
|
158
170
|
(head)->hh.prev = NULL; \
|
@@ -203,17 +215,17 @@ do {
|
|
203
215
|
_hd_hh_del = &((delptr)->hh); \
|
204
216
|
if ((delptr) == ELMT_FROM_HH((head)->hh.tbl,(head)->hh.tbl->tail)) { \
|
205
217
|
(head)->hh.tbl->tail = \
|
206
|
-
(UT_hash_handle*)((
|
218
|
+
(UT_hash_handle*)((ptrdiff_t)((delptr)->hh.prev) + \
|
207
219
|
(head)->hh.tbl->hho); \
|
208
220
|
} \
|
209
221
|
if ((delptr)->hh.prev) { \
|
210
|
-
((UT_hash_handle*)((
|
222
|
+
((UT_hash_handle*)((ptrdiff_t)((delptr)->hh.prev) + \
|
211
223
|
(head)->hh.tbl->hho))->next = (delptr)->hh.next; \
|
212
224
|
} else { \
|
213
225
|
DECLTYPE_ASSIGN(head,(delptr)->hh.next); \
|
214
226
|
} \
|
215
227
|
if (_hd_hh_del->next) { \
|
216
|
-
((UT_hash_handle*)((
|
228
|
+
((UT_hash_handle*)((ptrdiff_t)_hd_hh_del->next + \
|
217
229
|
(head)->hh.tbl->hho))->prev = \
|
218
230
|
_hd_hh_del->prev; \
|
219
231
|
} \
|
@@ -298,10 +310,10 @@ do {
|
|
298
310
|
} \
|
299
311
|
} while (0)
|
300
312
|
#else
|
301
|
-
#define HASH_FSCK(hh,head)
|
313
|
+
#define HASH_FSCK(hh,head)
|
302
314
|
#endif
|
303
315
|
|
304
|
-
/* When compiled with -DHASH_EMIT_KEYS, length-prefixed keys are emitted to
|
316
|
+
/* When compiled with -DHASH_EMIT_KEYS, length-prefixed keys are emitted to
|
305
317
|
* the descriptor to which this macro is defined for tuning the hash function.
|
306
318
|
* The app can #include <unistd.h> to get the prototype for write(2). */
|
307
319
|
#ifdef HASH_EMIT_KEYS
|
@@ -311,12 +323,12 @@ do {
|
|
311
323
|
write(HASH_EMIT_KEYS, &_klen, sizeof(_klen)); \
|
312
324
|
write(HASH_EMIT_KEYS, keyptr, fieldlen); \
|
313
325
|
} while (0)
|
314
|
-
#else
|
315
|
-
#define HASH_EMIT_KEY(hh,head,keyptr,fieldlen)
|
326
|
+
#else
|
327
|
+
#define HASH_EMIT_KEY(hh,head,keyptr,fieldlen)
|
316
328
|
#endif
|
317
329
|
|
318
330
|
/* default to Jenkin's hash unless overridden e.g. DHASH_FUNCTION=HASH_SAX */
|
319
|
-
#ifdef HASH_FUNCTION
|
331
|
+
#ifdef HASH_FUNCTION
|
320
332
|
#define HASH_FCN HASH_FUNCTION
|
321
333
|
#else
|
322
334
|
#define HASH_FCN HASH_JEN
|
@@ -333,7 +345,7 @@ do {
|
|
333
345
|
} while (0)
|
334
346
|
|
335
347
|
|
336
|
-
/* SAX/FNV/OAT/JEN hash functions are macro variants of those listed at
|
348
|
+
/* SAX/FNV/OAT/JEN hash functions are macro variants of those listed at
|
337
349
|
* http://eternallyconfuzzled.com/tuts/algorithms/jsw_tut_hashing.aspx */
|
338
350
|
#define HASH_SAX(key,keylen,num_bkts,hashv,bkt) \
|
339
351
|
do { \
|
@@ -353,8 +365,8 @@ do {
|
|
353
365
|
for(_fn_i=0; _fn_i < keylen; _fn_i++) \
|
354
366
|
hashv = (hashv * 16777619) ^ _hf_key[_fn_i]; \
|
355
367
|
bkt = hashv & (num_bkts-1); \
|
356
|
-
} while(0)
|
357
|
-
|
368
|
+
} while(0)
|
369
|
+
|
358
370
|
#define HASH_OAT(key,keylen,num_bkts,hashv,bkt) \
|
359
371
|
do { \
|
360
372
|
unsigned _ho_i; \
|
@@ -390,7 +402,7 @@ do {
|
|
390
402
|
char *_hj_key=(char*)(key); \
|
391
403
|
hashv = 0xfeedbeef; \
|
392
404
|
_hj_i = _hj_j = 0x9e3779b9; \
|
393
|
-
_hj_k = keylen; \
|
405
|
+
_hj_k = (unsigned)keylen; \
|
394
406
|
while (_hj_k >= 12) { \
|
395
407
|
_hj_i += (_hj_key[0] + ( (unsigned)_hj_key[1] << 8 ) \
|
396
408
|
+ ( (unsigned)_hj_key[2] << 16 ) \
|
@@ -478,159 +490,91 @@ do {
|
|
478
490
|
hashv ^= hashv << 25; \
|
479
491
|
hashv += hashv >> 6; \
|
480
492
|
bkt = hashv & (num_bkts-1); \
|
481
|
-
} while(0)
|
493
|
+
} while(0)
|
482
494
|
|
483
495
|
#ifdef HASH_USING_NO_STRICT_ALIASING
|
484
|
-
/* The MurmurHash exploits some CPU's (
|
496
|
+
/* The MurmurHash exploits some CPU's (x86,x86_64) tolerance for unaligned reads.
|
485
497
|
* For other types of CPU's (e.g. Sparc) an unaligned read causes a bus error.
|
486
|
-
*
|
487
|
-
* aligned one. We only use the faster one on CPU's where we know it's safe.
|
498
|
+
* MurmurHash uses the faster approach only on CPU's where we know it's safe.
|
488
499
|
*
|
489
500
|
* Note the preprocessor built-in defines can be emitted using:
|
490
501
|
*
|
491
502
|
* gcc -m64 -dM -E - < /dev/null (on gcc)
|
492
503
|
* cc -## a.c (where a.c is a simple test file) (Sun Studio)
|
493
504
|
*/
|
494
|
-
#if (defined(__i386__) || defined(__x86_64__))
|
495
|
-
#define
|
496
|
-
#else
|
497
|
-
#define
|
505
|
+
#if (defined(__i386__) || defined(__x86_64__) || defined(_M_IX86))
|
506
|
+
#define MUR_GETBLOCK(p,i) p[i]
|
507
|
+
#else /* non intel */
|
508
|
+
#define MUR_PLUS0_ALIGNED(p) (((unsigned long)p & 0x3) == 0)
|
509
|
+
#define MUR_PLUS1_ALIGNED(p) (((unsigned long)p & 0x3) == 1)
|
510
|
+
#define MUR_PLUS2_ALIGNED(p) (((unsigned long)p & 0x3) == 2)
|
511
|
+
#define MUR_PLUS3_ALIGNED(p) (((unsigned long)p & 0x3) == 3)
|
512
|
+
#define WP(p) ((uint32_t*)((unsigned long)(p) & ~3UL))
|
513
|
+
#if (defined(__BIG_ENDIAN__) || defined(SPARC) || defined(__ppc__) || defined(__ppc64__))
|
514
|
+
#define MUR_THREE_ONE(p) ((((*WP(p))&0x00ffffff) << 8) | (((*(WP(p)+1))&0xff000000) >> 24))
|
515
|
+
#define MUR_TWO_TWO(p) ((((*WP(p))&0x0000ffff) <<16) | (((*(WP(p)+1))&0xffff0000) >> 16))
|
516
|
+
#define MUR_ONE_THREE(p) ((((*WP(p))&0x000000ff) <<24) | (((*(WP(p)+1))&0xffffff00) >> 8))
|
517
|
+
#else /* assume little endian non-intel */
|
518
|
+
#define MUR_THREE_ONE(p) ((((*WP(p))&0xffffff00) >> 8) | (((*(WP(p)+1))&0x000000ff) << 24))
|
519
|
+
#define MUR_TWO_TWO(p) ((((*WP(p))&0xffff0000) >>16) | (((*(WP(p)+1))&0x0000ffff) << 16))
|
520
|
+
#define MUR_ONE_THREE(p) ((((*WP(p))&0xff000000) >>24) | (((*(WP(p)+1))&0x00ffffff) << 8))
|
498
521
|
#endif
|
499
|
-
|
500
|
-
|
501
|
-
|
502
|
-
|
503
|
-
|
504
|
-
|
505
|
-
|
506
|
-
|
507
|
-
|
508
|
-
|
509
|
-
|
510
|
-
|
511
|
-
|
512
|
-
_mur_tmp ^= _mur_tmp >> _mur_r; \
|
513
|
-
_mur_tmp *= _mur_m; \
|
514
|
-
hashv *= _mur_m; \
|
515
|
-
hashv ^= _mur_tmp; \
|
516
|
-
_mur_key += 4; \
|
517
|
-
} \
|
518
|
-
\
|
519
|
-
switch(_mur_len) \
|
520
|
-
{ \
|
521
|
-
case 3: hashv ^= _mur_key[2] << 16; \
|
522
|
-
case 2: hashv ^= _mur_key[1] << 8; \
|
523
|
-
case 1: hashv ^= _mur_key[0]; \
|
524
|
-
hashv *= _mur_m; \
|
525
|
-
}; \
|
526
|
-
\
|
527
|
-
hashv ^= hashv >> 13; \
|
528
|
-
hashv *= _mur_m; \
|
529
|
-
hashv ^= hashv >> 15; \
|
530
|
-
\
|
531
|
-
bkt = hashv & (num_bkts-1); \
|
522
|
+
#define MUR_GETBLOCK(p,i) (MUR_PLUS0_ALIGNED(p) ? ((p)[i]) : \
|
523
|
+
(MUR_PLUS1_ALIGNED(p) ? MUR_THREE_ONE(p) : \
|
524
|
+
(MUR_PLUS2_ALIGNED(p) ? MUR_TWO_TWO(p) : \
|
525
|
+
MUR_ONE_THREE(p))))
|
526
|
+
#endif
|
527
|
+
#define MUR_ROTL32(x,r) (((x) << (r)) | ((x) >> (32 - (r))))
|
528
|
+
#define MUR_FMIX(_h) \
|
529
|
+
do { \
|
530
|
+
_h ^= _h >> 16; \
|
531
|
+
_h *= 0x85ebca6b; \
|
532
|
+
_h ^= _h >> 13; \
|
533
|
+
_h *= 0xc2b2ae35l; \
|
534
|
+
_h ^= _h >> 16; \
|
532
535
|
} while(0)
|
533
536
|
|
534
|
-
|
535
|
-
|
536
|
-
|
537
|
-
const
|
538
|
-
|
539
|
-
|
540
|
-
|
541
|
-
uint32_t
|
542
|
-
|
543
|
-
|
544
|
-
|
545
|
-
|
546
|
-
|
547
|
-
|
548
|
-
|
549
|
-
|
550
|
-
|
551
|
-
|
552
|
-
|
553
|
-
|
554
|
-
|
555
|
-
|
556
|
-
|
557
|
-
|
558
|
-
|
559
|
-
|
560
|
-
|
561
|
-
|
562
|
-
|
563
|
-
|
564
|
-
|
565
|
-
|
566
|
-
|
567
|
-
|
568
|
-
|
569
|
-
|
570
|
-
if(_mur_len >= _mur_align) { \
|
571
|
-
switch(_mur_align) { \
|
572
|
-
case 3: _mur_d |= _mur_key[2] << 16; \
|
573
|
-
case 2: _mur_d |= _mur_key[1] << 8; \
|
574
|
-
case 1: _mur_d |= _mur_key[0]; \
|
575
|
-
} \
|
576
|
-
unsigned _mur_k = (_mur_t >> _mur_sr) | (_mur_d << _mur_sl); \
|
577
|
-
_mur_k *= _mur_m; \
|
578
|
-
_mur_k ^= _mur_k >> _mur_r; \
|
579
|
-
_mur_k *= _mur_m; \
|
580
|
-
hashv *= _mur_m; \
|
581
|
-
hashv ^= _mur_k; \
|
582
|
-
_mur_k += _mur_align; \
|
583
|
-
_mur_len -= _mur_align; \
|
584
|
-
\
|
585
|
-
switch(_mur_len) \
|
586
|
-
{ \
|
587
|
-
case 3: hashv ^= _mur_key[2] << 16; \
|
588
|
-
case 2: hashv ^= _mur_key[1] << 8; \
|
589
|
-
case 1: hashv ^= _mur_key[0]; \
|
590
|
-
hashv *= _mur_m; \
|
591
|
-
} \
|
592
|
-
} else { \
|
593
|
-
switch(_mur_len) \
|
594
|
-
{ \
|
595
|
-
case 3: _mur_d ^= _mur_key[2] << 16; \
|
596
|
-
case 2: _mur_d ^= _mur_key[1] << 8; \
|
597
|
-
case 1: _mur_d ^= _mur_key[0]; \
|
598
|
-
case 0: hashv ^= (_mur_t >> _mur_sr) | (_mur_d << _mur_sl); \
|
599
|
-
hashv *= _mur_m; \
|
600
|
-
} \
|
601
|
-
} \
|
602
|
-
\
|
603
|
-
hashv ^= hashv >> 13; \
|
604
|
-
hashv *= _mur_m; \
|
605
|
-
hashv ^= hashv >> 15; \
|
606
|
-
} else { \
|
607
|
-
for (;_mur_len >= 4; _mur_len-=4) { \
|
608
|
-
unsigned _mur_k = *(unsigned*)_mur_key; \
|
609
|
-
_mur_k *= _mur_m; \
|
610
|
-
_mur_k ^= _mur_k >> _mur_r; \
|
611
|
-
_mur_k *= _mur_m; \
|
612
|
-
hashv *= _mur_m; \
|
613
|
-
hashv ^= _mur_k; \
|
614
|
-
_mur_key += 4; \
|
615
|
-
} \
|
616
|
-
switch(_mur_len) \
|
617
|
-
{ \
|
618
|
-
case 3: hashv ^= _mur_key[2] << 16; \
|
619
|
-
case 2: hashv ^= _mur_key[1] << 8; \
|
620
|
-
case 1: hashv ^= _mur_key[0]; \
|
621
|
-
hashv *= _mur_m; \
|
622
|
-
} \
|
623
|
-
\
|
624
|
-
hashv ^= hashv >> 13; \
|
625
|
-
hashv *= _mur_m; \
|
626
|
-
hashv ^= hashv >> 15; \
|
627
|
-
} \
|
628
|
-
bkt = hashv & (num_bkts-1); \
|
537
|
+
#define HASH_MUR(key,keylen,num_bkts,hashv,bkt) \
|
538
|
+
do { \
|
539
|
+
const uint8_t *_mur_data = (const uint8_t*)(key); \
|
540
|
+
const int _mur_nblocks = (keylen) / 4; \
|
541
|
+
uint32_t _mur_h1 = 0xf88D5353; \
|
542
|
+
uint32_t _mur_c1 = 0xcc9e2d51; \
|
543
|
+
uint32_t _mur_c2 = 0x1b873593; \
|
544
|
+
uint32_t _mur_k1 = 0; \
|
545
|
+
const uint8_t *_mur_tail; \
|
546
|
+
const uint32_t *_mur_blocks = (const uint32_t*)(_mur_data+_mur_nblocks*4); \
|
547
|
+
int _mur_i; \
|
548
|
+
for(_mur_i = -_mur_nblocks; _mur_i; _mur_i++) { \
|
549
|
+
_mur_k1 = MUR_GETBLOCK(_mur_blocks,_mur_i); \
|
550
|
+
_mur_k1 *= _mur_c1; \
|
551
|
+
_mur_k1 = MUR_ROTL32(_mur_k1,15); \
|
552
|
+
_mur_k1 *= _mur_c2; \
|
553
|
+
\
|
554
|
+
_mur_h1 ^= _mur_k1; \
|
555
|
+
_mur_h1 = MUR_ROTL32(_mur_h1,13); \
|
556
|
+
_mur_h1 = _mur_h1*5+0xe6546b64; \
|
557
|
+
} \
|
558
|
+
_mur_tail = (const uint8_t*)(_mur_data + _mur_nblocks*4); \
|
559
|
+
_mur_k1=0; \
|
560
|
+
switch((keylen) & 3) { \
|
561
|
+
case 3: _mur_k1 ^= _mur_tail[2] << 16; \
|
562
|
+
case 2: _mur_k1 ^= _mur_tail[1] << 8; \
|
563
|
+
case 1: _mur_k1 ^= _mur_tail[0]; \
|
564
|
+
_mur_k1 *= _mur_c1; \
|
565
|
+
_mur_k1 = MUR_ROTL32(_mur_k1,15); \
|
566
|
+
_mur_k1 *= _mur_c2; \
|
567
|
+
_mur_h1 ^= _mur_k1; \
|
568
|
+
} \
|
569
|
+
_mur_h1 ^= (keylen); \
|
570
|
+
MUR_FMIX(_mur_h1); \
|
571
|
+
hashv = _mur_h1; \
|
572
|
+
bkt = hashv & (num_bkts-1); \
|
629
573
|
} while(0)
|
630
574
|
#endif /* HASH_USING_NO_STRICT_ALIASING */
|
631
575
|
|
632
576
|
/* key comparison function; return 0 if keys equal */
|
633
|
-
#define HASH_KEYCMP(a,b,len) memcmp(a,b,len)
|
577
|
+
#define HASH_KEYCMP(a,b,len) memcmp(a,b,len)
|
634
578
|
|
635
579
|
/* iterate over items in a known bucket to find desired item */
|
636
580
|
#define HASH_FIND_IN_BKT(tbl,hh,head,keyptr,keylen_in,out) \
|
@@ -638,10 +582,10 @@ do {
|
|
638
582
|
if (head.hh_head) DECLTYPE_ASSIGN(out,ELMT_FROM_HH(tbl,head.hh_head)); \
|
639
583
|
else out=NULL; \
|
640
584
|
while (out) { \
|
641
|
-
if (out->hh.keylen == keylen_in) { \
|
642
|
-
if ((HASH_KEYCMP(out->hh.key,keyptr,keylen_in)) == 0) break; \
|
585
|
+
if ((out)->hh.keylen == keylen_in) { \
|
586
|
+
if ((HASH_KEYCMP((out)->hh.key,keyptr,keylen_in)) == 0) break; \
|
643
587
|
} \
|
644
|
-
if (out->hh.hh_next) DECLTYPE_ASSIGN(out,ELMT_FROM_HH(tbl,out->hh.hh_next)); \
|
588
|
+
if ((out)->hh.hh_next) DECLTYPE_ASSIGN(out,ELMT_FROM_HH(tbl,(out)->hh.hh_next)); \
|
645
589
|
else out = NULL; \
|
646
590
|
} \
|
647
591
|
} while(0)
|
@@ -671,36 +615,36 @@ do {
|
|
671
615
|
} \
|
672
616
|
if (hh_del->hh_next) { \
|
673
617
|
hh_del->hh_next->hh_prev = hh_del->hh_prev; \
|
674
|
-
}
|
618
|
+
}
|
675
619
|
|
676
620
|
/* Bucket expansion has the effect of doubling the number of buckets
|
677
621
|
* and redistributing the items into the new buckets. Ideally the
|
678
622
|
* items will distribute more or less evenly into the new buckets
|
679
623
|
* (the extent to which this is true is a measure of the quality of
|
680
|
-
* the hash function as it applies to the key domain).
|
681
|
-
*
|
624
|
+
* the hash function as it applies to the key domain).
|
625
|
+
*
|
682
626
|
* With the items distributed into more buckets, the chain length
|
683
627
|
* (item count) in each bucket is reduced. Thus by expanding buckets
|
684
|
-
* the hash keeps a bound on the chain length. This bounded chain
|
628
|
+
* the hash keeps a bound on the chain length. This bounded chain
|
685
629
|
* length is the essence of how a hash provides constant time lookup.
|
686
|
-
*
|
630
|
+
*
|
687
631
|
* The calculation of tbl->ideal_chain_maxlen below deserves some
|
688
632
|
* explanation. First, keep in mind that we're calculating the ideal
|
689
633
|
* maximum chain length based on the *new* (doubled) bucket count.
|
690
634
|
* In fractions this is just n/b (n=number of items,b=new num buckets).
|
691
|
-
* Since the ideal chain length is an integer, we want to calculate
|
635
|
+
* Since the ideal chain length is an integer, we want to calculate
|
692
636
|
* ceil(n/b). We don't depend on floating point arithmetic in this
|
693
637
|
* hash, so to calculate ceil(n/b) with integers we could write
|
694
|
-
*
|
638
|
+
*
|
695
639
|
* ceil(n/b) = (n/b) + ((n%b)?1:0)
|
696
|
-
*
|
640
|
+
*
|
697
641
|
* and in fact a previous version of this hash did just that.
|
698
642
|
* But now we have improved things a bit by recognizing that b is
|
699
643
|
* always a power of two. We keep its base 2 log handy (call it lb),
|
700
644
|
* so now we can write this with a bit shift and logical AND:
|
701
|
-
*
|
645
|
+
*
|
702
646
|
* ceil(n/b) = (n>>lb) + ( (n & (b-1)) ? 1:0)
|
703
|
-
*
|
647
|
+
*
|
704
648
|
*/
|
705
649
|
#define HASH_EXPAND_BUCKETS(tbl) \
|
706
650
|
do { \
|
@@ -752,7 +696,7 @@ do {
|
|
752
696
|
|
753
697
|
|
754
698
|
/* This is an adaptation of Simon Tatham's O(n log(n)) mergesort */
|
755
|
-
/* Note that HASH_SORT assumes the hash handle name to be hh.
|
699
|
+
/* Note that HASH_SORT assumes the hash handle name to be hh.
|
756
700
|
* HASH_SRT was added to allow the hash handle name to be passed in. */
|
757
701
|
#define HASH_SORT(head,cmpfcn) HASH_SRT(hh,head,cmpfcn)
|
758
702
|
#define HASH_SRT(hh,head,cmpfcn) \
|
@@ -834,10 +778,10 @@ do {
|
|
834
778
|
} \
|
835
779
|
} while (0)
|
836
780
|
|
837
|
-
/* This function selects items from one hash into another hash.
|
838
|
-
* The end result is that the selected items have dual presence
|
839
|
-
* in both hashes. There is no copy of the items made; rather
|
840
|
-
* they are added into the new hash through a secondary hash
|
781
|
+
/* This function selects items from one hash into another hash.
|
782
|
+
* The end result is that the selected items have dual presence
|
783
|
+
* in both hashes. There is no copy of the items made; rather
|
784
|
+
* they are added into the new hash through a secondary hash
|
841
785
|
* hash handle that must be present in the structure. */
|
842
786
|
#define HASH_SELECT(hh_dst, dst, hh_src, src, cond) \
|
843
787
|
do { \
|
@@ -882,6 +826,7 @@ do {
|
|
882
826
|
if (head) { \
|
883
827
|
uthash_free((head)->hh.tbl->buckets, \
|
884
828
|
(head)->hh.tbl->num_buckets*sizeof(struct UT_hash_bucket)); \
|
829
|
+
HASH_BLOOM_FREE((head)->hh.tbl); \
|
885
830
|
uthash_free((head)->hh.tbl, sizeof(UT_hash_table)); \
|
886
831
|
(head)=NULL; \
|
887
832
|
} \
|
@@ -890,7 +835,7 @@ do {
|
|
890
835
|
#ifdef NO_DECLTYPE
|
891
836
|
#define HASH_ITER(hh,head,el,tmp) \
|
892
837
|
for((el)=(head), (*(char**)(&(tmp)))=(char*)((head)?(head)->hh.next:NULL); \
|
893
|
-
el; (el)=(tmp),(*(char**)(&(tmp)))=(char*)((tmp)?(tmp)->hh.next:NULL))
|
838
|
+
el; (el)=(tmp),(*(char**)(&(tmp)))=(char*)((tmp)?(tmp)->hh.next:NULL))
|
894
839
|
#else
|
895
840
|
#define HASH_ITER(hh,head,el,tmp) \
|
896
841
|
for((el)=(head),(tmp)=DECLTYPE(el)((head)?(head)->hh.next:NULL); \
|
@@ -898,7 +843,7 @@ for((el)=(head),(tmp)=DECLTYPE(el)((head)?(head)->hh.next:NULL);
|
|
898
843
|
#endif
|
899
844
|
|
900
845
|
/* obtain a count of items in the hash */
|
901
|
-
#define HASH_COUNT(head) HASH_CNT(hh,head)
|
846
|
+
#define HASH_COUNT(head) HASH_CNT(hh,head)
|
902
847
|
#define HASH_CNT(hh,head) ((head)?((head)->hh.tbl->num_items):0)
|
903
848
|
|
904
849
|
typedef struct UT_hash_bucket {
|
@@ -907,7 +852,7 @@ typedef struct UT_hash_bucket {
|
|
907
852
|
|
908
853
|
/* expand_mult is normally set to 0. In this situation, the max chain length
|
909
854
|
* threshold is enforced at its default value, HASH_BKT_CAPACITY_THRESH. (If
|
910
|
-
* the bucket's chain exceeds this length, bucket expansion is triggered).
|
855
|
+
* the bucket's chain exceeds this length, bucket expansion is triggered).
|
911
856
|
* However, setting expand_mult to a non-zero value delays bucket expansion
|
912
857
|
* (that would be triggered by additions to this particular bucket)
|
913
858
|
* until its chain length reaches a *multiple* of HASH_BKT_CAPACITY_THRESH.
|
@@ -915,7 +860,7 @@ typedef struct UT_hash_bucket {
|
|
915
860
|
* multiplier is to reduce bucket expansions, since they are expensive, in
|
916
861
|
* situations where we know that a particular bucket tends to be overused.
|
917
862
|
* It is better to let its chain length grow to a longer yet-still-bounded
|
918
|
-
* value, than to do an O(n) bucket expansion too often.
|
863
|
+
* value, than to do an O(n) bucket expansion too often.
|
919
864
|
*/
|
920
865
|
unsigned expand_mult;
|
921
866
|
|
@@ -941,7 +886,7 @@ typedef struct UT_hash_table {
|
|
941
886
|
* hash distribution; reaching them in a chain traversal takes >ideal steps */
|
942
887
|
unsigned nonideal_items;
|
943
888
|
|
944
|
-
/* ineffective expands occur when a bucket doubling was performed, but
|
889
|
+
/* ineffective expands occur when a bucket doubling was performed, but
|
945
890
|
* afterward, more than half the items in the hash had nonideal chain
|
946
891
|
* positions. If this happens on two consecutive expansions we inhibit any
|
947
892
|
* further expansion, as it's not helping; this happens when the hash
|