Skip to content

Commit 517842d

Browse files
committed
modified the shared lib interface
1 parent bbd98ac commit 517842d

File tree

2 files changed

+118
-84
lines changed

2 files changed

+118
-84
lines changed

source/gameanalytics/GameAnalyticsExtern.cpp

Lines changed: 34 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1-
#if GA_SHARED_LIB
1+
#include "GameAnalyticsExtern.h"
2+
3+
#ifdef GA_SHARED_LIB
24

35
#include "GameAnalytics/GameAnalytics.h"
46
#include "GAUtilities.h"
5-
#include "GameAnalyticsExtern.h"
67

78
gameanalytics::StringVector makeStringVector(const char** arr, int size)
89
{
@@ -23,24 +24,14 @@ gameanalytics::StringVector makeStringVector(const char** arr, int size)
2324
return {};
2425
}
2526

26-
GAErrorCode copyStringBuffer(std::string const& s, char* out, int* size)
27+
void gameAnalytics_freeString(const char* ptr)
2728
{
28-
if(size && (*size > 0))
29-
{
30-
if(out && (*size >= s.size()))
31-
{
32-
std::memcpy(out, s.data(), s.size());
33-
}
34-
else
35-
{
36-
return EGABufferError;
37-
}
38-
39-
*size = static_cast<int>(s.size());
40-
return EGANoError;
41-
}
29+
std::free((void*)ptr);
30+
}
4231

43-
return EGAFailure;
32+
const char* gameAnalytics_allocString(std::string const& s)
33+
{
34+
return strndup(s.c_str(), s.size());
4435
}
4536

4637
void gameAnalytics_configureAvailableCustomDimensions01(const char **customDimensions, int size)
@@ -129,7 +120,7 @@ void gameAnalytics_addBusinessEvent(const char *currency, double amount, const c
129120
gameanalytics::GameAnalytics::addBusinessEvent(currency, (int)amount, itemType, itemId, cartType, fields, mergeFields);
130121
}
131122

132-
void gameAnalytics_addResourceEvent(int flowType, const char *currency, double amount, const char *itemType, const char *itemId, const char *fields, GAStatus mergeFields)
123+
void gameAnalytics_addResourceEvent(GAResourceFlowType flowType, const char *currency, double amount, const char *itemType, const char *itemId, const char *fields, GAStatus mergeFields)
133124
{
134125
gameanalytics::GameAnalytics::addResourceEvent((gameanalytics::EGAResourceFlowType)flowType, currency, (float)amount, itemType, itemId, fields, mergeFields);
135126
}
@@ -234,45 +225,57 @@ void gameAnalytics_onQuit()
234225
gameanalytics::GameAnalytics::onQuit();
235226
}
236227

237-
GAErrorCode gameAnalytics_getRemoteConfigsValueAsString(const char *key, char* out, int* size)
228+
const char* gameAnalytics_getUserId()
229+
{
230+
std::string returnValue = gameanalytics::GameAnalytics::getUserId();
231+
return gameAnalytics_allocString(returnValue);
232+
}
233+
234+
const char* gameAnalytics_getExternalUserId()
235+
{
236+
std::string returnValue = gameanalytics::GameAnalytics::getExternalUserId();
237+
return gameAnalytics_allocString(returnValue);
238+
}
239+
240+
const char* gameAnalytics_getRemoteConfigsValueAsString(const char *key)
238241
{
239242
std::string returnValue = gameanalytics::GameAnalytics::getRemoteConfigsValueAsString(key);
240-
return copyStringBuffer(returnValue, out, size);
243+
return gameAnalytics_allocString(returnValue);
241244
}
242245

243-
GAErrorCode gameAnalytics_getRemoteConfigsValueAsStringWithDefaultValue(const char *key, const char *defaultValue, char* out, int* size)
246+
const char* gameAnalytics_getRemoteConfigsValueAsStringWithDefaultValue(const char *key, const char *defaultValue)
244247
{
245248
std::string returnValue = gameanalytics::GameAnalytics::getRemoteConfigsValueAsString(key, defaultValue);
246-
return copyStringBuffer(returnValue, out, size);
249+
return gameAnalytics_allocString(returnValue);
247250
}
248251

249252
GAStatus gameAnalytics_isRemoteConfigsReady()
250253
{
251254
return gameanalytics::GameAnalytics::isRemoteConfigsReady() ? EGAEnabled : EGADisabled;
252255
}
253256

254-
GAErrorCode gameAnalytics_getRemoteConfigsContentAsString(char* out, int* size)
257+
const char* gameAnalytics_getRemoteConfigsContentAsString()
255258
{
256259
std::string returnValue = gameanalytics::GameAnalytics::getRemoteConfigsContentAsString();
257-
return copyStringBuffer(returnValue, out, size);
260+
return gameAnalytics_allocString(returnValue);
258261
}
259262

