コード例 #1
0
ファイル: zsLib_Numeric.cpp プロジェクト: xubingyue/zsLib
    bool convert(const String &input, ULONGLONG &outResult, size_t size, bool ignoreWhiteSpace, size_t base)
    {
      ZS_THROW_INVALID_USAGE_IF((0 == size) || (size > sizeof(QWORD)))

      CSTR str = input;
      if (NULL == str)
        return false;

      if (ignoreWhiteSpace)
        skipSpace(str);

      bool hadSign = false;
      bool positive = isPositive(str, hadSign);
      if (!positive)
        return false;
      base = shouldForceBase(str, base, hadSign);

      ULONGLONG result = 0;

      BYTE digit = 0;
      while ((digit = gDigitToValue[*str]) < base) {
        ULONGLONG lastResult = result;

        result *= base;
        result += static_cast<ULONGLONG>(digit);
        if (result < lastResult)
          return false; // value had to flip
        ++str;
      }
      if (result > gMaxULongLongs[size-1])
        return false;

      if (ignoreWhiteSpace)
        skipSpace(str);

      if (0 != *str)
        return false;

      outResult = result;
      return true;
    }
コード例 #2
0
    String convert(ULONGLONG value, size_t base)
    {
      ZS_THROW_INVALID_USAGE_IF((base < 2) || (base > (10+26)))

      boost::shared_array<char> buffer(new char[sizeof(ULONGLONG)*8+2]);
      memset(buffer.get(), 0, sizeof(char)*((sizeof(ULONGLONG)*8)+2));

      STR end = (buffer.get() + (sizeof(ULONGLONG)*8));
      STR dest = end;
      *dest = 0;
      while (value > 0)
      {
        --dest;
        *dest = gDigits[value % base];
        value /= base;
      }

      if (dest == end)
        *dest = '0';
      return String(dest);
    }
コード例 #3
0
ファイル: zsLib_Stringize.cpp プロジェクト: openpeer/zsLib
    //-----------------------------------------------------------------------
    String convert(ULONGLONG value, size_t base)
    {
      ZS_THROW_INVALID_USAGE_IF((base < 2) || (base > (10+26)));

      char buffer[sizeof(ULONGLONG)*8+2];
      char *startPos = &(buffer[0]);

      memset(startPos, 0, sizeof(buffer));

      STR end = (startPos + (sizeof(ULONGLONG)*8));
      STR dest = end;
      *dest = 0;
      while (value > 0)
      {
        --dest;
        *dest = gDigits[value % base];
        value /= base;
      }

      if (dest == end)
        *dest = '0';
      return String(dest);
    }
コード例 #4
0
ファイル: hookflash_Client.cpp プロジェクト: Gurtej/op
 //-----------------------------------------------------------------------
 void setup(IClientDelegatePtr delegate)
 {
   AutoLock lock(mLock);
   ZS_THROW_INVALID_USAGE_IF(mClient)  // already setup?
   mClient = Client::create(delegate);
 }