- @DeclareStruct:
- typedef struct elem {
- t_element* pos;
- boolean written;
- call_id_t id;
- } elem;
- @DeclareVar:
- spec_list *list;
- id_tag_t *tag;
- @InitVar:
- list = new_spec_list();
- tag = new_id_tag();
- @DefineFunc:
- elem* new_elem(t_element *pos, call_id_t id) {
- elem *e = (elem*) MODEL_MALLOC(sizeof(elem));
- e->pos = pos;
- e->written = false;
- e->id = id;
- }
- @DefineFunc:
- elem* get_elem(t_element *pos) {
- for (int i = 0; i < size(list); i++) {
- elem *e = (elem*) elem_at_index(list, i);
- if (e->pos == pos) {
- return e;
- }
- }
- return NULL;
- }
- @DefineFunc:
- bool has_elem(elem *e) {
- for (int i = 0; i < size(list); i++) {
- elem *existing = (elem*) elem_at_index(list, i);
- if (e->pos == existing->pos) {
- return true;
- }
- }
- return false;
- }
- @DefineFunc:
- bool insert_elem(elem *e) {
- push_back(list, e);
- }
- @DefineFunc:
- void consume_elem(t_element *pos) {
-
- }
-
+ @Global_define:
+ //@DeclareStruct:
+ //typedef struct elem {
+ // t_element *pos;
+ // bool written;
+ // thread_id_t tid;
+ // thread_id_t fetch_tid;
+ // call_id_t id;
+ // } elem;
+ // @DeclareVar:
+ // spec_list *list;
+ //id_tag_t *tag;
+ // @InitVar:
+ // list = new_spec_list();
+ //tag = new_id_tag();
+ // @Cleanup:
+// if (list)
+// free_spec_list();
+ @Happens_before:
+ Publish -> Fetch
+ Consume -> Prepare
+ @End