OpenClonk
StdCompilerBinWrite Class Reference

#include <StdCompiler.h>

Inheritance diagram for StdCompilerBinWrite:
[legend]
Collaboration diagram for StdCompilerBinWrite:
[legend]

Public Types

typedef StdBuf OutT
 
enum  Sep {
  SEP_NONE =0 , SEP_SEP , SEP_SEP2 , SEP_SET ,
  SEP_PART , SEP_PART2 , SEP_PLUS , SEP_START ,
  SEP_END , SEP_START2 , SEP_END2 , SEP_VLINE ,
  SEP_DOLLAR
}
 
enum  RawCompileType {
  RCT_Escaped =0 , RCT_All , RCT_Idtf , RCT_IdtfAllowEmpty ,
  RCT_ID
}
 
typedef void(* WarnCBT) (void *, const char *, const char *)
 

Public Member Functions

OutT getOutput ()
 
bool isDoublePass () override
 
void DWord (int32_t &rInt) override
 
void DWord (uint32_t &rInt) override
 
void Word (int16_t &rShort) override
 
void Word (uint16_t &rShort) override
 
void Byte (int8_t &rByte) override
 
void Byte (uint8_t &rByte) override
 
void Boolean (bool &rBool) override
 
void Character (char &rChar) override
 
void String (char *szString, size_t iMaxLength, RawCompileType eType=RCT_Escaped) override
 
void String (char **pszString, RawCompileType eType=RCT_Escaped) override
 
void String (std::string &str, RawCompileType eType=RCT_Escaped) override
 
void Raw (void *pData, size_t iSize, RawCompileType eType=RCT_Escaped) override
 
void Begin () override
 
void BeginSecond () override
 
virtual bool isDeserializer ()
 
bool isSerializer ()
 
virtual bool hasNaming ()
 
virtual bool isVerbose ()
 
virtual bool isRegistry ()
 
virtual void setRuntimeWritesAllowed (int32_t iChange)
 
virtual bool Name (const char *szName)
 
virtual void NameEnd (bool fBreak=false)
 
virtual const char * GetNameByIndex (size_t idx) const
 
virtual bool FollowName (const char *szName)
 
virtual bool Default (const char *szName)
 
virtual int NameCount (const char *szName=nullptr)
 
virtual bool Separator (Sep eSep=SEP_SEP)
 
virtual void NoSeparator ()
 
virtual StdStrBuf getPosition () const
 
virtual void End ()
 
template<class T >
void Value (const T &rStruct)
 
template<class T >
void Value (T &rStruct)
 
void Value (int32_t &rInt)
 
void Value (uint32_t &rInt)
 
void Value (int16_t &rInt)
 
void Value (uint16_t &rInt)
 
void Value (int8_t &rInt)
 
void Value (uint8_t &rInt)
 
void Value (bool &rBool)
 
template<class T >
void Compile (T &&rStruct)
 
template<class T >
void Decompile (const T &rStruct)
 
void excNotFound (const char *szMessage,...)
 
void excEOF (const char *szMessage="EOF",...)
 
void excCorrupt (const char *szMessage,...)
 
void setWarnCallback (WarnCBT pnWarnCB, void *pData)
 
void Warn (const char *szWarning,...)
 

Protected Member Functions

template<class T >
void WriteValue (const T &rValue)
 
void WriteData (const void *pData, size_t iSize)
 
template<class T >
void DoCompilation (T &rStruct)
 

Static Protected Member Functions

static char SeparatorToChar (Sep eSep)
 
static bool IsStringEnd (char c, RawCompileType eType)
 

Protected Attributes

bool fSecondPass
 
int iPos
 
StdBuf Buf
 

Detailed Description

Definition at line 444 of file StdCompiler.h.

Member Typedef Documentation

◆ OutT

Definition at line 449 of file StdCompiler.h.

◆ WarnCBT

typedef void(* StdCompiler::WarnCBT) (void *, const char *, const char *)
inherited

Definition at line 281 of file StdCompiler.h.

Member Enumeration Documentation

◆ RawCompileType

Enumerator
RCT_Escaped 
RCT_All 
RCT_Idtf 
RCT_IdtfAllowEmpty 
RCT_ID 

Definition at line 135 of file StdCompiler.h.

136  {
137  RCT_Escaped=0,// Any data allowed, no separator needed (default)
138  RCT_All, // Printable characters only, must be last element in naming.
139  RCT_Idtf, // Alphanumerical characters or '_', separator needed.
140  RCT_IdtfAllowEmpty, // Like RCT_Idtf, but empty strings are also allowed
141  RCT_ID // Like RCT_Idtf (only used for special compilers that treat IDs differently)
142  };
@ RCT_IdtfAllowEmpty
Definition: StdCompiler.h:140

◆ Sep

enum StdCompiler::Sep
inherited
Enumerator
SEP_NONE 
SEP_SEP 
SEP_SEP2 
SEP_SET 
SEP_PART 
SEP_PART2 
SEP_PLUS 
SEP_START 
SEP_END 
SEP_START2 
SEP_END2 
SEP_VLINE 
SEP_DOLLAR 

Definition at line 103 of file StdCompiler.h.

104  {
105  SEP_NONE=0, // No separator ("")
106  SEP_SEP, // Array separation (",")
107  SEP_SEP2, // Array separation 2 (";")
108  SEP_SET, // Map pair separation ("=")
109  SEP_PART, // Value part separation (".")
110  SEP_PART2, // Value part separation 2 (":")
111  SEP_PLUS, // Value separation with a '+' char ("+")
112  SEP_START, // Start some sort of list ('(')
113  SEP_END, // End some sort of list ('(')
114  SEP_START2, // Start some sort of list ('[')
115  SEP_END2, // End some sort of list (']')
116  SEP_VLINE, // Vertical line separator ('|')
117  SEP_DOLLAR // Dollar sign ('$')
118  };

