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