comments updated
[henge/apc.git] / src / ir.h
index 1fb5b70..b19b2d3 100644 (file)
--- a/src/ir.h
+++ b/src/ir.h
 #include <unitypes.h>\r
 #include "apc.h"\r
 \r
-struct ir_frameinfo_t\r
-{ int facing, w, h; };\r
-typedef struct ir_frameinfo_t* ir_frameinfo;\r
-typedef union ir_setdata_t*    ir_setdata;\r
-typedef struct ir_set_t*       ir_set;\r
-typedef struct ir_class_t*     ir_class;\r
-typedef struct ir_setld_t*     ir_setld;\r
-typedef struct ir_classld_t*   ir_classld;\r
+typedef union  ir_setdata_t*    ir_setdata;\r
+typedef struct ir_frameinfo_t*  ir_frameinfo;\r
+typedef struct ir_set_t*        ir_set;\r
+typedef struct ir_class_t*      ir_class;\r
+typedef struct ir_setld_t*      ir_setld;\r
+typedef struct ir_classld_t*    ir_classld;\r
+typedef struct ir_facinglist_t* facinglist;\r
 /* Classes and Sets\r
    Classes are rooted at a special root class, representing the current working\r
    directory at scan-time, named ".".  The root class can always be identified\r
@@ -51,7 +50,9 @@ ir_class   ir_class_root(void);
 ir_class   ir_class_addchild(ir_class,const uint8_t*);\r
 uint8_t*   ir_class_name(ir_class);\r
 ir_set     ir_class_addset(ir_class,const uint8_t*);\r
+ir_set     ir_class_rootset(ir_class);\r
 ir_set     ir_set_addchild(ir_set,const uint8_t*);\r
+uint8_t*   ir_set_name(ir_set);\r
 /* Output */\r
 ir_class   ir_class_nextsib(ir_class);\r
 ir_class   ir_class_nextchild(ir_class);\r
@@ -76,21 +77,44 @@ void       ir_set_assign_fpos(ir_set,long);
    data of an associated file at that path and no path is provided, the data\r
    will be entered null.\r
 */\r
+typedef ir_setdata framebox;\r
+typedef ir_setdata audiodata;\r
+typedef ir_setdata linkdata;\r
+typedef ir_setdata framedata;\r
 enum ltype { OLINK, MLINK, VLINK, ALINK };\r
 void       ir_set_assign_data(ir_set,ir_setdata);\r
 void       ir_set_assign_ref(ir_set,uint32_t);\r
 void       ir_data_assign_path(ir_setdata,const uint8_t*);\r
-ir_setdata ir_framesheet(const uint8_t*, apc_facing, int,int);\r
-ir_setdata ir_mapsheet(const uint8_t*, apc_facing, int,int);\r
+ir_setdata ir_framesheet(const uint8_t*,facinglist,int,int);\r
+ir_setdata ir_mapsheet(const uint8_t*,facinglist,int,int);\r
 ir_setdata ir_audio(const uint8_t*);\r
 ir_setdata ir_link(enum ltype,ir_setld,const uint8_t*);\r
+/* Facing Lists for creating frame/mapsheets */\r
+facinglist ir_facinglist(apc_facing);\r
+facinglist ir_facinglist_push(facinglist,apc_facing);\r
 /* Output */\r
-ir_setdata   ir_setdata_nextsib(ir_setdata);\r
-uint8_t*     ir_setdata_name(ir_setdata);\r
-uint8_t*     ir_setdata_filename(ir_setdata);\r
-long         ir_setdata_fpos(void);\r
-void         ir_setdata_assign_fpos(ir_setdata,long);\r
-ir_frameinfo ir_setdata_frameinfo(ir_setdata);\r
+framebox   ir_set_framebox(ir_set);\r
+audiodata  ir_set_audio(ir_set);\r
+linkdata   ir_set_link(ir_set);\r
+enum ltype ir_linkdata_type(linkdata);\r
+uint32_t   ir_linkdata_ref(linkdata);\r
+ir_set     ir_linkdata_set(linkdata);\r
+void       ir_linkdata_assign_set(linkdata,ir_set);\r
+void       ir_linkdata_assign_type(linkdata,enum ltype);\r
+uint8_t*   ir_linkdata_dlink_name(linkdata);\r
+ir_setdata ir_setdata_nextsib(ir_setdata);\r
+uint8_t*   ir_setdata_name(ir_setdata);\r
+uint8_t*   ir_setdata_filename(ir_setdata);\r
+long       ir_setdata_fpos(ir_setdata);\r
+void       ir_setdata_assign_fpos(ir_setdata,long);\r
+void       ir_setdata_assign_name(ir_setdata,uint8_t*);\r
+/* Framedata */\r
+framedata  ir_framebox_framesheet(framebox,apc_facing);\r
+framedata  ir_framebox_mapsheet(framebox,apc_facing);\r
+int        ir_framedata_width(framedata);\r
+int        ir_framedata_height(framedata);\r
+apc_facing ir_framedata_firstfacing(framedata);\r
+apc_facing ir_framedata_nextfacing(framedata);\r
 /* Reference Linking Data \r
    Create linking data to sets or classes that will be resolved at a later\r
    stage.  Class references can be created from an ir_class object, if\r