Annotation of rpm2html/rdf_api.h, revision 1.11

1.1       veillard    1: /*
                      2:  * rdf_api.h : interface definitions to read and write RDF schemas
1.8       veillard    3:  *
                      4:  * See Copyright for the status of this software.
                      5:  *
1.11    ! daniel      6:  * $Id: rdf_api.h,v 1.10 1998/08/06 04:28:10 daniel Exp $
1.1       veillard    7:  */
                      8: 
                      9: #ifndef __RDF_API_H__
                     10: #define __RDF_API_H__
                     11: #include "parser.h"
                     12: #include "tree.h"
                     13: #include "rdf.h"
                     14: 
                     15: /*
                     16:  * An RDF schema is basically an XML document.
                     17:  */
                     18: typedef xmlDocPtr rdfSchema;
                     19: 
                     20: /*
1.10      daniel     21:  * An RDF namespace is an XML namespace/Ns
1.3       veillard   22:  */
1.10      daniel     23: typedef xmlNsPtr rdfNamespace;
1.3       veillard   24: 
                     25: /*
1.1       veillard   26:  * Any RDF element is an XML element.
                     27:  */
                     28: typedef xmlNodePtr rdfElement;
                     29: 
                     30: /*
                     31:  * An RDF description is an RDF element and usually
                     32:  * a direct child of the root for simple descriptions.
                     33:  */
                     34: typedef rdfElement rdfDescription;
                     35: 
                     36: /*
1.3       veillard   37:  * The value of an element can be either:
                     38:  *   - A piece of Text : char *                        RDF_LEAF
                     39:  *   - A collection tag :
                     40:  *       - Bag,                                        RDF_BAG
                     41:  *       - Seq                                 RDF_SEQ
                     42:  *       - Alt                                 RDF_ALT
                     43:  *   - An rdfDescription                       RDF_DESC
                     44:  */
                     45: 
                     46: #define RDF_LEAF       1
                     47: #define RDF_BAG                2
                     48: #define RDF_SEQ                3
                     49: #define RDF_ALT                4
                     50: #define RDF_DESC       5
                     51: 
                     52: /*
1.1       veillard   53:  * An RDF Bag is and RDF element with possibly multiple child
                     54:  */
                     55: typedef rdfElement rdfBag;
                     56: 
                     57: /*
1.3       veillard   58:  * An RDF Seq is and RDF element an enumeration of childs
1.2       veillard   59:  */
1.3       veillard   60: typedef rdfElement rdfSeq;
                     61: 
1.2       veillard   62: /*
1.1       veillard   63:  * Basic routines reading/writing an RDF file.
                     64:  */
1.3       veillard   65: rdfSchema rdfRead(const char *filename);
                     66: void rdfWrite(rdfSchema rdf, const char *filename);
1.6       veillard   67: void rdfWriteMemory(rdfSchema rdf, char **buffer, int *size);
1.1       veillard   68: 
                     69: /*
                     70:  * An RDF schema is a collection of RDF descriptions.
                     71:  */
1.5       veillard   72: rdfSchema rdfNewSchema(void);
                     73: void rdfDestroySchema(rdfSchema rdf);
1.1       veillard   74: rdfDescription rdfFirstDescription(rdfSchema schema);
                     75: rdfDescription rdfNextDescription(rdfDescription desc);
                     76: rdfDescription rdfAddDescription(rdfSchema schema, const char *id,
1.9       veillard   77:                                  const char *about);
1.7       veillard   78: char *rdfGetDescriptionId(rdfSchema schema, rdfDescription desc);
1.9       veillard   79: char *rdfGetDescriptionAbout(rdfSchema schema, rdfDescription desc);
                     80: char *rdfGetElementResource(rdfSchema schema, rdfElement elem);
                     81: #define rdfGetDescriptionHref(s, d) rdfGetDescriptionAbout((s), (d))
                     82: void rdfSetElementResource(rdfSchema schema, rdfElement elem, const char *URI);
1.1       veillard   83: 
                     84: /*
1.4       veillard   85:  * Namespace handling.
                     86:  */
                     87: rdfNamespace rdfNewNamespace(rdfSchema rdf, const char *url, const char *ns);
                     88: rdfNamespace rdfGetNamespace(rdfSchema rdf, const char *href);
                     89: rdfNamespace rdfGetRdfNamespace(rdfSchema rdf);
                     90: 
                     91: /*
1.3       veillard   92:  * Routines to read/write values, which can be either final ones or
                     93:  * subtree.
1.1       veillard   94:  */
1.3       veillard   95: int rdfGetValue(rdfDescription desc, const char *property,
                     96:                 rdfNamespace ns, char **value, rdfElement *elem);
                     97: void rdfSetValue(rdfDescription desc, const char *property,
                     98:                 rdfNamespace ns, const char *value);
                     99: void rdfSetTree(rdfDescription desc, const char *property,
                    100:                 rdfNamespace ns, rdfElement elem);
                    101: void rdfRemoveProperty(rdfDescription desc, const char *property,
                    102:                        rdfNamespace ns);
1.1       veillard  103: 
                    104: /*
                    105:  * Routines to read/write bags
                    106:  */
1.5       veillard  107: rdfBag rdfBagCreate(rdfSchema schema, rdfDescription desc,
                    108:                     const char *property, rdfNamespace ns);
                    109: rdfElement rdfBagAddValue(rdfBag bag, const char *property, 
1.6       veillard  110:                     rdfNamespace ns, const char *value, rdfElement elem);
1.1       veillard  111: 
                    112: /*
                    113:  * Routines to walk bags and sequences.
                    114:  */
1.4       veillard  115: rdfElement rdfFirstChild(rdfElement bag);
1.1       veillard  116: rdfElement rdfNextElem(rdfElement desc);
                    117: 
                    118: /*
                    119:  * Direct access to Element values.
                    120:  */
1.3       veillard  121: int rdfElemGetType(rdfElement elem);
1.1       veillard  122: char *rdfElemGetValue(rdfElement elem);
1.11    ! daniel    123: char *rdfElemGetPropertyName(rdfElement elem);
1.3       veillard  124: rdfNamespace rdfElemGetNamespace(rdfElement elem);
1.1       veillard  125: void rdfElemSetValue(rdfElement elem, const char *value);
                    126: 
                    127: #endif /* __RDF_API_H__ */

Webmaster