260-
GAErrorCode gameAnalytics_getRemoteConfigsValueAsJson(const char* key, char* out, int* size)
263+
const char* gameAnalytics_getRemoteConfigsValueAsJson(const char* key)
261264
{
262265
std::string returnValue = gameanalytics::GameAnalytics::getRemoteConfigsValueAsJson(key);
263-
return copyStringBuffer(returnValue, out, size);
266+
return gameAnalytics_allocString(returnValue);
264267
}
265268

266-
GAErrorCode gameAnalytics_getABTestingId(char* out, int* size)
269+
const char* gameAnalytics_getABTestingId()
267270
{
268271
std::string returnValue = gameanalytics::GameAnalytics::getABTestingId();
269-
return copyStringBuffer(returnValue, out, size);
272+
return gameAnalytics_allocString(returnValue);
270273
}
271274

272-
GAErrorCode gameAnalytics_getABTestingVariantId(char* out, int* size)
275+
const char* gameAnalytics_getABTestingVariantId(char* out)
273276
{
274277
std::string returnValue = gameanalytics::GameAnalytics::getABTestingVariantId();
275-
return copyStringBuffer(returnValue, out, size);
278+
return gameAnalytics_allocString(returnValue);
276279
}
277280

278281
long long gameAnalytics_getElapsedSessionTime()

source/gameanalytics/GameAnalyticsExtern.h

Lines changed: 84 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,18 @@
66
extern "C" {
77
#endif
88

9-
#if GA_SHARED_LIB
9+
#ifdef GA_SHARED_LIB
1010
#if defined(_WIN32)
11-
#define GA_EXPORT __declspec(dllexport)
11+
#define GA_API __declspec(dllexport)
1212
#else
13-
#define GA_EXPORT __attribute__((visibility("default")))
13+
#define GA_API __attribute__((visibility("default")))
1414
#endif
1515
#else
16-
#define GA_EXPORT
16+
#if defined (_WIN32)
17+
#define GA_API __declspec(dllimport)
18+
#else
19+
#define GA_API
20+
#endif
1721
#endif
1822

1923
enum GAErrorCode
@@ -29,82 +33,109 @@ enum GAStatus: char
2933
EGAEnabled
3034
};
3135

36+
enum GAResourceFlowType
37+
{
38+
EGASource = 1,
39+
EGASink = 2
40+
};
41+
42+
enum GAProgressionStatus
43+
{
44+
EGAStart = 1,
45+
EGAComplete = 2,
46+
EGAFail = 3
47+
};
48+
49+
enum GAErrorSeverity
50+
{
51+
EGADebug = 1,
52+
EGAInfo = 2,
53+
EGAWarning = 3,
54+
EGAError = 4,
55+
EGACritical = 5
56+
};
57+
3258
typedef float(*GAFpsTracker)(void);
3359

34-
GA_EXPORT void gameAnalytics_configureAvailableCustomDimensions01(const char **customDimensions, int size);
35-
GA_EXPORT void gameAnalytics_configureAvailableCustomDimensions02(const char **customDimensions, int size);
36-
GA_EXPORT void gameAnalytics_configureAvailableCustomDimensions03(const char **customDimensions, int size);
37-
GA_EXPORT void gameAnalytics_configureAvailableResourceCurrencies(const char **resourceCurrencies, int size);
38-
GA_EXPORT void gameAnalytics_configureAvailableResourceItemTypes(const char **resourceItemTypes, int size);
39-
GA_EXPORT void gameAnalytics_configureBuild(const char *build);
40-
GA_EXPORT void gameAnalytics_configureWritablePath(const char *writablePath);
41-
GA_EXPORT void gameAnalytics_configureDeviceModel(const char *deviceModel);
42-
GA_EXPORT void gameAnalytics_configureDeviceManufacturer(const char *deviceManufacturer);
60+
GA_API void gameAnalytics_freeString(const char* ptr);
61+
62+
GA_API void gameAnalytics_configureAvailableCustomDimensions01(const char **customDimensions, int size);
63+
GA_API void gameAnalytics_configureAvailableCustomDimensions02(const char **customDimensions, int size);
64+
GA_API void gameAnalytics_configureAvailableCustomDimensions03(const char **customDimensions, int size);
65+
GA_API void gameAnalytics_configureAvailableResourceCurrencies(const char **resourceCurrencies, int size);
66+
GA_API void gameAnalytics_configureAvailableResourceItemTypes(const char **resourceItemTypes, int size);
67+
GA_API void gameAnalytics_configureBuild(const char *build);
68+
GA_API void gameAnalytics_configureWritablePath(const char *writablePath);
69+
GA_API void gameAnalytics_configureDeviceModel(const char *deviceModel);
70+
GA_API void gameAnalytics_configureDeviceManufacturer(const char *deviceManufacturer);
4371

