⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testparser.cc

📁 对各种手机进行编程的工具包源码gsmlib 1.9版本。
💻 CC
字号:
// *************************************************************************// * GSM TA/ME library// *// * File:    testparser.cc// *// * Purpose: Test AT result code parser// *// * Author:  Peter Hofmann (software@pxh.de)// *// * Created: 17.5.1999// *************************************************************************#include <gsmlib/gsm_parser.h>#include <assert.h>#include <algorithm>#include <iostream>using namespace std;using namespace gsmlib;void printIntList(vector<bool> &vb){  cout << "(";  int j = 0;  bool first = true;  for (vector<bool>::iterator i = vb.begin();       i != vb.end(); ++i)  {    if (*i)    {      if (! first) cout << ",";      cout << j;      first = false;    }    ++j;  }  cout << ")";}void printIntRange(IntRange ir){  cout << "(" << ir._low << "-" << ir._high << ")";}void printStringList(vector<string> vs){  bool first = true;  cout << "(";  for (vector<string>::iterator i = vs.begin();       i != vs.end(); ++i)  {    if (! first) cout << ",";    cout << "\"" << *i << "\"";    first = false;  }  cout << ")";}int main(int argc, char *argv[]){  try  {    {      cout << "Test 1" << endl;      Parser p((string)",(\"ME\", \"SM\"," +               "\"Which of the three items does not belong here?\")");      vector<string> vs1 = p.parseStringList(true);      p.parseComma();      vector<string> vs2 = p.parseStringList();      bool comma = p.parseComma(true);      printStringList(vs1);      cout << ",";      printStringList(vs2);      if (comma) cout << ",";      cout << endl << endl;    }    {      cout << "Test 2" << endl;      Parser p("(1-5),425,\"+abcd\"efgh\"");      IntRange ir = p.parseRange();      p.parseComma();      int i = p.parseInt();      p.parseComma();      string s = p.parseString(false, true);      printIntRange(ir);      cout << "," << i << ",\"" << s << "\"" << endl << endl;    }    {      cout << "Test 3" << endl;      Parser p("(7,1-5,12-11,25),425,This is a test.\"+a\"ef\" and so forth");      vector<bool> vb = p.parseIntList();      p.parseComma();      int i = p.parseInt();      p.parseComma();      string s = p.parseEol();      printIntList(vb);      cout << "," << i << "," << s << endl << endl;    }    {      cout << "Test 4" << endl;      Parser p("(1-125),20,16");      vector<bool> vb = p.parseIntList();      p.parseComma();      vector<bool> vb2 = p.parseIntList();      p.parseComma();      int j = p.parseInt();      printIntList(vb);      cout << ",";      printIntList(vb2);      cout << "," << j << endl << endl;    }    {      cout << "Test 5" << endl;      Parser p("SM,7");      string s = p.parseString();      p.parseComma();      int i = p.parseInt();      cout << s << "," << i << endl << endl;    }    {      cout << "Test 6" << endl;      Parser p("(2,\"S TELIA MOBITEL\",\"S TELIA\",\"24001\")");      p.parseChar('(');      int status = p.parseInt();      p.parseComma();      string longName = p.parseString(true);      p.parseComma();      string shortName = p.parseString(true);      p.parseComma();      int numericName;      try      {        numericName = p.parseInt(true);      }      catch (GsmException &e)      {        if (e.getErrorClass() == ParserError)        {          // the Ericsson GM12 GSM modem returns the numeric ID as string          string s = p.parseString();          numericName = checkNumber(s);        }        else          throw e;      }      p.parseChar(')');            cout << "(" << status << ",\"" << longName << "\",\""           << shortName << "\","           << numericName << ")" << endl << endl;    }  }  catch (GsmException &p)  {    // these tests shouldn't throw exceptions    assert(0);  }  // Now some tests that should provoke an error  try  {    Parser p("(4-5");    p.parseRange();  }  catch (GsmException &p)  {    cout << "Error 1: " << p.what() << endl << endl;  }  try  {    Parser p("(4-5,3-4-5)");    p.parseIntList();  }  catch (GsmException &p)  {    cout << "Error 2: " << p.what() << endl << endl;  }  try  {    Parser p("\"bla\"bla\"");    p.parseString();    p.checkEol();  }  catch (GsmException &p)  {    cout << "Error 3: " << p.what() << endl << endl;  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -