OpenClonk
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros
C4StringTable Class Reference

#include <C4StringTable.h>

Collaboration diagram for C4StringTable:
[legend]

Public Member Functions

 C4StringTable ()
 
virtual ~C4StringTable ()
 
C4StringRegString (StdStrBuf String)
 
C4StringRegString (const char *s)
 
C4StringFindString (const char *strString) const
 

Public Attributes

C4String P [P_LAST]
 

Friends

class C4String
 

Detailed Description

Definition at line 562 of file C4StringTable.h.

Constructor & Destructor Documentation

C4StringTable::C4StringTable ( )

Definition at line 80 of file C4StringTable.cpp.

References DFA_ATTACH, DFA_BRIDGE, DFA_CONNECT, DFA_DIG, DFA_FLIGHT, DFA_FLOAT, DFA_HANGLE, DFA_KNEEL, DFA_LIFT, DFA_PULL, DFA_PUSH, DFA_SCALE, DFA_SWIM, DFA_THROW, DFA_WALK, C4RefCnt::IncRef(), P, P_AbortCall, P_Accel, P_Action, P_ActMap, P_Algo, P_AllowEditing, P_Alpha, P_Amplitude, P_Animation, P_AsyncGet, P_Attach, P_B, P_BackgroundColor, P_Blasted, P_BlastIncinerate, P_BlitMode, P_BorderBound, P_Bottom, P_BreatheWater, P_CanMoveCenter, P_CausedBy, P_Collectible, P_CollisionDensity, P_CollisionVertex, P_Color, P_Command, P_CommandTarget, P_Construction, P_ContactCalls, P_ContactIncinerate, P_ContainBlast, P_CopyDefault, P_CorrosionResist, P_Damage, P_DampingX, P_DampingY, P_Decel, P_Decoration, P_DefaultEditorProp, P_DefaultValue, P_DefaultValueFunction, P_DefinitionPriority, P_Delay, P_Delegate, P_DescendPath, P_Description, P_Destruction, P_DigFree, P_Directions, P_Display, P_Distance, P_DrawArrows, P_Echo_Damping, P_Echo_Delay, P_Echo_Feedback, P_Echo_LRDelay, P_Echo_Spread, P_EdgeDelegate, P_Edges, P_EditCursorCommands, P_EditOnSelection, P_EditorActions, P_EditorCollection, P_EditorHelp, P_EditorInitialize, P_EditorPlacementLimit, P_EditorPropertyChanged, P_EditorProps, P_Effect, P_Elements, P_Empty, P_EmptyName, P_EndCall, P_Equalizer_High_Cutoff, P_Equalizer_High_Gain, P_Equalizer_Low_Cutoff, P_Equalizer_Low_Gain, P_Equalizer_Mid1_Center, P_Equalizer_Mid1_Gain, P_Equalizer_Mid1_Width, P_Equalizer_Mid2_Center, P_Equalizer_Mid2_Gain, P_Equalizer_Mid2_Width, P_FacetBase, P_FacetTargetStretch, P_FacetTopFace, P_Filter, P_FixedOffset, P_FlipDir, P_ForceSerialization, P_ForceX, P_ForceY, P_Function, P_G, P_Get, P_GetRandomPoint, P_Global, P_GraphicsName, P_Group, P_Hgt, P_hgt, P_Hold, P_HorizontalFix, P_ID, P_Idle, P_IncineratingObj, P_InflameLandscape, P_InLiquidAction, P_Interval, P_IsPointContained, P_Iterations, P_JumpSpeed, P_Key, P_Layer, P_Left, P_Length, P_LightOffset, P_LineAttach, P_LineColors, P_LineWidth, P_Margin, P_MaterialIncinerate, P_Max, P_MaxBreath, P_MaxEnergy, P_MeshTransformation, P_Min, P_Mode, P_MouseDrag, P_MouseDragImage, P_MusicBreakChance, P_MusicBreakMax, P_MusicBreakMin, P_MusicMaxPositionMemory, P_Name, P_NextAction, P_NoOtherAction, P_ObjectDisabled, P_OffX, P_OffY, P_OnClick, P_OnClose, P_OnCollision, P_OnMouseIn, P_OnMouseOut, P_OnUpdate, P_Op, P_Open, P_OptionKey, P_Options, P_Parallaxity, P_Phase, P_PhaseCall, P_PictureTransformation, P_Placement, P_Plane, P_Player, P_PlayList, P_Priority, P_Procedure, P_proplist, P_Proplist, P_Prototype, P_R, P_Ratio, P_Relative, P_Reverb_Air_Absorption_GainHF, P_Reverb_Decay_HFLimit, P_Reverb_Decay_HFRatio, P_Reverb_Decay_Time, P_Reverb_Density, P_Reverb_Diffusion, P_Reverb_Gain, P_Reverb_GainHF, P_Reverb_Late_Reverb_Delay, P_Reverb_Late_Reverb_Gain, P_Reverb_Reflections_Delay, P_Reverb_Reflections_Gain, P_Reverb_Room_Rolloff_Factor, P_Reverse, P_Right, P_Rotation, P_Scale, P_Scenario, P_SCENPAR, P_Seed, P_Select, P_Set, P_SetGlobal, P_SetRoot, P_ShortName, P_Size, P_Smoke, P_SolidMaskPlane, P_Sorted, P_Sound, P_Source, P_Speed, P_Start, P_StartCall, P_StartFromObject, P_Std, P_Step, P_Stop, P_Storage, P_Stretch, P_StructureFix, P_Style, P_Symbol, P_Target, P_Text, P_ThrowSpeed, P_Time, P_Timer, P_Tooltip, P_Top, P_Touchable, P_Translatable, P_Translate, P_TurnAction, P_Type, P_Uniforms, P_Value, P_ValueKey, P_VertexDelegate, P_VerticalFix, P_Vertices, P_Visibility, P_Wdt, P_wdt, P_X, P_x, P_Y, and P_y.