4472
// the version of SDK code used in an engine. Used for sdk_version field.
4573
// !! if set then it will override the SdkWrapperVersion.
4674
// example "unity 4.6.9"
47-
GA_EXPORT void gameAnalytics_configureSdkGameEngineVersion(const char *sdkGameEngineVersion);
75+
GA_API void gameAnalytics_configureSdkGameEngineVersion(const char *sdkGameEngineVersion);
4876

4977
// the version of the game engine (if used and version is available)
50-
GA_EXPORT void gameAnalytics_configureGameEngineVersion(const char *engineVersion);
78+
GA_API void gameAnalytics_configureGameEngineVersion(const char *engineVersion);
5179

52-
GA_EXPORT void gameAnalytics_configureUserId(const char *uId);
80+
GA_API void gameAnalytics_configureUserId(const char *uId);
5381

54-
GA_EXPORT void gameAnalytics_configureExternalUserId(const char* extId);
82+
GA_API void gameAnalytics_configureExternalUserId(const char* extId);
5583

5684
// initialize - starting SDK (need configuration before starting)
57-
GA_EXPORT void gameAnalytics_initialize(const char *gameKey, const char *gameSecret);
85+
GA_API void gameAnalytics_initialize(const char *gameKey, const char *gameSecret);
5886

5987
// add events
60-
GA_EXPORT void gameAnalytics_addBusinessEvent(const char *currency, double amount, const char *itemType, const char *itemId, const char *cartType, const char *customFields, GAStatus mergeFields);
61-
GA_EXPORT void gameAnalytics_addResourceEvent(int flowType, const char *currency, double amount, const char *itemType, const char *itemId, const char *customFields, GAStatus mergeFields);
62-
GA_EXPORT void gameAnalytics_addProgressionEvent(int progressionStatus, const char *progression01, const char *progression02, const char *progression03, const char *customFields, GAStatus mergeFields);
63-
GA_EXPORT void gameAnalytics_addProgressionEventWithScore(int progressionStatus, const char *progression01, const char *progression02, const char *progression03, int score, const char *customFields, GAStatus mergeFields);
64-
GA_EXPORT void gameAnalytics_addDesignEvent(const char *eventId, const char *customFields, GAStatus mergeFields);
65-
GA_EXPORT void gameAnalytics_addDesignEventWithValue(const char *eventId, double value, const char *customFields, GAStatus mergeFields);
66-
GA_EXPORT void gameAnalytics_addErrorEvent(int severity, const char *message, const char *customFields, GAStatus mergeFields);
88+
GA_API void gameAnalytics_addBusinessEvent(const char *currency, double amount, const char *itemType, const char *itemId, const char *cartType, const char *customFields, GAStatus mergeFields);
89+
GA_API void gameAnalytics_addResourceEvent(GAResourceFlowType flowType, const char *currency, double amount, const char *itemType, const char *itemId, const char *customFields, GAStatus mergeFields);
90+
GA_API void gameAnalytics_addProgressionEvent(GAProgressionStatus progressionStatus, const char *progression01, const char *progression02, const char *progression03, const char *customFields, GAStatus mergeFields);
91+
GA_API void gameAnalytics_addProgressionEventWithScore(GAProgressionStatus progressionStatus, const char *progression01, const char *progression02, const char *progression03, int score, const char *customFields, GAStatus mergeFields);
92+
GA_API void gameAnalytics_addDesignEvent(const char *eventId, const char *customFields, GAStatus mergeFields);
93+
GA_API void gameAnalytics_addDesignEventWithValue(const char *eventId, double value, const char *customFields, GAStatus mergeFields);
94+
GA_API void gameAnalytics_addErrorEvent(GAErrorSeverity severity, const char *message, const char *customFields, GAStatus mergeFields);
6795

6896
// set calls can be changed at any time (pre- and post-initialize)
6997
// some calls only work after a configure is called (setCustomDimension)
70-
GA_EXPORT void gameAnalytics_setEnabledInfoLog(GAStatus flag);
71-
GA_EXPORT void gameAnalytics_setEnabledVerboseLog(GAStatus flag);
72-
GA_EXPORT void gameAnalytics_setEnabledManualSessionHandling(GAStatus flag);
73-
GA_EXPORT void gameAnalytics_setEnabledErrorReporting(GAStatus flag);
74-
GA_EXPORT void gameAnalytics_setEnabledEventSubmission(GAStatus flag);
75-
GA_EXPORT void gameAnalytics_setCustomDimension01(const char *dimension01);
76-
GA_EXPORT void gameAnalytics_setCustomDimension02(const char *dimension02);
77-
GA_EXPORT void gameAnalytics_setCustomDimension03(const char *dimension03);
98+
GA_API void gameAnalytics_setEnabledInfoLog(GAStatus flag);
99+
GA_API void gameAnalytics_setEnabledVerboseLog(GAStatus flag);
100+
GA_API void gameAnalytics_setEnabledManualSessionHandling(GAStatus flag);
101+
GA_API void gameAnalytics_setEnabledErrorReporting(GAStatus flag);
102+
GA_API void gameAnalytics_setEnabledEventSubmission(GAStatus flag);
103+
GA_API void gameAnalytics_setCustomDimension01(const char *dimension01);
104+
GA_API void gameAnalytics_setCustomDimension02(const char *dimension02);
105+
GA_API void gameAnalytics_setCustomDimension03(const char *dimension03);
78106