Member Function Documentation

◆ Begin()

void StdCompilerBinWrite::Begin ( )
overridevirtual

Reimplemented from StdCompiler.

Definition at line 118 of file StdCompiler.cpp.

119 {
120  fSecondPass = false; iPos = 0;
121 }

References fSecondPass, and iPos.

◆ BeginSecond()

void StdCompilerBinWrite::BeginSecond ( )
overridevirtual

Reimplemented from StdCompiler.

Definition at line 123 of file StdCompiler.cpp.

124 {
125  Buf.New(iPos);
126  fSecondPass = true; iPos = 0;
127 }
void New(size_t inSize)
Definition: StdBuf.h:146

References Buf, fSecondPass, iPos, and StdBuf::New().

Here is the call graph for this function:

◆ Boolean()

void StdCompilerBinWrite::Boolean ( bool &  rBool)
overridevirtual

Implements StdCompiler.

Definition at line 74 of file StdCompiler.cpp.

74 { WriteValue(rBool); }
void WriteValue(const T &rValue)
Definition: StdCompiler.cpp:94

References WriteValue().

Here is the call graph for this function:

◆ Byte() [1/2]

void StdCompilerBinWrite::Byte ( int8_t &  rByte)
overridevirtual

Implements StdCompiler.

Definition at line 72 of file StdCompiler.cpp.

72 { WriteValue(rByte); }

References WriteValue().

Here is the call graph for this function:

◆ Byte() [2/2]

void StdCompilerBinWrite::Byte ( uint8_t &  rByte)
overridevirtual

Implements StdCompiler.

Definition at line 73 of file StdCompiler.cpp.

73 { WriteValue(rByte); }

References WriteValue().

Here is the call graph for this function:

◆ Character()

void StdCompilerBinWrite::Character ( char &  rChar)
overridevirtual

Implements StdCompiler.

Definition at line 75 of file StdCompiler.cpp.

75 { WriteValue(rChar); }

References WriteValue().

Here is the call graph for this function:

◆ Compile()

template<class T >
void StdCompiler::Compile ( T &&  rStruct)
inlineinherited

Definition at line 173 of file StdCompiler.h.

174  {
175  assert(isDeserializer());
176  DoCompilation(rStruct);
177  }
void DoCompilation(T &rStruct)
Definition: StdCompiler.h:188
virtual bool isDeserializer()
Definition: StdCompiler.h:53

References StdCompiler::DoCompilation(), and StdCompiler::isDeserializer().

Referenced by C4Config::Default(), C4GameParameters::Load(), C4Config::Load(), C4ConfigGamepad::Reset(), and C4ConfigGamepad::ResetButtons().

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

◆ Decompile()

template<class T >
void StdCompiler::Decompile ( const T &  rStruct)
inlineinherited

Definition at line 178 of file StdCompiler.h.

179  {
180  assert(!isDeserializer());
181  DoCompilation(const_cast<T &>(rStruct));
182  }

References StdCompiler::DoCompilation(), and StdCompiler::isDeserializer().

Referenced by GetValByStdCompiler(), and C4Config::Save().

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

◆ Default()

virtual bool StdCompiler::Default ( const char *  szName)
inlinevirtualinherited

Reimplemented in C4ValueCompiler.

Definition at line 88 of file StdCompiler.h.

88 { return true; }

Referenced by C4ConfigControls::CompileFunc(), C4PlayerControlAssignmentSets::CompileFunc(), and StdNamingDefaultAdapt< T, D >::CompileFunc().

Here is the caller graph for this function:

◆ DoCompilation()

template<class T >
void StdCompiler::DoCompilation ( T &  rStruct)
inlineprotectedinherited

Definition at line 188 of file StdCompiler.h.

189  {
190  // Start compilation, do first pass
191  Begin();
192  Value(rStruct);
193  // Second pass needed?
194  if (isDoublePass())
195  {
196  BeginSecond();
197  Value(rStruct);
198  }
199  // Finish
200  End();
201  }
virtual void BeginSecond()
Definition: StdCompiler.h:155
void Value(const T &rStruct)
Definition: StdCompiler.h:161
virtual void End()
Definition: StdCompiler.h:156
virtual bool isDoublePass()
Definition: StdCompiler.h:50
virtual void Begin()
Definition: StdCompiler.h:154

References StdCompiler::Begin(), StdCompiler::BeginSecond(), StdCompiler::End(), StdCompiler::isDoublePass(), and StdCompiler::Value().

Referenced by StdCompiler::Compile(), and StdCompiler::Decompile().

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

◆ DWord() [1/2]

void StdCompilerBinWrite::DWord ( int32_t &  rInt)
overridevirtual

Implements StdCompiler.

Definition at line 68 of file StdCompiler.cpp.

68 { WriteValue(rInt); }

References WriteValue().

Here is the call graph for this function:

◆ DWord() [2/2]

void StdCompilerBinWrite::DWord ( uint32_t &  rInt)
overridevirtual

Implements StdCompiler.

Definition at line 69 of file StdCompiler.cpp.

69 { WriteValue(rInt); }

References WriteValue().

Here is the call graph for this function:

◆ End()

virtual void StdCompiler::End ( )
inlinevirtualinherited

Reimplemented in StdCompilerINIRead, and StdCompilerINIWrite.

Definition at line 156 of file StdCompiler.h.

156 { }

Referenced by StdCompiler::DoCompilation(), and C4Playback::ReadBinary().

Here is the caller graph for this function:

◆ excCorrupt()

