示例#1
0
	///Create a test harness that runs tests matching the substrings
	///passed on the command line. argc and argv are interpreted as if
	///they were the arguments to main.  If no substrings are given
	///(that is, no arguments are passed), all tests are run, as if one
	///argument of an empty string had been given.
	GTestHarness(int argc, char**argv)
	{
		//Make list of test names to match
 		if(argc < 2){
			m_testNameSubstr.push_back("");
		}else{
			for(int i = 1; i < argc; ++i){
				m_testNameSubstr.push_back(argv[i]);
			}
		}

		//Ready performance stats
		char buf[256];
		if(GApp::appPath(buf, 256, true) == -1)
			throw Ex("Failed to retrieve app path");
		if(chdir(buf) != 0)
			throw Ex("Failed to change the dir to the app folder");

		m_testTimes.flags(std::ios::showpoint | std::ios::skipws | std::ios::dec | std::ios::fixed | std::ios::left);
		m_testTimes.width(PERF_FILE_CHARS);
		m_testTimes.precision(PERF_FILE_CHARS - 3);
		string s;
		GTime::appendTimeStampValue(&s, "-", " ", ":", false);
		m_testTimes << s;
	}
示例#2
0
    // 通过libxl库读取单元格内容,本接口速度较快,但不支持公式(只能读取公式的内容,无法得到公式计算结果)
    std::string& libxl_get_cell_str(libxl::Sheet &sheet, int row, int col)
    {
        static const int prec=std::numeric_limits<long long>::digits10 + 10; // 18
        static std::string result;

        libxl::CellType cell_type = sheet.cellType(row, col);
        switch (cell_type)
        {
        case libxl::CELLTYPE_STRING:
            {
                //字符串
                const wchar_t *w = sheet.readStr(row, col);
                //const std::wstring wstr(w);
                return strtool::wstring2string(w);
            }
        case libxl::CELLTYPE_NUMBER:
            {
                static std::ostringstream o;
                o.str("");
                o.precision(prec);//覆盖默认精度

                double dd = sheet.readNum(row, col);
                o << dd;
                result = o.str();
                break;
            }
        default:
            result = "";
            break;
        }

        return result;
    }
示例#3
0
    // 通过ole的方式读取单元格内容,由于ole才支持公式,所以tokit只在单元格含公式时才调用本接口,除此之外通过libxl库来调用,因为libxl读取速度快很多
    std::string& ole_get_cell_str(COleSafeArray &ole_safe_array, int row, int col)
    {
        static const int prec=std::numeric_limits<long long>::digits10 + 10; // 18
        static COleVariant vResult;
        static CString str;

        //字符串
        static long read_address[2];
        static VARIANT val;
        static std::string result;

        read_address[0] = row;
        read_address[1] = col;
        ole_safe_array.GetElement(read_address, &val);
        vResult = val;

        switch(vResult.vt){
        case VT_BSTR:
        {
            //字符串
            const wchar_t *w = vResult.bstrVal;
            // const std::wstring wstr(w);
            return strtool::wstring2string(w);
        }
        //单元格空的
        case VT_EMPTY:
        //整数
        case VT_INT:
            result = "";
            break;
        //8字节的数字 
        case VT_R8:
        {
            static std::ostringstream oss;
            oss.str("");
            oss.precision(prec);//覆盖默认精度

            oss << vResult.dblVal;
            result = oss.str();
            break;
        }
        //时间格式
        case VT_DATE:
        {
            SYSTEMTIME st;
            VariantTimeToSystemTime(vResult.date, &st);
            CTime tm(st); 
            str = tm.Format("%Y-%m-%d");
            break;
        }

        default:
            result = "";
            break;
        }

        return result;
    }
 void SVC_CrosshairAngle_ToString_Internal(std::ostringstream& out, NetMsg::SVC_CrosshairAngle* data)
 {
     const std::streamsize oldPrecision = out.precision();
     out << "svc_CrosshairAngle:"
         << std::setprecision(1) << std::fixed
         << " (" << data->angle.x
         << " " << data->angle.y
         << " " << data->angle.z << ")"
         << std::setprecision(oldPrecision);
     out.unsetf(std::ios_base::floatfield);
 }
示例#5
0
void s2cellidToJson(S2CellId* s2cellid, std::ostringstream& stringStream, bool last) {
  S2Cell cell(*s2cellid);
  S2LatLng center(cell.id().ToPoint());
  stringStream.precision(30);

  stringStream << "{" << endl
    << "\"id\": \"" << cell.id().id() << "\","  << endl
    << "\"id_signed\": \"" << (long long)cell.id().id() << "\","  << endl
    << "\"token\": \"" << cell.id().ToToken() << "\"," << endl
    << "\"pos\":" << cell.id().pos() << ","  << endl
    << "\"face\":" << cell.id().face() << ","  << endl
    << "\"level\":" << cell.id().level() << ","  << endl
      << "\"ll\": { " << endl
        << "\"lat\":" << center.lat().degrees() << ","  << endl
        << "\"lng\":" << center.lng().degrees() << "" << endl
     << "}," << endl
     << "\"shape\": [ " << endl;

   for (int i = 0; i < 4; i++) {
     S2LatLng vertex(cell.GetVertex(i));
     stringStream << "{ " << endl
        << "\"lat\":" << vertex.lat().degrees() << ","  << endl
        << "\"lng\":" << vertex.lng().degrees() << "" << endl
        << "}" << endl;
      if (i != 3) {
        stringStream << ",";
      }
    }

   stringStream
     << "]" << endl
    << "}";

    if (!last) {
      stringStream << ",";
    }
    
    stringStream << endl;
}
      if (qs.size() < 2)
	throw std::invalid_argument(Exception(String("joint waypoint text file must contain at least 2 'waypoint' vectors")));
      
      init(qs,times,deltas);
      
    }
    else { // output
      std::ostringstream out;
      
      // comment header
      out << "# Joint waypoint trajectory [joint positions & times (at-end)]" << std::endl;
      out << "# the following line should be 'absolute' for absolute qi's & t values or 'relative' if the vectors represent inter-waypoint deltas dqi's & dt" << std::endl;
      out << "absolute" << std::endl; // not "relative"
      out << "# q0 q1 ... qn t" << std::endl;
      std::ostream::fmtflags savedFlags = out.setf(std::ios_base::dec | std::ios_base::right);
      Int savedPrec = out.precision(10);
      Int savedWidth = out.width(13);
      const Int dof=qs[0].size();

// this is a hack, as under gcc the flags don't appear to stay set after an output op (!?)
#define setflags \
      out.setf(std::ios_base::dec | std::ios_base::right); \
      out.precision(10); \
      out.width(13); 

      setflags;
      for(Int i=0; i<qs.size(); i++) {
	Vector q(qs[i]);
	Time t(times[i]);
	
	for(Int e=0; e<dof; e++)