summaryrefslogtreecommitdiff
path: root/src/declare.cc
diff options
context:
space:
mode:
authorAdrian Thurston <thurston@complang.org>2015-01-05 18:45:17 -0500
committerAdrian Thurston <thurston@complang.org>2015-01-05 18:45:17 -0500
commit484f6b5f78cf3ecfc3e676366c4ef98e8dda9692 (patch)
tree736c061c5612b3c3383a4de964d8418114cef64b /src/declare.cc
parentb383decdd1652dc3384a24a57971283e40dd9b71 (diff)
downloadcolm-484f6b5f78cf3ecfc3e676366c4ef98e8dda9692.tar.gz
find list element offset using the generic info
Diffstat (limited to 'src/declare.cc')
-rw-r--r--src/declare.cc19
1 files changed, 12 insertions, 7 deletions
diff --git a/src/declare.cc b/src/declare.cc
index ab3f2da6..eef83775 100644
--- a/src/declare.cc
+++ b/src/declare.cc
@@ -908,22 +908,22 @@ void Compiler::initListFunctions( GenericType *gen )
addLengthField( gen->objDef, IN_LIST_LENGTH );
initFunction( uniqueTypeInt, gen->objDef, "push_head",
- IN_LIST_PUSH_HEAD_WV, IN_LIST_PUSH_HEAD_WC, gen->utArg, false );
+ IN_LIST_PUSH_HEAD_WV, IN_LIST_PUSH_HEAD_WC, gen->utArg, false, false, gen );
initFunction( uniqueTypeInt, gen->objDef, "push_tail",
- IN_LIST_PUSH_TAIL_WV, IN_LIST_PUSH_TAIL_WC, gen->utArg, false );
+ IN_LIST_PUSH_TAIL_WV, IN_LIST_PUSH_TAIL_WC, gen->utArg, false, false, gen );
initFunction( uniqueTypeInt, gen->objDef, "push",
- IN_LIST_PUSH_HEAD_WV, IN_LIST_PUSH_HEAD_WC, gen->utArg, false );
+ IN_LIST_PUSH_HEAD_WV, IN_LIST_PUSH_HEAD_WC, gen->utArg, false, false, gen );
initFunction( gen->utArg, gen->objDef, "pop_head",
- IN_LIST_POP_HEAD_WV, IN_LIST_POP_HEAD_WC, false );
+ IN_LIST_POP_HEAD_WV, IN_LIST_POP_HEAD_WC, false, false, gen );
initFunction( gen->utArg, gen->objDef, "pop_tail",
- IN_LIST_POP_TAIL_WV, IN_LIST_POP_TAIL_WC, false );
+ IN_LIST_POP_TAIL_WV, IN_LIST_POP_TAIL_WC, false, false, gen );
initFunction( gen->utArg, gen->objDef, "pop",
- IN_LIST_POP_HEAD_WV, IN_LIST_POP_HEAD_WC, false );
+ IN_LIST_POP_HEAD_WV, IN_LIST_POP_HEAD_WC, false, false, gen );
}
void Compiler::initListElField( GenericType *gen, const char *name, int offset )
@@ -944,11 +944,13 @@ void Compiler::initListElField( GenericType *gen, const char *name, int offset )
// el->inSetWC = IN_SET_LIST2EL_MEM_WC;
// el->inSetWV = IN_SET_LIST2EL_MEM_WV;
+ el->useGenericId = true;
+ el->generic = gen;
+
/* Zero for head, One for tail. */
el->offset = offset;
gen->utArg->structEl->context->objectDef->rootScope->insertField( el->name, el );
-
}
@@ -974,6 +976,9 @@ void Compiler::initListField( GenericType *gen, const char *name, int offset )
gen->objDef->rootScope->insertField( el->name, el );
+ el->useGenericId = true;
+ el->generic = gen;
+
/* Zero for head, One for tail. */
el->offset = offset;
}