summaryrefslogtreecommitdiff
path: root/src/messageparser.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/messageparser.cc')
-rw-r--r--src/messageparser.cc37
1 files changed, 27 insertions, 10 deletions
diff --git a/src/messageparser.cc b/src/messageparser.cc
index 8f4cc16..1aba5ee 100644
--- a/src/messageparser.cc
+++ b/src/messageparser.cc
@@ -92,6 +92,20 @@ inline static void parse_into_msg_tokens(std::string& data,
tokenVector.clear();
}
}
+#include <map>
+static taskid_t baseid = 10000;
+static taskid_t getId(std::map<std::string, taskid_t> &sym, std::string token)
+{
+ bool isnumeric = true;
+ for(size_t i = 0; i < token.size(); i++) {
+ isnumeric &= (token[i] >= '0' && token[i] <= '9');
+ }
+
+ if(isnumeric) return atoi(token.c_str());
+
+ if(sym.find(token) == sym.end()) sym[token] = baseid++;
+ return sym[token];
+}
inline static void create_msg_list(MsgTokensList& msgTokensList,
MessageList& msgList,
@@ -101,6 +115,8 @@ inline static void create_msg_list(MsgTokensList& msgTokensList,
origin = 1;
}
+ std::map<std::string, taskid_t> sym;
+
MsgTokensList::iterator it_msg;
for(it_msg = msgTokensList.begin(); it_msg != msgTokensList.end(); it_msg++) {
TokenVector t = *it_msg;
@@ -130,7 +146,7 @@ inline static void create_msg_list(MsgTokensList& msgTokensList,
printf("Wrong number of parameters\n");
continue;
}
- m.observe.id = atoi(t[origin+1].c_str());
+ m.observe.id = getId(sym, t[origin+1]);//atoi(t[origin+1].c_str());
break;
}
case cmd::unobserve: {
@@ -138,11 +154,11 @@ inline static void create_msg_list(MsgTokensList& msgTokensList,
printf("Wrong number of parameters\n");
continue;
}
- m.unobserve.id = atoi(t[origin+1].c_str());
+ m.unobserve.id = getId(sym, t[origin+1]);//atoi(t[origin+1].c_str());
break;
}
case cmd::create: {
- if(!clientmode && t.size() != origin+1+1) {
+ if(!clientmode && t.size() != origin+1+2) {
printf("Wrong number of parameters\n");
continue;
}
@@ -151,11 +167,12 @@ inline static void create_msg_list(MsgTokensList& msgTokensList,
continue;
}
if(clientmode) {
- m.create.id = atoi(t[origin+1].c_str());
- m.create.parentid = atoi(t[origin+2].c_str());
+ m.create.id = getId(sym, t[origin+1]);//atoi(t[origin+1].c_str());
+ m.create.parentid = getId(sym, t[origin+2]);// atoi(t[origin+2].c_str());
}
else {
- m.create.parentid = atoi(t[origin+1].c_str());
+ m.create.id = getId(sym, t[origin+1]);//atoi(t[origin+1].c_str());
+ m.create.parentid = getId(sym, t[origin+2]);//atoi(t[origin+1].c_str());
}
break;
}
@@ -164,7 +181,7 @@ inline static void create_msg_list(MsgTokensList& msgTokensList,
printf("Wrong number of parameters\n");
continue;
}
- m.remove.id = atoi(t[origin+1].c_str());
+ m.remove.id = getId(sym, t[origin+1]);//atoi(t[origin+1].c_str());
break;
}
case cmd::move: {
@@ -172,8 +189,8 @@ inline static void create_msg_list(MsgTokensList& msgTokensList,
printf("Wrong number of parameters\n");
continue;
}
- m.move.id = atoi(t[origin+1].c_str());
- m.move.parentid = atoi(t[origin+2].c_str());
+ m.move.id = getId(sym, t[origin+1]);//atoi(t[origin+1].c_str());
+ m.move.parentid = getId(sym, t[origin+2]);//atoi(t[origin+2].c_str());
break;
}
case cmd::update: {
@@ -181,7 +198,7 @@ inline static void create_msg_list(MsgTokensList& msgTokensList,
printf("Wrong number of parameters\n");
continue;
}
- m.update.id = atoi(t[origin+1].c_str());
+ m.update.id = getId(sym, t[origin+1]);//atoi(t[origin+1].c_str());
sprintf(m.update.title, "%s", t[origin+2].c_str());
break;
}