autoSql and autoXml: Code Generators from the Genome Project

Listing 3. autoXml Code Generation

The polygon.dtdx file here:

<!ELEMENT POLYGON (DESCRIPTION? POINT+)>
<!ATTLIST POLYGON id CDATA #REQUIRED>
<!ELEMENT DESCRIPTION (#PCDATA)>
<!ELEMENT POINT>
<!ATTLIST POINT x INT #REQUIRED>
<!ATTLIST POINT y INT #REQUIRED>
<!ATTLIST POINT z INT "0">

and the command line:

autoXml polygon.dtdx poly

generates poly.h as follows:

/* poly.h autoXml generated file */
#ifndef POLY_H
#define POLY_H
struct polyPolygon
 {
 struct polyPolygon *next;
 char *id; /* Required */
 struct polyDescription *polyDescription;
 /** Optional (may be NULL). **/
 struct polyPoint *polyPoint;
 /** Non-empty list required. **/
 };
void polyPolygonSave(struct polyPolygon *obj,
 int indent, FILE *f);
/* Save polyPolygon to file. */
struct polyPolygon *polyPolygonLoad(char *fileName);
/* Load polyPolygon from file. */
struct polyDescription
 {
 struct polyDescription *next;
 char *text;
 };
void polyDescriptionSave(struct
 polyDescription *obj, int indent, FILE *f);
/* Save polyDescription to file. */
struct polyDescription
 *polyDescriptionLoad(char *fileName);
/* Load polyDescription from file. */
struct polyPoint
 {
 struct polyPoint *next;
 double x; /* Required */
 double y; /* Required */
 double z; /* Defaults to 0 */
 };
void polyPointSave(struct polyPoint *obj,
 int indent, FILE *f);
/* Save polyPoint to file. */
struct polyPoint *polyPointLoad(char *fileName);
/* Load polyPoint from file. */
#endif /* POLY_H */

AltStyle によって変換されたページ (->オリジナル) /