summaryrefslogtreecommitdiff
path: root/src/loadcolm.cc
diff options
context:
space:
mode:
authorAdrian Thurston <thurston@complang.org>2015-04-01 10:24:42 -0400
committerAdrian Thurston <thurston@complang.org>2015-04-01 10:24:42 -0400
commit24e144ea5fd1275bf6c864455b2dd4d96e589363 (patch)
tree5c35d484904e32626a862bd5784b882a4f27d4b8 /src/loadcolm.cc
parent03e0f380a472db828c3bd5ae481a6b1c10fed3d0 (diff)
downloadcolm-24e144ea5fd1275bf6c864455b2dd4d96e589363.tar.gz
first cut of C extensions
Diffstat (limited to 'src/loadcolm.cc')
-rw-r--r--src/loadcolm.cc21
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;