Skip to content

Commit 3fac0c7

Browse files
authored
refactor(ini): Clean up INI type table and its search logic (TheSuperHackers#2511)
1 parent d2518fa commit 3fac0c7

File tree

1 file changed

+66
-67
lines changed
  • Core/GameEngine/Source/Common/INI

1 file changed

+66
-67
lines changed

Core/GameEngine/Source/Common/INI/INI.cpp

Lines changed: 66 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -78,70 +78,68 @@ struct BlockParse
7878
};
7979
static const BlockParse theTypeTable[] =
8080
{
81-
{ "AIData", INI::parseAIDataDefinition },
82-
{ "Animation", INI::parseAnim2DDefinition },
83-
{ "Armor", INI::parseArmorDefinition },
84-
{ "AudioEvent", INI::parseAudioEventDefinition },
85-
{ "AudioSettings", INI::parseAudioSettingsDefinition },
86-
{ "Bridge", INI::parseTerrainBridgeDefinition },
87-
{ "Campaign", INI::parseCampaignDefinition },
88-
{ "ChallengeGenerals", INI::parseChallengeModeDefinition },
89-
{ "CommandButton", INI::parseCommandButtonDefinition },
90-
{ "CommandMap", INI::parseMetaMapDefinition },
91-
{ "CommandSet", INI::parseCommandSetDefinition },
92-
{ "ControlBarScheme", INI::parseControlBarSchemeDefinition },
93-
{ "ControlBarResizer", INI::parseControlBarResizerDefinition },
94-
{ "CrateData", INI::parseCrateTemplateDefinition },
95-
{ "Credits", INI::parseCredits},
96-
{ "WindowTransition", INI::parseWindowTransitions},
97-
{ "DamageFX", INI::parseDamageFXDefinition },
98-
{ "DialogEvent", INI::parseDialogDefinition },
99-
{ "DrawGroupInfo", INI::parseDrawGroupNumberDefinition },
100-
{ "EvaEvent", INI::parseEvaEvent },
101-
{ "FXList", INI::parseFXListDefinition },
102-
{ "GameData", INI::parseGameDataDefinition },
103-
{ "InGameUI", INI::parseInGameUIDefinition },
104-
{ "Locomotor", INI::parseLocomotorTemplateDefinition },
105-
{ "Language", INI::parseLanguageDefinition },
106-
{ "MapCache", INI::parseMapCacheDefinition },
107-
{ "MapData", INI::parseMapDataDefinition },
108-
{ "MappedImage", INI::parseMappedImageDefinition },
109-
{ "MiscAudio", INI::parseMiscAudio},
110-
{ "Mouse", INI::parseMouseDefinition },
111-
{ "MouseCursor", INI::parseMouseCursorDefinition },
112-
{ "MultiplayerColor", INI::parseMultiplayerColorDefinition },
113-
{ "MultiplayerStartingMoneyChoice", INI::parseMultiplayerStartingMoneyChoiceDefinition },
114-
{ "OnlineChatColors", INI::parseOnlineChatColorDefinition },
115-
{ "MultiplayerSettings",INI::parseMultiplayerSettingsDefinition },
116-
{ "MusicTrack", INI::parseMusicTrackDefinition },
117-
{ "Object", INI::parseObjectDefinition },
118-
{ "ObjectCreationList", INI::parseObjectCreationListDefinition },
119-
{ "ObjectReskin", INI::parseObjectReskinDefinition },
120-
{ "ParticleSystem", INI::parseParticleSystemDefinition },
121-
{ "PlayerTemplate", INI::parsePlayerTemplateDefinition },
122-
{ "Road", INI::parseTerrainRoadDefinition },
123-
{ "Science", INI::parseScienceDefinition },
124-
{ "Rank", INI::parseRankDefinition },
125-
{ "SpecialPower", INI::parseSpecialPowerDefinition },
126-
{ "ShellMenuScheme", INI::parseShellMenuSchemeDefinition },
127-
{ "Terrain", INI::parseTerrainDefinition },
128-
{ "Upgrade", INI::parseUpgradeDefinition },
129-
{ "Video", INI::parseVideoDefinition },
130-
{ "WaterSet", INI::parseWaterSettingDefinition },
131-
{ "WaterTransparency", INI::parseWaterTransparencyDefinition},
132-
{ "Weather", INI::parseWeatherDefinition},
133-
{ "Weapon", INI::parseWeaponTemplateDefinition },
134-
{ "WebpageURL", INI::parseWebpageURLDefinition },
135-
{ "HeaderTemplate", INI::parseHeaderTemplateDefinition },
136-
{ "StaticGameLOD", INI::parseStaticGameLODDefinition },
137-
{ "DynamicGameLOD", INI::parseDynamicGameLODDefinition },
138-
{ "LODPreset", INI::parseLODPreset },
139-
{ "BenchProfile", INI::parseBenchProfile },
140-
{ "ReallyLowMHz", parseReallyLowMHz },
141-
{ "ScriptAction", ScriptEngine::parseScriptAction },
142-
{ "ScriptCondition", ScriptEngine::parseScriptCondition },
143-
144-
{ nullptr, nullptr },
81+
{ "AIData", INI::parseAIDataDefinition },
82+
{ "Animation", INI::parseAnim2DDefinition },
83+
{ "Armor", INI::parseArmorDefinition },
84+
{ "AudioEvent", INI::parseAudioEventDefinition },
85+
{ "AudioSettings", INI::parseAudioSettingsDefinition },
86+
{ "BenchProfile", INI::parseBenchProfile },
87+
{ "Bridge", INI::parseTerrainBridgeDefinition },
88+
{ "Campaign", INI::parseCampaignDefinition },
89+
{ "ChallengeGenerals", INI::parseChallengeModeDefinition },
90+
{ "CommandButton", INI::parseCommandButtonDefinition },
91+
{ "CommandMap", INI::parseMetaMapDefinition },
92+
{ "CommandSet", INI::parseCommandSetDefinition },
93+
{ "ControlBarResizer", INI::parseControlBarResizerDefinition },
94+
{ "ControlBarScheme", INI::parseControlBarSchemeDefinition },
95+
{ "CrateData", INI::parseCrateTemplateDefinition },
96+
{ "Credits", INI::parseCredits },
97+
{ "DamageFX", INI::parseDamageFXDefinition },
98+
{ "DialogEvent", INI::parseDialogDefinition },
99+
{ "DrawGroupInfo", INI::parseDrawGroupNumberDefinition },
100+
{ "DynamicGameLOD", INI::parseDynamicGameLODDefinition },
101+
{ "EvaEvent", INI::parseEvaEvent },
102+
{ "FXList", INI::parseFXListDefinition },
103+
{ "GameData", INI::parseGameDataDefinition },
104+
{ "HeaderTemplate", INI::parseHeaderTemplateDefinition },
105+
{ "InGameUI", INI::parseInGameUIDefinition },
106+
{ "LODPreset", INI::parseLODPreset },
107+
{ "Language", INI::parseLanguageDefinition },
108+
{ "Locomotor", INI::parseLocomotorTemplateDefinition },
109+
{ "MapCache", INI::parseMapCacheDefinition },
110+
{ "MapData", INI::parseMapDataDefinition },
111+
{ "MappedImage", INI::parseMappedImageDefinition },
112+
{ "MiscAudio", INI::parseMiscAudio },
113+
{ "Mouse", INI::parseMouseDefinition },
114+
{ "MouseCursor", INI::parseMouseCursorDefinition },
115+
{ "MultiplayerColor", INI::parseMultiplayerColorDefinition },
116+
{ "MultiplayerSettings", INI::parseMultiplayerSettingsDefinition },
117+
{ "MultiplayerStartingMoneyChoice", INI::parseMultiplayerStartingMoneyChoiceDefinition },
118+
{ "MusicTrack", INI::parseMusicTrackDefinition },
119+
{ "Object", INI::parseObjectDefinition },
120+
{ "ObjectCreationList", INI::parseObjectCreationListDefinition },
121+
{ "ObjectReskin", INI::parseObjectReskinDefinition },
122+
{ "OnlineChatColors", INI::parseOnlineChatColorDefinition },
123+
{ "ParticleSystem", INI::parseParticleSystemDefinition },
124+
{ "PlayerTemplate", INI::parsePlayerTemplateDefinition },
125+
{ "Rank", INI::parseRankDefinition },
126+
{ "ReallyLowMHz", parseReallyLowMHz },
127+
{ "Road", INI::parseTerrainRoadDefinition },
128+
{ "Science", INI::parseScienceDefinition },
129+
{ "ScriptAction", ScriptEngine::parseScriptAction },
130+
{ "ScriptCondition", ScriptEngine::parseScriptCondition },
131+
{ "ShellMenuScheme", INI::parseShellMenuSchemeDefinition },
132+
{ "SpecialPower", INI::parseSpecialPowerDefinition },
133+
{ "StaticGameLOD", INI::parseStaticGameLODDefinition },
134+
{ "Terrain", INI::parseTerrainDefinition },
135+
{ "Upgrade", INI::parseUpgradeDefinition },
136+
{ "Video", INI::parseVideoDefinition },
137+
{ "WaterSet", INI::parseWaterSettingDefinition },
138+
{ "WaterTransparency", INI::parseWaterTransparencyDefinition },
139+
{ "Weapon", INI::parseWeaponTemplateDefinition },
140+
{ "Weather", INI::parseWeatherDefinition },
141+
{ "WebpageURL", INI::parseWebpageURLDefinition },
142+
{ "WindowTransition", INI::parseWindowTransitions },
145143
};
146144

147145

@@ -350,13 +348,14 @@ void INI::unPrepFile()
350348
//-------------------------------------------------------------------------------------------------
351349
static INIBlockParse findBlockParse(const char* token)
352350
{
353-
for (const BlockParse* parse = theTypeTable; parse->token; ++parse)
351+
for (size_t i = 0; i < ARRAY_SIZE(theTypeTable); ++i)
354352
{
355-
if (strcmp( parse->token, token ) == 0)
353+
if (strcmp(theTypeTable[i].token, token) == 0)
356354
{
357-
return parse->parse;
355+
return theTypeTable[i].parse;
358356
}
359357
}
358+
360359
return nullptr;
361360
}
362361

0 commit comments

Comments
 (0)