81 {
82  P[P_Prototype] = "Prototype";
83  P[P_Name] = "Name";
84  P[P_Priority] = "Priority";
85  P[P_Interval] = "Interval";
86  P[P_CommandTarget] = "CommandTarget";
87  P[P_Time] = "Time";
88  P[P_Construction] = "Construction";
89  P[P_Destruction] = "Destruction";
90  P[P_Start] = "Start";
91  P[P_Stop] = "Stop";
92  P[P_Timer] = "Timer";
93  P[P_Effect] = "Effect";
94  P[P_Damage] = "Damage";
95  P[P_Collectible] = "Collectible";
96  P[P_Touchable] = "Touchable";
97  P[P_ActMap] = "ActMap";
98  P[P_Procedure] = "Procedure";
99  P[P_Speed] = "Speed";
100  P[P_Accel] = "Accel";
101  P[P_Decel] = "Decel";
102  P[P_Attach] = "Attach";
103  P[P_Directions] = "Directions";
104  P[P_FlipDir] = "FlipDir";
105  P[P_Length] = "Length";
106  P[P_Delay] = "Delay";
107  P[P_X] = "X";
108  P[P_Y] = "Y";
109  P[P_x] = "x";
110  P[P_y] = "y";
111  P[P_Wdt] = "Wdt";
112  P[P_Hgt] = "Hgt";
113  P[P_wdt] = "wdt";
114  P[P_hgt] = "hgt";
115  P[P_Vertices] = "Vertices";
116  P[P_Edges] = "Edges";
117  P[P_LineWidth] = "LineWidth";
118  P[P_OffX] = "OffX";
119  P[P_OffY] = "OffY";
120  P[P_Proplist] = "Proplist";
121  P[P_proplist] = "proplist";
122  P[P_FacetBase] = "FacetBase";
123  P[P_FacetTopFace] = "FacetTopFace";
124  P[P_FacetTargetStretch] = "FacetTargetStretch";
125  P[P_NextAction] = "NextAction";
126  P[P_Hold] = "Hold";
127  P[P_Idle] = "Idle";
128  P[P_NoOtherAction] = "NoOtherAction";
129  P[P_StartCall] = "StartCall";
130  P[P_EndCall] = "EndCall";
131  P[P_AbortCall] = "AbortCall";
132  P[P_PhaseCall] = "PhaseCall";
133  P[P_Sound] = "Sound";
134  P[P_ObjectDisabled] = "ObjectDisabled";
135  P[P_DigFree] = "DigFree";
136  P[P_InLiquidAction] = "InLiquidAction";
137  P[P_TurnAction] = "TurnAction";
138  P[P_Reverse] = "Reverse";
139  P[P_Step] = "Step";
140  P[P_Animation] = "Animation";
141  P[P_Action] = "Action";
142  P[P_Visibility] = "Visibility";
143  P[P_Parallaxity] = "Parallaxity";
144  P[P_LineColors] = "LineColors";
145  P[P_LineAttach] = "LineAttach";
146  P[P_MouseDrag] = "MouseDrag";
147  P[P_MouseDragImage] = "MouseDragImage";
148  P[P_PictureTransformation] = "PictureTransformation";
149  P[P_MeshTransformation] = "MeshTransformation";
150  P[P_BreatheWater] = "BreatheWater";
151  P[P_CorrosionResist] = "CorrosionResist";
152  P[P_MaxEnergy] = "MaxEnergy";
153  P[P_MaxBreath] = "MaxBreath";
154  P[P_ThrowSpeed] = "ThrowSpeed";
155  P[P_Mode] = "Mode";
156  P[P_CausedBy] = "CausedBy";
157  P[P_Blasted] = "Blasted";
158  P[P_IncineratingObj] = "IncineratingObj";
159  P[P_Plane] = "Plane";
160  P[P_BorderBound] = "BorderBound";
161  P[P_ContactCalls] = "ContactCalls";
162  P[P_SolidMaskPlane] = "SolidMaskPlane";
163  P[P_Tooltip] = "Tooltip";
164  P[P_Placement] = "Placement";
165  P[P_ContainBlast] = "ContainBlast";
166  P[P_BlastIncinerate] = "BlastIncinerate";
167  P[P_ContactIncinerate] = "ContactIncinerate";
168  P[P_MaterialIncinerate] = "MaterialIncinerate";
169  P[P_Global] = "Global";
170  P[P_Scenario] = "Scenario";
171  P[P_JumpSpeed] = "JumpSpeed";
172  P[P_BackgroundColor] = "BackgroundColor";
173  P[P_Decoration] = "Decoration";
174  P[P_Symbol] = "Symbol";
175  P[P_Target] = "Target";
176  P[P_Std] = "Std";
177  P[P_Text] = "Text";
178  P[P_GraphicsName] = "GraphicsName";
179  P[P_OnClick] = "OnClick";
180  P[P_OnMouseIn] = "OnMouseIn";
181  P[P_OnMouseOut] = "OnMouseOut";
182  P[P_OnClose] = "OnClose";
183  P[P_ID] = "ID";
184  P[P_Style] = "Style";
185  P[P_Player] = "Player";
186  P[P_Margin] = "Margin";
187  P[P_Algo] = "Algo";
188  P[P_Layer] = "Layer";
189  P[P_Seed] = "Seed";
190  P[P_Ratio] = "Ratio";
191  P[P_FixedOffset] = "FixedOffset";
192  P[P_Op] = "Op";
193  P[P_R] = "R";
194  P[P_Scale] = "Scale";
195  P[P_Amplitude] = "Amplitude";
196  P[P_Iterations] = "Iterations";
197  P[P_Empty] = "Empty";
198  P[P_Open] = "Open";
199  P[P_Left] = "Left";
200  P[P_Top] = "Top";
201  P[P_Right] = "Right";
202  P[P_Bottom] = "Bottom";
203  P[P_Filter] = "Filter";
204  P[P_ForceX] = "ForceX";
205  P[P_ForceY] = "ForceY";
206  P[P_G] = "G";
207  P[P_B] = "B";
208  P[P_Alpha] = "Alpha";
209  P[P_DampingX] = "DampingX";
210  P[P_DampingY] = "DampingY";
211  P[P_Size] = "Size";
212  P[P_Rotation] = "Rotation";
213  P[P_BlitMode] = "BlitMode";
214  P[P_Phase] = "Phase";
215  P[P_Stretch] = "Stretch";
216  P[P_CollisionVertex] = "CollisionVertex";
217  P[P_CollisionDensity] = "CollisionDensity";
218  P[P_OnCollision] = "OnCollision";
219  P[P_Distance] = "Distance";
220  P[P_Smoke] = "Smoke";
221  P[P_Source] = "Source";
222  P[P_Color] = "Color";
223  P[P_EditCursorCommands] = "EditCursorCommands";
224  P[P_IsPointContained] = "IsPointContained";
225  P[P_GetRandomPoint] = "GetRandomPoint";
226  P[P_Type] = "Type";
227  P[P_Reverb_Density] = "Reverb_Density";
228  P[P_Reverb_Diffusion] = "Reverb_Diffusion";
229  P[P_Reverb_Gain] = "Reverb_Gain";
230  P[P_Reverb_GainHF] = "Reverb_GainHF";
231  P[P_Reverb_Decay_Time] = "Reverb_Decay_Time";
232  P[P_Reverb_Decay_HFRatio] = "Reverb_Decay_HFRatio";
233  P[P_Reverb_Reflections_Gain] = "Reverb_Reflections_Gain";
234  P[P_Reverb_Reflections_Delay] = "Reverb_Reflections_Delay";
235  P[P_Reverb_Late_Reverb_Gain] = "Reverb_Late_Reverb_Gain";
236  P[P_Reverb_Late_Reverb_Delay] = "Reverb_Late_Reverb_Delay";
237  P[P_Reverb_Air_Absorption_GainHF] = "Reverb_Air_Absorption_GainHF";
238  P[P_Reverb_Room_Rolloff_Factor] = "Reverb_Room_Rolloff_Factor";
239  P[P_Reverb_Decay_HFLimit] = "Reverb_Decay_HFLimit";
240  P[P_Echo_Delay] = "Echo_Delay";
241  P[P_Echo_LRDelay] = "Echo_LRDelay";
242  P[P_Echo_Damping] = "Echo_Damping";
243  P[P_Echo_Feedback] = "Echo_Feedback";
244  P[P_Echo_Spread] = "Echo_Spread";
245  P[P_Equalizer_Low_Gain] = "Equalizer_Low_Gain";
246  P[P_Equalizer_Low_Cutoff] = "Equalizer_Low_Cutoff";
247  P[P_Equalizer_Mid1_Gain] = "Equalizer_Mid1_Gain";
248  P[P_Equalizer_Mid1_Center] = "Equalizer_Mid1_Center";
249  P[P_Equalizer_Mid1_Width] = "Equalizer_Mid1_Width";
250  P[P_Equalizer_Mid2_Gain] = "Equalizer_Mid2_Gain";
251  P[P_Equalizer_Mid2_Center] = "Equalizer_Mid2_Center";
252  P[P_Equalizer_Mid2_Width] = "Equalizer_Mid2_Width";
253  P[P_Equalizer_High_Gain] = "Equalizer_High_Gain";
254  P[P_Equalizer_High_Cutoff] = "Equalizer_High_Cutoff";
255  P[P_LightOffset] = "LightOffset";
256  P[P_PlayList] = "PlayList";
257  P[P_MusicBreakMin] = "MusicBreakMin";
258  P[P_MusicBreakMax] = "MusicBreakMax";
259  P[P_MusicBreakChance] = "MusicBreakChance";
260  P[P_MusicMaxPositionMemory] = "MusicMaxPositionMemory";
261  P[P_InflameLandscape] = "InflameLandscape";
262  P[P_OptionKey] = "OptionKey";
263  P[P_ValueKey] = "ValueKey";
264  P[P_Value] = "Value";
265  P[P_DefaultValueFunction] = "DefaultValueFunction";
266  P[P_Delegate] = "Delegate";
267  P[P_VertexDelegate] = "VertexDelegate";
268  P[P_EdgeDelegate] = "EdgeDelegate";
269  P[P_HorizontalFix] = "HorizontalFix";
270  P[P_VerticalFix] = "VerticalFix";
271  P[P_StructureFix] = "StructureFix";
272  P[P_OnUpdate] = "OnUpdate";
273  P[P_EditorPropertyChanged] = "EditorPropertyChanged";
274  P[P_Min] = "Min";
275  P[P_Max] = "Max";
276  P[P_Set] = "Set";
277  P[P_SetGlobal] = "SetGlobal";
278  P[P_SetRoot] = "SetRoot";
279  P[P_Options] = "Options";
280  P[P_Key] = "Key";
281  P[P_AsyncGet] = "AsyncGet";
282  P[P_Get] = "Get";
283  P[P_Relative] = "Relative";
284  P[P_CanMoveCenter] = "CanMoveCenter";
285  P[P_StartFromObject] = "StartFromObject";
286  P[P_Storage] = "Storage";
287  P[P_Elements] = "Elements";
288  P[P_EditOnSelection] = "EditOnSelection";
289  P[P_EditorProps] = "EditorProps";
290  P[P_DefaultEditorProp] = "DefaultEditorProp";
291  P[P_EditorActions] = "EditorActions";
292  P[P_CopyDefault] = "CopyDefault";
293  P[P_Display] = "Display";
294  P[P_DefaultValue] = "DefaultValue";
295  P[P_DefinitionPriority] = "DefinitionPriority";
296  P[P_Group] = "Group";
297  P[P_Command] = "Command";
298  P[P_Select] = "Select";
299  P[P_DescendPath] = "DescendPath";
300  P[P_EmptyName] = "EmptyName";
301  P[P_ShortName] = "ShortName";
302  P[P_EditorHelp] = "EditorHelp";
303  P[P_Description] = "Description";
304  P[P_AllowEditing] = "AllowEditing";
305  P[P_EditorInitialize] = "EditorInitialize";
306  P[P_EditorPlacementLimit] = "EditorPlacementLimit";
307  P[P_EditorCollection] = "EditorCollection";
308  P[P_Sorted] = "Sorted";
309  P[P_Uniforms] = "Uniforms";
310  P[P_ForceSerialization] = "ForceSerialization";
311  P[P_DrawArrows] = "DrawArrows";
312  P[P_SCENPAR] = "SCENPAR";
313  P[P_Translatable] = "Translatable";
314  P[P_Function] = "Function";
315  P[P_Translate] = "Translate";
316  P[DFA_WALK] = "WALK";
317  P[DFA_FLIGHT] = "FLIGHT";
318  P[DFA_KNEEL] = "KNEEL";
319  P[DFA_SCALE] = "SCALE";
320  P[DFA_HANGLE] = "HANGLE";
321  P[DFA_DIG] = "DIG";
322  P[DFA_SWIM] = "SWIM";
323  P[DFA_THROW] = "THROW";
324  P[DFA_BRIDGE] = "BRIDGE";
325  P[DFA_PUSH] = "PUSH";
326  P[DFA_LIFT] = "LIFT";
327  P[DFA_FLOAT] = "FLOAT";
328  P[DFA_ATTACH] = "ATTACH";
329  P[DFA_CONNECT] = "CONNECT";
330  P[DFA_PULL] = "PULL";
331  // Prevent the individual strings from being deleted, they are not created with new
332  for (auto & i : P)
333  {
334  assert(i.GetCStr()); // all strings should be assigned
335  i.IncRef();
336  }
337 }
C4String P[P_LAST]
void IncRef()
Definition: C4StringTable.h:27

