/** @return Represents the content of the current flat buffer field as 64 bit integer value. If the current flat buffer field type does not refer to a 64 bit integer, then the function will do a data conversion as described in the table which can be found in SqlBufIterator.h file. */ TInt64 TSqlBufRIterator::Int64() const { __ASSERT_DEBUG(iCurrent >= iBegin && iCurrent < iEnd, __SQLPANIC(ESqlPanicInternalError)); switch(Type()) { case ESqlInt: case ESqlZeroBlob: return AsInt(); case ESqlReal: { TReal roundVal; TInt err = Math::Round(roundVal, AsReal(), 0); if(err != KErrNone) { return KMinTInt64; } TRealX val(roundVal); return static_cast <TInt64> (val); } case ESqlNull: case ESqlText: case ESqlBinary: return 0; default: return AsInt64(); } }
const char * GFFField::tostring(char * buffer, int nMax, int nIndex){ switch (this->Type){ case 0:sprintf(buffer, "%u", AsByte()); break; case 1:sprintf(buffer, "%d", AsChar()); break; case 2:sprintf(buffer, "%u", AsWord()); break; case 3:sprintf(buffer, "%d", AsShort()); break; case 4:sprintf(buffer, "%u", AsDword()); break; case 5:sprintf(buffer, "%d", AsInt()); break; case 6:sprintf(buffer, "%llu", AsDword64()); break; case 7:sprintf(buffer, "%lld", AsInt64()); break; case 8:sprintf(buffer, "%f", AsFloat()); break; case 9:sprintf(buffer, "%Lf", AsDouble()); break; case 10:strncpy(buffer, AsExoString()->str, nMax); break; case 11:strncpy(buffer, AsResRef()->str, nMax); break; case 12: if (nIndex >= (int)AsExoLocString()->StringCount) buffer[0] = '\0'; else strncpy(buffer, AsExoLocString()->SubString[nIndex].str, nMax); break; case 13:sprintf(buffer, "<binary %u bytes>", AsVoid()->Size); break; case 14:sprintf(buffer, "struct ID: %d", AsStruct()->Type ); break; case 15:sprintf(buffer, "list %i entries", AsList()->Size); break; default:buffer[0] = '\0'; break; } return buffer; }
LLBC_Variant &LLBC_Variant::BecomeInt64() { if (!IsInt64()) { *this = AsInt64(); } return *this; }
/************************************* * operator == *************************************/ bool SHVDataVariantImpl::operator==(const SHVDataVariant& val) const { if (DataType == val.GetDataType()) { switch (DataType) { case SHVDataVariant::TypeInt: return AsInt() == val.AsInt(); case SHVDataVariant::TypeInt64: return AsInt64() == val.AsInt64(); case SHVDataVariant::TypeBool: return AsBool() == val.AsBool(); case SHVDataVariant::TypeDouble: return AsDouble() == val.AsDouble(); case SHVDataVariant::TypeString: return AsString() == val.AsString(); case SHVDataVariant::TypeTime: return (AsTime() == val.AsTime() ? true : false); break; } } return false; }
bool LLBC_Variant::AsBool() const { if (IsNil()) { return false; } else if (IsDict()) { return false; } else if (IsStr()) { LLBC_String trimedData(LLBC_Trim(_holder.str)); if (trimedData.length() != 4 && trimedData.length() != 5) { return (AsInt64() != 0 ? true : false); } LLBC_String lowerData(LLBC_ToLower(trimedData.c_str())); return (lowerData == "true" ? true : false); } return _holder.raw.uint64Val != 0; }
/** @return Represents the content of the current flat buffer field as real value. If the current flat buffer field type does not refer to a real, then the function will do a data conversion as described in the table which can be found in SqlBufIterator.h file. */ TReal TSqlBufRIterator::Real() const { __ASSERT_DEBUG(iCurrent >= iBegin && iCurrent < iEnd, __SQLPANIC(ESqlPanicInternalError)); switch(Type()) { case ESqlInt: case ESqlZeroBlob: { TRealX val(AsInt()); return static_cast <TReal> (val); } case ESqlInt64: { TRealX val(AsInt64()); return static_cast <TReal> (val); } case ESqlNull: case ESqlText: case ESqlBinary: return 0.0; default: return AsReal(); } }
LLBC_Variant::operator sint64() const { return AsInt64(); }
long LLBC_Variant::AsLong() const { return static_cast<long>(AsInt64()); }
sint32 LLBC_Variant::AsInt32() const { return static_cast<sint32>(AsInt64()); }
sint16 LLBC_Variant::AsInt16() const { return static_cast<sint16>(AsInt64()); }
sint8 LLBC_Variant::AsInt8() const { return static_cast<sint8>(AsInt64()); }