void StdCompiler::excCorrupt ( const char *  szMessage,
  ... 
)
inlineinherited

Definition at line 249 of file StdCompiler.h.

250  {
251  // Throw the appropriate exception
252  va_list args; va_start(args, szMessage);
253  throw new CorruptException(getPosition(), FormatStringV(szMessage, args));
254  }
StdStrBuf FormatStringV(const char *szFmt, va_list args)
Definition: StdBuf.cpp:276
virtual StdStrBuf getPosition() const
Definition: StdCompiler.h:151

References FormatStringV(), and StdCompiler::getPosition().

Referenced by C4ClientPlayerInfos::CompileFunc(), C4PlayerInfoList::CompileFunc(), C4RoundResultsPlayers::CompileFunc(), StdSubMeshInstance::CompileFunc(), C4DefGraphicsAdapt::CompileFunc(), C4Network2ResCore::CompileFunc(), C4Network2ResChunkData::CompileFunc(), C4IDPacket::CompileFunc(), StdMeshInstance::CompileFunc(), C4Value::CompileFunc(), C4PropListNumbered::CompileFunc(), StdMeshInstanceAnimationNode::CompileFunc(), C4MeshDenumerator::CompileFunc(), C4KeyCodeEx::CompileFunc(), C4ValueNumbers::CompileValue(), C4PropListStatic::RefCompileFunc(), and StdCompilerBinRead::String().

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

◆ excEOF()

void StdCompiler::excEOF ( const char *  szMessage = "EOF",
  ... 
)
inlineinherited

Definition at line 243 of file StdCompiler.h.

244  {
245  // Throw the appropriate exception
246  va_list args; va_start(args, szMessage);
247  throw new EOFException(getPosition(), FormatStringV(szMessage, args));
248  }

References FormatStringV(), and StdCompiler::getPosition().

Referenced by StdCompilerBinRead::Raw(), StdCompilerBinRead::ReadValue(), and StdCompilerBinRead::String().

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

◆ excNotFound()

void StdCompiler::excNotFound ( const char *  szMessage,
  ... 
)
inlineinherited

Definition at line 233 of file StdCompiler.h.

234  {
235 #ifdef STDCOMPILER_EXCEPTION_WORKAROUND
236  // Exception workaround: Just set a flag in failesafe mode.
237  if (fFailSafe) { fFail = true; return; }
238 #endif
239  // Throw the appropriate exception
240  va_list args; va_start(args, szMessage);
241  throw new NotFoundException(getPosition(), FormatStringV(szMessage, args));
242  }

References FormatStringV(), and StdCompiler::getPosition().

Referenced by C4PlayerControlDef::CompileFunc(), C4PlayerControlAssignment::CompileFunc(), C4PlayerControlAssignmentSet::CompileFunc(), C4ScenarioParameterDef::Option::CompileFunc(), C4ScenarioParameterDef::CompileFunc(), StdHexAdapt::CompileFunc(), C4Object::CompileFunc(), and StdCompilerINIRead::notFound().

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

◆ FollowName()

virtual bool StdCompiler::FollowName ( const char *  szName)
inlinevirtualinherited

Reimplemented in StdCompilerINIRead.

Definition at line 84 of file StdCompiler.h.

84 { NameEnd(); return Name(szName); }
virtual void NameEnd(bool fBreak=false)
Definition: StdCompiler.h:78
virtual bool Name(const char *szName)
Definition: StdCompiler.h:77

References StdCompiler::Name(), and StdCompiler::NameEnd().

Referenced by C4Object::CompileFunc().

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

◆ GetNameByIndex()

virtual const char* StdCompiler::GetNameByIndex ( size_t  idx) const
inlinevirtualinherited

Reimplemented in StdCompilerINIRead.

Definition at line 79 of file StdCompiler.h.

79 { return nullptr; }

Referenced by C4ScenarioParameters::CompileFunc().

Here is the caller graph for this function:

◆ getOutput()

OutT StdCompilerBinWrite::getOutput ( )
inline

Definition at line 450 of file StdCompiler.h.

450 { return Buf; }

References Buf.

◆ getPosition()

virtual StdStrBuf StdCompiler::getPosition ( ) const
inlinevirtualinherited

Reimplemented in StdCompilerINIRead, and StdCompilerBinRead.

Definition at line 151 of file StdCompiler.h.

151 { return StdStrBuf(); }

Referenced by StdCompiler::excCorrupt(), StdCompiler::excEOF(), StdCompiler::excNotFound(), and StdCompiler::Warn().

Here is the caller graph for this function:

◆ hasNaming()

◆ isDeserializer()

virtual bool StdCompiler::isDeserializer ( )
inlinevirtualinherited

Reimplemented in StdCompilerINIRead, StdCompilerBinRead, StdCompilerNull, and C4ValueCompiler.

Definition at line 53 of file StdCompiler.h.

53 { return false; }

