diff options
author | Adrian Thurston <thurston@complang.org> | 2015-01-05 18:45:17 -0500 |
---|---|---|
committer | Adrian Thurston <thurston@complang.org> | 2015-01-05 18:45:17 -0500 |
commit | 484f6b5f78cf3ecfc3e676366c4ef98e8dda9692 (patch) | |
tree | 736c061c5612b3c3383a4de964d8418114cef64b /src/declare.cc | |
parent | b383decdd1652dc3384a24a57971283e40dd9b71 (diff) | |
download | colm-484f6b5f78cf3ecfc3e676366c4ef98e8dda9692.tar.gz |
find list element offset using the generic info
Diffstat (limited to 'src/declare.cc')
-rw-r--r-- | src/declare.cc | 19 |
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; } |