Here is the call graph for this function:

C4StringTable::~C4StringTable ( )
virtual

Definition at line 339 of file C4StringTable.cpp.

References C4Set< T >::First(), FormatString(), C4Set< T >::GetSize(), GetWideChar(), C4Set< T >::Next(), P, P_LAST, s, and Strings.

340 {
341 #ifdef _DEBUG
342  if(Set.GetSize() != P_LAST)
343  {
344  for (C4String * const * s = Set.First(); s; s = Set.Next(s))
345  {
346  if (*s >= &Strings.P[0] && *s < &Strings.P[P_LAST])
347  {
348  if ((*s)->RefCnt != 1)
349 #ifdef _WIN32
350  OutputDebugString(FormatString(" \"%s\" %d\n", (*s)->GetCStr(), (*s)->RefCnt).GetWideChar());
351 #else
352  fprintf(stderr, " \"%s\" %d\n", (*s)->GetCStr(), (*s)->RefCnt);
353 #endif
354  }
355  else
356 #ifdef _WIN32
357  OutputDebugString(FormatString("\"%s\" %d\n", (*s)->GetCStr(), (*s)->RefCnt).GetWideChar());
358 #else
359  fprintf(stderr, "\"%s\" %d\n", (*s)->GetCStr(), (*s)->RefCnt);
360 #endif
361  }
362  }
363 #endif
364  assert(Set.GetSize() == P_LAST);
365 }
C4String P[P_LAST]
StdStrBuf::wchar_t_holder GetWideChar(const char *utf8, bool double_null_terminate=false)
T const * Next(T const *p) const
unsigned int GetSize() const
C4StringTable Strings
Definition: C4Globals.cpp:42
T const * First() const
#define s
StdStrBuf FormatString(const char *szFmt,...)
Definition: StdBuf.cpp:270

