|
@@ -183,6 +183,13 @@ void protointerface::Proc()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ WriteCodeLine("",&xFileout);
|
|
|
|
+ WriteCodeLine("#include \"google/protobuf/io/zero_copy_stream_impl.h\"",&xFileout);
|
|
|
|
+ WriteCodeLine("#include \"google/protobuf/text_format.h\"",&xFileout);
|
|
|
|
+ WriteCodeLine("#include <iostream>",&xFileout);
|
|
|
|
+ WriteCodeLine("#include <QString>",&xFileout);
|
|
|
|
+ WriteCodeLine("#include <QStringList>",&xFileout);
|
|
|
|
+ WriteCodeLine("",&xFileout);
|
|
|
|
|
|
char strline[1000];
|
|
char strline[1000];
|
|
WriteCodeLine("",&xFileout);
|
|
WriteCodeLine("",&xFileout);
|
|
@@ -197,10 +204,56 @@ void protointerface::Proc()
|
|
WriteCodeLine("",&xFileout);
|
|
WriteCodeLine("",&xFileout);
|
|
|
|
|
|
|
|
|
|
- snprintf(strline,1000,"#define MSGCOUNT %d\n",xvectorclassname.size());xFileout.write(strline);
|
|
|
|
- snprintf(strline,1000,"const int typecount = %d;\n",xvectorclassname.size());xFileout.write(strline);
|
|
|
|
|
|
+ snprintf(strline,1000,"#define MSGCOUNT %u\n",(unsigned int)xvectorclassname.size());xFileout.write(strline);
|
|
|
|
+ snprintf(strline,1000,"const int typecount = %u;\n",(unsigned int)xvectorclassname.size());xFileout.write(strline);
|
|
snprintf(strline,1000,"iv::protomsgtype gmsgtype[MSGCOUNT];\n");xFileout.write(strline);
|
|
snprintf(strline,1000,"iv::protomsgtype gmsgtype[MSGCOUNT];\n");xFileout.write(strline);
|
|
|
|
|
|
|
|
+
|
|
|
|
+ WriteCodeLine("",&xFileout);
|
|
|
|
+ WriteCodeLine("static bool CheckAParseLine(QString strline)",&xFileout);
|
|
|
|
+ WriteCodeLine("{",&xFileout);
|
|
|
|
+ WriteCodeLine("\tif(strline.size()<3)return true;",&xFileout);
|
|
|
|
+ WriteCodeLine("\tQString str = strline.mid(0,2);",&xFileout);
|
|
|
|
+ WriteCodeLine("\tint i;",&xFileout);
|
|
|
|
+ WriteCodeLine("\tfor(i=0;i<9;i++)",&xFileout);
|
|
|
|
+ WriteCodeLine("\t{",&xFileout);
|
|
|
|
+ WriteCodeLine("\t\tQString strmark = QString::number(i)+\":\";",&xFileout);
|
|
|
|
+ WriteCodeLine("\t\tif(str == strmark)",&xFileout);
|
|
|
|
+ WriteCodeLine("\t\t{",&xFileout);
|
|
|
|
+ WriteCodeLine("\t\t\treturn false;",&xFileout);
|
|
|
|
+ WriteCodeLine("\t}",&xFileout);
|
|
|
|
+ WriteCodeLine("\t}",&xFileout);
|
|
|
|
+ WriteCodeLine("\tstr = strline.mid(0,3);",&xFileout);
|
|
|
|
+ WriteCodeLine("\tfor(i=10;i<99;i++)",&xFileout);
|
|
|
|
+ WriteCodeLine("\t{",&xFileout);
|
|
|
|
+ WriteCodeLine("\t\tQString strmark = QString::number(i)+\":\";",&xFileout);
|
|
|
|
+ WriteCodeLine("\t\tif(str == strmark)",&xFileout);
|
|
|
|
+ WriteCodeLine("\t\t{",&xFileout);
|
|
|
|
+ WriteCodeLine("\t\t\treturn false;",&xFileout);
|
|
|
|
+ WriteCodeLine("\t\t}",&xFileout);
|
|
|
|
+ WriteCodeLine("\t}",&xFileout);
|
|
|
|
+ WriteCodeLine("\treturn true;",&xFileout);
|
|
|
|
+ WriteCodeLine("}",&xFileout);
|
|
|
|
+ WriteCodeLine("",&xFileout);
|
|
|
|
+ WriteCodeLine("",&xFileout);
|
|
|
|
+
|
|
|
|
+ WriteCodeLine("static bool CheckParseOK(std::string strout)",&xFileout);
|
|
|
|
+ WriteCodeLine("{",&xFileout);
|
|
|
|
+ WriteCodeLine("\tQString str(strout.data());",&xFileout);
|
|
|
|
+ WriteCodeLine("\tQStringList strline = str.split('\\n');",&xFileout);
|
|
|
|
+ WriteCodeLine("\tint i;",&xFileout);
|
|
|
|
+ WriteCodeLine("\tfor(i=0;i<strline.size();i++)",&xFileout);
|
|
|
|
+ WriteCodeLine("\t{",&xFileout);
|
|
|
|
+ WriteCodeLine("\t\tif(CheckAParseLine(strline[i]) == false)",&xFileout);
|
|
|
|
+ WriteCodeLine("\t\t{",&xFileout);
|
|
|
|
+ WriteCodeLine("\t\t\treturn false;",&xFileout);
|
|
|
|
+ WriteCodeLine("\t\t}",&xFileout);
|
|
|
|
+ WriteCodeLine("\t}",&xFileout);
|
|
|
|
+ WriteCodeLine("\treturn true;",&xFileout);
|
|
|
|
+ WriteCodeLine("\t}",&xFileout);
|
|
|
|
+ WriteCodeLine("",&xFileout);
|
|
|
|
+ WriteCodeLine("",&xFileout);
|
|
|
|
+
|
|
// snprintf(strline,1000,"{\n");xFileout.write(strline);
|
|
// snprintf(strline,1000,"{\n");xFileout.write(strline);
|
|
snprintf(strline,1000,"void InitMsgType()\n");xFileout.write(strline);
|
|
snprintf(strline,1000,"void InitMsgType()\n");xFileout.write(strline);
|
|
snprintf(strline,1000,"{\n");xFileout.write(strline);
|
|
snprintf(strline,1000,"{\n");xFileout.write(strline);
|
|
@@ -249,8 +302,21 @@ void protointerface::Proc()
|
|
WriteCodeLine("\t{",&xFileout);
|
|
WriteCodeLine("\t{",&xFileout);
|
|
WriteCodeLine("\t\tif(gmsgtype[i].mpmsg->ParseFromArray(strdata,nsize))",&xFileout);
|
|
WriteCodeLine("\t\tif(gmsgtype[i].mpmsg->ParseFromArray(strdata,nsize))",&xFileout);
|
|
WriteCodeLine("\t\t{",&xFileout);
|
|
WriteCodeLine("\t\t{",&xFileout);
|
|
- WriteCodeLine("\t\t\txvectorrtn.push_back(i);",&xFileout);
|
|
|
|
- WriteCodeLine("\t\t\txvectorprobname.push_back(gmsgtype[i].mstrtypename);",&xFileout);
|
|
|
|
|
|
+ WriteCodeLine("\t\t\tusing google::protobuf::TextFormat;",&xFileout);
|
|
|
|
+ WriteCodeLine("\t\t\tusing google::protobuf::io::FileOutputStream;",&xFileout);
|
|
|
|
+ WriteCodeLine("\t\t\tusing google::protobuf::io::ZeroCopyOutputStream;",&xFileout);
|
|
|
|
+ WriteCodeLine("\t\t\tstd::string strout;",&xFileout);
|
|
|
|
+ WriteCodeLine("\t\t\tZeroCopyOutputStream *output = new google::protobuf::io::StringOutputStream(&strout);",&xFileout);
|
|
|
|
+ WriteCodeLine("\t\t\tbool success = TextFormat::Print(*(gmsgtype[i].mpmsg), output);",&xFileout);
|
|
|
|
+ WriteCodeLine("\t\t\tif(success)",&xFileout);
|
|
|
|
+ WriteCodeLine("\t\t\t{",&xFileout);
|
|
|
|
+ WriteCodeLine("\t\t\t\tif(CheckParseOK(strout))",&xFileout);
|
|
|
|
+ WriteCodeLine("\t\t\t\t{",&xFileout);
|
|
|
|
+ WriteCodeLine("\t\t\t\t\txvectorrtn.push_back(i);",&xFileout);
|
|
|
|
+ WriteCodeLine("\t\t\t\t\txvectorprobname.push_back(gmsgtype[i].mstrtypename);",&xFileout);
|
|
|
|
+ WriteCodeLine("\t\t\t\t}",&xFileout);
|
|
|
|
+ WriteCodeLine("\t\t\t}",&xFileout);
|
|
|
|
+ WriteCodeLine("\t\t\tdelete output;",&xFileout);
|
|
WriteCodeLine("\t\t}",&xFileout);
|
|
WriteCodeLine("\t\t}",&xFileout);
|
|
WriteCodeLine("\t}",&xFileout);
|
|
WriteCodeLine("\t}",&xFileout);
|
|
WriteCodeLine("\treturn xvectorrtn;",&xFileout);
|
|
WriteCodeLine("\treturn xvectorrtn;",&xFileout);
|