Skip to content

Commit 7c30bff

Browse files
committed
pointer madness
1 parent 789b6a3 commit 7c30bff

File tree

11 files changed

+358
-19
lines changed

11 files changed

+358
-19
lines changed

04_INIParser/04_INIParser.vcxproj

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,12 @@
2020
</ItemGroup>
2121
<ItemGroup>
2222
<ClCompile Include="INIParser.c" />
23+
<ClCompile Include="INIx.c" />
2324
</ItemGroup>
2425
<ItemGroup>
26+
<ClInclude Include="INIApi.h" />
2527
<ClInclude Include="INIParser.h" />
28+
<ClInclude Include="INIx.h" />
2629
</ItemGroup>
2730
<PropertyGroup Label="Globals">
2831
<VCProjectVersion>16.0</VCProjectVersion>
@@ -33,26 +36,26 @@
3336
</PropertyGroup>
3437
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
3538
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
36-
<ConfigurationType>StaticLibrary</ConfigurationType>
39+
<ConfigurationType>DynamicLibrary</ConfigurationType>
3740
<UseDebugLibraries>true</UseDebugLibraries>
3841
<PlatformToolset>v143</PlatformToolset>
3942
<CharacterSet>Unicode</CharacterSet>
4043
</PropertyGroup>
4144
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
42-
<ConfigurationType>StaticLibrary</ConfigurationType>
45+
<ConfigurationType>DynamicLibrary</ConfigurationType>
4346
<UseDebugLibraries>false</UseDebugLibraries>
4447
<PlatformToolset>v143</PlatformToolset>
4548
<WholeProgramOptimization>true</WholeProgramOptimization>
4649
<CharacterSet>Unicode</CharacterSet>
4750
</PropertyGroup>
4851
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
49-
<ConfigurationType>StaticLibrary</ConfigurationType>
52+
<ConfigurationType>DynamicLibrary</ConfigurationType>
5053
<UseDebugLibraries>true</UseDebugLibraries>
5154
<PlatformToolset>v143</PlatformToolset>
5255
<CharacterSet>Unicode</CharacterSet>
5356
</PropertyGroup>
5457
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
55-
<ConfigurationType>StaticLibrary</ConfigurationType>
58+
<ConfigurationType>DynamicLibrary</ConfigurationType>
5659
<UseDebugLibraries>false</UseDebugLibraries>
5760
<PlatformToolset>v143</PlatformToolset>
5861
<WholeProgramOptimization>true</WholeProgramOptimization>
@@ -100,7 +103,7 @@
100103
<ClCompile>
101104
<WarningLevel>Level3</WarningLevel>
102105
<SDLCheck>true</SDLCheck>
103-
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
106+
<PreprocessorDefinitions>INI_BUILD_DLL;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
104107
<ConformanceMode>true</ConformanceMode>
105108
</ClCompile>
106109
<Link>
@@ -114,7 +117,7 @@
114117
<FunctionLevelLinking>true</FunctionLevelLinking>
115118
<IntrinsicFunctions>true</IntrinsicFunctions>
116119
<SDLCheck>true</SDLCheck>
117-
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
120+
<PreprocessorDefinitions>INI_BUILD_DLL;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
118121
<ConformanceMode>true</ConformanceMode>
119122
</ClCompile>
120123
<Link>
@@ -128,7 +131,7 @@
128131
<ClCompile>
129132
<WarningLevel>Level3</WarningLevel>
130133
<SDLCheck>true</SDLCheck>
131-
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
134+
<PreprocessorDefinitions>INI_BUILD_DLL;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
132135
<ConformanceMode>true</ConformanceMode>
133136
</ClCompile>
134137
<Link>
@@ -142,7 +145,7 @@
142145
<FunctionLevelLinking>true</FunctionLevelLinking>
143146
<IntrinsicFunctions>true</IntrinsicFunctions>
144147
<SDLCheck>true</SDLCheck>
145-
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
148+
<PreprocessorDefinitions>INI_BUILD_DLL;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
146149
<ConformanceMode>true</ConformanceMode>
147150
</ClCompile>
148151
<Link>

