43 #define C4V_Last ((int) C4V_Array)
45 #define C4V_FirstPointer C4V_PropList
59 operator void * () {
return Ptr; }
60 operator const void * ()
const {
return Ptr; }
69 const char*
what() const noexcept
override {
return msg.c_str(); }
87 { Data.
Int = int32_t(data); }
93 { Data.
Str = pStr; AddDataRef(); }
99 { Data.
Array = pArray; AddDataRef(); }
101 { Data.
Fn = pFn; AddDataRef(); }
103 { Data.
PropList = p; AddDataRef(); }
132 inline operator const void* ()
const {
return GetData() ? this :
nullptr; }
186 default: assert(!
"C4Value::CheckParConversion: impossible conversion target");
return false;
204 default: assert(!
"C4Value::CheckConversion: impossible conversion target");
return false;
227 bool FnCnvObject()
const;
228 bool FnCnvDef()
const;
229 bool FnCnvEffect()
const;
233 template<
typename T>
explicit C4Value(T);
263 std::list<C4Value *> ValuesToSave;
264 std::vector<C4Value> LoadedValues;
265 std::map<void *, uint32_t> ValueNumbers;
280 assert(Type !=
C4V_Nil || !Data);
285 assert(C4PropList::PropLists.Has(Data.
PropList));
288 LogDeletedObjectWarning(Data.
PropList);
303 assert(Type !=
C4V_Nil || !Data);
329 DelDataRef(oData, oType);
342 DelDataRef(oData, oType);
346 Data(nValue.Data), Type(nValue.Type)
353 nValue.Type =
C4V_Nil; nValue.Data =
nullptr;
C4Value C4VFunction(C4AulFunc *pFn)
const char * GetC4VName(const C4V_Type Type)
C4Value C4VArray(C4ValueArray *pArray)
C4Value C4VInt(int32_t i)
C4Value C4VPropList(C4PropList *p)
C4Value C4VString(C4String *pStr)
C4Value C4VObj(C4Object *pObj)
C4JSONSerializationError(const std::string &msg)
const char * what() const noexcept override
C4String * RegString(StdStrBuf String)
C4Value(const C4Value &nValue)
C4Value(C4ValueArray *pArray)
C4ValueArray * getArray() const
ALWAYS_INLINE bool CheckConversion(C4V_Type vtToType) const
void SetPropList(C4PropList *PropList)
static constexpr bool IsNullableType(C4V_Type Type)
C4V_Type GetTypeEx() const
C4Object * getObj() const
StdStrBuf ToJSON(int depth=10, const class C4PropListStatic *ignore_reference_parent=nullptr) const
StdStrBuf GetDataString(int depth=10, const class C4PropListStatic *ignore_reference_parent=nullptr) const
C4PropList * _getPropList() const
C4String * getStr() const
static bool WarnAboutConversion(C4V_Type Type, C4V_Type vtToType)
ALWAYS_INLINE bool CheckParConversion(C4V_Type vtToType) const
C4AulFunc * _getFunction() const
bool operator!=(const C4Value &Value2) const
C4Value(const StdStrBuf &s)
void SetArray(C4ValueArray *Array)
C4ValueArray * _getArray() const
C4Value & operator+=(int32_t by)
C4Value & operator=(const C4Value &nValue)
bool operator==(const C4Value &Value2) const
bool IsIdenticalTo(const C4Value &cmp) const
void Set(const C4Value &nValue)
C4AulFunc * getFunction() const
C4String * _getStr() const
void SetObjectEnum(int i)
C4PropList * getPropList() const
void SetString(C4String *Str)
void CompileFunc(StdCompiler *pComp, C4ValueNumbers *)
void Denumerate(C4ValueNumbers *)
const char * GetTypeName() const
C4Object * _getObj() const
void SetFunction(C4AulFunc *Fn)
void CompileValue(StdCompiler *, C4Value *)
void CompileFunc(StdCompiler *)
const C4Value & GetValue(uint32_t)
uint32_t GetNumberForValue(C4Value *v)
C4V_Data & operator=(void *p)