OpenClonk
C4Value.cpp File Reference
#include "C4Include.h"
#include "script/C4Value.h"
#include "game/C4GameScript.h"
#include "object/C4Def.h"
#include "object/C4DefList.h"
#include "object/C4GameObjects.h"
#include "object/C4Object.h"
#include "script/C4AulExec.h"
#include "script/C4Effect.h"
#include "script/C4StringTable.h"
#include "script/C4ValueArray.h"
Include dependency graph for C4Value.cpp:

Go to the source code of this file.

Functions

const char * GetC4VName (const C4V_Type Type)
 
C4Value C4VObj (C4Object *pObj)
 
bool ComparisonImpl (const C4Value &Value1, const C4Value &Value2)
 

Variables

const C4Value C4VNull
 

Function Documentation

◆ C4VObj()

C4Value C4VObj ( C4Object pObj)

Definition at line 88 of file C4Value.cpp.

88 { return C4Value(static_cast<C4PropList*>(pObj)); }

Referenced by C4Object::AddObjectAndContentsToArray(), C4Game::CastObjects(), C4Landscape::P::DigMaterial2Objects(), C4ScriptGuiWindowAction::ExecuteCommand(), C4Command::Fail(), C4FindObject::FindMany(), C4EditCursor::PerformDuplication(), C4EditCursor::PerformDuplicationLegacy(), and C4EditCursor::SetHighlightedObject().

Here is the caller graph for this function:

◆ ComparisonImpl()

bool ComparisonImpl ( const C4Value Value1,
const C4Value Value2 
)
inline

Definition at line 540 of file C4Value.cpp.

541 {
542  C4V_Type Type1 = Value1.GetType();
543  C4V_Data Data1 = Value1.GetData();
544  C4V_Type Type2 = Value2.GetType();
545  C4V_Data Data2 = Value2.GetData();
546  switch (Type1)
547  {
548  case C4V_Nil:
549  assert(!Data1);
550  return Type1 == Type2;
551  case C4V_Int:
552  case C4V_Bool:
553  return (Type2 == C4V_Int || Type2 == C4V_Bool) &&
554  Data1.Int == Data2.Int;
555  case C4V_PropList:
556  return Type1 == Type2 && *Data1.PropList == *Data2.PropList;
557  case C4V_String:
558  return Type1 == Type2 && Data1.Str == Data2.Str;
559  case C4V_Array:
560  return Type1 == Type2 &&
561  (Data1.Array == Data2.Array || *(Data1.Array) == *(Data2.Array));
562  case C4V_Function:
563  return Type1 == Type2 && Data1.Fn == Data2.Fn;
564  default:
565  assert(!"Unexpected C4Value type (denumeration missing?)");
566  return Data1 == Data2;
567  }
568 }
C4V_Type
Definition: C4Value.h:24
@ C4V_Function
Definition: C4Value.h:31
@ C4V_Int
Definition: C4Value.h:26
@ C4V_PropList
Definition: C4Value.h:28
@ C4V_Bool
Definition: C4Value.h:27
@ C4V_Array
Definition: C4Value.h:30
@ C4V_Nil
Definition: C4Value.h:25
@ C4V_String
Definition: C4Value.h:29
C4V_Data GetData() const
Definition: C4Value.h:160
C4V_Type GetType() const
Definition: C4Value.h:161
intptr_t Int
Definition: C4Value.h:52
C4String * Str
Definition: C4Value.h:55
C4PropList * PropList
Definition: C4Value.h:54
C4AulFunc * Fn
Definition: C4Value.h:57
C4ValueArray * Array
Definition: C4Value.h:56

References C4V_Data::Array, C4V_Array, C4V_Bool, C4V_Function, C4V_Int, C4V_Nil, C4V_PropList, C4V_String, C4V_Data::Fn, C4Value::GetData(), C4Value::GetType(), C4V_Data::Int, C4V_Data::PropList, and C4V_Data::Str.

Referenced by C4Value::operator==().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetC4VName()

const char* GetC4VName ( const C4V_Type  Type)

Definition at line 32 of file C4Value.cpp.

33 {
34  switch (Type)
35  {
36  case C4V_Nil:
37  return "nil";
38  case C4V_Int:
39  return "int";
40  case C4V_Bool:
41  return "bool";
42  case C4V_String:
43  return "string";
44  case C4V_Array:
45  return "array";
46  case C4V_PropList:
47  return "proplist";
48  case C4V_Any:
49  return "any";
50  case C4V_Object:
51  return "object";
52  case C4V_Def:
53  return "def";
54  case C4V_Effect:
55  return "effect";
56  case C4V_Function:
57  return "function";
58  default:
59  return "!Fehler!";
60  }
61 }
@ C4V_Object
Definition: C4Value.h:38
@ C4V_Any
Definition: C4Value.h:37
@ C4V_Def
Definition: C4Value.h:39
@ C4V_Effect
Definition: C4Value.h:40

References C4V_Any, C4V_Array, C4V_Bool, C4V_Def, C4V_Effect, C4V_Function, C4V_Int, C4V_Nil, C4V_Object, C4V_PropList, and C4V_String.

Referenced by C4AulFunc::CheckParTypes(), and C4Value::GetTypeName().

Here is the caller graph for this function:

Variable Documentation

◆ C4VNull