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 561 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_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_Global] = "Global";
169  P[P_Scenario] = "Scenario";
170  P[P_JumpSpeed] = "JumpSpeed";
171  P[P_BackgroundColor] = "BackgroundColor";
172  P[P_Decoration] = "Decoration";
173  P[P_Symbol] = "Symbol";
174  P[P_Target] = "Target";
175  P[P_Std] = "Std";
176  P[P_Text] = "Text";
177  P[P_GraphicsName] = "GraphicsName";
178  P[P_OnClick] = "OnClick";
179  P[P_OnMouseIn] = "OnMouseIn";
180  P[P_OnMouseOut] = "OnMouseOut";
181  P[P_OnClose] = "OnClose";
182  P[P_ID] = "ID";
183  P[P_Style] = "Style";
184  P[P_Player] = "Player";
185  P[P_Margin] = "Margin";
186  P[P_Algo] = "Algo";
187  P[P_Layer] = "Layer";
188  P[P_Seed] = "Seed";
189  P[P_Ratio] = "Ratio";
190  P[P_FixedOffset] = "FixedOffset";
191  P[P_Op] = "Op";
192  P[P_R] = "R";
193  P[P_Scale] = "Scale";
194  P[P_Amplitude] = "Amplitude";
195  P[P_Iterations] = "Iterations";
196  P[P_Empty] = "Empty";
197  P[P_Open] = "Open";
198  P[P_Left] = "Left";
199  P[P_Top] = "Top";
200  P[P_Right] = "Right";
201  P[P_Bottom] = "Bottom";
202  P[P_Filter] = "Filter";
203  P[P_ForceX] = "ForceX";
204  P[P_ForceY] = "ForceY";
205  P[P_G] = "G";
206  P[P_B] = "B";
207  P[P_Alpha] = "Alpha";
208  P[P_DampingX] = "DampingX";
209  P[P_DampingY] = "DampingY";
210  P[P_Size] = "Size";
211  P[P_Rotation] = "Rotation";
212  P[P_BlitMode] = "BlitMode";
213  P[P_Phase] = "Phase";
214  P[P_Stretch] = "Stretch";
215  P[P_CollisionVertex] = "CollisionVertex";
216  P[P_CollisionDensity] = "CollisionDensity";
217  P[P_OnCollision] = "OnCollision";
218  P[P_Distance] = "Distance";
219  P[P_Smoke] = "Smoke";
220  P[P_Source] = "Source";
221  P[P_Color] = "Color";
222  P[P_EditCursorCommands] = "EditCursorCommands";
223  P[P_IsPointContained] = "IsPointContained";
224  P[P_GetRandomPoint] = "GetRandomPoint";
225  P[P_Type] = "Type";
226  P[P_Reverb_Density] = "Reverb_Density";
227  P[P_Reverb_Diffusion] = "Reverb_Diffusion";
228  P[P_Reverb_Gain] = "Reverb_Gain";
229  P[P_Reverb_GainHF] = "Reverb_GainHF";
230  P[P_Reverb_Decay_Time] = "Reverb_Decay_Time";
231  P[P_Reverb_Decay_HFRatio] = "Reverb_Decay_HFRatio";
232  P[P_Reverb_Reflections_Gain] = "Reverb_Reflections_Gain";
233  P[P_Reverb_Reflections_Delay] = "Reverb_Reflections_Delay";
234  P[P_Reverb_Late_Reverb_Gain] = "Reverb_Late_Reverb_Gain";
235  P[P_Reverb_Late_Reverb_Delay] = "Reverb_Late_Reverb_Delay";
236  P[P_Reverb_Air_Absorption_GainHF] = "Reverb_Air_Absorption_GainHF";
237  P[P_Reverb_Room_Rolloff_Factor] = "Reverb_Room_Rolloff_Factor";
238  P[P_Reverb_Decay_HFLimit] = "Reverb_Decay_HFLimit";
239  P[P_Echo_Delay] = "Echo_Delay";
240  P[P_Echo_LRDelay] = "Echo_LRDelay";
241  P[P_Echo_Damping] = "Echo_Damping";
242  P[P_Echo_Feedback] = "Echo_Feedback";
243  P[P_Echo_Spread] = "Echo_Spread";
244  P[P_Equalizer_Low_Gain] = "Equalizer_Low_Gain";
245  P[P_Equalizer_Low_Cutoff] = "Equalizer_Low_Cutoff";
246  P[P_Equalizer_Mid1_Gain] = "Equalizer_Mid1_Gain";
247  P[P_Equalizer_Mid1_Center] = "Equalizer_Mid1_Center";
248  P[P_Equalizer_Mid1_Width] = "Equalizer_Mid1_Width";
249  P[P_Equalizer_Mid2_Gain] = "Equalizer_Mid2_Gain";
250  P[P_Equalizer_Mid2_Center] = "Equalizer_Mid2_Center";
251  P[P_Equalizer_Mid2_Width] = "Equalizer_Mid2_Width";
252  P[P_Equalizer_High_Gain] = "Equalizer_High_Gain";
253  P[P_Equalizer_High_Cutoff] = "Equalizer_High_Cutoff";
254  P[P_LightOffset] = "LightOffset";
255  P[P_PlayList] = "PlayList";
256  P[P_MusicBreakMin] = "MusicBreakMin";
257  P[P_MusicBreakMax] = "MusicBreakMax";
258  P[P_MusicBreakChance] = "MusicBreakChance";
259  P[P_MusicMaxPositionMemory] = "MusicMaxPositionMemory";
260  P[P_InflameLandscape] = "InflameLandscape";
261  P[P_OptionKey] = "OptionKey";
262  P[P_ValueKey] = "ValueKey";
263  P[P_Value] = "Value";
264  P[P_DefaultValueFunction] = "DefaultValueFunction";
265  P[P_Delegate] = "Delegate";
266  P[P_VertexDelegate] = "VertexDelegate";
267  P[P_EdgeDelegate] = "EdgeDelegate";
268  P[P_HorizontalFix] = "HorizontalFix";
269  P[P_VerticalFix] = "VerticalFix";
270  P[P_StructureFix] = "StructureFix";
271  P[P_OnUpdate] = "OnUpdate";
272  P[P_EditorPropertyChanged] = "EditorPropertyChanged";
273  P[P_Min] = "Min";
274  P[P_Max] = "Max";
275  P[P_Set] = "Set";
276  P[P_SetGlobal] = "SetGlobal";
277  P[P_SetRoot] = "SetRoot";
278  P[P_Options] = "Options";
279  P[P_Key] = "Key";
280  P[P_AsyncGet] = "AsyncGet";
281  P[P_Get] = "Get";
282  P[P_Relative] = "Relative";
283  P[P_CanMoveCenter] = "CanMoveCenter";
284  P[P_StartFromObject] = "StartFromObject";
285  P[P_Storage] = "Storage";
286  P[P_Elements] = "Elements";
287  P[P_EditOnSelection] = "EditOnSelection";
288  P[P_EditorProps] = "EditorProps";
289  P[P_DefaultEditorProp] = "DefaultEditorProp";
290  P[P_EditorActions] = "EditorActions";
291  P[P_CopyDefault] = "CopyDefault";
292  P[P_Display] = "Display";
293  P[P_DefaultValue] = "DefaultValue";
294  P[P_DefinitionPriority] = "DefinitionPriority";
295  P[P_Group] = "Group";
296  P[P_Command] = "Command";
297  P[P_Select] = "Select";
298  P[P_DescendPath] = "DescendPath";
299  P[P_EmptyName] = "EmptyName";
300  P[P_ShortName] = "ShortName";
301  P[P_EditorHelp] = "EditorHelp";
302  P[P_Description] = "Description";
303  P[P_AllowEditing] = "AllowEditing";
304  P[P_EditorInitialize] = "EditorInitialize";
305  P[P_EditorPlacementLimit] = "EditorPlacementLimit";
306  P[P_EditorCollection] = "EditorCollection";
307  P[P_Sorted] = "Sorted";
308  P[P_Uniforms] = "Uniforms";
309  P[P_ForceSerialization] = "ForceSerialization";
310  P[P_DrawArrows] = "DrawArrows";
311  P[P_SCENPAR] = "SCENPAR";
312  P[P_Translatable] = "Translatable";
313  P[P_Function] = "Function";
314  P[P_Translate] = "Translate";
315  P[DFA_WALK] = "WALK";
316  P[DFA_FLIGHT] = "FLIGHT";
317  P[DFA_KNEEL] = "KNEEL";
318  P[DFA_SCALE] = "SCALE";
319  P[DFA_HANGLE] = "HANGLE";
320  P[DFA_DIG] = "DIG";
321  P[DFA_SWIM] = "SWIM";
322  P[DFA_THROW] = "THROW";
323  P[DFA_BRIDGE] = "BRIDGE";
324  P[DFA_PUSH] = "PUSH";
325  P[DFA_LIFT] = "LIFT";
326  P[DFA_FLOAT] = "FLOAT";
327  P[DFA_ATTACH] = "ATTACH";
328  P[DFA_CONNECT] = "CONNECT";
329  P[DFA_PULL] = "PULL";
330  // Prevent the individual strings from being deleted, they are not created with new
331  for (auto & i : P)
332  {
333  assert(i.GetCStr()); // all strings should be assigned
334  i.IncRef();
335  }
336 }
C4String P[P_LAST]
void IncRef()
Definition: C4StringTable.h:27

