00001
00003 #ifndef _descriptor_h_
00004 #define _descriptor_h_
00005 #include <stdbool.h>
00006
00007 #include <das2/units.h>
00008 #include <das2/util.h>
00009 #include <das2/buffer.h>
00010
00017 typedef enum DescriptorType {Unknown=0, Plane=14001, Packet=14002,
00018 Stream=14003} desc_type_t;
00019
00020
00043 typedef struct descriptor {
00044 desc_type_t type;
00045 char* properties[XML_MAXPROPERTIES];
00046 struct descriptor* parent;
00047 bool bLooseParsing;
00048 } Descriptor;
00049
00050
00064 void Desc_init(Descriptor* pThis, desc_type_t type);
00065
00066
00067
00068 Descriptor* new_Descriptor(void);
00069
00070 void Desc_freeProps(Descriptor* pThis);
00071
00084 bool Desc_equals(const Descriptor* pOne, const Descriptor* pTwo);
00085
00096 Descriptor* Desc_getParent(Descriptor* pThis);
00097
00113 size_t Desc_getNProps(const Descriptor* pThis);
00114
00128 const char* Desc_getPropNameByNum(const Descriptor* pThis, size_t uIdx);
00129
00143 const char* Desc_getPropValByNum(const Descriptor* pThis, size_t uIdx);
00144
00145
00154 bool Desc_hasProp(const Descriptor* pThis, const char* propertyName );
00155
00181 ErrorCode Desc_setProp(
00182 Descriptor* pThis, const char* sType, const char* sName, const char* sVal
00183 );
00184
00185 const char* Desc_getProp(const Descriptor* pThis, const char * propertyName );
00186
00190 const char* Desc_getPropStr(const Descriptor* pThis, const char * propertyName );
00191
00197 ErrorCode Desc_setPropStr(
00198 Descriptor* pThis, const char* sName, const char* sVal
00199 );
00200
00205 double Desc_getPropDouble(const Descriptor* pThis, const char * propertyName);
00206
00210 ErrorCode Desc_setPropDouble(Descriptor* pThis, const char * propertyName, double value);
00211
00226 double Desc_getPropDatum(Descriptor* pThis, const char * sPropName,
00227 UnitType units );
00228
00241 ErrorCode Desc_setPropDatum(
00242 Descriptor* pThis, const char* sName, double rVal, UnitType units
00243 );
00244
00264 double * Desc_getPropDoubleArray(Descriptor* pThis, const char * propertyName,
00265 int *nitems );
00266
00270 ErrorCode Desc_setPropDoubleArray(
00271 Descriptor* pThis, const char * propertyName, int nitems, double *value
00272 );
00273
00284 int Desc_getPropInt(const Descriptor* pThis, const char* propertyName);
00285
00289 ErrorCode Desc_setPropInt(Descriptor* pThis, const char * sName, int nVal);
00290
00297 bool Desc_getPropBool(Descriptor* pThis, const char* sPropName);
00298
00305 ErrorCode Desc_setPropBool(Descriptor* pThis, const char* sPropName, bool bVal);
00306
00310 ErrorCode Desc_setPropDatumRange(
00311 Descriptor* pThis, const char * sName, double beg, double end, UnitType units
00312 );
00313
00314
00319 ErrorCode Desc_setPropFloatArray(
00320 Descriptor* pThis, const char * propertyName, int nitems, float *value
00321 );
00322
00328 void Desc_copyProperties(Descriptor* pThis, const Descriptor* source );
00329
00337 ErrorCode Desc_encode(Descriptor* pThis, DasBuf* pBuf, const char* sIndent);
00340 #endif