Chipmunk2D Pro API Reference  6.2.1
 All Classes Functions Variables Typedefs Properties Groups Pages
chipmunk_ffi.h
1 #ifdef CHIPMUNK_FFI
2 
3 // Create non static inlined copies of Chipmunk functions, useful for working with dynamic FFIs
4 // This file should only be included in chipmunk.c
5 
6 #ifdef _MSC_VER
7  #if _MSC_VER >= 1600
8  #define MAKE_REF(name) decltype(name) *_##name = name
9  #else
10  #define MAKE_REF(name)
11  #endif
12 #else
13  #define MAKE_REF(name) __typeof__(name) *_##name = name
14 #endif
15 
16 #define MAKE_PROPERTIES_REF(struct, property) \
17  MAKE_REF(struct##Get##property); MAKE_REF(struct##Set##property)
18 
19 MAKE_REF(cpv); // makes a variable named _cpv that contains the function pointer for cpv()
20 MAKE_REF(cpveql);
21 MAKE_REF(cpvadd);
22 MAKE_REF(cpvneg);
23 MAKE_REF(cpvsub);
24 MAKE_REF(cpvmult);
25 MAKE_REF(cpvdot);
26 MAKE_REF(cpvcross);
27 MAKE_REF(cpvperp);
28 MAKE_REF(cpvrperp);
29 MAKE_REF(cpvproject);
30 MAKE_REF(cpvforangle);
31 MAKE_REF(cpvtoangle);
32 MAKE_REF(cpvrotate);
33 MAKE_REF(cpvunrotate);
34 MAKE_REF(cpvlengthsq);
35 MAKE_REF(cpvlength);
36 MAKE_REF(cpvlerp);
37 MAKE_REF(cpvnormalize);
38 MAKE_REF(cpvnormalize_safe);
39 MAKE_REF(cpvclamp);
40 MAKE_REF(cpvlerpconst);
41 MAKE_REF(cpvdist);
42 MAKE_REF(cpvdistsq);
43 MAKE_REF(cpvnear);
44 
45 MAKE_REF(cpfmax);
46 MAKE_REF(cpfmin);
47 MAKE_REF(cpfabs);
48 MAKE_REF(cpfclamp);
49 MAKE_REF(cpflerp);
50 MAKE_REF(cpflerpconst);
51 
52 MAKE_REF(cpBBNew);
53 MAKE_REF(cpBBNewForCircle);
54 MAKE_REF(cpBBIntersects);
55 MAKE_REF(cpBBContainsBB);
56 MAKE_REF(cpBBContainsVect);
57 MAKE_REF(cpBBMerge);
58 MAKE_REF(cpBBExpand);
59 MAKE_REF(cpBBArea);
60 MAKE_REF(cpBBMergedArea);
61 MAKE_REF(cpBBSegmentQuery);
62 MAKE_REF(cpBBIntersectsSegment);
63 MAKE_REF(cpBBClampVect);
64 
65 MAKE_REF(cpBodyGetMass);
66 MAKE_REF(cpBodyGetMoment);
67 MAKE_REF(cpBodyGetPos);
68 MAKE_REF(cpBodyGetAngle);
69 MAKE_REF(cpBodyGetRot);
70 MAKE_PROPERTIES_REF(cpBody, Vel);
71 MAKE_PROPERTIES_REF(cpBody, Force);
72 MAKE_PROPERTIES_REF(cpBody, AngVel);
73 MAKE_PROPERTIES_REF(cpBody, Torque);
74 MAKE_PROPERTIES_REF(cpBody, VelLimit);
75 MAKE_PROPERTIES_REF(cpBody, AngVelLimit);
76 MAKE_PROPERTIES_REF(cpBody, UserData);
77 MAKE_REF(cpBodyIsSleeping);
78 MAKE_REF(cpBodyIsStatic);
79 MAKE_REF(cpBodyIsRogue);
80 MAKE_REF(cpBodyLocal2World);
81 MAKE_REF(cpBodyWorld2Local);
82 MAKE_REF(cpBodyKineticEnergy);
83 
84 MAKE_REF(cpShapeGetBB);
85 MAKE_PROPERTIES_REF(cpShape, Body);
86 MAKE_PROPERTIES_REF(cpShape, Sensor);
87 MAKE_PROPERTIES_REF(cpShape, Elasticity);
88 MAKE_PROPERTIES_REF(cpShape, Friction);
89 MAKE_PROPERTIES_REF(cpShape, SurfaceVelocity);
90 MAKE_PROPERTIES_REF(cpShape, UserData);
91 MAKE_PROPERTIES_REF(cpShape, CollisionType);
92 MAKE_PROPERTIES_REF(cpShape, Group);
93 MAKE_PROPERTIES_REF(cpShape, Layers);
94 
95 MAKE_REF(cpArbiterGetShapes);
96 MAKE_REF(cpArbiterGetBodies);
97 MAKE_REF(cpArbiterIsFirstContact);
98 MAKE_REF(cpArbiterGetCount);
99 
100 MAKE_REF(cpConstraintGetA);
101 MAKE_REF(cpConstraintGetB);
102 MAKE_PROPERTIES_REF(cpConstraint, MaxForce);
103 MAKE_PROPERTIES_REF(cpConstraint, ErrorBias);
104 MAKE_PROPERTIES_REF(cpConstraint, MaxBias);
105 MAKE_PROPERTIES_REF(cpConstraint, UserData);
106 MAKE_REF(cpConstraintGetImpulse);
107 
108 MAKE_PROPERTIES_REF(cpDampedRotarySpring, RestAngle);
109 MAKE_PROPERTIES_REF(cpDampedRotarySpring, Stiffness);
110 MAKE_PROPERTIES_REF(cpDampedRotarySpring, Damping);
111 //MAKE_PROPERTIES_REF(cpDampedRotarySpring, SpringTorqueFunc);
112 
113 MAKE_PROPERTIES_REF(cpDampedSpring, Anchr1);
114 MAKE_PROPERTIES_REF(cpDampedSpring, Anchr2);
115 MAKE_PROPERTIES_REF(cpDampedSpring, RestLength);
116 MAKE_PROPERTIES_REF(cpDampedSpring, Stiffness);
117 MAKE_PROPERTIES_REF(cpDampedSpring, Damping);
118 //MAKE_PROPERTIES_REF(cpDampedSpring, SpringForceFunc);
119 
120 MAKE_PROPERTIES_REF(cpGearJoint, Phase);
121 MAKE_REF(cpGearJointGetRatio);
122 
123 MAKE_PROPERTIES_REF(cpGrooveJoint, Anchr2);
124 MAKE_REF(cpGrooveJointGetGrooveA);
125 MAKE_REF(cpGrooveJointGetGrooveB);
126 
127 MAKE_PROPERTIES_REF(cpPinJoint, Anchr1);
128 MAKE_PROPERTIES_REF(cpPinJoint, Anchr2);
129 MAKE_PROPERTIES_REF(cpPinJoint, Dist);
130 
131 MAKE_PROPERTIES_REF(cpPivotJoint, Anchr1);
132 MAKE_PROPERTIES_REF(cpPivotJoint, Anchr2);
133 
134 MAKE_PROPERTIES_REF(cpRatchetJoint, Angle);
135 MAKE_PROPERTIES_REF(cpRatchetJoint, Phase);
136 MAKE_PROPERTIES_REF(cpRatchetJoint, Ratchet);
137 
138 MAKE_PROPERTIES_REF(cpRotaryLimitJoint, Min);
139 MAKE_PROPERTIES_REF(cpRotaryLimitJoint, Max);
140 
141 MAKE_PROPERTIES_REF(cpSimpleMotor, Rate);
142 
143 MAKE_PROPERTIES_REF(cpSlideJoint, Anchr1);
144 MAKE_PROPERTIES_REF(cpSlideJoint, Anchr2);
145 MAKE_PROPERTIES_REF(cpSlideJoint, Min);
146 MAKE_PROPERTIES_REF(cpSlideJoint, Max);
147 
148 MAKE_REF(cpSegmentQueryHitPoint);
149 MAKE_REF(cpSegmentQueryHitDist);
150 
151 MAKE_REF(cpSpatialIndexDestroy);
152 MAKE_REF(cpSpatialIndexCount);
153 MAKE_REF(cpSpatialIndexEach);
154 MAKE_REF(cpSpatialIndexContains);
155 MAKE_REF(cpSpatialIndexInsert);
156 MAKE_REF(cpSpatialIndexRemove);
157 MAKE_REF(cpSpatialIndexReindex);
160 MAKE_REF(cpSpatialIndexQuery);
162 
163 MAKE_PROPERTIES_REF(cpSpace, Iterations);
164 MAKE_PROPERTIES_REF(cpSpace, Gravity);
165 MAKE_PROPERTIES_REF(cpSpace, Damping);
166 MAKE_PROPERTIES_REF(cpSpace, IdleSpeedThreshold);
167 MAKE_PROPERTIES_REF(cpSpace, SleepTimeThreshold);
168 MAKE_PROPERTIES_REF(cpSpace, CollisionSlop);
169 MAKE_PROPERTIES_REF(cpSpace, CollisionBias);
170 MAKE_PROPERTIES_REF(cpSpace, CollisionPersistence);
171 MAKE_PROPERTIES_REF(cpSpace, EnableContactGraph);
172 MAKE_PROPERTIES_REF(cpSpace, UserData);
173 MAKE_REF(cpSpaceGetStaticBody);
174 MAKE_REF(cpSpaceGetCurrentTimeStep);
175 MAKE_REF(cpSpaceIsLocked);
176 
177 #endif