51Degrees Common C/C++  4.1

A shared functionality library that is used by 51Degrees products

fiftyone.h

1 /* *********************************************************************
2  * This Source Code Form is copyright of 51 Degrees Mobile Experts Limited.
3  * Copyright 2019 51 Degrees Mobile Experts Limited, 5 Charlotte Close,
4  * Caversham, Reading, Berkshire, United Kingdom RG4 7BY
5  *
6  * This Source Code Form is subject to the terms of the Mozilla Public
7  * License, v. 2.0.
8  *
9  * If a copy of the MPL was not distributed with this file, You can obtain
10  * one at http://mozilla.org/MPL/2.0/.
11  *
12  * This Source Code Form is "Incompatible With Secondary Licenses", as
13  * defined by the Mozilla Public License, v. 2.0.
14  * ******************************************************************** */
15 
40 #ifndef FIFTYONE_DEGREES_SYNONYM_COMMON_INCLUDED
41 #define FIFTYONE_DEGREES_SYNONYM_COMMON_INCLUDED
42 
43 #include "exceptions.h"
44 #include "cache.h"
45 #include "collection.h"
46 #include "component.h"
47 #include "config.h"
48 #include "data.h"
49 #include "dataset.h"
50 #include "date.h"
51 #include "evidence.h"
52 #include "file.h"
53 #include "headers.h"
54 #include "list.h"
55 #include "memory.h"
56 #include "pool.h"
57 #include "properties.h"
58 #include "resource.h"
59 #include "results.h"
60 #include "status.h"
61 #include "dataset.h"
62 #include "results.h"
63 #include "config.h"
64 #include "string.h"
65 #include "property.h"
66 #include "value.h"
67 #include "component.h"
68 #include "profile.h"
69 #include "overrides.h"
70 #include "tree.h"
71 #include "profile.h"
72 #include "ip.h"
73 
78 #define MAP_TYPE(t) typedef fiftyoneDegrees##t t;
80 /* <-- only one asterisk to avoid inclusion in documentation
81  * Most mappings simply remove fiftyoneDegrees. However in some cases even
82  * shorter names make sense. These are provided before the general references
83  * to MAP_TYPE.
84  */
85 
88 /* <-- only one asterisk to avoid inclusion in documentation
89  * General references to MAP_TYPE used to strip fiftyoneDegrees as a prefix
90  * from types.
91  */
92 
96 #ifndef FIFTYONE_DEGREES_MEMORY_ONLY
101 #endif
155 
156 #define ProfileGetOffsetForProfileId fiftyoneDegreesProfileGetOffsetForProfileId
157 #define OverrideValuesAdd fiftyoneDegreesOverrideValuesAdd
158 #define ExceptionGetMessage fiftyoneDegreesExceptionGetMessage
159 #define ProfileGetByProfileId fiftyoneDegreesProfileGetByProfileId
160 #define ProfileGetByIndex fiftyoneDegreesProfileGetByIndex
161 #define OverridesAdd fiftyoneDegreesOverridesAdd
162 #define OverrideProfileIds fiftyoneDegreesOverrideProfileIds
163 #define ComponentInitList fiftyoneDegreesComponentInitList
164 #define CollectionGetInteger32 fiftyoneDegreesCollectionGetInteger32
165 #define PropertyGet fiftyoneDegreesPropertyGet
166 #define ProfileIterateValuesForProperty fiftyoneDegreesProfileIterateValuesForProperty
167 #define ProfileIterateProfilesForPropertyAndValue fiftyoneDegreesProfileIterateProfilesForPropertyAndValue
168 #define PropertiesGetPropertyIndexFromName fiftyoneDegreesPropertiesGetPropertyIndexFromName
169 #define TreeIterate fiftyoneDegreesTreeIterateNodes
170 #define TreeCount fiftyoneDegreesTreeCount
171 #define TreeDelete fiftyoneDegreesTreeDelete
172 #define TreeInsert fiftyoneDegreesTreeInsert
173 #define TreeFind fiftyoneDegreesTreeFind
174 #define TreeNodeInit fiftyoneDegreesTreeNodeInit
175 #define TreeNodeRemove fiftyoneDegreesTreeNodeRemove
176 #define TreeRootInit fiftyoneDegreesTreeRootInit
177 #define OverridesGetOverridingRequiredPropertyIndex fiftyoneDegreesOverridesGetOverridingRequiredPropertyIndex
178 #define OverridePropertiesCreate fiftyoneDegreesOverridePropertiesCreate
179 #define EvidenceCreate fiftyoneDegreesEvidenceCreate
180 #define EvidenceFree fiftyoneDegreesEvidenceFree
181 #define OverridesGetOverridingRequiredPropertyIndex fiftyoneDegreesOverridesGetOverridingRequiredPropertyIndex
182 #define StringCompareLength fiftyoneDegreesStringCompareLength
183 #define StringCompare fiftyoneDegreesStringCompare
184 #define OverridesExtractFromEvidence fiftyoneDegreesOverridesExtractFromEvidence
185 #define EvidenceIterate fiftyoneDegreesEvidenceIterate
186 #define CacheRelease fiftyoneDegreesCacheRelease
187 #define DataReset fiftyoneDegreesDataReset
188 #define CacheFree fiftyoneDegreesCacheFree
189 #define FileHandleGet fiftyoneDegreesFileHandleGet
190 #define FileHandleRelease fiftyoneDegreesFileHandleRelease
191 #define DataMalloc fiftyoneDegreesDataMalloc
192 #define CacheGet fiftyoneDegreesCacheGet
193 #define CacheCreate fiftyoneDegreesCacheCreate
194 #define MemoryAdvance fiftyoneDegreesMemoryAdvance
195 #define MemoryTrackingReset fiftyoneDegreesMemoryTrackingReset
196 #define MemoryTrackingGetMax fiftyoneDegreesMemoryTrackingGetMax
197 #define MemoryTrackingGetAllocated fiftyoneDegreesMemoryTrackingGetAllocated
198 #define Malloc fiftyoneDegreesMalloc
199 #define Free fiftyoneDegreesFree
200 #define ResourceHandleIncUse fiftyoneDegreesResourceHandleIncUse
201 #define PropertiesDefault fiftyoneDegreesPropertiesDefault
202 #define ListGetAsString fiftyoneDegreesListGetAsString
203 #define ListAdd fiftyoneDegreesListAdd
204 #define ListInit fiftyoneDegreesListInit
205 #define ListFree fiftyoneDegreesListFree
206 #define FileGetExistingTempFile fiftyoneDegreesFileGetExistingTempFile
207 #define FileCreateTempFile fiftyoneDegreesFileCreateTempFile
208 #define HeadersFree fiftyoneDegreesHeadersFree
209 #define PropertiesFree fiftyoneDegreesPropertiesFree
210 #define FilePoolRelease fiftyoneDegreesFilePoolRelease
211 #define FileDelete fiftyoneDegreesFileDelete
212 #define FilePoolReset fiftyoneDegreesFilePoolReset
213 #define PropertiesCreate fiftyoneDegreesPropertiesCreate
214 #define HeadersCreate fiftyoneDegreesHeadersCreate
215 #define HeadersGetHeaderFromUniqueId fiftyoneDegreesHeadersGetHeaderFromUniqueId
216 #define FileReadToByteArray fiftyoneDegreesFileReadToByteArray
217 #define ResourceHandleDecUse fiftyoneDegreesResourceHandleDecUse
218 #define ResourceReplace fiftyoneDegreesResourceReplace
219 #define StatusGetMessage fiftyoneDegreesStatusGetMessage
220 #define FileOpen fiftyoneDegreesFileOpen
221 #define PoolInit fiftyoneDegreesPoolInit
222 #define PoolItemGet fiftyoneDegreesPoolItemGet
223 #define PoolItemRelease fiftyoneDegreesPoolItemRelease
224 #define PoolFree fiftyoneDegreesPoolFree
225 #define PoolReset fiftyoneDegreesPoolReset
226 #define FileGetSize fiftyoneDegreesFileGetSize
227 #define FileCopy fiftyoneDegreesFileCopy
228 #define MemoryTrackingMalloc fiftyoneDegreesMemoryTrackingMalloc
229 #define MemoryTrackingFree fiftyoneDegreesMemoryTrackingFree
230 #define MemoryStandardMalloc fiftyoneDegreesMemoryStandardMalloc
231 #define MemoryStandardFree fiftyoneDegreesMemoryStandardFree
232 #define ResourceManagerFree fiftyoneDegreesResourceManagerFree
233 #define StringGet fiftyoneDegreesStringGet
234 #define EvidenceFree fiftyoneDegreesEvidenceFree
235 #define EvidenceCreate fiftyoneDegreesEvidenceCreate
236 #define EvidenceMapPrefix fiftyoneDegreesEvidenceMapPrefix
237 #define EvidenceAddString fiftyoneDegreesEvidenceAddString
238 #define PropertiesGetRequiredPropertyIndexFromName fiftyoneDegreesPropertiesGetRequiredPropertyIndexFromName
239 #define PropertiesGetNameFromRequiredIndex fiftyoneDegreesPropertiesGetNameFromRequiredIndex
240 #define CollectionHeaderFromFile fiftyoneDegreesCollectionHeaderFromFile
241 #define CollectionCreateFromFile fiftyoneDegreesCollectionCreateFromFile
242 #define CollectionHeaderFromMemory fiftyoneDegreesCollectionHeaderFromMemory
243 #define CollectionCreateFromMemory fiftyoneDegreesCollectionCreateFromMemory
244 #define CollectionGetCount fiftyoneDegreesCollectionGetCount
245 #define FileGetPath fiftyoneDegreesFileGetPath
246 #define FileGetFileName fiftyoneDegreesFileGetFileName
247 #define ThreadingGetIsThreadSafe fiftyoneDegreesThreadingGetIsThreadSafe
248 #define CollectionReadFilePosition fiftyoneDegreesCollectionReadFilePosition
249 #define CollectionReadFileFixed fiftyoneDegreesCollectionReadFileFixed
250 #define CollectionGetIsMemoryOnly fiftyoneDegreesCollectionGetIsMemoryOnly
251 #define HeaderGetIndex fiftyoneDegreesHeaderGetIndex
252 #define FileWrite fiftyoneDegreesFileWrite
253 #define FilePoolInit fiftyoneDegreesFilePoolInit
254 #define FileCreateDirectory fiftyoneDegreesFileCreateDirectory
255 #define TextFileIterate fiftyoneDegreesTextFileIterate
256 #define ResourceManagerInit fiftyoneDegreesResourceManagerInit
257 #define PropertiesGetPropertyIndexFromRequiredIndex fiftyoneDegreesPropertiesGetPropertyIndexFromRequiredIndex
258 #define DataSetRelease fiftyoneDegreesDataSetRelease
259 #define DataSetReset fiftyoneDegreesDataSetReset
260 #define DataSetInitProperties fiftyoneDegreesDataSetInitProperties
261 #define DataSetInitHeaders fiftyoneDegreesDataSetInitHeaders
262 #define DataSetInitFromFile fiftyoneDegreesDataSetInitFromFile
263 #define DataSetInitInMemory fiftyoneDegreesDataSetInitInMemory
264 #define DataSetGet fiftyoneDegreesDataSetGet
265 #define DataSetFree fiftyoneDegreesDataSetFree
266 #define DataSetReloadManagerFromMemory fiftyoneDegreesDataSetReloadManagerFromMemory
267 #define DataSetReloadManagerFromFile fiftyoneDegreesDataSetReloadManagerFromFile
268 #define HeadersIsHttp fiftyoneDegreesHeadersIsHttp
269 #define ListReset fiftyoneDegreesListReset
270 #define ListRelease fiftyoneDegreesListRelease
271 #define ValueGetName fiftyoneDegreesValueGetName
272 #define ValueGetByName fiftyoneDegreesValueGetByName
273 #define ValueGet fiftyoneDegreesValueGet
274 #define CollectionBinarySearch fiftyoneDegreesCollectionBinarySearch
275 #define PropertyGetName fiftyoneDegreesPropertyGetName
276 #define CollectionReadFileVariable fiftyoneDegreesCollectionReadFileVariable
277 #define PropertyGetByName fiftyoneDegreesPropertyGetByName
278 #define ComponentGetHttpHeader fiftyoneDegreesComponentGetHttpHeader
279 #define PropertyGetValueType fiftyoneDegreesPropertyGetValueType
281 /* <-- only one asterisk to avoid inclusion in documentation
282  * Shortened macros.
283  */
284 
285 #define EXCEPTION_SET FIFTYONE_DEGREES_EXCEPTION_SET
286 #define EXCEPTION_CLEAR FIFTYONE_DEGREES_EXCEPTION_CLEAR
287 #define EXCEPTION_CREATE FIFTYONE_DEGREES_EXCEPTION_CREATE
288 #define EXCEPTION_OKAY FIFTYONE_DEGREES_EXCEPTION_OKAY
289 #define EXCEPTION_FAILED FIFTYONE_DEGREES_EXCEPTION_FAILED
290 #define EXCEPTION_THROW FIFTYONE_DEGREES_EXCEPTION_THROW
291 #define STRING FIFTYONE_DEGREES_STRING
292 #define COLLECTION_RELEASE FIFTYONE_DEGREES_COLLECTION_RELEASE
293 #define FILE_MAX_PATH FIFTYONE_DEGREES_FILE_MAX_PATH
294 #define THREAD_CREATE FIFTYONE_DEGREES_THREAD_CREATE
295 #define THREAD_CLOSE FIFTYONE_DEGREES_THREAD_CLOSE
296 #define THREAD_EXIT FIFTYONE_DEGREES_THREAD_EXIT
297 #define THREAD_JOIN FIFTYONE_DEGREES_THREAD_JOIN
298 #define THREAD_ROUTINE FIFTYONE_DEGREES_THREAD_ROUTINE
299 #define MUTEX_CREATE FIFTYONE_DEGREES_MUTEX_CREATE
300 #define MUTEX_CLOSE FIFTYONE_DEGREES_MUTEX_CLOSE
301 #define MUTEX_LOCK FIFTYONE_DEGREES_MUTEX_LOCK
302 #define MUTEX_UNLOCK FIFTYONE_DEGREES_MUTEX_UNLOCK
303 #define MUTEX_VALID FIFTYONE_DEGREES_MUTEX_VALID
304 #define THREAD FIFTYONE_DEGREES_THREAD
305 #define INTERLOCK_INC FIFTYONE_DEGREES_INTERLOCK_INC
306 #define INTERLOCK_DEC FIFTYONE_DEGREES_INTERLOCK_DEC
307 #define INTERLOCK_EXCHANGE FIFTYONE_DEGREES_INTERLOCK_EXCHANGE
309 /* <-- only one asterisk to avoid inclusion in documentation
310  * Shorten status codes.
311  */
312 
313 #define SUCCESS FIFTYONE_DEGREES_STATUS_SUCCESS
314 #define INSUFFICIENT_MEMORY FIFTYONE_DEGREES_STATUS_INSUFFICIENT_MEMORY
315 #define CORRUPT_DATA FIFTYONE_DEGREES_STATUS_CORRUPT_DATA
316 #define INCORRECT_VERSION FIFTYONE_DEGREES_STATUS_INCORRECT_VERSION
317 #define FILE_NOT_FOUND FIFTYONE_DEGREES_STATUS_FILE_NOT_FOUND
318 #define FILE_BUSY FIFTYONE_DEGREES_STATUS_FILE_BUSY
319 #define FILE_FAILURE FIFTYONE_DEGREES_STATUS_FILE_FAILURE
320 #define NOT_SET FIFTYONE_DEGREES_STATUS_NOT_SET
321 #define POINTER_OUT_OF_BOUNDS FIFTYONE_DEGREES_STATUS_POINTER_OUT_OF_BOUNDS
322 #define NULL_POINTER FIFTYONE_DEGREES_STATUS_NULL_POINTER
323 #define TOO_MANY_OPEN_FILES FIFTYONE_DEGREES_STATUS_TOO_MANY_OPEN_FILES
324 #define REQ_PROP_NOT_PRESENT FIFTYONE_DEGREES_STATUS_REQ_PROP_NOT_PRESENT
325 #define PROFILE_EMPTY FIFTYONE_DEGREES_STATUS_PROFILE_EMPTY
326 #define COLLECTION_FAILURE FIFTYONE_DEGREES_STATUS_COLLECTION_FAILURE
327 #define FILE_COPY_ERROR FIFTYONE_DEGREES_STATUS_FILE_COPY_ERROR
328 #define FILE_WRITE_ERROR FIFTYONE_DEGREES_STATUS_FILE_WRITE_ERROR
329 #define FILE_PERMISSION_DENIED FIFTYONE_DEGREES_STATUS_FILE_PERMISSION_DENIED
330 #define FILE_PATH_TOO_LONG FIFTYONE_DEGREES_STATUS_FILE_PATH_TOO_LONG
331 #define ENCODING_ERROR FIFTYONE_DEGREES_STATUS_ENCODING_ERROR
332 #define INVALID_COLLECTION_CONFIG FIFTYONE_DEGREES_STATUS_INVALID_COLLECTION_CONFIG
333 #define INVALID_CONFIG FIFTYONE_DEGREES_STATUS_INVALID_CONFIG
334 #define INSUFFICIENT_HANDLES FIFTYONE_DEGREES_STATUS_INSUFFICIENT_HANDLES
335 #define COLLECTION_INDEX_OUT_OF_RANGE FIFTYONE_DEGREES_STATUS_COLLECTION_INDEX_OUT_OF_RANGE
336 #define COLLECTION_OFFSET_OUT_OF_RANGE FIFTYONE_DEGREES_STATUS_COLLECTION_OFFSET_OUT_OF_RANGE
337 #define COLLECTION_FILE_SEEK_FAIL FIFTYONE_DEGREES_STATUS_COLLECTION_FILE_SEEK_FAIL
338 #define COLLECTION_FILE_READ_FAIL FIFTYONE_DEGREES_STATUS_COLLECTION_FILE_READ_FAIL
344 #endif
fiftyoneDegreesDataSetInitFromMemoryMethod DataSetInitFromMemoryMethod
Synonym for fiftyoneDegreesDataSetInitFromMemoryMethod type.
Definition: fiftyone.h:129
A component of a data set.
Definition: component.h:63
Type of collection where items are cached as they are used.
Definition: collection.h:452
#define MAP_TYPE(t)
Macro used to support synonym implementation.
Definition: fiftyone.h:78
Collection header structure which defines the size and location of the collection data.
Definition: collection.h:270
fiftyoneDegreesStatusCode
Status returned from the initialisation of a resource.
Definition: status.h:75
Pool item node in the stack of items.
Definition: pool.h:172
An array of properties and values to use when getting override values.
Definition: overrides.h:100
fiftyoneDegreesOverridesFilterMethod OverridesFilterMethod
Synonym for fiftyoneDegreesOverridesFilterMethod type.
Definition: fiftyone.h:148
fiftyoneDegreesPoolResourceCreate PoolResourceCreate
Synonym for fiftyoneDegreesPoolResourceCreate type.
Definition: fiftyone.h:120
Used to store a handle to the underlying item that could be used to release the item when it's finish...
Definition: collection.h:302
Used to read data from memory in a similar manner to a file handle.
Definition: memory.h:51
Structure containing the unique id of the profile, and the offset needed to retrieve the actual profi...
Definition: profile.h:99
Cache structure to store the root of the red black tree and a list of allocated cache nodes.
Definition: cache.h:177
Map of prefix strings to prefix enum values.
Definition: evidence.h:149
Tree root structure defining the beginning of the tree.
Definition: tree.h:80
Type of collection where the collection is streamed from file.
Definition: collection.h:437
IP address structure containing the bytes of a v4 or v6 IP address.
Definition: ip.h:63
Node structure defining a single node in the tree.
Definition: tree.h:70
Cache node structure used for storing data in the cache along with its key.
Definition: cache.h:122
String value which should override the value for the property indicated by the required property inde...
Definition: overrides.h:85
String structure containing its value and size.
Definition: string.h:80
Data structure used for reusing memory which may have been allocated in a previous operation.
Definition: data.h:99
fiftyoneDegreesCollectionItem Item
Synonym for fiftyoneDegreesCollectionItem type.
Definition: fiftyone.h:86
Pool of resources stored as items in a stack.
Definition: pool.h:192
Evidence key value pair structure which combines the prefix, key and value.
Definition: evidence.h:158
fiftyoneDegreesEvidencePrefix
Evidence prefixes used to determine the category a piece of evidence belongs to.
Definition: evidence.h:131
A signal used to limit the number of items that can be created by the pool.
Definition: threading.h:112
Array of items of type fiftyoneDegreesHeader used to easily access and track the size of the array.
Definition: headers.h:124
fiftyoneDegreesCollectionIterateMethod CollectionIterateMethod
Synonym for fiftyoneDegreesCollectionIterateMethod type.
Definition: fiftyone.h:93
Value structure containing meta data relating to the value.
Definition: value.h:66
Header structure containing the name and unique id.
Definition: headers.h:107
fiftyoneDegreesProfileIterateMethod ProfileIterateMethod
Synonym for fiftyoneDegreesProfileIterateMethod type.
Definition: fiftyone.h:154
Array of items of type fiftyoneDegreesPropertyAvailable used to easily access and track the size of t...
Definition: properties.h:140
Tracks the number of active uses of the resource within the manager.
Definition: resource.h:151
Used to access the property item quickly without the need to search.
Definition: properties.h:134
fiftyoneDegreesCollectionFileRead CollectionFileRead
Synonym for fiftyoneDegreesCollectionFileRead type.
Definition: fiftyone.h:98
Property structure containing all the meta data relating to a property.
Definition: property.h:75
fiftyoneDegreesMutex Mutex
Synonym for fiftyoneDegreesMutex type.
Definition: fiftyone.h:149
List structure which contains a list of collection items.
Definition: list.h:110
The head of the stack used for pop and push operations.
Definition: pool.h:181
File handle node in the stack of handles.
Definition: file.h:207
Defines a set of properties which are required by a caller.
Definition: properties.h:150
Array of items of type fiftyoneDegreesEvidenceKeyValuePair used to easily access and track the size o...
Definition: evidence.h:165
Manager structure used to provide access to a shared and changing resource.
Definition: resource.h:163
fiftyoneDegreesEvidenceIpType
Enum indicating the type of IP address.
Definition: ip.h:47
Cache shard structure used to enable concurrent access to the cache.
Definition: cache.h:134
Base data set structure which contains the 'must have's for all data sets.
Definition: dataset.h:94
Structure used to represent a 51Degrees exception and passed into methods that might generate excepti...
Definition: exceptions.h:109
fiftyoneDegreesPoolResourceSize PoolResourceSize
Synonym for fiftyoneDegreesPoolResourceSize type.
Definition: fiftyone.h:124
fiftyoneDegreesPoolResourceFree PoolResourceFree
Synonym for fiftyoneDegreesPoolResourceFree type.
Definition: fiftyone.h:121
Type of collection where the collection is held in continuous memory.
Definition: collection.h:426
Stack of handles used to read data from a single source file.
Definition: file.h:215
Index and pointer to a property which can be overridden.
Definition: overrides.h:75
Array of items of type fiftyoneDegreesOverrideProperty used to easily access and track the size of th...
Definition: overrides.h:95
Encapsulates a profile stored within a data set.
Definition: profile.h:82
fiftyoneDegreesDataSetInitFromFileMethod DataSetInitFromFileMethod
Synonym for fiftyoneDegreesDataSetInitFromFileMethod type.
Definition: fiftyone.h:128
fiftyoneDegreesHeadersGetMethod HeadersGetMethod
Synonym for fiftyoneDegreesHeadersGetMethod type.
Definition: fiftyone.h:132
fiftyoneDegreesPropertiesGetMethod PropertiesGetMethod
Synonym for fiftyoneDegreesPropertiesGetMethod type.
Definition: fiftyone.h:131