( struct ir_set_t* set )\r
{ return (union ir_setdata_t*) set->links; }\r
\r
-#define assert_link(linkdata) do { \\r
+#define assert_link(linkdata) if (DEBUG) { \\r
if (linkdata->header.type != LDAT) \\r
eprintf("Data %s is not a link\n", linkdata->header.data_name); \\r
- } while (0)\r
+ }\r
\r
/* Return the link type */\r
enum ltype ir_linkdata_type\r
\r
/* Assign a linkdatas trg_set */\r
void ir_linkdata_assign_set\r
-( struct ir_link_t* link, struct ir_set_t* set )\r
-{ link->trg_set = set; }\r
+( union ir_setdata_t* link, struct ir_set_t* set )\r
+{ assert_link(link);\r
+ link->link.trg_set = set;\r
+}\r
\r
/* Assign a linkdatas type */\r
void ir_linkdata_assign_type\r
-( struct ir_link_t* link, ltype type; )\r
-{ link->type = type; }\r
+( union ir_setdata_t* link, enum ltype type )\r
+{ assert_link(link);\r
+ link->link.type = type;\r
+}\r
\r
/* Get a setdata's next sibling */\r
union ir_setdata_t* ir_setdata_nextsib\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(ir_set);\r
+void ir_linkdata_assign_set(linkdata,ir_set);\r
+void ir_linkdata_assign_type(linkdata,enum ltype);\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