+/* if olink, process target sets frameboxes(turn into vlinks) and its attachment_list (turn into mlink),
+ else its a dlink so just add it to the processed_links list*/
+static inline
+void bin_process_olink
+( linkdata olink,
+ struct bin_processed_links_t* processed_links_root,
+ ir_set trg_set
+)
+{ struct bin_linklist_t* link_list_head;
+ if(trg_set)) //add olink to list so we can check for cycles
+ { bin_set_frameboxes_vlinks(trg_set, processed_links_root); //TODO: implement
+ bin_set_attachmentlist_mlink(trg_set, processed_links_root); //TODO: implement
+ link_list_head = bin_linklist_head(processed_links_root->olink_list);
+ link_list_head->next = struct_alloc(bin_linklist_t);
+ link_list_head->next->linkdata = olink;
+ }
+ else // olink is actually a dynamic link
+ { link_list_head = bin_linklist_head(processed_links_root->dlink_list);
+ link_list_head->next = struct_alloc(bin_linklist_t);
+ link_list_head->next->linkdata = olink;
+ }
+
+}
+
+struct bin_linklist_t;
+struct bin_linklist_t
+{ struct bin_linklist_t* next;
+ linkdata linkdata;
+};
+
+struct bin_processed_links_t
+{ struct bin_linklist_t* vlink_list;
+ int vlink_len;
+ struct bin_linklist_t* mlink_list;
+ int mlink_len;
+ struct bin_linklist_t* olink_list; //keep track of olink cycles
+ int olink_len;
+ struct bin_linklist_t* dlink_list;
+ int dlink_len;
+};