--- /dev/null
+/* ifiction.h declarations for the babel ifiction API\r
+ * (c) 2006 By L. Ross Raszewski\r
+ *\r
+ * This code is freely usable for all purposes.\r
+ *\r
+ * This work is licensed under the Creative Commons Attribution2.5 License.\r
+ * To view a copy of this license, visit\r
+ * http://creativecommons.org/licenses/by/2.5/ or send a letter to\r
+ * Creative Commons,\r
+ * 543 Howard Street, 5th Floor,\r
+ * San Francisco, California, 94105, USA.\r
+ *\r
+ */\r
+\r
+#ifndef IFICTION_H\r
+#define IFICTION_H\r
+\r
+#include "treaty.h"\r
+\r
+/* Babel's notion of an XML tag */\r
+struct XMLTag\r
+{\r
+ int32 beginl; /* Beginning line number */\r
+ char tag[256]; /* name of the tag */\r
+ char fulltag[256]; /* Full text of the opening tag */\r
+ char *begin; /* Points to the beginning of the tag's content */\r
+ char *end; /* Points to the end of the tag's content.\r
+ setting *end=0 will turn begin into a string\r
+ containing the tag's content (But if you do this, you\r
+ should restore the original value of *end before\r
+ allowing control to return to the ifiction parser) */\r
+ char occurences[256]; /* Tables used internally to find missing required tags */\r
+ char rocurrences[256];\r
+ struct XMLTag *next; /* The tag's parent */\r
+\r
+};\r
+\r
+typedef void (*IFCloseTag)(struct XMLTag *, void *);\r
+typedef void (*IFErrorHandler)(char *, void *);\r
+\r
+\r
+void ifiction_parse(char *md, IFCloseTag close_tag, void *close_ctx, IFErrorHandler error_handler, void *error_ctx);\r
+int32 ifiction_get_IFID(char *metadata, char *output, int32 output_extent);\r
+char *ifiction_get_tag(char *md, char *p, char *t, char *from);\r
+#endif\r