summaryrefslogtreecommitdiff
path: root/test/trans.d/actparams.cc
diff options
context:
space:
mode:
Diffstat (limited to 'test/trans.d/actparams.cc')
-rw-r--r--test/trans.d/actparams.cc63
1 files changed, 63 insertions, 0 deletions
diff --git a/test/trans.d/actparams.cc b/test/trans.d/actparams.cc
new file mode 100644
index 00000000..d9e9d6ff
--- /dev/null
+++ b/test/trans.d/actparams.cc
@@ -0,0 +1,63 @@
+
+#include <colm/tree.h>
+#include <colm/bytecode.h>
+
+#include <iostream>
+#include <map>
+#include <set>
+
+using std::map;
+using std::set;
+using std::string;
+using std::pair;
+using std::cout;
+using std::endl;
+
+extern "C" {
+ colm_value_t cc_action_params_find( struct colm_program *prg, tree_t **sp, str_t *_machine, str_t *_action );
+ colm_value_t cc_action_params_insert( struct colm_program *prg, tree_t **sp, str_t *_machine, str_t *_action );
+}
+
+typedef set<string> Set;
+typedef map< string, Set > Map;
+static Map machineMap;
+
+value_t cc_action_params_find( struct colm_program *prg, tree_t **sp, str_t *_machine, str_t *_action )
+{
+ string machine( _machine->value->data, _machine->value->length );
+ string action( _action->value->data, _action->value->length );
+
+ // cout << "cc_action_params_find " << machine << " " << action << " ";
+
+ long res = 0;
+ Map::iterator M = machineMap.find( machine );
+ if ( M != machineMap.end() )
+ res = M->second.find( action ) != M->second.end();
+
+ // cout << ( res ? "FOUND" : "NOT FOUND" ) << endl;
+
+ colm_tree_downref( prg, sp, (tree_t*)_machine );
+ colm_tree_downref( prg, sp, (tree_t*)_action );
+
+ return (value_t) res;
+}
+
+value_t cc_action_params_insert( struct colm_program *prg, tree_t **sp, str_t *_machine, str_t *_action )
+{
+ string machine( _machine->value->data, _machine->value->length );
+ string action( _action->value->data, _action->value->length );
+
+ // cout << "cc_action_params_insert " << machine << " " << action << endl;
+
+ Map::iterator M = machineMap.find( machine );
+ if ( M == machineMap.end() )
+ machineMap.insert( pair<string, Set>( machine, Set() ) );
+
+ M = machineMap.find( machine );
+ M->second.insert( action );
+
+ colm_tree_downref( prg, sp, (tree_t*)_machine );
+ colm_tree_downref( prg, sp, (tree_t*)_action );
+
+ return 0;
+}