79-
GA_EXPORT void gameAnalytics_setGlobalCustomEventFields(const char *customFields);
107+
GA_API void gameAnalytics_setGlobalCustomEventFields(const char *customFields);
80108

81-
GA_EXPORT void gameAnalytics_startSession();
82-
GA_EXPORT void gameAnalytics_endSession();
109+
GA_API void gameAnalytics_startSession();
110+
GA_API void gameAnalytics_endSession();
83111

84112
// game state changes
85113
// will affect how session is started / ended
86-
GA_EXPORT void gameAnalytics_onResume();
87-
GA_EXPORT void gameAnalytics_onSuspend();
88-
GA_EXPORT void gameAnalytics_onQuit();
114+
GA_API void gameAnalytics_onResume();
115+
GA_API void gameAnalytics_onSuspend();
116+
GA_API void gameAnalytics_onQuit();
117+
118+
GA_API const char* gameAnalytics_getRemoteConfigsValueAsString(const char *key);
119+
GA_API const char* gameAnalytics_getRemoteConfigsValueAsStringWithDefaultValue(const char *key, const char *defaultValue);
120+
GA_API const char* gameAnalytics_getRemoteConfigsValueAsJson(const char* key);
89121

90-
GA_EXPORT GAErrorCode gameAnalytics_getRemoteConfigsValueAsString(const char *key, char* out, int* size);
91-
GA_EXPORT GAErrorCode gameAnalytics_getRemoteConfigsValueAsStringWithDefaultValue(const char *key, const char *defaultValue, char* out, int* bufferSize);
92-
GA_EXPORT GAErrorCode gameAnalytics_getRemoteConfigsValueAsJson(const char* key, char* out, int* size);
122+
GA_API const char* gameAnalytics_getUserId();
123+
GA_API const char* gameAnalytics_getExternalUserId();
93124

94-
GA_EXPORT GAStatus gameAnalytics_isRemoteConfigsReady();
95-
GA_EXPORT GAErrorCode gameAnalytics_getRemoteConfigsContentAsString(char* out, int* size);
125+
GA_API GAStatus gameAnalytics_isRemoteConfigsReady();
126+
GA_API const char* gameAnalytics_getRemoteConfigsContentAsString();
96127

97-
GA_EXPORT GAErrorCode gameAnalytics_getABTestingId(char* out, int* size);
98-
GA_EXPORT GAErrorCode gameAnalytics_getABTestingVariantId(char* out, int* size);
128+
GA_API const char* gameAnalytics_getABTestingId();
129+
GA_API const char* gameAnalytics_getABTestingVariantId();
99130

100-
GA_EXPORT long long gameAnalytics_getElapsedSessionTime();
101-
GA_EXPORT long long gameAnalytics_getElapsedTimeFromAllSessions();
102-
GA_EXPORT long long gameAnalytics_getElapsedTimeForPreviousSession();
131+
GA_API long long gameAnalytics_getElapsedSessionTime();
132+
GA_API long long gameAnalytics_getElapsedTimeFromAllSessions();
133+
GA_API long long gameAnalytics_getElapsedTimeForPreviousSession();
103134

104-
GA_EXPORT void gameAnalytics_enableSDKInitEvent(GAStatus status);
105-
GA_EXPORT void gameAnalytics_enableMemoryHistogram(GAStatus status);
106-
GA_EXPORT void gameAnalytics_enableFPSHistogram(GAFpsTracker tracker, GAStatus status);
107-
GA_EXPORT void gameAnalytics_enableHardwareTracking(GAStatus status);
135+
GA_API void gameAnalytics_enableSDKInitEvent(GAStatus status);
136+
GA_API void gameAnalytics_enableMemoryHistogram(GAStatus status);
137+
GA_API void gameAnalytics_enableFPSHistogram(GAFpsTracker tracker, GAStatus status);
138+
GA_API void gameAnalytics_enableHardwareTracking(GAStatus status);
108139

109140
#ifdef __cplusplus
110141
}

0 commit comments

Comments
 (0)