diff options
author | Joseph Hunkeler <jhunkeler@gmail.com> | 2015-07-08 20:46:52 -0400 |
---|---|---|
committer | Joseph Hunkeler <jhunkeler@gmail.com> | 2015-07-08 20:46:52 -0400 |
commit | fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4 (patch) | |
tree | bdda434976bc09c864f2e4fa6f16ba1952b1e555 /vendor/voclient/libvotable/votParseP.h | |
download | iraf-linux-fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4.tar.gz |
Initial commit
Diffstat (limited to 'vendor/voclient/libvotable/votParseP.h')
-rw-r--r-- | vendor/voclient/libvotable/votParseP.h | 175 |
1 files changed, 175 insertions, 0 deletions
diff --git a/vendor/voclient/libvotable/votParseP.h b/vendor/voclient/libvotable/votParseP.h new file mode 100644 index 00000000..15d00989 --- /dev/null +++ b/vendor/voclient/libvotable/votParseP.h @@ -0,0 +1,175 @@ +/** + * VOTPARSEP.H -- Internal LIBVOTABLE definitions. + * + * @file votParseP.h + * @author Mike Fitzpatrick and Eric Timmermann + * @date 8/03/09 + * + * @brief Internal LIBVOTABLE definitions. + */ + + +#include <expat.h> + +#define VOT_DOC_VERSION "1.2" /** VOTable document version (write) */ + +#define VOT_XSI "http://www.w3.org/2001/XMLSchema-instance" +#define VOT_SCHEMA_LOC "http://www.ivoa.net/xml/VOTable/v1.1 http://www.ivoa.net/xml/VOTable/v1.1" +#define VOT_XMLNS "http://www.ivoa.net/xml/VOTable/v1.1" + + +#define SZ_ATTRNAME 32 /** size of attribute name */ +#define SZ_ATTRVAL 2048 /** size of attribute value */ +#define SZ_FNAME 255 /** size of filename+path */ +#define SZ_XMLTAG 1024 /** max length of entire XML tag */ +#define SZ_LINE 4096 /** handy size */ + +#define MAX_ATTR 100 /** max size of an attribute/value */ +#define HANDLE_INCREMENT 1024000 /** incr size of handle table */ + + +#ifdef min +#undef min +#endif +#define min(a,b) ((a<b)?a:b) + +#ifdef max +#undef max +#endif +#define max(a,b) ((a>b)?a:b) + + + + +/** + * @brief Handle type definition + */ +#ifndef handle_t +#define handle_t int +#endif + + + +/** + * @struct AttrList. + * @brief Information for an attribute. + * @param name A string of the attributes name. + * @param value A string of the attributes value. + * @param *next A pointer to the next element. + */ +typedef struct { + char name[SZ_ATTRNAME]; + char value[SZ_ATTRVAL]; + void *next; +} AttrList; + + +/** + * @struct AttrBlock + * @brief Information for a block of attributes. + * @param req A '|' delimited string of required attribute names. + * @param opt A '|' delimited string of optional attribute names. + * @param attributes A pointer to an AttrList structure. + */ +typedef struct { + char *req; + char *opt; + void *attributes; +} AttrBlock; + + +/** + * @struct Element + * + * @brief This is a structure that hold the information for an XML element. + */ +typedef struct elem_t { + unsigned int type; /** @brief Type of element this is */ + AttrBlock *attr; /** @brief A pointer to a block of attributes */ + char *content; /** @brief Content of the tag elements */ + int isCData; /** @brief Is value a CDATA string? */ + int handle; /** @brief handle value */ + + struct elem_t *next; /** @brief Ptr to the next element (sibling) */ + struct elem_t *last_child;/** @brief Ptr the the last child element */ + struct elem_t *child; /** @brief Ptr the the child element */ + struct elem_t *parent; /** @brief Ptr to the parent element */ + + char **data; /** @brief Ptr to the data matrix */ + + unsigned char ref_count; /** @brief No. refrences to this Element */ +} Element; + + +/** + * @struct Node + * @brief Struct that holds a stack Node containing an Element + */ +typedef struct node { + Element *element; + void *next; +} Node; + + +/** + * @struct Stack + * @brief This is a structure that holds the information for a stack + */ +typedef struct { + Node *head; + int level; +} Stack; + + + +/** *************************************************************************** + * + * Public Internal Methods. The procedures are used to implement the + * library, however are not part of the public interface. + * + ** **************************************************************************/ + +/* votAttribute.c + */ +int vot_attrSet (AttrBlock *ablock, char *name, char *value); +char *vot_attrGet (AttrBlock *ablock, char *name); +char *vot_attrXML (AttrBlock *ablock); + +/* votElement.c + */ +int vot_eType (char *name); +char *vot_elemName (Element *e); +int vot_elemType (Element *e); +char *vot_elemXML (Element *e); +char *vot_elemXMLEnd (Element *e); +Element *vot_newElem (unsigned int type); + +/* votHandle.c + */ +handle_t vot_setHandle (Element *elem); +handle_t vot_lookupHandle (Element *elem); +void vot_freeHandle (handle_t handle); +Element *vot_getElement (handle_t handle); +void vot_newHandleTable (void); +int vot_handleCount (void); +void vot_handleCleanup (void); +void vot_handleError (char *msg); + +/* votParseCB.c + */ +void vot_endElement (void *userData, const char *name); +void vot_startElement (void *userData, const char *name, const char **atts); +void vot_charData (void *userData, const XML_Char *s, int len); +void vot_startCData (void *userData); +void vot_endCData (void *userData); + +/* votStack.c + */ +void votPush (Stack *st, Element *elem); +Element *votPop (Stack *st); +Element *votPeek (Stack *st); + +Stack *vot_newStack (void); +int vot_isEmpty (Stack *st); +void vot_clearStack (Stack *st); +void vot_printStack (Stack *st); |