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.
Files changed (393) hide show
  1. checksums.yaml +8 -8
  2. data/Gemfile.lock +1 -1
  3. data/LICENSE +1 -1
  4. data/LICENSE_Box2D +20 -0
  5. data/LICENSE_Cocos2D +24 -0
  6. data/README.md +34 -66
  7. data/Rakefile +2 -3
  8. data/bin/joybox +49 -0
  9. data/command/joybox/USAGE +24 -0
  10. data/command/joybox/templates/layer.erb +11 -0
  11. data/command/joybox/templates/layer_spec.erb +3 -0
  12. data/command/joybox/templates/scene.erb +11 -0
  13. data/command/joybox/templates/scene_spec.erb +3 -0
  14. data/command/joybox/templates/sprite.erb +11 -0
  15. data/command/joybox/templates/sprite_spec.erb +3 -0
  16. data/command/joybox_generate_command.rb +114 -0
  17. data/joybox.gemspec +44 -0
  18. data/lib/joybox/joybox-ios.rb +47 -0
  19. data/lib/joybox/joybox-osx.rb +47 -0
  20. data/lib/joybox/version.rb +1 -1
  21. data/lib/joybox.rb +18 -36
  22. data/{lib/joybox/cocos2d → motion/joybox}/actions/actions.rb +0 -0
  23. data/motion/joybox/actions/animate.rb +22 -0
  24. data/motion/joybox/actions/bezier.rb +33 -0
  25. data/motion/joybox/actions/blink.rb +24 -0
  26. data/motion/joybox/actions/ease.rb +149 -0
  27. data/motion/joybox/actions/fade.rb +38 -0
  28. data/motion/joybox/actions/jump.rb +39 -0
  29. data/{lib/joybox/cocos2d → motion/joybox}/actions/move.rb +4 -2
  30. data/motion/joybox/actions/place.rb +22 -0
  31. data/{lib/joybox/cocos2d → motion/joybox}/actions/repeat.rb +10 -1
  32. data/{lib/joybox/cocos2d → motion/joybox}/actions/rotate.rb +4 -2
  33. data/{lib/joybox/cocos2d → motion/joybox}/actions/scale.rb +4 -2
  34. data/{lib/joybox/cocos2d → motion/joybox}/actions/sequence.rb +3 -3
  35. data/{lib/joybox/cocos2d → motion/joybox}/actions/skew.rb +0 -0
  36. data/motion/joybox/actions/spawn.rb +22 -0
  37. data/motion/joybox/actions/tint.rb +37 -0
  38. data/motion/joybox/animations/animation.rb +60 -0
  39. data/{lib/joybox/cocos2d → motion/joybox}/common/color.rb +12 -1
  40. data/{lib/joybox/cocos2d → motion/joybox}/common/gc_size.rb +4 -4
  41. data/{lib/joybox/cocos2d → motion/joybox}/common/ns_set.rb +0 -0
  42. data/{lib/joybox/cocos2d → motion/joybox}/common/numeric.rb +0 -0
  43. data/{lib/joybox/cocos2d → motion/joybox}/common/screen.rb +4 -4
  44. data/motion/joybox/core/layer.rb +51 -0
  45. data/{lib/joybox/cocos2d → motion/joybox}/core/node.rb +0 -0
  46. data/{lib/joybox/cocos2d → motion/joybox}/core/scene.rb +0 -0
  47. data/{lib/joybox/cocos2d → motion/joybox}/core/sprite.rb +22 -3
  48. data/{lib/joybox/cocos2d → motion/joybox}/core/sprite_batch.rb +0 -0
  49. data/motion/joybox/core/sprite_frame_cache.rb +147 -0
  50. data/{lib/joybox/cocos2d/cocos2d.rb → motion/joybox/joybox.rb} +3 -1
  51. data/{lib/joybox/cocos2d → motion/joybox}/macros.rb +0 -0
  52. data/{lib/joybox/box2d → motion/joybox/physics}/body.rb +44 -17
  53. data/{lib/joybox/cocos2d/core → motion/joybox/physics}/physics_sprite.rb +1 -1
  54. data/motion/joybox/physics/world.rb +79 -0
  55. data/{lib/joybox/cocos2d → motion/joybox}/ui/label.rb +3 -2
  56. data/{lib/joybox/cocos2d → motion/joybox}/ui/menu.rb +0 -0
  57. data/{lib/joybox/cocos2d → motion/joybox}/ui/menu_image.rb +0 -0
  58. data/{lib/joybox/cocos2d → motion/joybox}/ui/menu_label.rb +0 -0
  59. data/{lib/joybox/cocos2d → motion/joybox}/ui/ui.rb +0 -0
  60. data/{lib/joybox/cocos2d → motion/joybox-ios}/common/cg_point.rb +9 -2
  61. data/{lib/joybox/cocos2d → motion/joybox-ios}/common/ui_touch.rb +1 -1
  62. data/{lib/joybox/cocos2d → motion/joybox-ios}/configuration/configuration.rb +0 -0
  63. data/{lib/joybox/cocos2d → motion/joybox-ios}/configuration/file_utils.rb +0 -3
  64. data/{lib/joybox/cocos2d → motion/joybox-ios}/configuration/gl_view.rb +0 -0
  65. data/{lib/joybox/cocos2d → motion/joybox-ios}/configuration/texture_2d.rb +0 -0
  66. data/{lib/joybox/cocos2d → motion/joybox-ios}/core/layer.rb +1 -45
  67. data/{lib/joybox/cocos2d → motion/joybox-ios}/director.rb +6 -6
  68. data/motion/joybox-osx/common/ats_point.rb +48 -0
  69. data/motion/joybox-osx/common/ns_event.rb +8 -0
  70. data/motion/joybox-osx/configuration/configuration.rb +46 -0
  71. data/motion/joybox-osx/configuration/gl_view.rb +57 -0
  72. data/motion/joybox-osx/core/layer.rb +135 -0
  73. data/motion/joybox-osx/director.rb +42 -0
  74. data/template/joybox-ios/files/Rakefile.erb +9 -0
  75. data/{app → template/joybox-ios/files/app}/app_delegate.rb +1 -5
  76. data/{resources → template/joybox-ios/files/resources}/fps_images-hd.png +0 -0
  77. data/{resources → template/joybox-ios/files/resources}/fps_images-ipadhd.png +0 -0
  78. data/{resources → template/joybox-ios/files/resources}/fps_images.png +0 -0
  79. data/template/joybox-ios/files/spec/main_spec.rb.erb +9 -0
  80. data/template/joybox-osx/files/Rakefile.erb +9 -0
  81. data/template/joybox-osx/files/app/app_delegate.rb +23 -0
  82. data/template/joybox-osx/files/app/layers/default_layer.rb +5 -0
  83. data/template/joybox-osx/files/app/menu.rb +51 -0
  84. data/template/joybox-osx/files/resources/Credits.rtf +29 -0
  85. data/template/joybox-osx/files/resources/fps_images-hd.png +0 -0
  86. data/template/joybox-osx/files/resources/fps_images-ipadhd.png +0 -0
  87. data/template/joybox-osx/files/resources/fps_images.png +0 -0
  88. data/template/joybox-osx/files/spec/main_spec.rb.erb +9 -0
  89. data/vendor/{Box2D.framework → vendor-ios/Box2D.framework}/Box2D +0 -0
  90. data/vendor/{Box2D.framework → vendor-ios/Box2D.framework}/Box2D.framework.bridgesupport +47 -37
  91. data/vendor/{Box2D.framework → vendor-ios/Box2D.framework}/Versions/A/Box2D +0 -0
  92. data/vendor/{Box2D.framework → vendor-ios/Box2D.framework}/Versions/A/Headers/Collision/B2DContactListener.h +0 -0
  93. data/vendor/vendor-ios/Box2D.framework/Versions/A/Headers/Collision/Shapes/B2DCircleShape.h +16 -0
  94. data/vendor/{Box2D.framework → vendor-ios/Box2D.framework}/Versions/A/Headers/Collision/Shapes/B2DEdgeShape.h +0 -0
  95. data/vendor/{Box2D.framework → vendor-ios/Box2D.framework}/Versions/A/Headers/Collision/Shapes/B2DPolygonShape.h +0 -0
  96. data/vendor/{Box2D.framework → vendor-ios/Box2D.framework}/Versions/A/Headers/Collision/Shapes/B2DShape.h +0 -0
  97. data/vendor/{Box2D.framework → vendor-ios/Box2D.framework}/Versions/A/Headers/Dynamics/B2DBody.h +6 -6
  98. data/vendor/{Box2D.framework → vendor-ios/Box2D.framework}/Versions/A/Headers/Dynamics/B2DWorld.h +0 -0
  99. data/vendor/{Box2D.framework → vendor-ios/Box2D.framework}/Versions/A/Resources/Box2DConfig.cmake +0 -0
  100. data/vendor/{Box2D.framework → vendor-ios/Box2D.framework}/Versions/A/Resources/CMakeLists.txt +0 -0
  101. data/vendor/vendor-ios/Box2D.framework/Versions/A/Resources/LICENSE +22 -0
  102. data/vendor/vendor-ios/cocos_2d/cocos_2d.bridgesupport +9154 -0
  103. data/vendor/vendor-ios/cocos_2d/cocos_2d_exceptions.bridgesupport +39 -0
  104. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCAction.h +23 -23
  105. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCActionCamera.h +21 -19
  106. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCActionCatmullRom.h +18 -6
  107. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCActionEase.h +117 -31
  108. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCActionGrid.h +19 -17
  109. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCActionGrid3D.h +45 -42
  110. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCActionInstant.h +21 -13
  111. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCActionInterval.h +123 -81
  112. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCActionManager.h +2 -2
  113. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCActionPageTurn3D.h +2 -1
  114. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCActionProgressTimer.h +4 -4
  115. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCActionTiledGrid.h +46 -38
  116. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCActionTween.h +3 -3
  117. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCAnimation.h +8 -8
  118. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCAnimationCache.h +2 -2
  119. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCAtlasNode.h +19 -17
  120. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCCamera.h +12 -12
  121. data/vendor/vendor-ios/cocos_2d/include/CCClippingNode.h +77 -0
  122. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCConfiguration.h +31 -13
  123. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCDirector.h +51 -42
  124. data/vendor/vendor-ios/cocos_2d/include/CCDrawNode.h +65 -0
  125. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCDrawingPrimitives.h +42 -8
  126. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCGLProgram.h +56 -21
  127. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCGrabber.h +2 -2
  128. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCGrid.h +29 -29
  129. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCLabelAtlas.h +5 -2
  130. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCLabelBMFont.h +56 -32
  131. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCLabelTTF.h +20 -20
  132. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCLayer.h +107 -79
  133. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCMenu.h +10 -14
  134. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCMenuItem.h +37 -32
  135. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCMotionStreak.h +18 -19
  136. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCNode+Debug.h +0 -0
  137. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCNode.h +87 -37
  138. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCParallaxNode.h +2 -2
  139. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCParticleBatchNode.h +2 -2
  140. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCParticleExamples.h +22 -0
  141. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCParticleSystem.h +51 -40
  142. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCParticleSystemQuad.h +4 -4
  143. data/vendor/vendor-ios/cocos_2d/include/CCPhysicsDebugNode.h +58 -0
  144. data/vendor/vendor-ios/cocos_2d/include/CCPhysicsSprite.h +82 -0
  145. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCProgressTimer.h +9 -11
  146. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCProtocols.h +54 -26
  147. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCRenderTexture.h +29 -9
  148. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCScene.h +4 -0
  149. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCScheduler.h +94 -40
  150. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCShaderCache.h +1 -1
  151. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCSprite.h +21 -28
  152. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCSpriteBatchNode.h +16 -9
  153. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCSpriteFrame.h +10 -10
  154. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCSpriteFrameCache.h +6 -6
  155. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCTMXLayer.h +16 -16
  156. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCTMXObjectGroup.h +4 -4
  157. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCTMXTiledMap.h +9 -9
  158. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCTMXXMLParser.h +44 -33
  159. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCTexture2D.h +17 -25
  160. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCTextureAtlas.h +10 -10
  161. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCTextureCache.h +4 -4
  162. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCTexturePVR.h +25 -8
  163. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCTileMapAtlas.h +6 -6
  164. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCTransition.h +57 -12
  165. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCTransitionPageTurn.h +2 -2
  166. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/CCTransitionProgress.h +27 -5
  167. data/vendor/{Cocos2D/include → vendor-ios/cocos_2d/include/Platforms}/CCGL.h +4 -2
  168. data/vendor/{Cocos2D/include → vendor-ios/cocos_2d/include/Platforms}/CCNS.h +0 -0
  169. data/vendor/vendor-ios/cocos_2d/include/Platforms/Mac/CCDirectorMac.h +110 -0
  170. data/vendor/vendor-ios/cocos_2d/include/Platforms/Mac/CCEventDispatcher.h +343 -0
  171. data/vendor/vendor-ios/cocos_2d/include/Platforms/Mac/CCGLView.h +103 -0
  172. data/vendor/vendor-ios/cocos_2d/include/Platforms/Mac/CCWindow.h +41 -0
  173. data/vendor/{Cocos2D/include → vendor-ios/cocos_2d/include/Platforms/iOS}/CCDirectorIOS.h +12 -5
  174. data/vendor/{Cocos2D/include → vendor-ios/cocos_2d/include/Platforms/iOS}/CCES2Renderer.h +12 -12
  175. data/vendor/{Cocos2D/include → vendor-ios/cocos_2d/include/Platforms/iOS}/CCESRenderer.h +0 -0
  176. data/vendor/{Cocos2D/include → vendor-ios/cocos_2d/include/Platforms/iOS}/CCGLView.h +28 -13
  177. data/vendor/{Cocos2D/include → vendor-ios/cocos_2d/include/Platforms/iOS}/CCTouchDelegateProtocol.h +4 -4
  178. data/vendor/{Cocos2D/include → vendor-ios/cocos_2d/include/Platforms/iOS}/CCTouchDispatcher.h +2 -2
  179. data/vendor/{Cocos2D/include → vendor-ios/cocos_2d/include/Platforms/iOS}/CCTouchHandler.h +7 -7
  180. data/vendor/{Cocos2D/include → vendor-ios/cocos_2d/include/Support}/CCArray.h +1 -1
  181. data/vendor/vendor-ios/cocos_2d/include/Support/CCFileUtils.h +394 -0
  182. data/vendor/{Cocos2D/include → vendor-ios/cocos_2d/include/Support}/CCProfiling.h +0 -0
  183. data/vendor/{Cocos2D/include → vendor-ios/cocos_2d/include/Support}/CCVertex.h +1 -1
  184. data/vendor/{Cocos2D/include → vendor-ios/cocos_2d/include/Support}/CGPointExtension.h +4 -2
  185. data/vendor/{Cocos2D/include → vendor-ios/cocos_2d/include/Support}/NSThread+performBlock.h +0 -0
  186. data/vendor/{Cocos2D/include → vendor-ios/cocos_2d/include/Support}/OpenGL_Internal.h +0 -0
  187. data/vendor/{Cocos2D/include → vendor-ios/cocos_2d/include/Support}/TGAlib.h +0 -0
  188. data/vendor/{Cocos2D/include → vendor-ios/cocos_2d/include/Support}/TransformUtils.h +0 -0
  189. data/vendor/{Cocos2D/include → vendor-ios/cocos_2d/include/Support}/ZipUtils.h +4 -4
  190. data/vendor/{Cocos2D/include → vendor-ios/cocos_2d/include/Support}/base64.h +0 -0
  191. data/vendor/{Cocos2D/include → vendor-ios/cocos_2d/include/Support}/ccCArray.h +15 -15
  192. data/vendor/{Cocos2D/include → vendor-ios/cocos_2d/include/Support}/ccUtils.h +0 -0
  193. data/vendor/{Cocos2D/include → vendor-ios/cocos_2d/include/Support}/uthash.h +129 -184
  194. data/vendor/{Cocos2D/include → vendor-ios/cocos_2d/include/Support}/utlist.h +298 -55
  195. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/ccConfig.h +56 -9
  196. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/ccDeprecated.h +131 -0
  197. data/vendor/vendor-ios/cocos_2d/include/ccFPSImages.h +39 -0
  198. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/ccGLStateCache.h +44 -26
  199. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/ccMacros.h +9 -9
  200. data/vendor/vendor-ios/cocos_2d/include/ccShader_PositionColorLengthTexture_frag.h +41 -0
  201. data/vendor/vendor-ios/cocos_2d/include/ccShader_PositionColorLengthTexture_vert.h +47 -0
  202. data/vendor/vendor-ios/cocos_2d/include/ccShader_PositionColor_frag.h +37 -0
  203. data/vendor/vendor-ios/cocos_2d/include/ccShader_PositionColor_vert.h +40 -0
  204. data/vendor/vendor-ios/cocos_2d/include/ccShader_PositionTextureA8Color_frag.h +41 -0
  205. data/vendor/vendor-ios/cocos_2d/include/ccShader_PositionTextureA8Color_vert.h +45 -0
  206. data/vendor/vendor-ios/cocos_2d/include/ccShader_PositionTextureColorAlphaTest_frag.h +47 -0
  207. data/vendor/vendor-ios/cocos_2d/include/ccShader_PositionTextureColor_frag.h +39 -0
  208. data/vendor/vendor-ios/cocos_2d/include/ccShader_PositionTextureColor_vert.h +45 -0
  209. data/vendor/vendor-ios/cocos_2d/include/ccShader_PositionTexture_frag.h +38 -0
  210. data/vendor/vendor-ios/cocos_2d/include/ccShader_PositionTexture_uColor_frag.h +41 -0
  211. data/vendor/vendor-ios/cocos_2d/include/ccShader_PositionTexture_uColor_vert.h +41 -0
  212. data/vendor/vendor-ios/cocos_2d/include/ccShader_PositionTexture_vert.h +41 -0
  213. data/vendor/vendor-ios/cocos_2d/include/ccShader_Position_uColor_frag.h +37 -0
  214. data/vendor/vendor-ios/cocos_2d/include/ccShader_Position_uColor_vert.h +43 -0
  215. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/ccShaders.h +11 -0
  216. data/vendor/vendor-ios/cocos_2d/include/ccTypes.h +392 -0
  217. data/vendor/vendor-ios/cocos_2d/include/cocos2d-ios-exceptions.bridgesupport +39 -0
  218. data/vendor/{Cocos2D → vendor-ios/cocos_2d}/include/cocos2d.h +28 -3
  219. data/vendor/vendor-ios/cocos_2d/include/gen_cocos2d_bridgesupport.sh +17 -0
  220. data/vendor/vendor-ios/cocos_2d/include/gen_cocos2d_complement.sh +17 -0
  221. data/vendor/vendor-ios/cocos_2d/libcocos2d.a +0 -0
  222. data/vendor/vendor-osx/box_2d/box_2d.bridgesupport +176 -0
  223. data/vendor/vendor-osx/box_2d/include/B2DBody.h +46 -0
  224. data/vendor/vendor-osx/box_2d/include/B2DCircleShape.h +16 -0
  225. data/vendor/vendor-osx/box_2d/include/B2DContactListener.h +30 -0
  226. data/vendor/vendor-osx/box_2d/include/B2DEdgeShape.h +17 -0
  227. data/vendor/vendor-osx/box_2d/include/B2DPolygonShape.h +16 -0
  228. data/vendor/vendor-osx/box_2d/include/B2DShape.h +18 -0
  229. data/vendor/vendor-osx/box_2d/include/B2DWorld.h +44 -0
  230. data/vendor/vendor-osx/box_2d/libBox2D.a +0 -0
  231. data/vendor/vendor-osx/cocos_2d/cocos_2d.bridgesupport +8292 -0
  232. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCAction.h +195 -0
  233. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCActionCamera.h +75 -0
  234. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCActionCatmullRom.h +151 -0
  235. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCActionEase.h +245 -0
  236. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCActionGrid.h +167 -0
  237. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCActionGrid3D.h +208 -0
  238. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCActionInstant.h +235 -0
  239. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCActionInterval.h +473 -0
  240. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCActionManager.h +113 -0
  241. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCActionPageTurn3D.h +43 -0
  242. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCActionProgressTimer.h +59 -0
  243. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCActionTiledGrid.h +219 -0
  244. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCActionTween.h +62 -0
  245. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCAnimation.h +150 -0
  246. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCAnimationCache.h +74 -0
  247. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCAtlasNode.h +98 -0
  248. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCCamera.h +98 -0
  249. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCClippingNode.h +77 -0
  250. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCConfiguration.h +144 -0
  251. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCDirector.h +353 -0
  252. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCDrawNode.h +65 -0
  253. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCDrawingPrimitives.h +173 -0
  254. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCGLProgram.h +185 -0
  255. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCGrabber.h +44 -0
  256. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCGrid.h +130 -0
  257. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCLabelAtlas.h +71 -0
  258. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCLabelBMFont.h +240 -0
  259. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCLabelTTF.h +132 -0
  260. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCLayer.h +308 -0
  261. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCMenu.h +96 -0
  262. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCMenuItem.h +428 -0
  263. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCMotionStreak.h +86 -0
  264. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCNode+Debug.h +39 -0
  265. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCNode.h +619 -0
  266. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCParallaxNode.h +50 -0
  267. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCParticleBatchNode.h +99 -0
  268. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCParticleExamples.h +117 -0
  269. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCParticleSystem.h +464 -0
  270. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCParticleSystemQuad.h +73 -0
  271. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCPhysicsDebugNode.h +58 -0
  272. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCPhysicsSprite.h +82 -0
  273. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCProgressTimer.h +92 -0
  274. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCProtocols.h +160 -0
  275. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCRenderTexture.h +159 -0
  276. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCScene.h +47 -0
  277. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCScheduler.h +284 -0
  278. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCShaderCache.h +60 -0
  279. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCSprite.h +281 -0
  280. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCSpriteBatchNode.h +145 -0
  281. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCSpriteFrame.h +126 -0
  282. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCSpriteFrameCache.h +121 -0
  283. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCTMXLayer.h +164 -0
  284. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCTMXObjectGroup.h +67 -0
  285. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCTMXTiledMap.h +145 -0
  286. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCTMXXMLParser.h +228 -0
  287. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCTexture2D.h +349 -0
  288. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCTextureAtlas.h +188 -0
  289. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCTextureCache.h +146 -0
  290. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCTexturePVR.h +146 -0
  291. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCTileMapAtlas.h +83 -0
  292. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCTransition.h +341 -0
  293. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCTransitionPageTurn.h +60 -0
  294. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/CCTransitionProgress.h +84 -0
  295. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/Platforms/CCGL.h +74 -0
  296. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/Platforms/CCNS.h +54 -0
  297. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/Platforms/Mac/CCDirectorMac.h +110 -0
  298. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/Platforms/Mac/CCEventDispatcher.h +343 -0
  299. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/Platforms/Mac/CCGLView.h +103 -0
  300. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/Platforms/Mac/CCWindow.h +41 -0
  301. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/Support/CCArray.h +119 -0
  302. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/Support/CCFileUtils.h +394 -0
  303. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/Support/CCProfiling.h +89 -0
  304. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/Support/CCVertex.h +36 -0
  305. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/Support/CGPointExtension.h +346 -0
  306. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/Support/NSThread+performBlock.h +22 -0
  307. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/Support/OpenGL_Internal.h +86 -0
  308. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/Support/TGAlib.h +55 -0
  309. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/Support/TransformUtils.h +36 -0
  310. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/Support/ZipUtils.h +91 -0
  311. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/Support/base64.h +33 -0
  312. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/Support/ccCArray.h +229 -0
  313. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/Support/ccUtils.h +36 -0
  314. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/Support/uthash.h +917 -0
  315. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/Support/utlist.h +733 -0
  316. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/ccConfig.h +292 -0
  317. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/ccDeprecated.h +431 -0
  318. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/ccFPSImages.h +39 -0
  319. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/ccGLStateCache.h +156 -0
  320. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/ccMacros.h +353 -0
  321. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/ccShader_PositionColorLengthTexture_frag.h +41 -0
  322. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/ccShader_PositionColorLengthTexture_vert.h +47 -0
  323. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/ccShader_PositionColor_frag.h +37 -0
  324. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/ccShader_PositionColor_vert.h +40 -0
  325. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/ccShader_PositionTextureA8Color_frag.h +41 -0
  326. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/ccShader_PositionTextureA8Color_vert.h +45 -0
  327. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/ccShader_PositionTextureColorAlphaTest_frag.h +47 -0
  328. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/ccShader_PositionTextureColor_frag.h +39 -0
  329. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/ccShader_PositionTextureColor_vert.h +45 -0
  330. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/ccShader_PositionTexture_frag.h +38 -0
  331. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/ccShader_PositionTexture_uColor_frag.h +41 -0
  332. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/ccShader_PositionTexture_uColor_vert.h +41 -0
  333. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/ccShader_PositionTexture_vert.h +41 -0
  334. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/ccShader_Position_uColor_frag.h +37 -0
  335. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/ccShader_Position_uColor_vert.h +43 -0
  336. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/ccShaders.h +56 -0
  337. data/vendor/{Cocos2D/include → vendor-osx/cocos_2d/cocos_2d_include}/ccTypes.h +39 -35
  338. data/vendor/vendor-osx/cocos_2d/cocos_2d_include/cocos2d.h +203 -0
  339. data/vendor/vendor-osx/cocos_2d/libcocos2d.a +0 -0
  340. metadata +363 -195
  341. data/app/layers/box2d_layer.rb +0 -109
  342. data/app/layers/cocos2d_layer.rb +0 -14
  343. data/app/layers/cocos_motion_layer.rb +0 -145
  344. data/app/layers/menu_layer.rb +0 -59
  345. data/lib/joybox/box2d/world.rb +0 -79
  346. data/resources/box2d/blocks_sprite_sheet.png +0 -0
  347. data/resources/cocos_motion/dot.png +0 -0
  348. data/resources/cocos_motion/dot_selected.png +0 -0
  349. data/resources/cocos_motion/grossini.png +0 -0
  350. data/resources/cocos_motion/grossinis_sister.png +0 -0
  351. data/resources/cocos_motion/grossinis_sister_two.png +0 -0
  352. data/resources/cocos_motion/left_arrow.png +0 -0
  353. data/resources/cocos_motion/left_arrow_selected.png +0 -0
  354. data/resources/cocos_motion/right_arrow.png +0 -0
  355. data/resources/cocos_motion/right_arrow_selected.png +0 -0
  356. data/vendor/Cocos2D/Cocos2D.bridgesupport +0 -7808
  357. data/vendor/Cocos2D/include/CCFileUtils.h +0 -188
  358. data/vendor/Cocos2D/include/CocosDenshion/CDAudioManager.h +0 -243
  359. data/vendor/Cocos2D/include/CocosDenshion/CDConfig.h +0 -60
  360. data/vendor/Cocos2D/include/CocosDenshion/CDOpenALSupport.h +0 -77
  361. data/vendor/Cocos2D/include/CocosDenshion/CDXPropertyModifierAction.h +0 -45
  362. data/vendor/Cocos2D/include/CocosDenshion/CocosDenshion.h +0 -440
  363. data/vendor/Cocos2D/include/CocosDenshion/SimpleAudioEngine.h +0 -90
  364. data/vendor/Cocos2D/include/RubyMotionSchedule.h +0 -7
  365. data/vendor/Cocos2D/include/ccShader_PositionColor_frag.h +0 -12
  366. data/vendor/Cocos2D/include/ccShader_PositionColor_vert.h +0 -17
  367. data/vendor/Cocos2D/include/ccShader_PositionTextureA8Color_frag.h +0 -16
  368. data/vendor/Cocos2D/include/ccShader_PositionTextureA8Color_vert.h +0 -21
  369. data/vendor/Cocos2D/include/ccShader_PositionTextureColorAlphaTest_frag.h +0 -23
  370. data/vendor/Cocos2D/include/ccShader_PositionTextureColor_frag.h +0 -14
  371. data/vendor/Cocos2D/include/ccShader_PositionTextureColor_vert.h +0 -22
  372. data/vendor/Cocos2D/include/ccShader_PositionTexture_frag.h +0 -13
  373. data/vendor/Cocos2D/include/ccShader_PositionTexture_uColor_frag.h +0 -16
  374. data/vendor/Cocos2D/include/ccShader_PositionTexture_uColor_vert.h +0 -18
  375. data/vendor/Cocos2D/include/ccShader_PositionTexture_vert.h +0 -17
  376. data/vendor/Cocos2D/include/ccShader_Position_uColor_frag.h +0 -12
  377. data/vendor/Cocos2D/include/ccShader_Position_uColor_vert.h +0 -19
  378. data/vendor/Cocos2D/include/kazmath/GL/mat4stack.h +0 -51
  379. data/vendor/Cocos2D/include/kazmath/GL/matrix.h +0 -58
  380. data/vendor/Cocos2D/include/kazmath/aabb.h +0 -53
  381. data/vendor/Cocos2D/include/kazmath/kazmath.h +0 -39
  382. data/vendor/Cocos2D/include/kazmath/mat3.h +0 -75
  383. data/vendor/Cocos2D/include/kazmath/mat4.h +0 -93
  384. data/vendor/Cocos2D/include/kazmath/neon_matrix_impl.h +0 -41
  385. data/vendor/Cocos2D/include/kazmath/plane.h +0 -70
  386. data/vendor/Cocos2D/include/kazmath/quaternion.h +0 -113
  387. data/vendor/Cocos2D/include/kazmath/ray2.h +0 -50
  388. data/vendor/Cocos2D/include/kazmath/utility.h +0 -74
  389. data/vendor/Cocos2D/include/kazmath/vec2.h +0 -64
  390. data/vendor/Cocos2D/include/kazmath/vec3.h +0 -68
  391. data/vendor/Cocos2D/include/kazmath/vec4.h +0 -68
  392. data/vendor/Cocos2D/libCocosDenshion.a +0 -0
  393. data/vendor/Cocos2D/libcocos2d.a +0 -0