Referenced by StdCompiler::Compile(), C4MusicSystem::CompileFunc(), C4ValueArray::CompileFunc(), C4Set< T >::CompileFunc(), StdStrBuf::CompileFunc(), StdBuf::CompileFunc(), C4ValueNumbers::CompileFunc(), C4NetIO::EndpointAddress::CompileFunc(), C4Game::CompileFunc(), C4GameRes::CompileFunc(), C4GameResList::CompileFunc(), C4PlayerControlDefs::CompileFunc(), C4PlayerControlAssignment::CompileFunc(), C4PlayerInfo::CompileFunc(), C4ClientPlayerInfos::CompileFunc(), C4PlayerInfoList::CompileFunc(), C4RoundResultsPlayers::CompileFunc(), C4RoundResults::CompileFunc(), C4Team::CompileFunc(), C4TeamList::CompileFunc(), C4DrawTransform::CompileFunc(), C4KeyboardInput::CompileFunc(), C4Scoreboard::CompileFunc(), C4MapFolderData::CompileFunc(), C4Landscape::CompileFunc(), C4MaterialReaction::CompileFunc(), C4MaterialCore::CompileFunc(), C4StrValAdapt< T >::CompileFunc(), StdSubMeshInstance::CompileFunc(), C4Client::CompileFunc(), C4ClientList::CompileFunc(), DisconnectData::CompileFunc(), C4Network2Address::CompileFunc(), C4DefGraphicsAdapt::CompileFunc(), C4GraphicsOverlay::CompileFunc(), C4GraphicsOverlayListAdapt::CompileFunc(), C4ObjectInfoCore::CompileFunc(), C4PlayerInfoCore::CompileFunc(), C4ObjectPtr::CompileFunc(), C4ScenarioParameters::CompileFunc(), StdNamingDefaultAdapt< T, D >::CompileFunc(), StdArrayDefaultAdapt< T, D, M >::CompileFunc(), StdArrayDefaultArrayAdapt< T, D, M >::CompileFunc(), StdSTLContainerAdapt< C >::CompileFunc(), StdIntPackAdapt< T >::CompileFunc(), StdEnumAdapt< T, int_t >::CompileFunc(), StdBitfieldAdapt< T >::CompileFunc(), StdNamingCountAdapt< int_t >::CompileFunc(), StdHexAdapt::CompileFunc(), C4NetFilenameAdapt::CompileFunc(), C4PacketPostMortem::CompileFunc(), C4Network2ResChunkData::CompileFunc(), C4IDPacket::CompileFunc(), C4PacketList::CompileFunc(), C4ValueProviderLinear::CompileFunc(), StdMeshInstance::CompileFunc(), C4GameVersion::CompileFunc(), C4AulScriptEngine::CompileFunc(), C4SHead::CompileFunc(), C4NameList::CompileFunc(), C4Effect::CompileFunc(), C4Command::CompileFunc(), C4Object::CompileFunc(), C4Player::CompileFunc(), C4Property::CompileFunc(), C4PropList::CompileFunc(), C4Value::CompileFunc(), C4ValueMapData::CompileFunc(), C4ObjectList::CompileFunc(), C4PropListNumbered::CompileFunc(), StdMeshInstanceAnimationNode::CompileFunc(), StdMeshInstance::AttachedMesh::CompileFunc(), ValidatedStdCopyStrBufBase::CompileFunc(), C4MeshDenumerator::CompileFunc(), C4KeyCodeEx::CompileFunc(), C4ValueNumbers::CompileValue(), StdCompiler::Decompile(), StdCompiler::isSerializer(), C4PropListStatic::RefCompileFunc(), StdPtrAdaptCompileFunc(), and unpack_class< T >::unpack().

◆ isDoublePass()

bool StdCompilerBinWrite::isDoublePass ( )
inlineoverridevirtual

Reimplemented from StdCompiler.

Definition at line 453 of file StdCompiler.h.

453 { return true; }

◆ isRegistry()

virtual bool StdCompiler::isRegistry ( )
inlinevirtualinherited

Definition at line 65 of file StdCompiler.h.

65 { return false; }

Referenced by C4PlayerControlAssignmentSets::CompileFunc().

Here is the caller graph for this function:

◆ isSerializer()

bool StdCompiler::isSerializer ( )
inlineinherited

Definition at line 54 of file StdCompiler.h.

54 { return !isDeserializer(); }

References StdCompiler::isDeserializer().

Referenced by C4ConfigControls::CompileFunc(), C4Game::CompileFunc(), C4PlayerControlAssignmentSets::CompileFunc(), C4PlayerInfo::CompileFunc(), C4FoWLightSection::CompileFunc(), C4ID::CompileFunc(), StdNamingDefaultAdapt< T, D >::CompileFunc(), StdDecompileAdapt< T >::CompileFunc(), C4NetFilenameAdapt::CompileFunc(), C4ObjectList::CompileFunc(), C4Effect::CompileFunc(), and C4Command::CompileFunc().

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

◆ IsStringEnd()

bool StdCompiler::IsStringEnd ( char  c,
RawCompileType  eType 
)
staticprotectedinherited

Definition at line 53 of file StdCompiler.cpp.

54 {
55  switch (eType)
56  {
57  case RCT_Escaped: return c == '"' || !c || c == '\n' || c == '\r';
58  case RCT_All: return !c || c == '\n' || c == '\r';
59  // '-' is needed for Layers in Scenario.txt (C4NameList) and other Material-Texture combinations
60  case RCT_Idtf: case RCT_IdtfAllowEmpty: case RCT_ID: return !isalnum((unsigned char)c) && c != '_' && c != '-';
61  }
62  // unreachable
63  return true;
64 }

References StdCompiler::RCT_All, StdCompiler::RCT_Escaped, StdCompiler::RCT_ID, StdCompiler::RCT_Idtf, and StdCompiler::RCT_IdtfAllowEmpty.

Referenced by StdCompilerINIRead::TestStringEnd().

Here is the caller graph for this function:

◆ isVerbose()

virtual bool StdCompiler::isVerbose ( )
inlinevirtualinherited

Reimplemented in C4ValueCompiler.

Definition at line 62 of file StdCompiler.h.

62 { return hasNaming(); }
virtual bool hasNaming()
Definition: StdCompiler.h:58

References StdCompiler::hasNaming().

Referenced by StdEnumAdapt< T, int_t >::CompileFunc(), StdBitfieldAdapt< T >::CompileFunc(), and StdHexAdapt::CompileFunc().

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

◆ Name()

