/*====================================================================*
 *
 *   node.h - document node definitions and declarations;
 *
 *   Motley Tools by Charles Maier <cmaier@cmassoc.net>;
 *   Copyright 2001-2006 by Charles Maier Associates;
 *   Licensed under the Internet Software Consortium License;
 *
 *--------------------------------------------------------------------*/
#ifndef NODE_HEADER
#define NODE_HEADER
/*====================================================================*
 *   system headers;
 *--------------------------------------------------------------------*/
#include <unistd.h>
#include <stdint.h>
/*====================================================================*
 *   custom headers;
 *--------------------------------------------------------------------*/
#include "../tools/types.h"
/*====================================================================*
 *
 *--------------------------------------------------------------------*/
#define ISO_CHARSET "iso-8859-1"
#define ISO_CONTENT "text/html"
/*====================================================================*
 *
 *--------------------------------------------------------------------*/
#define W3C_STD "-//W3C//DTD XHTML 1.0 Strict//EN"
#define W3C_DTD "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
/*====================================================================*
 *
 *--------------------------------------------------------------------*/
#define XML_VERSION "1.0"
#define XML_NAMESPACE "http://www.w3.org/2001/XMLSchema-instance"
#define XML_CHARSET ISO_CHARSET
#define XML_LANGUAGE "en-us"
#define XML_SCHEMA "http://www.w3.org/2001/XMLSchema"
/*====================================================================*
 *
 *--------------------------------------------------------------------*/
#define NODE_ELEM '<'
#define NODE_SGML '!'
#define NODE_INST '?'
#define NODE_ATTR ' '
#define NODE_VALU '='
#define NODE_ETAG '/'
#define NODE_DATA '>'
/*====================================================================*
 *
 *--------------------------------------------------------------------*/
#define DATA_SCHEMA "piboffset.xsd"
#define DATA_NAME "name"
#define DATA_TEXT "text"
#define DATA_OBJECT "pib"
#define DATA_MEMBER "object"
#define DATA_OFFSET "offset"
#define DATA_LENGTH "length"
#define DATA_STRUCT "array"
#define DATA_STRING "dataString"
#define DATA_MEMORY "dataHex"
#define DATA_HUGE "dataHuge"
#define DATA_LONG "dataLong"
#define DATA_WORD "dataWord"
#define DATA_BYTE "dataByte"
/*====================================================================*
 *   variables;
 *--------------------------------------------------------------------*/
typedef struct node
{
	struct node * above;
	struct node * prior;
	struct node * after;
	struct node * below;
	unsigned line;
	unsigned type;
	char * text;
}
NODE;
/*====================================================================*
 *   functions;
 *--------------------------------------------------------------------*/
char const * xmlselect (NODE const *, char const * element, char const * attribute);
signed xmlread (NODE *, char const * filename);
signed xmlscan (NODE *);
signed xmledit (NODE const *, void * memory, size_t extent);
NODE * xmlopen (char const * filename);
NODE * xmlnode (NODE *);
NODE const * xmlelement (NODE const *, char const * name);
NODE const * xmlattribute (NODE const *, char const * name);
NODE const * xmlvalue (NODE const *);
NODE const * xmldata (NODE const *);
void xmlschema ();
void xmltree (NODE const *);
void xmlfree (NODE *);
/*====================================================================*
 *
 *--------------------------------------------------------------------*/
#endif