- Main Page
- Modules
- Data Structures
- Files

# objects.h

    00001 /*************************************************************************
    00002  *                                                                       *
    00003  * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith.       *
    00004  * All rights reserved.  Email: russ@q12.org   Web: www.q12.org          *
    00005  *                                                                       *
    00006  * This library is free software; you can redistribute it and/or         *
    00007  * modify it under the terms of EITHER:                                  *
    00008  *   (1) The GNU Lesser General Public License as published by the Free  *
    00009  *       Software Foundation; either version 2.1 of the License, or (at  *
    00010  *       your option) any later version. The text of the GNU Lesser      *
    00011  *       General Public License is included with this library in the     *
    00012  *       file LICENSE.TXT.                                               *
    00013  *   (2) The BSD-style license that is included with this library in     *
    00014  *       the file LICENSE-BSD.TXT.                                       *
    00015  *                                                                       *
    00016  * This library is distributed in the hope that it will be useful,       *
    00017  * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
    00018  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    *
    00019  * LICENSE.TXT and LICENSE-BSD.TXT for more details.                     *
    00020  *                                                                       *
    00021  *************************************************************************/
    00022
    00023 #ifndef _ODE_OBJECTS_H_
    00024 #define _ODE_OBJECTS_H_
    00025
    00026 #include <ode/common.h>
    00027 #include <ode/mass.h>
    00028 #include <ode/contact.h>
    00029
    00030 #ifdef __cplusplus
    00031 extern "C" {
    00032 #endif
    00033
    00052 ODE_API dWorldID dWorldCreate(void);
    00053
    00054
    00064 ODE_API void dWorldDestroy (dWorldID world);
    00065
    00066
    00075 ODE_API void dWorldSetGravity (dWorldID, dReal x, dReal y, dReal z);
    00076
    00077
    00082 ODE_API void dWorldGetGravity (dWorldID, dVector3 gravity);
    00083
    00084
    00092 ODE_API void dWorldSetERP (dWorldID, dReal erp);
    00093
    00099 ODE_API dReal dWorldGetERP (dWorldID);
    00100
    00101
    00109 ODE_API void dWorldSetCFM (dWorldID, dReal cfm);
    00110
    00116 ODE_API dReal dWorldGetCFM (dWorldID);
    00117
    00118
    00129 ODE_API void dWorldStep (dWorldID, dReal stepsize);
    00130
    00131
    00146 ODE_API void dWorldImpulseToForce
    00147 (
    00148   dWorldID, dReal stepsize,
    00149   dReal ix, dReal iy, dReal iz, dVector3 force
    00150 );
    00151
    00152
    00184 ODE_API void dWorldQuickStep (dWorldID w, dReal stepsize);
    00185
    00186
    00196 ODE_API void dWorldSetQuickStepNumIterations (dWorldID, int num);
    00197
    00198
    00205 ODE_API int dWorldGetQuickStepNumIterations (dWorldID);
    00206
    00212 ODE_API void dWorldSetQuickStepW (dWorldID, dReal over_relaxation);
    00213
    00219 ODE_API dReal dWorldGetQuickStepW (dWorldID);
    00220
    00221 /* World contact parameter functions */
    00222
    00231 ODE_API void dWorldSetContactMaxCorrectingVel (dWorldID, dReal vel);
    00232
    00238 ODE_API dReal dWorldGetContactMaxCorrectingVel (dWorldID);
    00239
    00251 ODE_API void dWorldSetContactSurfaceLayer (dWorldID, dReal depth);
    00252
    00258 ODE_API dReal dWorldGetContactSurfaceLayer (dWorldID);
    00259
    00260 /* StepFast1 functions */
    00261
    00268 ODE_API void dWorldStepFast1(dWorldID, dReal stepsize, int maxiterations);
    00269
    00270
    00306 ODE_API void dWorldSetAutoEnableDepthSF1(dWorldID, int autoEnableDepth);
    00307
    00312 ODE_API int dWorldGetAutoEnableDepthSF1(dWorldID);
    00313
    00319 ODE_API dReal dWorldGetAutoDisableLinearThreshold (dWorldID);
    00320
    00326 ODE_API void  dWorldSetAutoDisableLinearThreshold (dWorldID, dReal linear_threshold);
    00327
    00333 ODE_API dReal dWorldGetAutoDisableAngularThreshold (dWorldID);
    00334
    00340 ODE_API void dWorldSetAutoDisableAngularThreshold (dWorldID, dReal angular_threshold);
    00341
    00347 ODE_API dReal dWorldGetAutoDisableLinearAverageThreshold (dWorldID);
    00348
    00354 ODE_API void  dWorldSetAutoDisableLinearAverageThreshold (dWorldID, dReal linear_average_threshold);
    00355
    00361 ODE_API dReal dWorldGetAutoDisableAngularAverageThreshold (dWorldID);
    00362
    00368 ODE_API void dWorldSetAutoDisableAngularAverageThreshold (dWorldID, dReal angular_average_threshold);
    00369
    00375 ODE_API int dWorldGetAutoDisableAverageSamplesCount (dWorldID);
    00376
    00383 ODE_API void dWorldSetAutoDisableAverageSamplesCount (dWorldID, unsigned int average_samples_count );
    00384
    00390 ODE_API int dWorldGetAutoDisableSteps (dWorldID);
    00391
    00397 ODE_API void dWorldSetAutoDisableSteps (dWorldID, int steps);
    00398
    00404 ODE_API dReal dWorldGetAutoDisableTime (dWorldID);
    00405
    00411 ODE_API void dWorldSetAutoDisableTime (dWorldID, dReal time);
    00412
    00418 ODE_API int dWorldGetAutoDisableFlag (dWorldID);
    00419
    00425 ODE_API void dWorldSetAutoDisableFlag (dWorldID, int do_auto_disable);
    00426
    00427
    00428
    00468 ODE_API dReal dBodyGetAutoDisableLinearThreshold (dBodyID);
    00469
    00475 ODE_API void  dBodySetAutoDisableLinearThreshold (dBodyID, dReal linear_average_threshold);
    00476
    00482 ODE_API dReal dBodyGetAutoDisableAngularThreshold (dBodyID);
    00483
    00489 ODE_API void  dBodySetAutoDisableAngularThreshold (dBodyID, dReal angular_average_threshold);
    00490
    00496 ODE_API int dBodyGetAutoDisableAverageSamplesCount (dBodyID);
    00497
    00503 ODE_API void dBodySetAutoDisableAverageSamplesCount (dBodyID, unsigned int average_samples_count);
    00504
    00505
    00511 ODE_API int dBodyGetAutoDisableSteps (dBodyID);
    00512
    00518 ODE_API void dBodySetAutoDisableSteps (dBodyID, int steps);
    00519
    00525 ODE_API dReal dBodyGetAutoDisableTime (dBodyID);
    00526
    00532 ODE_API void  dBodySetAutoDisableTime (dBodyID, dReal time);
    00533
    00539 ODE_API int dBodyGetAutoDisableFlag (dBodyID);
    00540
    00546 ODE_API void dBodySetAutoDisableFlag (dBodyID, int do_auto_disable);
    00547
    00554 ODE_API void  dBodySetAutoDisableDefaults (dBodyID);
    00555
    00556
    00563 ODE_API dWorldID dBodyGetWorld (dBodyID);
    00564
    00571 ODE_API dBodyID dBodyCreate (dWorldID);
    00572
    00581 ODE_API void dBodyDestroy (dBodyID);
    00582
    00588 ODE_API void  dBodySetData (dBodyID, void *data);
    00589
    00595 ODE_API void *dBodyGetData (dBodyID);
    00596
    00605 ODE_API void dBodySetPosition   (dBodyID, dReal x, dReal y, dReal z);
    00606
    00615 ODE_API void dBodySetRotation   (dBodyID, const dMatrix3 R);
    00616
    00625 ODE_API void dBodySetQuaternion (dBodyID, const dQuaternion q);
    00626
    00631 ODE_API void dBodySetLinearVel  (dBodyID, dReal x, dReal y, dReal z);
    00632
    00637 ODE_API void dBodySetAngularVel (dBodyID, dReal x, dReal y, dReal z);
    00638
    00648 ODE_API const dReal * dBodyGetPosition   (dBodyID);
    00649
    00650
    00658 ODE_API void dBodyCopyPosition (dBodyID body, dVector3 pos);
    00659
    00660
    00666 ODE_API const dReal * dBodyGetRotation   (dBodyID);
    00667
    00668
    00676 ODE_API void dBodyCopyRotation (dBodyID, dMatrix3 R);
    00677
    00678
    00684 ODE_API const dReal * dBodyGetQuaternion (dBodyID);
    00685
    00686
    00694 ODE_API void dBodyCopyQuaternion(dBodyID body, dQuaternion quat);
    00695
    00696
    00701 ODE_API const dReal * dBodyGetLinearVel  (dBodyID);
    00702
    00707 ODE_API const dReal * dBodyGetAngularVel (dBodyID);
    00708
    00713 ODE_API void dBodySetMass (dBodyID, const dMass *mass);
    00714
    00719 ODE_API void dBodyGetMass (dBodyID, dMass *mass);
    00720
    00725 ODE_API void dBodyAddForce            (dBodyID, dReal fx, dReal fy, dReal fz);
    00726
    00731 ODE_API void dBodyAddTorque           (dBodyID, dReal fx, dReal fy, dReal fz);
    00732
    00737 ODE_API void dBodyAddRelForce         (dBodyID, dReal fx, dReal fy, dReal fz);
    00738
    00743 ODE_API void dBodyAddRelTorque        (dBodyID, dReal fx, dReal fy, dReal fz);
    00744
    00749 ODE_API void dBodyAddForceAtPos       (dBodyID, dReal fx, dReal fy, dReal fz,
    00750                          dReal px, dReal py, dReal pz);
    00755 ODE_API void dBodyAddForceAtRelPos    (dBodyID, dReal fx, dReal fy, dReal fz,
    00756                          dReal px, dReal py, dReal pz);
    00761 ODE_API void dBodyAddRelForceAtPos    (dBodyID, dReal fx, dReal fy, dReal fz,
    00762                          dReal px, dReal py, dReal pz);
    00767 ODE_API void dBodyAddRelForceAtRelPos (dBodyID, dReal fx, dReal fy, dReal fz,
    00768                          dReal px, dReal py, dReal pz);
    00769
    00779 ODE_API const dReal * dBodyGetForce   (dBodyID);
    00780
    00790 ODE_API const dReal * dBodyGetTorque  (dBodyID);
    00791
    00800 ODE_API void dBodySetForce  (dBodyID b, dReal x, dReal y, dReal z);
    00801
    00810 ODE_API void dBodySetTorque (dBodyID b, dReal x, dReal y, dReal z);
    00811
    00817 ODE_API void dBodyGetRelPointPos
    00818 (
    00819   dBodyID, dReal px, dReal py, dReal pz,
    00820   dVector3 result
    00821 );
    00822
    00828 ODE_API void dBodyGetRelPointVel
    00829 (
    00830   dBodyID, dReal px, dReal py, dReal pz,
    00831   dVector3 result
    00832 );
    00833
    00840 ODE_API void dBodyGetPointVel
    00841 (
    00842   dBodyID, dReal px, dReal py, dReal pz,
    00843   dVector3 result
    00844 );
    00845
    00854 ODE_API void dBodyGetPosRelPoint
    00855 (
    00856   dBodyID, dReal px, dReal py, dReal pz,
    00857   dVector3 result
    00858 );
    00859
    00865 ODE_API void dBodyVectorToWorld
    00866 (
    00867   dBodyID, dReal px, dReal py, dReal pz,
    00868   dVector3 result
    00869 );
    00870
    00876 ODE_API void dBodyVectorFromWorld
    00877 (
    00878   dBodyID, dReal px, dReal py, dReal pz,
    00879   dVector3 result
    00880 );
    00881
    00899 ODE_API void dBodySetFiniteRotationMode (dBodyID, int mode);
    00900
    00917 ODE_API void dBodySetFiniteRotationAxis (dBodyID, dReal x, dReal y, dReal z);
    00918
    00924 ODE_API int dBodyGetFiniteRotationMode (dBodyID);
    00925
    00931 ODE_API void dBodyGetFiniteRotationAxis (dBodyID, dVector3 result);
    00932
    00938 ODE_API int dBodyGetNumJoints (dBodyID b);
    00939
    00946 ODE_API dJointID dBodyGetJoint (dBodyID, int index);
    00947
    00953 ODE_API void dBodyEnable (dBodyID);
    00954
    00962 ODE_API void dBodyDisable (dBodyID);
    00963
    00969 ODE_API int dBodyIsEnabled (dBodyID);
    00970
    00978 ODE_API void dBodySetGravityMode (dBodyID b, int mode);
    00979
    00985 ODE_API int dBodyGetGravityMode (dBodyID b);
    00986
    00987
    00988
    01064 ODE_API dJointID dJointCreateBall (dWorldID, dJointGroupID);
    01065
    01072 ODE_API dJointID dJointCreateHinge (dWorldID, dJointGroupID);
    01073
    01080 ODE_API dJointID dJointCreateSlider (dWorldID, dJointGroupID);
    01081
    01088 ODE_API dJointID dJointCreateContact (dWorldID, dJointGroupID, const dContact *);
    01089
    01096 ODE_API dJointID dJointCreateHinge2 (dWorldID, dJointGroupID);
    01097
    01104 ODE_API dJointID dJointCreateUniversal (dWorldID, dJointGroupID);
    01105
    01112 ODE_API dJointID dJointCreatePR (dWorldID, dJointGroupID);
    01113
    01120 ODE_API dJointID dJointCreateFixed (dWorldID, dJointGroupID);
    01121
    01122 ODE_API dJointID dJointCreateNull (dWorldID, dJointGroupID);
    01123
    01130 ODE_API dJointID dJointCreateAMotor (dWorldID, dJointGroupID);
    01131
    01138 ODE_API dJointID dJointCreateLMotor (dWorldID, dJointGroupID);
    01139
    01146 ODE_API dJointID dJointCreatePlane2D (dWorldID, dJointGroupID);
    01147
    01156 ODE_API void dJointDestroy (dJointID);
    01157
    01158
    01164 ODE_API dJointGroupID dJointGroupCreate (int max_size);
    01165
    01172 ODE_API void dJointGroupDestroy (dJointGroupID);
    01173
    01181 ODE_API void dJointGroupEmpty (dJointGroupID);
    01182
    01196 ODE_API void dJointAttach (dJointID, dBodyID body1, dBodyID body2);
    01197
    01202 ODE_API void dJointSetData (dJointID, void *data);
    01203
    01208 ODE_API void *dJointGetData (dJointID);
    01209
    01224 ODE_API int dJointGetType (dJointID);
    01225
    01236 ODE_API dBodyID dJointGetBody (dJointID, int index);
    01237
    01245 ODE_API void dJointSetFeedback (dJointID, dJointFeedback *);
    01246
    01251 ODE_API dJointFeedback *dJointGetFeedback (dJointID);
    01252
    01260 ODE_API void dJointSetBallAnchor (dJointID, dReal x, dReal y, dReal z);
    01261
    01266 ODE_API void dJointSetBallAnchor2 (dJointID, dReal x, dReal y, dReal z);
    01267
    01272 ODE_API void dJointSetBallParam (dJointID, int parameter, dReal value);
    01273
    01278 ODE_API void dJointSetHingeAnchor (dJointID, dReal x, dReal y, dReal z);
    01279
    01280 ODE_API void dJointSetHingeAnchorDelta (dJointID, dReal x, dReal y, dReal z, dReal ax, dReal ay, dReal az);
    01281
    01286 ODE_API void dJointSetHingeAxis (dJointID, dReal x, dReal y, dReal z);
    01287
    01292 ODE_API void dJointSetHingeParam (dJointID, int parameter, dReal value);
    01293
    01302 ODE_API void dJointAddHingeTorque(dJointID joint, dReal torque);
    01303
    01308 ODE_API void dJointSetSliderAxis (dJointID, dReal x, dReal y, dReal z);
    01309
    01313 ODE_API void dJointSetSliderAxisDelta (dJointID, dReal x, dReal y, dReal z, dReal ax, dReal ay, dReal az);
    01314
    01319 ODE_API void dJointSetSliderParam (dJointID, int parameter, dReal value);
    01320
    01329 ODE_API void dJointAddSliderForce(dJointID joint, dReal force);
    01330
    01335 ODE_API void dJointSetHinge2Anchor (dJointID, dReal x, dReal y, dReal z);
    01336
    01341 ODE_API void dJointSetHinge2Axis1 (dJointID, dReal x, dReal y, dReal z);
    01342
    01347 ODE_API void dJointSetHinge2Axis2 (dJointID, dReal x, dReal y, dReal z);
    01348
    01353 ODE_API void dJointSetHinge2Param (dJointID, int parameter, dReal value);
    01354
    01361 ODE_API void dJointAddHinge2Torques(dJointID joint, dReal torque1, dReal torque2);
    01362
    01367 ODE_API void dJointSetUniversalAnchor (dJointID, dReal x, dReal y, dReal z);
    01368
    01373 ODE_API void dJointSetUniversalAxis1 (dJointID, dReal x, dReal y, dReal z);
    01374
    01379 ODE_API void dJointSetUniversalAxis2 (dJointID, dReal x, dReal y, dReal z);
    01380
    01385 ODE_API void dJointSetUniversalParam (dJointID, int parameter, dReal value);
    01386
    01393 ODE_API void dJointAddUniversalTorques(dJointID joint, dReal torque1, dReal torque2);
    01394
    01395
    01400 ODE_API void dJointSetPRAnchor (dJointID, dReal x, dReal y, dReal z);
    01401
    01406 ODE_API void dJointSetPRAxis1 (dJointID, dReal x, dReal y, dReal z);
    01407
    01412 ODE_API void dJointSetPRAxis2 (dJointID, dReal x, dReal y, dReal z);
    01413
    01420 ODE_API void dJointSetPRParam (dJointID, int parameter, dReal value);
    01421
    01430 ODE_API void dJointAddPRTorque (dJointID j, dReal torque);
    01431
    01432
    01439 ODE_API void dJointSetFixed (dJointID);
    01440
    01441 /*
    01442  * @brief Sets joint parameter
    01443  *
    01444  * @ingroup joints
    01445  */
    01446 ODE_API void dJointSetFixedParam (dJointID, int parameter, dReal value);
    01447
    01453 ODE_API void dJointSetAMotorNumAxes (dJointID, int num);
    01454
    01459 ODE_API void dJointSetAMotorAxis (dJointID, int anum, int rel,
    01460            dReal x, dReal y, dReal z);
    01461
    01471 ODE_API void dJointSetAMotorAngle (dJointID, int anum, dReal angle);
    01472
    01477 ODE_API void dJointSetAMotorParam (dJointID, int parameter, dReal value);
    01478
    01483 ODE_API void dJointSetAMotorMode (dJointID, int mode);
    01484
    01493 ODE_API void dJointAddAMotorTorques (dJointID, dReal torque1, dReal torque2, dReal torque3);
    01494
    01500 ODE_API void dJointSetLMotorNumAxes (dJointID, int num);
    01501
    01513 ODE_API void dJointSetLMotorAxis (dJointID, int anum, int rel, dReal x, dReal y, dReal z);
    01514
    01519 ODE_API void dJointSetLMotorParam (dJointID, int parameter, dReal value);
    01520
    01524 ODE_API void dJointSetPlane2DXParam (dJointID, int parameter, dReal value);
    01525
    01530 ODE_API void dJointSetPlane2DYParam (dJointID, int parameter, dReal value);
    01531
    01535 ODE_API void dJointSetPlane2DAngleParam (dJointID, int parameter, dReal value);
    01536
    01543 ODE_API void dJointGetBallAnchor (dJointID, dVector3 result);
    01544
    01555 ODE_API void dJointGetBallAnchor2 (dJointID, dVector3 result);
    01556
    01561 ODE_API dReal dJointGetBallParam (dJointID, int parameter);
    01562
    01570 ODE_API void dJointGetHingeAnchor (dJointID, dVector3 result);
    01571
    01580 ODE_API void dJointGetHingeAnchor2 (dJointID, dVector3 result);
    01581
    01586 ODE_API void dJointGetHingeAxis (dJointID, dVector3 result);
    01587
    01592 ODE_API dReal dJointGetHingeParam (dJointID, int parameter);
    01593
    01604 ODE_API dReal dJointGetHingeAngle (dJointID);
    01605
    01610 ODE_API dReal dJointGetHingeAngleRate (dJointID);
    01611
    01619 ODE_API dReal dJointGetSliderPosition (dJointID);
    01620
    01625 ODE_API dReal dJointGetSliderPositionRate (dJointID);
    01626
    01631 ODE_API void dJointGetSliderAxis (dJointID, dVector3 result);
    01632
    01637 ODE_API dReal dJointGetSliderParam (dJointID, int parameter);
    01638
    01645 ODE_API void dJointGetHinge2Anchor (dJointID, dVector3 result);
    01646
    01655 ODE_API void dJointGetHinge2Anchor2 (dJointID, dVector3 result);
    01656
    01661 ODE_API void dJointGetHinge2Axis1 (dJointID, dVector3 result);
    01662
    01667 ODE_API void dJointGetHinge2Axis2 (dJointID, dVector3 result);
    01668
    01673 ODE_API dReal dJointGetHinge2Param (dJointID, int parameter);
    01674
    01679 ODE_API dReal dJointGetHinge2Angle1 (dJointID);
    01680
    01685 ODE_API dReal dJointGetHinge2Angle1Rate (dJointID);
    01686
    01691 ODE_API dReal dJointGetHinge2Angle2Rate (dJointID);
    01692
    01699 ODE_API void dJointGetUniversalAnchor (dJointID, dVector3 result);
    01700
    01714 ODE_API void dJointGetUniversalAnchor2 (dJointID, dVector3 result);
    01715
    01720 ODE_API void dJointGetUniversalAxis1 (dJointID, dVector3 result);
    01721
    01726 ODE_API void dJointGetUniversalAxis2 (dJointID, dVector3 result);
    01727
    01728
    01733 ODE_API dReal dJointGetUniversalParam (dJointID, int parameter);
    01734
    01746 ODE_API void dJointGetUniversalAngles (dJointID, dReal *angle1, dReal *angle2);
    01747
    01752 ODE_API dReal dJointGetUniversalAngle1 (dJointID);
    01753
    01758 ODE_API dReal dJointGetUniversalAngle2 (dJointID);
    01759
    01764 ODE_API dReal dJointGetUniversalAngle1Rate (dJointID);
    01765
    01770 ODE_API dReal dJointGetUniversalAngle2Rate (dJointID);
    01771
    01772
    01773
    01780 ODE_API void dJointGetPRAnchor (dJointID, dVector3 result);
    01781
    01793 ODE_API dReal dJointGetPRPosition (dJointID);
    01794
    01800 ODE_API dReal dJointGetPRPositionRate (dJointID);
    01801
    01802
    01807 ODE_API void dJointGetPRAxis1 (dJointID, dVector3 result);
    01808
    01813 ODE_API void dJointGetPRAxis2 (dJointID, dVector3 result);
    01814
    01819 ODE_API dReal dJointGetPRParam (dJointID, int parameter);
    01820
    01821
    01822
    01831 ODE_API int dJointGetAMotorNumAxes (dJointID);
    01832
    01842 ODE_API void dJointGetAMotorAxis (dJointID, int anum, dVector3 result);
    01843
    01860 ODE_API int dJointGetAMotorAxisRel (dJointID, int anum);
    01861
    01870 ODE_API dReal dJointGetAMotorAngle (dJointID, int anum);
    01871
    01880 ODE_API dReal dJointGetAMotorAngleRate (dJointID, int anum);
    01881
    01886 ODE_API dReal dJointGetAMotorParam (dJointID, int parameter);
    01887
    01901 ODE_API int dJointGetAMotorMode (dJointID);
    01902
    01907 ODE_API int dJointGetLMotorNumAxes (dJointID);
    01908
    01913 ODE_API void dJointGetLMotorAxis (dJointID, int anum, dVector3 result);
    01914
    01919 ODE_API dReal dJointGetLMotorParam (dJointID, int parameter);
    01920
    01925 ODE_API dReal dJointGetFixedParam (dJointID, int parameter);
    01926
    01927
    01931 ODE_API dJointID dConnectingJoint (dBodyID, dBodyID);
    01932
    01936 ODE_API int dConnectingJointList (dBodyID, dBodyID, dJointID*);
    01937
    01944 ODE_API int dAreConnected (dBodyID, dBodyID);
    01945
    01959 ODE_API int dAreConnectedExcluding (dBodyID body1, dBodyID body2, int joint_type);
    01960
    01961
    01962 #ifdef __cplusplus
    01963 }
    01964 #endif
    01965
    01966 #endif