◆ NameCount()

virtual int StdCompiler::NameCount ( const char *  szName = nullptr)
inlinevirtualinherited

Reimplemented in StdCompilerINIRead, and StdCompilerNull.

Definition at line 91 of file StdCompiler.h.

91 { assert(false); return 0; }

Referenced by C4ScenarioParameters::CompileFunc(), and StdNamingCountAdapt< int_t >::CompileFunc().

Here is the caller graph for this function:

◆ NameEnd()

◆ NoSeparator()

virtual void StdCompiler::NoSeparator ( )
inlinevirtualinherited

Reimplemented in StdCompilerINIRead.

Definition at line 120 of file StdCompiler.h.

120 { }

Referenced by C4Command::CompileFunc(), and C4KeyCodeEx::CompileFunc().

Here is the caller graph for this function:

◆ Raw()

void StdCompilerBinWrite::Raw ( void *  pData,
size_t  iSize,
RawCompileType  eType = RCT_Escaped 
)
overridevirtual

Implements StdCompiler.

Definition at line 110 of file StdCompiler.cpp.

111 {
112  // Copy data
113  if (fSecondPass)
114  Buf.Write(pData, iSize, iPos);
115  iPos += iSize;
116 }
int iSize
Definition: TstC4NetIO.cpp:32
void Write(const void *pnData, size_t inSize, size_t iAt=0)
Definition: StdBuf.h:153

References Buf, fSecondPass, iPos, iSize, and StdBuf::Write().

Here is the call graph for this function:

◆ Separator()

virtual bool StdCompiler::Separator ( Sep  eSep = SEP_SEP)
inlinevirtualinherited

Reimplemented in StdCompilerINIRead, and StdCompilerINIWrite.

Definition at line 119 of file StdCompiler.h.

119 { return true; }

Referenced by C4ValueArray::CompileFunc(), C4Set< T >::CompileFunc(), StdBuf::CompileFunc(), C4ValueNumbers::CompileFunc(), C4ControlPlayerControl::ControlItem::CompileFunc(), C4PlayerControl::CSync::ControlDownState::CompileFunc(), C4DrawTransform::CompileFunc(), C4KeyEventData::CompileFunc(), C4MessageBoardQuery::CompileFunc(), C4SVal::CompileFunc(), C4Rect::CompileFunc(), C4TargetRect::CompileFunc(), C4Network2Address::CompileFunc(), C4DefGraphicsAdapt::CompileFunc(), C4GraphicsOverlay::CompileFunc(), C4GraphicsOverlayListAdapt::CompileFunc(), StdArrayAdapt< T, M >::CompileFunc(), StdArrayDefaultAdapt< T, D, M >::CompileFunc(), StdArrayDefaultArrayAdapt< T, D, M >::CompileFunc(), StdSTLContainerAdapt< C >::CompileFunc(), StdBitfieldAdapt< T >::CompileFunc(), C4Network2ResChunkData::CompileFunc(), C4ValueProviderLinear::CompileFunc(), C4ValueProviderX::CompileFunc(), C4ValueProviderY::CompileFunc(), C4ValueProviderR::CompileFunc(), C4ValueProviderAbsX::CompileFunc(), C4ValueProviderAbsY::CompileFunc(), C4ValueProviderDist::CompileFunc(), C4ValueProviderXDir::CompileFunc(), C4ValueProviderYDir::CompileFunc(), C4ValueProviderRDir::CompileFunc(), C4ValueProviderAbsRDir::CompileFunc(), C4ValueProviderCosR::CompileFunc(), C4ValueProviderSinR::CompileFunc(), C4ValueProviderCosV::CompileFunc(), C4ValueProviderSinV::CompileFunc(), C4ValueProviderAction::CompileFunc(), C4GameVersion::CompileFunc(), C4NameList::CompileFunc(), C4Effect::CompileFunc(), C4Command::CompileFunc(), C4Property::CompileFunc(), C4PropList::CompileFunc(), C4Value::CompileFunc(), C4ValueMapData::CompileFunc(), C4PropListNumbered::CompileFunc(), C4KeyCodeEx::CompileFunc(), C4ValueNumbers::CompileValue(), and C4PropListStatic::RefCompileFunc().

Here is the caller graph for this function:

◆ SeparatorToChar()

char StdCompiler::SeparatorToChar ( Sep  eSep)
staticprotectedinherited

Definition at line 32 of file StdCompiler.cpp.

33 {
34  switch (eSep)
35  {
36  case SEP_SEP: return ',';
37  case SEP_SEP2: return ';';
38  case SEP_SET: return '=';
39  case SEP_PART: return '.';
40  case SEP_PART2: return ':';
41  case SEP_PLUS: return '+';
42  case SEP_START: return '(';
43  case SEP_END: return ')';
44  case SEP_START2: return '[';
45  case SEP_END2: return ']';
46  case SEP_VLINE: return '|';
47  case SEP_DOLLAR: return '$';
48  default: assert(!"Unhandled Separator value");
49  }
50  return ' ';
51 }

References StdCompiler::SEP_DOLLAR, StdCompiler::SEP_END, StdCompiler::SEP_END2, StdCompiler::SEP_PART, StdCompiler::SEP_PART2, StdCompiler::SEP_PLUS, StdCompiler::SEP_SEP, StdCompiler::SEP_SEP2, StdCompiler::SEP_SET, StdCompiler::SEP_START, StdCompiler::SEP_START2, and StdCompiler::SEP_VLINE.

Referenced by StdCompilerINIWrite::Separator(), and StdCompilerINIRead::Separator().

Here is the caller graph for this function:

◆ setRuntimeWritesAllowed()

