summaryrefslogtreecommitdiff
path: root/src/libfsm/codegen.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/libfsm/codegen.cc')
-rw-r--r--src/libfsm/codegen.cc14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/libfsm/codegen.cc b/src/libfsm/codegen.cc
index db8cc60a..ac06aaf8 100644
--- a/src/libfsm/codegen.cc
+++ b/src/libfsm/codegen.cc
@@ -413,6 +413,18 @@ string CodeGen::ACCESS()
return ret.str();
}
+string CodeGen::DATA()
+{
+ ostringstream ret;
+ if ( red->dataExpr == 0 )
+ ret << "data";
+ else {
+ ret << OPEN_HOST_EXPR();
+ INLINE_LIST( ret, red->dataExpr, 0, false, false );
+ ret << CLOSE_HOST_EXPR();
+ }
+ return ret.str();
+}
string CodeGen::P()
{
@@ -543,7 +555,7 @@ string CodeGen::GET_KEY()
}
else {
/* Expression for retrieving the key, use simple dereference. */
- ret << "( " << DEREF( "data", P() ) << ")";
+ ret << "( " << DEREF( DATA(), P() ) << ")";
}
return ret.str();
}