@@ -1,5 +1,5 @@
1
1
  /*
2
- Copyright (c) 2003-2010, Troy D. Hanson http://uthash.sourceforge.net
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.3
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*)((char*)((delptr)->hh.prev) + \
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*)((char*)((delptr)->hh.prev) + \
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*)((char*)_hd_hh_del->next + \
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 (e.g. x86) tolerance for unaligned reads.
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
- * So MurmurHash comes in two versions, the faster unaligned one and the slower
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 HASH_MUR HASH_MUR_UNALIGNED
496
- #else
497
- #define HASH_MUR HASH_MUR_ALIGNED
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
- /* Appleby's MurmurHash fast version for unaligned-tolerant archs like i386 */
501
- #define HASH_MUR_UNALIGNED(key,keylen,num_bkts,hashv,bkt) \
502
- do { \
503
- const unsigned int _mur_m = 0x5bd1e995; \
504
- const int _mur_r = 24; \
505
- hashv = 0xcafebabe ^ keylen; \
506
- char *_mur_key = (char *)(key); \
507
- uint32_t _mur_tmp, _mur_len = keylen; \
508
- \
509
- for (;_mur_len >= 4; _mur_len-=4) { \
510
- _mur_tmp = *(uint32_t *)_mur_key; \
511
- _mur_tmp *= _mur_m; \
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
- /* Appleby's MurmurHash version for alignment-sensitive archs like Sparc */
535
- #define HASH_MUR_ALIGNED(key,keylen,num_bkts,hashv,bkt) \
536
- do { \
537
- const unsigned int _mur_m = 0x5bd1e995; \
538
- const int _mur_r = 24; \
539
- hashv = 0xcafebabe ^ (keylen); \
540
- char *_mur_key = (char *)(key); \
541
- uint32_t _mur_len = keylen; \
542
- int _mur_align = (int)_mur_key & 3; \
543
- \
544
- if (_mur_align && (_mur_len >= 4)) { \
545
- unsigned _mur_t = 0, _mur_d = 0; \
546
- switch(_mur_align) { \
547
- case 1: _mur_t |= _mur_key[2] << 16; \
548
- case 2: _mur_t |= _mur_key[1] << 8; \
549
- case 3: _mur_t |= _mur_key[0]; \
550
- } \
551
- _mur_t <<= (8 * _mur_align); \
552
- _mur_key += 4-_mur_align; \
553
- _mur_len -= 4-_mur_align; \
554
- int _mur_sl = 8 * (4-_mur_align); \
555
- int _mur_sr = 8 * _mur_align; \
556
- \
557
- for (;_mur_len >= 4; _mur_len-=4) { \
558
- _mur_d = *(unsigned *)_mur_key; \
559
- _mur_t = (_mur_t >> _mur_sr) | (_mur_d << _mur_sl); \
560
- unsigned _mur_k = _mur_t; \
561
- _mur_k *= _mur_m; \
562
- _mur_k ^= _mur_k >> _mur_r; \
563
- _mur_k *= _mur_m; \
564
- hashv *= _mur_m; \
565
- hashv ^= _mur_k; \
566
- _mur_t = _mur_d; \
567
- _mur_key += 4; \
568
- } \
569
- _mur_d = 0; \
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