virtual void StdCompiler::setRuntimeWritesAllowed ( int32_t  iChange)
inlinevirtualinherited

Definition at line 68 of file StdCompiler.h.

68 { }

Referenced by StdRuntimeValueAdapt< T >::CompileFunc().

Here is the caller graph for this function:

◆ setWarnCallback()

void StdCompiler::setWarnCallback ( WarnCBT  pnWarnCB,
void *  pData 
)
inlineinherited

Definition at line 282 of file StdCompiler.h.

282 { pWarnCB = pnWarnCB; pWarnData = pData; }

◆ String() [1/3]

void StdCompilerBinWrite::String ( char **  pszString,
RawCompileType  eType = RCT_Escaped 
)
overridevirtual

Implements StdCompiler.

Definition at line 80 of file StdCompiler.cpp.

81 {
82  if (*pszString)
83  WriteData(*pszString, strlen(*pszString) + 1);
84  else
85  WriteValue('\0');
86 }
void WriteData(const void *pData, size_t iSize)

References WriteData(), and WriteValue().

Here is the call graph for this function:

◆ String() [2/3]

void StdCompilerBinWrite::String ( char *  szString,
size_t  iMaxLength,
RawCompileType  eType = RCT_Escaped 
)
overridevirtual

Implements StdCompiler.

Definition at line 76 of file StdCompiler.cpp.

77 {
78  WriteData(szString, strlen(szString) + 1);
79 }

References WriteData().

Here is the call graph for this function:

◆ String() [3/3]

void StdCompilerBinWrite::String ( std::string &  str,
RawCompileType  eType = RCT_Escaped 
)
overridevirtual

Implements StdCompiler.

Definition at line 88 of file StdCompiler.cpp.

89 {
90  WriteData(str.c_str(), str.size() + 1);
91 }

References WriteData().

Here is the call graph for this function:

◆ Value() [1/9]

void StdCompiler::Value ( bool &  rBool)
inlineinherited

Definition at line 170 of file StdCompiler.h.

170 { Boolean(rBool); }
virtual void Boolean(bool &rBool)=0

References StdCompiler::Boolean().

Here is the call graph for this function:

◆ Value() [2/9]

template<class T >
void StdCompiler::Value ( const T &  rStruct)
inlineinherited

Definition at line 161 of file StdCompiler.h.

161 { rStruct.CompileFunc(this); }

