/*
 *  WARNING: machine generated code.
 *
 *  do NOT edit this file, edit the
 *  original '.epp' file and regenerate this
 *  one.
 */

#ifndef ____DMELEM_H
#define ____DMELEM_H

#include <dsys/divtypes.h>
#include <dvs/vl.h>

#ifdef __cplusplus
extern "C" {
#endif

/*
 * Instance number access macros.
 */



/*
 * Generated function declarations.
 */
extern int32 ModuleDmInit ( void );

extern InstanceNo  (VLCreate_dmVector)(float32 *data, VLTime *time, VLUpdateMode mode);
extern VLStatus    (VLDelete_dmVector)(InstanceNo ino, VLUpdateMode mode);
extern VLStatus    (VLUpdate_dmVector)(InstanceNo ino, float32 *data, VLTime *time, VLUpdateMode mode);
extern VLStatus   (VLExtract_dmVector)(InstanceNo ino , float32 *data, VLTime *utime);

extern InstanceNo  (VLCreate_dmPoint)(float32 *data, VLTime *time, VLUpdateMode mode);
extern VLStatus    (VLDelete_dmPoint)(InstanceNo ino, VLUpdateMode mode);
extern VLStatus    (VLUpdate_dmPoint)(InstanceNo ino, float32 *data, VLTime *time, VLUpdateMode mode);
extern VLStatus   (VLExtract_dmPoint)(InstanceNo ino , float32 *data, VLTime *utime);

extern InstanceNo  (VLCreate_dmEuler)(float32 *data, VLTime *time, VLUpdateMode mode);
extern VLStatus    (VLDelete_dmEuler)(InstanceNo ino, VLUpdateMode mode);
extern VLStatus    (VLUpdate_dmEuler)(InstanceNo ino, float32 *data, VLTime *time, VLUpdateMode mode);
extern VLStatus   (VLExtract_dmEuler)(InstanceNo ino , float32 *data, VLTime *utime);

extern InstanceNo  (VLCreate_dmQuaternion)(float32 *data, VLTime *time, VLUpdateMode mode);
extern VLStatus    (VLDelete_dmQuaternion)(InstanceNo ino, VLUpdateMode mode);
extern VLStatus    (VLUpdate_dmQuaternion)(InstanceNo ino, float32 *data, VLTime *time, VLUpdateMode mode);
extern VLStatus   (VLExtract_dmQuaternion)(InstanceNo ino , float32 *data, VLTime *utime);

extern InstanceNo  (VLCreate_dmScale)(float32 *data, VLTime *time, VLUpdateMode mode);
extern VLStatus    (VLDelete_dmScale)(InstanceNo ino, VLUpdateMode mode);
extern VLStatus    (VLUpdate_dmScale)(InstanceNo ino, float32 *data, VLTime *time, VLUpdateMode mode);
extern VLStatus   (VLExtract_dmScale)(InstanceNo ino , float32 *data, VLTime *utime);

extern InstanceNo  (VLCreate_dmMatrix)(float32 *data, VLTime *time, VLUpdateMode mode);
extern VLStatus    (VLDelete_dmMatrix)(InstanceNo ino, VLUpdateMode mode);
extern VLStatus    (VLUpdate_dmMatrix)(InstanceNo ino, float32 *data, VLTime *time, VLUpdateMode mode);
extern VLStatus   (VLExtract_dmMatrix)(InstanceNo ino , float32 *data, VLTime *utime);

extern InstanceNo  (VLCreate_dmPosition)(dmPosition *data, VLTime *time, VLUpdateMode mode);
extern VLStatus    (VLDelete_dmPosition)(InstanceNo ino, VLUpdateMode mode);
extern VLStatus    (VLUpdate_dmPosition)(InstanceNo ino, dmPosition *data, VLTime *time, VLUpdateMode mode);
extern VLStatus   (VLExtract_dmPosition)(InstanceNo ino , dmPosition *data, VLTime *utime);

#ifdef __VL_INLINE_ACCESS__
#define VLCreate_dmVector( d, t, m) vlCreateInstance(el_dmVector, 0, (d),(t),(m))
#define VLDelete_dmVector(i,m) vlDeleteInstance((i),(m))
#define VLUpdate_dmVector( i, d, t, m) vlUpdateInstance((i),(d),(t),(m))
#define VLExtract_dmVector(i,d,t) vlExtractInstance((i),(d),(t))

#define VLCreate_dmPoint( d, t, m) vlCreateInstance(el_dmPoint, 0, (d),(t),(m))
#define VLDelete_dmPoint(i,m) vlDeleteInstance((i),(m))
#define VLUpdate_dmPoint( i, d, t, m) vlUpdateInstance((i),(d),(t),(m))
#define VLExtract_dmPoint(i,d,t) vlExtractInstance((i),(d),(t))

#define VLCreate_dmEuler( d, t, m) vlCreateInstance(el_dmEuler, 0, (d),(t),(m))
#define VLDelete_dmEuler(i,m) vlDeleteInstance((i),(m))
#define VLUpdate_dmEuler( i, d, t, m) vlUpdateInstance((i),(d),(t),(m))
#define VLExtract_dmEuler(i,d,t) vlExtractInstance((i),(d),(t))

#define VLCreate_dmQuaternion( d, t, m) vlCreateInstance(el_dmQuaternion, 0, (d),(t),(m))
#define VLDelete_dmQuaternion(i,m) vlDeleteInstance((i),(m))
#define VLUpdate_dmQuaternion( i, d, t, m) vlUpdateInstance((i),(d),(t),(m))
#define VLExtract_dmQuaternion(i,d,t) vlExtractInstance((i),(d),(t))

#define VLCreate_dmScale( d, t, m) vlCreateInstance(el_dmScale, 0, (d),(t),(m))
#define VLDelete_dmScale(i,m) vlDeleteInstance((i),(m))
#define VLUpdate_dmScale( i, d, t, m) vlUpdateInstance((i),(d),(t),(m))
#define VLExtract_dmScale(i,d,t) vlExtractInstance((i),(d),(t))

#define VLCreate_dmMatrix( d, t, m) vlCreateInstance(el_dmMatrix, 0, (d),(t),(m))
#define VLDelete_dmMatrix(i,m) vlDeleteInstance((i),(m))
#define VLUpdate_dmMatrix( i, d, t, m) vlUpdateInstance((i),(d),(t),(m))
#define VLExtract_dmMatrix(i,d,t) vlExtractInstance((i),(d),(t))

#define VLCreate_dmPosition( d, t, m) vlCreateInstance(el_dmPosition, 0, (d),(t),(m))
#define VLDelete_dmPosition(i,m) vlDeleteInstance((i),(m))
#define VLUpdate_dmPosition( i, d, t, m) vlUpdateInstance((i),(d),(t),(m))
#define VLExtract_dmPosition(i,d,t) vlExtractInstance((i),(d),(t))

#endif
/*
 * Symbolic element names.
 */
extern const ElementHandle el_dmVector;
extern const ElementHandle el_dmPoint;
extern const ElementHandle el_dmEuler;
extern const ElementHandle el_dmQuaternion;
extern const ElementHandle el_dmScale;
extern const ElementHandle el_dmMatrix;
extern const ElementHandle el_dmPosition;

static const int ElCountDm = 7;

/*
 * Epp declaraions. NOT 'C' - hence the ifdef guard!
 */
#ifdef __EPP__
%%
extern atomic  element dmVector;
extern atomic  element dmPoint;
extern atomic  element dmEuler;
extern atomic  element dmQuaternion;
extern atomic  element dmScale;
extern atomic  element dmMatrix;
extern atomic  element dmPosition;
%%
#endif/* __EPP__ */
#ifdef __cplusplus
}
#endif
#endif /* ____DMELEM_H */