04_INIParser/04_INIParser.vcxproj.filters

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,19 @@
1818
<ClCompile Include="INIParser.c">
1919
<Filter>Source Files</Filter>
2020
</ClCompile>
21+
<ClCompile Include="INIx.c">
22+
<Filter>Source Files</Filter>
23+
</ClCompile>
2124
</ItemGroup>
2225
<ItemGroup>
2326
<ClInclude Include="INIParser.h">
2427
<Filter>Header Files</Filter>
2528
</ClInclude>
29+
<ClInclude Include="INIApi.h">
30+
<Filter>Header Files</Filter>
31+
</ClInclude>
32+
<ClInclude Include="INIx.h">
33+
<Filter>Header Files</Filter>
34+
</ClInclude>
2635
</ItemGroup>
2736
</Project>

04_INIParser/INIApi.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
#pragma once
2+
3+
#ifdef INI_BUILD_DLL
4+
#define INI_API __declspec(dllexport)
5+
#else
6+
#define INI_API __declspec(dllimport)
7+
#endif

04_INIParser/INIParser.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#include "INIParser.h"
22

3-
void ini_parseIniFromFile(const char* filePath, const char* logfilePath, ini_callback callback)
3+
void ini_parseIniFromFile(const char* filePath, const char* logfilePath, ini_callback callback, void* userdata)
44
{
55
FILE* file = NULL;
66
fopen_s(&file, filePath, "rb");
@@ -19,7 +19,7 @@ void ini_parseIniFromFile(const char* filePath, const char* logfilePath, ini_cal
1919
{
2020
// Read sucess
2121
fileContent[fileSize] = '\0';
22-
ini_parseIni(fileContent, logfilePath, callback);
22+
ini_parseIni(fileContent, logfilePath, callback, userdata);
2323
}
2424
free(fileContent);
2525
}
@@ -28,7 +28,7 @@ void ini_parseIniFromFile(const char* filePath, const char* logfilePath, ini_cal
2828
}
2929
}
3030

31-
void ini_parseIni(const char* iniData, const char* logfilePath, ini_callback callback)
31+
void ini_parseIni(const char* iniData, const char* logfilePath, ini_callback callback, void* userdata)
3232
{
3333
// Open a log file
3434
FILE* log = NULL;
@@ -173,7 +173,7 @@ void ini_parseIni(const char* iniData, const char* logfilePath, ini_callback cal
173173
state = 0;
174174

175175
// Report out
176-
callback(currentSecion, currentKey, currentValue);
176+
callback(userdata, currentSecion, currentKey, currentValue);
177177
if (log)
178178
{
179179
fprintf_s(log, "Section = \"%s\" Key = \"%s\" Value = \"%s\"\n",

04_INIParser/INIParser.h

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,17 @@
11
#pragma once
22

3+
#include "INIApi.h"
4+
35
#include <stdio.h>
46
#include <stdint.h>
57
#include <stdlib.h>
68
#include <string.h>
79
#include <ctype.h>
810

9-
typedef void(*ini_callback)(const char* section, const char* key, const char* value);
11+
typedef void(*ini_callback)(void* userdata, const char* section, const char* key, const char* value);
1012

11-
void ini_parseIniFromFile(const char* filePath, const char* logfilePath, ini_callback callback);
12-
void ini_parseIni(const char* iniData, const char* logfilePath, ini_callback callback);
13+
// SAX Api
14+
void INI_API ini_parseIniFromFile(const char* filePath, const char* logfilePath, ini_callback callback, void* userdata);
15+
void INI_API ini_parseIni(const char* iniData, const char* logfilePath, ini_callback callback, void* userdata);
1316
void ini_appendBuffer(char* buffer, char c);
1417
void ini_stripeBuffer(char* buffer);

0 commit comments

Comments
 (0)