Referenced by C4MusicSystem::CompileFunc(), C4ValueArray::CompileFunc(), C4Set< T >::CompileFunc(), StdBuf::CompileFunc(), C4ValueNumbers::CompileFunc(), EditorWindowState::CompileFunc(), C4NetIO::EndpointAddress::CompileFunc(), C4ConfigGeneral::CompileFunc(), C4ConfigDeveloper::CompileFunc(), C4ConfigGraphics::CompileFunc(), C4ConfigSound::CompileFunc(), C4ConfigNetwork::CompileFunc(), C4ConfigStartup::CompileFunc(), C4ConfigLobby::CompileFunc(), C4ConfigIRC::CompileFunc(), C4ConfigControls::CompileFunc(), C4ConfigSecurity::CompileFunc(), C4Config::CompileFunc(), C4ParticleDefCore::CompileFunc(), C4ConfigGamepad::CompileFunc(), C4Game::CompileFunc(), C4UpdatePackageCore::CompileFunc(), C4ControlPlayerControl::ControlItem::CompileFunc(), C4GameRes::CompileFunc(), C4GameResList::CompileFunc(), C4PlayerControlDef::CompileFunc(), C4PlayerControlDefs::CompileFunc(), C4PlayerControlAssignment::CompileFunc(), C4PlayerControlAssignmentSet::CompileFunc(), C4PlayerControlAssignmentSets::CompileFunc(), C4PlayerControlFile::CompileFunc(), C4PlayerControl::CSync::ControlDownState::CompileFunc(), C4PlayerControl::CSync::CompileFunc(), C4PlayerControl::CompileFunc(), C4PlayerInfo::CompileFunc(), C4ClientPlayerInfos::CompileFunc(), C4PlayerInfoList::CompileFunc(), C4RecordChunk::CompileFunc(), C4RoundResultsPlayer::CompileFunc(), C4RoundResultsPlayers::CompileFunc(), C4RoundResults::CompileFunc(), C4Team::CompileFunc(), C4TeamList::CompileFunc(), C4DrawTransform::CompileFunc(), C4FolderHead::CompileFunc(), C4Folder::CompileFunc(), C4KeyEventData::CompileFunc(), C4CustomKey::CompileFunc(), C4KeyboardInput::CompileFunc(), C4MessageBoardQuery::CompileFunc(), C4Scoreboard::CompileFunc(), C4MapFolderData::CompileFunc(), C4Landscape::CompileFunc(), C4MaterialReaction::CompileFunc(), C4MaterialCore::CompileFunc(), C4SVal::CompileFunc(), C4SDefinitions::CompileFunc(), C4SPlrStart::CompileFunc(), C4SLandscape::CompileFunc(), C4SWeather::CompileFunc(), C4SAnimals::CompileFunc(), C4SEnvironment::CompileFunc(), C4Sky::CompileFunc(), C4Weather::CompileFunc(), C4FoWBeam::CompileFunc(), C4FoWLightSection::CompileFunc(), C4StrValAdapt< T >::CompileFunc(), C4Rect::CompileFunc(), C4TargetRect::CompileFunc(), StdSubMeshInstance::CompileFunc(), StdMeshInstance::SerializableValueProvider::CompileFunc(), C4NetpuncherID::CompileFunc(), C4Client::CompileFunc(), C4ClientList::CompileFunc(), DisconnectData::CompileFunc(), C4LeagueRequestHead::CompileFunc(), C4LeagueReportDisconnectHead::CompileFunc(), C4LeagueRequestHeadEnd::CompileFunc(), C4LeagueResponseHead::CompileFunc(), C4LeagueResponseHeadStart::CompileFunc(), C4LeagueResponseHeadUpdate::CompileFunc(), C4LeagueResponseHeadAuthCheck::CompileFunc(), C4Network2Address::CompileFunc(), C4Network2Reference::CompileFunc(), C4Def::CompileFunc(), C4DefGraphicsAdapt::CompileFunc(), C4GraphicsOverlay::CompileFunc(), C4GraphicsOverlayListAdapt::CompileFunc(), C4ObjectInfoCore::CompileFunc(), C4RoundResult::CompileFunc(), C4PlayerInfoCore::CompileFunc(), C4Action::CompileFunc(), C4ObjectListDumpHelper::CompileFunc(), C4ObjectPtr::CompileFunc(), C4ScenarioParameterDef::Option::CompileFunc(), C4ScenarioParameterDef::CompileFunc(), C4ScenarioParameterDefs::CompileFunc(), C4ScenarioParameters::CompileFunc(), StdDefaultAdapt< T, D >::CompileFunc(), StdNamingAdapt< T >::CompileFunc(), StdNamingDefaultAdapt< T, D >::CompileFunc(), StdDecompileAdapt< T >::CompileFunc(), StdRuntimeValueAdapt< T >::CompileFunc(), StdIntAdapt< T, int_t >::CompileFunc(), StdCastAdapt< T, to_t >::CompileFunc(), StdArrayAdapt< T, M >::CompileFunc(), StdArrayDefaultAdapt< T, D, M >::CompileFunc(), StdArrayDefaultArrayAdapt< T, D, M >::CompileFunc(), StdInsertAdapt< T, I >::CompileFunc(), StdSTLContainerAdapt< C >::CompileFunc(), StdIntPackAdapt< T >::CompileFunc(), StdEnumAdapt< T, int_t >::CompileFunc(), StdBitfieldAdapt< T >::CompileFunc(), StdNamingCountAdapt< int_t >::CompileFunc(), C4NetFilenameAdapt::CompileFunc(), C4ControlPacket::CompileFunc(), C4Control::CompileFunc(), C4PacketPlayerInfoUpdRequest::CompileFunc(), C4PacketPlayerInfo::CompileFunc(), C4PktDebugRec::CompileFunc(), C4PacketLeagueRoundResults::CompileFunc(), C4GameLobby::C4PacketCountdown::CompileFunc(), C4GameLobby::C4PacketSetScenarioParameter::CompileFunc(), C4ClientCore::CompileFunc(), C4GameControlPacket::CompileFunc(), C4PacketControlReq::CompileFunc(), C4PacketControlPkt::CompileFunc(), C4PacketExecSyncCtrl::CompileFunc(), C4PacketJoinData::CompileFunc(), C4PacketActivateReq::CompileFunc(), C4PacketAddr::CompileFunc(), C4PacketTCPSimOpen::CompileFunc(), C4PacketPing::CompileFunc(), C4PacketConn::CompileFunc(), C4PacketConnRe::CompileFunc(), C4PacketFwd::CompileFunc(), C4PacketPostMortem::CompileFunc(), C4Network2ResCore::CompileFunc(), C4Network2ResChunkData::CompileFunc(), C4Network2ResChunk::CompileFunc(), C4PacketResStatus::CompileFunc(), C4PacketResDiscover::CompileFunc(), C4PacketResRequest::CompileFunc(), C4PktBuf::CompileFunc(), C4IDPacket::CompileFunc(), C4PacketList::CompileFunc(), C4ValueProviderLinear::CompileFunc(), C4ValueProviderX::CompileFunc(), C4ValueProviderY::CompileFunc(), C4ValueProviderR::CompileFunc(), C4ValueProviderAbsX::CompileFunc(), C4ValueProviderAbsY::CompileFunc(), C4ValueProviderDist::CompileFunc(), C4ValueProviderXDir::CompileFunc(), C4ValueProviderYDir::CompileFunc(), C4ValueProviderRDir::CompileFunc(), C4ValueProviderAbsRDir::CompileFunc(), C4ValueProviderCosR::CompileFunc(), C4ValueProviderSinR::CompileFunc(), C4ValueProviderCosV::CompileFunc(), C4ValueProviderSinV::CompileFunc(), C4ValueProviderAction::CompileFunc(), StdMeshInstance::CompileFunc(), C4GameVersion::CompileFunc(), C4Network2Status::CompileFunc(), C4AulScriptEngine::CompileFunc(), C4SHead::CompileFunc(), C4SGame::CompileFunc(), C4Scenario::CompileFunc(), C4NameList::CompileFunc(), C4ObjectList::CompileFunc(), C4Effect::CompileFunc(), C4GameParameters::CompileFunc(), C4Command::CompileFunc(), C4Object::CompileFunc(), C4Player::CompileFunc(), C4Property::CompileFunc(), C4PropList::CompileFunc(), C4Value::CompileFunc(), C4ValueMapData::CompileFunc(), C4LSector::CompileFunc(), C4PropListNumbered::CompileFunc(), C4Shape::CompileFunc(), StdMeshInstanceAnimationNode::CompileFunc(), StdMeshInstance::AttachedMesh::CompileFunc(), ValidatedStdCopyStrBufBase::CompileFunc(), C4MeshDenumerator::CompileFunc(), C4KeyCodeEx::CompileFunc(), CompileNewFunc(), CompileNewFuncCtx(), C4ValueNumbers::CompileValue(), StdCompiler::DoCompilation(), C4Network2RefClient::GetReferences(), C4Playback::ReadBinary(), C4PropListStatic::RefCompileFunc(), StdPtrAdaptCompileFunc(), StdPtrAdaptDecompileNewFunc(), and unpack_class< T >::unpack().

