X-Git-Url: https://www.kengrimes.com/gitweb/?p=henge%2Fapc.git;a=blobdiff_plain;f=src%2Fir.h;h=219fb2700bdcd5f7cc0371ccf2a5d6cd527edc2c;hp=339a4e7036d406e36a562c623d693ed77b9a3ac9;hb=6766ae503921c5895a0063f29e005ab28a4c469c;hpb=626bf46e0e2c2658242460fc63526dd4f14de0f6 diff --git a/src/ir.h b/src/ir.h index 339a4e7..219fb27 100644 --- a/src/ir.h +++ b/src/ir.h @@ -22,12 +22,14 @@ #include #include "apc.h" -typedef union ir_setdata_t* ir_setdata; -typedef struct ir_set_t* ir_set; -typedef struct ir_class_t* ir_class; -typedef struct ir_setld_t* ir_setld; -typedef struct ir_classld_t* ir_classld; - +struct ir_frameinfo_t +{ int facing, w, h; }; +typedef union ir_setdata_t* ir_setdata; +typedef struct ir_frameinfo_t* ir_frameinfo; +typedef struct ir_set_t* ir_set; +typedef struct ir_class_t* ir_class; +typedef struct ir_setld_t* ir_setld; +typedef struct ir_classld_t* ir_classld; /* Classes and Sets Classes are rooted at a special root class, representing the current working directory at scan-time, named ".". The root class can always be identified @@ -47,8 +49,20 @@ typedef struct ir_classld_t* ir_classld; */ ir_class ir_class_root(void); ir_class ir_class_addchild(ir_class,const uint8_t*); +uint8_t* ir_class_name(ir_class); ir_set ir_class_addset(ir_class,const uint8_t*); ir_set ir_set_addchild(ir_set,const uint8_t*); +uint8_t* ir_set_name(ir_set); +/* Output */ +ir_class ir_class_nextsib(ir_class); +ir_class ir_class_nextchild(ir_class); +long ir_class_fpos(ir_class); +void ir_class_assign_fpos(ir_class,long); +ir_set ir_set_from_ref(uint32_t); +ir_set ir_set_nextsib(ir_set); +ir_set ir_set_nextchild(ir_set); +long ir_set_fpos(ir_set); +void ir_set_assign_fpos(ir_set,long); /* Set Data Each set can contain up to FACING_MAX each of framesheets and mapsheets, one sheet for each facing, per label. Each set can contain any number of audio @@ -63,14 +77,30 @@ ir_set ir_set_addchild(ir_set,const uint8_t*); data of an associated file at that path and no path is provided, the data will be entered null. */ +typedef ir_setdata ir_framebox; +typedef ir_setdata ir_audio; +typedef ir_setdata ir_link; +typedef ir_setdata ir_framedata; enum ltype { OLINK, MLINK, VLINK, ALINK }; void ir_set_assign_data(ir_set,ir_setdata); -void ir_set_assign_ref(ir_set,long long); +void ir_set_assign_ref(ir_set,uint32_t); void ir_data_assign_path(ir_setdata,const uint8_t*); ir_setdata ir_framesheet(const uint8_t*, apc_facing, int,int); ir_setdata ir_mapsheet(const uint8_t*, apc_facing, int,int); ir_setdata ir_audio(const uint8_t*); ir_setdata ir_link(enum ltype,ir_setld,const uint8_t*); +/* Output */ +ir_framebox ir_set_framebox(ir_set); +ir_audio ir_set_audio(ir_set); +ir_link ir_set_link(ir_set); +ir_setdata ir_setdata_nextsib(ir_setdata); +uint8_t* ir_setdata_name(ir_setdata); +uint8_t* ir_setdata_filename(ir_setdata); +long ir_setdata_fpos(void); +void ir_setdata_assign_fpos(ir_setdata,long); +ir_framedata ir_framebox_framesheet(ir_framebox,apc_facing); +ir_framedata ir_framebox_mapsheet(ir_framebox,apc_facing); +ir_frameinfo ir_framedata_frameinfo(ir_framedata); /* Reference Linking Data Create linking data to sets or classes that will be resolved at a later stage. Class references can be created from an ir_class object, if @@ -82,7 +112,10 @@ ir_setdata ir_link(enum ltype,ir_setld,const uint8_t*); ir_classld ir_classld_from_class(ir_class); ir_classld ir_classld_from_root(void); ir_classld ir_classld_addchild(ir_classld,const uint8_t*); -ir_setld ir_setld_from_ref(long long); +ir_setld ir_setld_from_ref(uint32_t); ir_setld ir_setld_from_classld(ir_classld,const uint8_t*); ir_setld ir_setld_addchild(ir_setld,const uint8_t*); +/* Output */ +enum ltype ir_setld_type(ir_setld); +uint32_t ir_setld_ref(ir_setld); #endif //_IR_H_