Here is the call graph for this function:

C4StringTable::~C4StringTable ( )
virtual

Definition at line 338 of file C4StringTable.cpp.

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

339 {
340 #ifdef _DEBUG
341  if(Set.GetSize() != P_LAST)
342  {
343  for (C4String * const * s = Set.First(); s; s = Set.Next(s))
344  {
345  if (*s >= &Strings.P[0] && *s < &Strings.P[P_LAST])
346  {
347  if ((*s)->RefCnt != 1)
348 #ifdef _WIN32
349  OutputDebugString(FormatString(" \"%s\" %d\n", (*s)->GetCStr(), (*s)->RefCnt).GetWideChar());
350 #else
351  fprintf(stderr, " \"%s\" %d\n", (*s)->GetCStr(), (*s)->RefCnt);
352 #endif
353  }
354  else
355 #ifdef _WIN32
356  OutputDebugString(FormatString("\"%s\" %d\n", (*s)->GetCStr(), (*s)->RefCnt).GetWideChar());
357 #else
358  fprintf(stderr, "\"%s\" %d\n", (*s)->GetCStr(), (*s)->RefCnt);
359 #endif
360  }
361  }
362 #endif
363  assert(Set.GetSize() == P_LAST);
364 }
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 375 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().

376 {
377  return Set.Get(strString);
378 }
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 366 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().

367 {
368  C4String * s = FindString(String.getData());
369  if (s)
370  return s;
371  else
372  return new C4String(String);
373 }
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 568 of file C4StringTable.h.

References RegString().

Referenced by RegString().

568 { 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 574 of file C4StringTable.h.

Referenced by RegString().

Member Data Documentation


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