A device detection library that is used natively or by 51Degrees products

string.h

1/* *********************************************************************
2 * This Original Work is copyright of 51 Degrees Mobile Experts Limited.
3 * Copyright 2026 51 Degrees Mobile Experts Limited, Davidson House,
4 * Forbury Square, Reading, Berkshire, United Kingdom RG1 3EU.
5 *
6 * This Original Work is licensed under the European Union Public Licence
7 * (EUPL) v.1.2 and is subject to its terms as set out below.
8 *
9 * If a copy of the EUPL was not distributed with this file, You can obtain
10 * one at https://opensource.org/licenses/EUPL-1.2.
11 *
12 * The 'Compatible Licences' set out in the Appendix to the EUPL (as may be
13 * amended by the European Commission) shall be deemed incompatible for
14 * the purposes of the Work and the provisions of the compatibility
15 * clause in Article 5 of the EUPL shall not apply.
16 *
17 * If using the Work as, or as part of, a network application, by
18 * including the attribution notice(s) required under Article 5 of the EUPL
19 * in the end user terms of the application under an appropriate heading,
20 * such notice(s) shall fulfill the requirements of that article.
21 * ********************************************************************* */
22
23#ifndef FIFTYONE_DEGREES_STRING_H_INCLUDED
24#define FIFTYONE_DEGREES_STRING_H_INCLUDED
25
26#ifdef FIFTYONE_DEGREES_IPI_SYMBOLS
27#include "ipiSymbols.h"
28#endif
29
69
70#include <stdint.h>
71#include <ctype.h>
72#include "exceptions.h"
73#include "collection.h"
74#include "float.h"
75#include "common.h"
76#include "ip.h"
77#include "propertyValueType.h"
78
84#define FIFTYONE_DEGREES_STRING(s) \
85 (const char*)(s == NULL ? NULL : &((fiftyoneDegreesString*)s)->value)
86
96#pragma pack(push, 1)
97typedef struct fiftyone_degrees_string_t {
98 uint16_t size;
99 char value;
101#pragma pack(pop)
102
108#ifndef FIFTYONE_DEGREES_MEMORY_ONLY
110 const void *initial,
111 fiftyoneDegreesException *exception);
112#else
113#define fiftyoneDegreesStringGetFinalSize NULL
114#endif
115
116
117#ifndef FIFTYONE_DEGREES_MEMORY_ONLY
132 fiftyoneDegreesException *exception);
133
134#endif
135
146 const fiftyoneDegreesCollection *strings,
147 uint32_t offset,
149 fiftyoneDegreesException *exception);
150
159 char const *a,
160 char const *b,
161 size_t length);
162
169EXTERNAL int fiftyoneDegreesStringCompare(const char *a, const char *b);
170
178EXTERNAL const char *fiftyoneDegreesStringSubString(const char *a, const char *b);
179
183
184#include "stringBuilder.h"
185
186#endif
int fiftyoneDegreesStringCompare(const char *a, const char *b)
Case insensitively compare two strings.
int fiftyoneDegreesStringCompareLength(char const *a, char const *b, size_t length)
Case insensitively compare two strings up to the length requested.
void * fiftyoneDegreesStringRead(const fiftyoneDegreesCollectionFile *file, const fiftyoneDegreesCollectionKey *key, fiftyoneDegreesData *data, fiftyoneDegreesException *exception)
Reads a string from the source file at the offset within the string structure.
uint32_t fiftyoneDegreesStringGetFinalSize(const void *initial, fiftyoneDegreesException *exception)
Gets size of String with trailing characters.
const char * fiftyoneDegreesStringSubString(const char *a, const char *b)
Case insensitively searching a first occurrence of a substring.
const fiftyoneDegreesString * fiftyoneDegreesStringGet(const fiftyoneDegreesCollection *strings, uint32_t offset, fiftyoneDegreesCollectionItem *item, fiftyoneDegreesException *exception)
Gets the string at the required offset from the collection provided.
Type of collection where the collection is streamed from file.
Definition collection.h:456
All the shared methods and fields required by file, memory and cached collections.
Definition collection.h:408
Used to store a handle to the underlying item that could be used to release the item when it's finish...
Definition collection.h:315
Explains to a collection (or cache) what the consumer is looking for.
Definition collectionKey.h:76
Data structure used for reusing memory which may have been allocated in a previous operation.
Definition data.h:105
Structure used to represent a 51Degrees exception and passed into methods that might generate excepti...
Definition exceptions.h:115
Definition string.h:97
char value
The first character of the string.
Definition string.h:99
uint16_t size
Size of the string in memory (starting from 'value').
Definition string.h:98