Here is the call graph for this function:

Member Function Documentation

C4String * C4StringTable::FindString ( const char *  strString) const

Definition at line 376 of file C4StringTable.cpp.

References C4Set< T >::Get().

Referenced by C4Value::CompileFunc(), C4PropList::GetFunc(), C4Game::GetTranslatedString(), RegString(), C4ScriptGuiWindowProperty::ToC4Value(), C4AulCompiler::PreparseAstVisitor::visit(), C4AulCompiler::CodegenAstVisitor::visit(), and C4AulCompiler::ConstexprEvaluator::visit().

377 {
378  return Set.Get(strString);
379 }
T & Get(H e) const

Here is the call graph for this function:

Here is the caller graph for this function:

C4String * C4StringTable::RegString ( StdStrBuf  String)

Definition at line 367 of file C4StringTable.cpp.

References C4String, FindString(), StdStrBuf::getData(), and s.

Referenced by C4Value::C4Value(), C4Property::CompileFunc(), C4Command::CompileFunc(), C4Value::CompileFunc(), C4Def::GetActionByName(), C4MapScriptHost::InitFunctionMap(), C4Def::Load(), C4ScenarioParameterDefs::RegisterScriptConstants(), C4Object::SetActionByName(), String(), C4ScriptGuiWindowProperty::ToC4Value(), C4ScriptGuiWindow::ToC4Value(), C4GraphicsOverlay::UpdateFacet(), C4AulCompiler::PreparseAstVisitor::visit(), C4AulCompiler::CodegenAstVisitor::visit(), C4AulCompiler::ConstexprEvaluator::visit(), and C4AulCompiler::ConstantResolver::visit().

368 {
369  C4String * s = FindString(String.getData());
370  if (s)
371  return s;
372  else
373  return new C4String(String);
374 }
const char * getData() const
Definition: StdBuf.h:442
C4String * FindString(const char *strString) const
friend class C4String
#define s

Here is the call graph for this function:

Here is the caller graph for this function:

C4String* C4StringTable::RegString ( const char *  s)
inline

Definition at line 569 of file C4StringTable.h.

References RegString().

Referenced by RegString().

569 { return RegString(StdStrBuf(s)); }
C4String * RegString(StdStrBuf String)
#define s

Here is the call graph for this function:

Here is the caller graph for this function:

Friends And Related Function Documentation

friend class C4String
friend

Definition at line 575 of file C4StringTable.h.

Referenced by RegString().

Member Data Documentation


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