◆ Value() [3/9]

void StdCompiler::Value ( int16_t &  rInt)
inlineinherited

Definition at line 166 of file StdCompiler.h.

166 { Word(rInt); }
virtual void Word(int16_t &rShort)=0

References StdCompiler::Word().

Here is the call graph for this function:

◆ Value() [4/9]

void StdCompiler::Value ( int32_t &  rInt)
inlineinherited

Definition at line 164 of file StdCompiler.h.

164 { DWord(rInt); }
virtual void DWord(int32_t &rInt)=0

References StdCompiler::DWord().

Here is the call graph for this function:

◆ Value() [5/9]

void StdCompiler::Value ( int8_t &  rInt)
inlineinherited

Definition at line 168 of file StdCompiler.h.

168 { Byte(rInt); }
virtual void Byte(int8_t &rByte)=0

References StdCompiler::Byte().

Here is the call graph for this function:

◆ Value() [6/9]

template<class T >
void StdCompiler::Value ( T &  rStruct)
inlineinherited

Definition at line 162 of file StdCompiler.h.

162 { CompileFunc(rStruct, this); }
void CompileFunc(T &rStruct, StdCompiler *pComp)
Definition: StdCompiler.h:301

References CompileFunc().

Here is the call graph for this function:

◆ Value() [7/9]

void StdCompiler::Value ( uint16_t &  rInt)
inlineinherited

Definition at line 167 of file StdCompiler.h.

167 { Word(rInt); }

References StdCompiler::Word().

Here is the call graph for this function:

◆ Value() [8/9]

void StdCompiler::Value ( uint32_t &  rInt)
inlineinherited

Definition at line 165 of file StdCompiler.h.

165 { DWord(rInt); }

References StdCompiler::DWord().

Here is the call graph for this function:

◆ Value() [9/9]

void StdCompiler::Value ( uint8_t &  rInt)
inlineinherited

Definition at line 169 of file StdCompiler.h.

169 { Byte(rInt); }

References StdCompiler::Byte().

Here is the call graph for this function:

◆ Warn()

void StdCompiler::Warn ( const char *  szWarning,
  ... 
)
inherited

Definition at line 21 of file StdCompiler.cpp.

22 {
23  // Got warning callback?
24  if (!pWarnCB) return;
25  // Format message
26  va_list args; va_start(args, szWarning);
27  StdStrBuf Msg; Msg.FormatV(szWarning, args);
28  // do callback
29  (*pWarnCB)(pWarnData, getPosition().getData(), Msg.getData());
30 }
void FormatV(const char *szFmt, va_list args)
Definition: StdBuf.cpp:182
const char * getData() const
Definition: StdBuf.h:442

References StdStrBuf::FormatV(), StdStrBuf::getData(), and StdCompiler::getPosition().

Referenced by StdCompilerINIRead::Byte(), StdEnumAdapt< T, int_t >::CompileFunc(), StdBitfieldAdapt< T >::CompileFunc(), StdCompilerINIRead::CreateNameTree(), StdCompilerINIRead::NameEnd(), StdCompilerINIRead::Raw(), StdCompilerINIRead::ReadEscapedChar(), StdCompilerINIRead::ReadString(), and StdCompilerINIRead::Word().

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

◆ Word() [1/2]

void StdCompilerBinWrite::Word ( int16_t &  rShort)
overridevirtual

Implements StdCompiler.

Definition at line 70 of file StdCompiler.cpp.

70 { WriteValue(rShort); }

References WriteValue().

Here is the call graph for this function:

◆ Word() [2/2]

void StdCompilerBinWrite::Word ( uint16_t &  rShort)
overridevirtual

Implements StdCompiler.

Definition at line 71 of file StdCompiler.cpp.

71 { WriteValue(rShort); }

References WriteValue().

Here is the call graph for this function:

◆ WriteData()

void StdCompilerBinWrite::WriteData ( const void *  pData,
size_t  iSize 
)
protected

Definition at line 102 of file StdCompiler.cpp.

103 {
104  // Copy data
105  if (fSecondPass)
106  Buf.Write(pData, iSize, iPos);
107  iPos += iSize;
108 }

References Buf, fSecondPass, iPos, iSize, and StdBuf::Write().

Referenced by String().

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

◆ WriteValue()

template<class T >
void StdCompilerBinWrite::WriteValue ( const T &  rValue)
protected

Definition at line 94 of file StdCompiler.cpp.

95 {
96  // Copy data
97  if (fSecondPass)
98  *getMBufPtr<T>(Buf, iPos) = rValue;
99  iPos += sizeof(rValue);
100 }

References Buf, fSecondPass, and iPos.

Referenced by Boolean(), Byte(), Character(), DWord(), String(), and Word().

Here is the caller graph for this function:

Member Data Documentation

◆ Buf

StdBuf StdCompilerBinWrite::Buf
protected

Definition at line 477 of file StdCompiler.h.

Referenced by BeginSecond(), getOutput(), Raw(), WriteData(), and WriteValue().

◆ fSecondPass

bool StdCompilerBinWrite::fSecondPass
protected

Definition at line 475 of file StdCompiler.h.

Referenced by Begin(), BeginSecond(), Raw(), WriteData(), and WriteValue().

◆ iPos

int StdCompilerBinWrite::iPos
protected

Definition at line 476 of file StdCompiler.h.

Referenced by Begin(), BeginSecond(), Raw(), WriteData(), and WriteValue().


The documentation for this class was generated from the following files: