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 558 of file C4StringTable.h.

Constructor & Destructor Documentation

C4StringTable::C4StringTable ( )

Definition at line 82 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_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_LAST, 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_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.

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

Here is the call graph for this function:

C4StringTable::~C4StringTable ( )
virtual

Definition at line 337 of file C4StringTable.cpp.

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

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

Here is the call graph for this function:

Member Function Documentation

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

Definition at line 374 of file C4StringTable.cpp.

References C4Set< T >::Get().

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

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

366 {
367  C4String * s = FindString(String.getData());
368  if (s)
369  return s;
370  else
371  return new C4String(String);
372 }
const char * getData() const
Definition: StdBuf.h:450
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 565 of file C4StringTable.h.

References RegString().

Referenced by RegString().

565 { 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 571 of file C4StringTable.h.

Referenced by RegString().

Member Data Documentation


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