diff options
author | Adrian Thurston <thurston@complang.org> | 2015-04-01 10:24:42 -0400 |
---|---|---|
committer | Adrian Thurston <thurston@complang.org> | 2015-04-01 10:24:42 -0400 |
commit | 24e144ea5fd1275bf6c864455b2dd4d96e589363 (patch) | |
tree | 5c35d484904e32626a862bd5784b882a4f27d4b8 /src/loadcolm.cc | |
parent | 03e0f380a472db828c3bd5ae481a6b1c10fed3d0 (diff) | |
download | colm-24e144ea5fd1275bf6c864455b2dd4d96e589363.tar.gz |
first cut of C extensions
Diffstat (limited to 'src/loadcolm.cc')
-rw-r--r-- | src/loadcolm.cc | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/loadcolm.cc b/src/loadcolm.cc index 97388eca..42243919 100644 --- a/src/loadcolm.cc +++ b/src/loadcolm.cc @@ -2235,6 +2235,18 @@ struct LoadColm blockClose(); } + void walkInHostDef( in_host_def InHostDef ) + { + ObjectDef *localFrame = blockOpen(); + + TypeRef *typeRef = walkTypeRef( InHostDef.type_ref() ); + String id = InHostDef.id().data(); + ParameterList *paramList = walkParamVarDefList( InHostDef.ParamVarDefList() ); + inHostDef( InHostDef.HostFunc().data(), localFrame, paramList, typeRef, id, false ); + + blockClose(); + } + void walkIterDef( iter_def IterDef ) { ObjectDef *localFrame = blockOpen(); @@ -2280,6 +2292,9 @@ struct LoadColm case struct_item::Function: walkFunctionDef( structItem.function_def() ); break; + case struct_item::InHost: + walkInHostDef( structItem.in_host_def() ); + break; case struct_item::Iter: walkIterDef( structItem.iter_def() ); break; @@ -2369,6 +2384,9 @@ struct LoadColm case root_item::Function: walkFunctionDef( rootItem.function_def() ); break; + case struct_item::InHost: + walkInHostDef( rootItem.in_host_def() ); + break; case root_item::Iter: walkIterDef( rootItem.iter_def() ); break; @@ -2433,6 +2451,9 @@ struct LoadColm case namespace_item::Function: walkFunctionDef( item.function_def() ); break; + case struct_item::InHost: + walkInHostDef( item.in_host_def() ); + break; case namespace_item::Iter: walkIterDef( item.iter_def() ); break; |