Merge branch 'master' into browser
[projects/chimara/chimara.git] / babel / treaty.h
diff --git a/babel/treaty.h b/babel/treaty.h
new file mode 100644 (file)
index 0000000..7155553
--- /dev/null
@@ -0,0 +1,91 @@
+/*  treaty.h    Header file for Treaty of Babel compliant format modules\r
+ *  By L. Ross Raszewski\r
+ *  Version 3b\r
+ *\r
+ *  This file is public domain, but please note that derived versions\r
+ *  may not not be compliant with the Treaty of Babel.\r
+ *\r
+ *  It would be wise for derived works to change the value of\r
+ *  TREATY_COMPLIANCE to reflect deviations\r
+ */\r
+\r
+#ifndef TREATY_H\r
+\r
+#define TREATY_H\r
+\r
+#define TREATY_COMPLIANCE "Treaty of Babel revision 7"\r
+#define TREATY_VERSION "r7"\r
+\r
+/* return codes */\r
+#define NO_REPLY_RV                    0\r
+#define INVALID_STORY_FILE_RV          -1\r
+#define UNAVAILABLE_RV                 -2\r
+#define INVALID_USAGE_RV               -3\r
+#define INCOMPLETE_REPLY_RV            -4\r
+#define VALID_STORY_FILE_RV            1\r
+\r
+#define PNG_COVER_FORMAT                1\r
+#define JPEG_COVER_FORMAT               2\r
+\r
+/* Treaty bitmasks.  These are not required by the treaty, but are here\r
+   as a convenience.\r
+*/\r
+#define TREATY_SELECTOR_INPUT           0x100\r
+#define TREATY_SELECTOR_OUTPUT          0x200\r
+#define TREATY_SELECTOR_NUMBER          0xFF\r
+\r
+#define TREATY_CONTAINER_SELECTOR       0x400\r
+\r
+/* Treaty selectors */\r
+#define GET_HOME_PAGE_SEL                       0x201\r
+#define GET_FORMAT_NAME_SEL                     0x202\r
+#define GET_FILE_EXTENSIONS_SEL                 0x203\r
+#define CLAIM_STORY_FILE_SEL                    0x104\r
+#define GET_STORY_FILE_METADATA_EXTENT_SEL      0x105\r
+#define GET_STORY_FILE_COVER_EXTENT_SEL         0x106\r
+#define GET_STORY_FILE_COVER_FORMAT_SEL         0x107\r
+#define GET_STORY_FILE_IFID_SEL                 0x308\r
+#define GET_STORY_FILE_METADATA_SEL             0x309\r
+#define GET_STORY_FILE_COVER_SEL                0x30A\r
+#define GET_STORY_FILE_EXTENSION_SEL            0x30B\r
+\r
+/* Container selectors */\r
+#define CONTAINER_GET_STORY_FORMAT_SEL                0x710\r
+#define CONTAINER_GET_STORY_EXTENT_SEL          0x511\r
+#define CONTAINER_GET_STORY_FILE_SEL            0x711\r
+\r
+\r
+\r
+\r
+/* Other magic size limits */\r
+#define TREATY_MINIMUM_EXTENT           512\r
+\r
+\r
+#include <limits.h>\r
+\r
+/* 32-bit integer types */\r
+#ifndef VAX\r
+#if   SCHAR_MAX >= 0x7FFFFFFFL && SCHAR_MIN <= -0x7FFFFFFFL\r
+      typedef signed char       int32;\r
+#elif SHRT_MAX >= 0x7FFFFFFFL  && SHRT_MIN <= -0x7FFFFFFFL\r
+      typedef signed short int  int32;\r
+#elif INT_MAX >= 0x7FFFFFFFL   && INT_MIN <= -0x7FFFFFFFL\r
+      typedef signed int        int32;\r
+#elif LONG_MAX >= 0x7FFFFFFFL  && LONG_MIN <= -0x7FFFFFFFL\r
+      typedef signed long int   int32;\r
+#else\r
+#error No type large enough to support 32-bit integers.\r
+#endif\r
+#else\r
+      /*  VAX C does not provide these limit constants, contrary to ANSI  */\r
+      typedef int int32;\r
+#endif\r
+\r
+\r
+\r
+/* Pointer to treaty function.  Treaty functions must follow this prototype */\r
+\r
+typedef int32 (*TREATY)(int32 selector, void *, int32, void *, int32);\r
+\r
+#endif\r
+\r