33#include " GameAnalytics/GameAnalytics.h"
44#include " GAUtilities.h"
55
6- void ga_string_alloc (GAString* s, unsigned int size)
7- {
8- if (s)
9- {
10- s->str = (const char *)std::malloc (size);
11- if (s->str )
12- {
13- s->size = size;
14- std::memset (s->str , ' \0 ' , s->size );
15- }
16- }
17- }
18-
19- void ga_string_free (GAString* s)
20- {
21- if (s)
22- {
23- if (s->str && s->size )
24- {
25- std::free (s->str );
26- s->str = NULL ;
27- s->size = 0 ;
28- }
29- }
30- }
31-
326StringVector makeStringVector (const char ** arr, int size)
337{
348 if (size > 0 && arr)
@@ -48,245 +22,250 @@ StringVector makeStringVector(const char** arr, int size)
4822 return {};
4923}
5024
51- GAString ga_string_fromString (std::string const & s)
25+ GAErrorCode copyStringBuffer (std::string const & s, char * out, int * size )
5226{
53- GAString gaStr = {};
54- const unsigned int len = s.length () + 1 ;
55- ga_string_alloc (&gaStr, len);
56-
57- if (gaStr->str && gaStr->size )
27+ if (size && (*size > 0 ))
5828 {
59- std::memcpy (gaStr, s.data (), s.length ());
60- gaStr[len - 1 ] = ' \0 ' ;
29+ if (out && (*size >= s.size ()))
30+ {
31+ std::memcpy (out, s.data (), s.size ());
32+ }
33+ else
34+ {
35+ return EGABufferError;
36+ }
37+
38+ *size = s.size ();
39+ return EGANoError;
6140 }
6241
63- return gaStr ;
42+ return EGAFailure ;
6443}
6544
66- void configureAvailableCustomDimensions01 (const char **customDimensions, int size)
45+ void gameAnalytics_configureAvailableCustomDimensions01 (const char **customDimensions, int size)
6746{
6847 StringVector values = makeStringVector (customDimensions, size);
6948 gameanalytics::GameAnalytics::configureAvailableCustomDimensions01 (values);
7049}
7150
72- void configureAvailableCustomDimensions02 (const char **customDimensions, int size)
51+ void gameAnalytics_configureAvailableCustomDimensions02 (const char **customDimensions, int size)
7352{
7453 StringVector values = makeStringVector (customDimensions, size);
7554 gameanalytics::GameAnalytics::configureAvailableCustomDimensions02 (values);
7655}
7756
78- void configureAvailableCustomDimensions03 (const char **customDimensions, int size)
57+ void gameAnalytics_configureAvailableCustomDimensions03 (const char **customDimensions, int size)
7958{
8059 StringVector values = makeStringVector (customDimensions, size);
8160 gameanalytics::GameAnalytics::configureAvailableCustomDimensions03 (values);
8261}
8362
84- void configureAvailableResourceCurrencies (const char ** currencies, int size)
63+ void gameAnalytics_configureAvailableResourceCurrencies (const char ** currencies, int size)
8564{
8665 StringVector values = makeStringVector (currencies, size);
8766 gameanalytics::GameAnalytics::configureAvailableResourceCurrencies (values);
8867}
8968
90- void configureAvailableResourceItemTypes (const char ** resources, int size)
69+ void gameAnalytics_configureAvailableResourceItemTypes (const char ** resources, int size)
9170{
9271 StringVector values = makeStringVector (resources, size);
9372 gameanalytics::GameAnalytics::configureAvailableResourceItemTypes (values);
9473}
9574
96- void configureBuild (const char *build)
75+ void gameAnalytics_configureBuild (const char *build)
9776{
9877 gameanalytics::GameAnalytics::configureBuild (build);
9978}
10079
101- void configureWritablePath (const char *writablePath)
80+ void gameAnalytics_configureWritablePath (const char *writablePath)
10281{
10382 gameanalytics::GameAnalytics::configureWritablePath (writablePath);
10483}
10584
106- void configureDeviceModel (const char *deviceModel)
85+ void gameAnalytics_configureDeviceModel (const char *deviceModel)
10786{
10887 gameanalytics::GameAnalytics::configureDeviceModel (deviceModel);
10988}
11089
111- void configureDeviceManufacturer (const char *deviceManufacturer)
90+ void gameAnalytics_configureDeviceManufacturer (const char *deviceManufacturer)
11291{
11392 gameanalytics::GameAnalytics::configureDeviceManufacturer (deviceManufacturer);
11493}
11594
11695// the version of SDK code used in an engine. Used for sdk_version field.
11796// !! if set then it will override the SdkWrapperVersion.
11897// example "unity 4.6.9"
119- void configureSdkGameEngineVersion (const char *sdkGameEngineVersion)
98+ void gameAnalytics_configureSdkGameEngineVersion (const char *sdkGameEngineVersion)
12099{
121100 gameanalytics::GameAnalytics::configureSdkGameEngineVersion (sdkGameEngineVersion);
122101}
123102
124103// the version of the game engine (if used and version is available)
125- void configureGameEngineVersion (const char *engineVersion)
104+ void gameAnalytics_configureGameEngineVersion (const char *engineVersion)
126105{
127106 gameanalytics::GameAnalytics::configureGameEngineVersion (engineVersion);
128107}
129108
130- void configureUserId (const char *uId)
109+ void gameAnalytics_configureUserId (const char *uId)
131110{
132111 gameanalytics::GameAnalytics::configureUserId (uId);
133112}
134113
135- void configureExternalUserId (const char * extId)
114+ void gameAnalytics_configureExternalUserId (const char * extId)
136115{
137116 gameanalytics::GameAnalytics::configureExternalUserId (extId);
138117}
139118
140119// initialize - starting SDK (need configuration before starting)
141- void initialize (const char *gameKey, const char *gameSecret)
120+ void gameAnalytics_initialize (const char *gameKey, const char *gameSecret)
142121{
143122 gameanalytics::GameAnalytics::initialize (gameKey, gameSecret);
144123}
145124
146125// add events
147- void addBusinessEvent (const char *currency, double amount, const char *itemType, const char *itemId, const char *cartType, const char *fields, GA_BOOL mergeFields)
126+ void gameAnalytics_addBusinessEvent (const char *currency, double amount, const char *itemType, const char *itemId, const char *cartType, const char *fields, GAStatus mergeFields)
148127{
149128 gameanalytics::GameAnalytics::addBusinessEvent (currency, (int )amount, itemType, itemId, cartType, fields, mergeFields);
150129}
151130
152- void addResourceEvent (int flowType, const char *currency, double amount, const char *itemType, const char *itemId, const char *fields, GA_BOOL mergeFields)
131+ void gameAnalytics_addResourceEvent (int flowType, const char *currency, double amount, const char *itemType, const char *itemId, const char *fields, GAStatus mergeFields)
153132{
154133 gameanalytics::GameAnalytics::addResourceEvent ((gameanalytics::EGAResourceFlowType)flowType, currency, (float )amount, itemType, itemId, fields, mergeFields);
155134}
156135
157- void addProgressionEvent (int progressionStatus, const char *progression01, const char *progression02, const char *progression03, const char *fields, GA_BOOL mergeFields)
136+ void gameAnalytics_addProgressionEvent (int progressionStatus, const char *progression01, const char *progression02, const char *progression03, const char *fields, GAStatus mergeFields)
158137{
159138 gameanalytics::GameAnalytics::addProgressionEvent ((gameanalytics::EGAProgressionStatus)progressionStatus, progression01, progression02, progression03, fields, mergeFields);
160139}
161140
162- void addProgressionEventWithScore (int progressionStatus, const char *progression01, const char *progression02, const char *progression03, double score, const char *fields, GA_BOOL mergeFields)
141+ void gameAnalytics_addProgressionEventWithScore (int progressionStatus, const char *progression01, const char *progression02, const char *progression03, double score, const char *fields, GAStatus mergeFields)
163142{
164143 gameanalytics::GameAnalytics::addProgressionEvent ((gameanalytics::EGAProgressionStatus)progressionStatus, progression01, progression02, progression03, (int )score, fields, mergeFields);
165144}
166145
167- void addDesignEvent (const char *eventId, const char *fields, GA_BOOL mergeFields)
146+ void gameAnalytics_addDesignEvent (const char *eventId, const char *fields, GAStatus mergeFields)
168147{
169- gameanalytics::GameAnalytics::addDesignEvent (eventId, fields, mergeFields);
148+ gameanalytics::GameAnalytics::addDesignEvent (eventId, fields, ( bool ) mergeFields);
170149}
171150
172- void addDesignEventWithValue (const char *eventId, double value, const char *fields, GA_BOOL mergeFields)
151+ void gameAnalytics_addDesignEventWithValue (const char *eventId, double value, const char *fields, GAStatus mergeFields)
173152{
174- gameanalytics::GameAnalytics::addDesignEvent (eventId, value, fields, mergeFields);
153+ gameanalytics::GameAnalytics::addDesignEvent (eventId, value, fields, ( bool ) mergeFields);
175154}
176155
177- void addErrorEvent (int severity, const char *message, const char *fields, GA_BOOL mergeFields)
156+ void gameAnalytics_addErrorEvent (int severity, const char *message, const char *fields, GAStatus mergeFields)
178157{
179- gameanalytics::GameAnalytics::addErrorEvent ((gameanalytics::EGAErrorSeverity)severity, message, fields, mergeFields);
158+ gameanalytics::GameAnalytics::addErrorEvent ((gameanalytics::EGAErrorSeverity)severity, message, fields, ( bool ) mergeFields);
180159}
181160
182161// set calls can be changed at any time (pre- and post-initialize)
183162// some calls only work after a configure is called (setCustomDimension)
184163
185- void setEnabledInfoLog (GA_BOOL flag)
164+ void gameAnalytics_setEnabledInfoLog (GAStatus flag)
186165{
187166 gameanalytics::GameAnalytics::setEnabledInfoLog (flag);
188167}
189168
190- void setEnabledVerboseLog (GA_BOOL flag)
169+ void gameAnalytics_setEnabledVerboseLog (GAStatus flag)
191170{
192171 gameanalytics::GameAnalytics::setEnabledVerboseLog (flag);
193172}
194173
195- void setEnabledManualSessionHandling (GA_BOOL flag)
174+ void gameAnalytics_setEnabledManualSessionHandling (GAStatus flag)
196175{
197176 gameanalytics::GameAnalytics::setEnabledManualSessionHandling (flag);
198177}
199178
200- void setEnabledErrorReporting (GA_BOOL flag)
179+ void gameAnalytics_setEnabledErrorReporting (GAStatus flag)
201180{
202181 gameanalytics::GameAnalytics::setEnabledErrorReporting (flag);
203182}
204183
205- void setEnabledEventSubmission (GA_BOOL flag)
184+ void gameAnalytics_setEnabledEventSubmission (GAStatus flag)
206185{
207186 gameanalytics::GameAnalytics::setEnabledEventSubmission (flag);
208187}
209188
210- void setCustomDimension01 (const char *dimension01)
189+ void gameAnalytics_setCustomDimension01 (const char *dimension01)
211190{
212191 gameanalytics::GameAnalytics::setCustomDimension01 (dimension01);
213192}
214193
215- void setCustomDimension02 (const char *dimension02)
194+ void gameAnalytics_setCustomDimension02 (const char *dimension02)
216195{
217196 gameanalytics::GameAnalytics::setCustomDimension02 (dimension02);
218197}
219198
220- void setCustomDimension03 (const char *dimension03)
199+ void gameAnalytics_setCustomDimension03 (const char *dimension03)
221200{
222201 gameanalytics::GameAnalytics::setCustomDimension03 (dimension03);
223202}
224203
225- void setGlobalCustomEventFields (const char *customFields)
204+ void gameAnalytics_setGlobalCustomEventFields (const char *customFields)
226205{
227206 gameanalytics::GameAnalytics::setGlobalCustomEventFields (customFields);
228207}
229208
230- void gameAnalyticsStartSession ()
209+ void gameAnalytics_startSession ()
231210{
232211 gameanalytics::GameAnalytics::startSession ();
233212}
234213
235- void gameAnalyticsEndSession ()
214+ void gameAnalytics_endSession ()
236215{
237216 gameanalytics::GameAnalytics::endSession ();
238217}
239218
240219// game state changes
241220// will affect how session is started / ended
242- void onResume ()
221+ void gameAnalytics_onResume ()
243222{
244223 gameanalytics::GameAnalytics::onResume ();
245224}
246225
247- void onSuspend ()
226+ void gameAnalytics_onSuspend ()
248227{
249228 gameanalytics::GameAnalytics::onSuspend ();
250229}
251230
252- void onQuit ()
231+ void gameAnalytics_onQuit ()
253232{
254233 gameanalytics::GameAnalytics::onQuit ();
255234}
256235
257- GAString getRemoteConfigsValueAsString (const char *key)
236+ void gameAnalytics_getRemoteConfigsValueAsString (const char *key, char * out, int * size )
258237{
259238 std::string returnValue = gameanalytics::GameAnalytics::getRemoteConfigsValueAsString (key);
260- return ga_string_fromString (returnValue);
239+ return copyStringBuffer (returnValue, out, size );
261240}
262241
263- GAString getRemoteConfigsValueAsStringWithDefaultValue (const char *key, const char *defaultValue)
242+ GAErrorCode gameAnalytics_getRemoteConfigsValueAsStringWithDefaultValue (const char *key, const char *defaultValue, char * out, int * size )
264243{
265244 std::string returnValue = gameanalytics::GameAnalytics::getRemoteConfigsValueAsString (key, defaultValue);
266- return ga_string_fromString (returnValue);
245+ return copyStringBuffer (returnValue, out, size );
267246}
268247
269- GA_BOOL isRemoteConfigsReady ()
248+ GAStatus gameAnalytics_isRemoteConfigsReady ()
270249{
271- return gameanalytics::GameAnalytics::isRemoteConfigsReady () ? GA_TRUE : GA_FALSE ;
250+ return gameanalytics::GameAnalytics::isRemoteConfigsReady () ? GAEnabled : GADisabled ;
272251}
273252
274- GAString getRemoteConfigsContentAsString ( )
253+ GAErrorCode gameAnalytics_getRemoteConfigsContentAsString ( char * out, int * size )
275254{
276255 std::string returnValue = gameanalytics::GameAnalytics::getRemoteConfigsContentAsString ();
277- return ga_string_fromString (returnValue);
256+ return copyStringBuffer (returnValue, out, size );
278257}
279258
280- GAString getABTestingId ( )
259+ GAErrorCode gameAnalytics_getABTestingId ( char * out, int * size )
281260{
282261 std::string returnValue = gameanalytics::GameAnalytics::getABTestingId ();
283- return ga_string_fromString (returnValue);
262+ return copyStringBuffer (returnValue, out, size );
284263}
285264
286- GAString getABTestingVariantId ( )
265+ GAErrorCode gameAnalytics_getABTestingVariantId ( char * out, int * size )
287266{
288267 std::string returnValue = gameanalytics::GameAnalytics::getABTestingVariantId ();
289- return ga_string_fromString (returnValue);
268+ return copyStringBuffer (returnValue, out, size );
290269}
291270
292271#endif
0 commit comments