sbgECom Library  5.1.708-stable
Interface SBG Systems IMU/AHRS/INS
sbgString.h
Go to the documentation of this file.
1 
33 #ifndef SBG_STRING_H
34 #define SBG_STRING_H
35 
36 // sbgCommonLib headers
37 #include <sbgCommon.h>
39 
40 //----------------------------------------------------------------------//
41 //- Header (open extern C block) -//
42 //----------------------------------------------------------------------//
43 
44 #ifdef __cplusplus
45 extern "C" {
46 #endif
47 
48 //----------------------------------------------------------------------//
49 //- Constant definitions -//
50 //----------------------------------------------------------------------//
51 
58 #define SBG_STRING_INTERNAL_BUFFER_MIN_SIZE (4)
59 
60 #if SBG_STRING_INTERNAL_BUFFER_MIN_SIZE == 0
61 #error "invalid minimum internal buffer size"
62 #endif
63 
67 #define SBG_STRING_INTERNAL_BUFFER_DEFAULT_SIZE (16)
68 
69 #ifndef SBG_CONFIG_STRING_INTERNAL_BUFFER_SIZE
70 #define SBG_CONFIG_STRING_INTERNAL_BUFFER_SIZE SBG_STRING_INTERNAL_BUFFER_DEFAULT_SIZE
71 #elif SBG_CONFIG_STRING_INTERNAL_BUFFER_SIZE < SBG_STRING_INTERNAL_BUFFER_MIN_SIZE
72 #error "invalid internal buffer size"
73 #endif // SBG_CONFIG_STRING_INTERNAL_BUFFER_SIZE
74 
75 //----------------------------------------------------------------------//
76 //- Structure definitions -//
77 //----------------------------------------------------------------------//
78 
90 typedef struct _SbgString
91 {
97  char internalBuffer[SBG_CONFIG_STRING_INTERNAL_BUFFER_SIZE];
98 
99  char *pBuffer;
100  size_t capacity;
101  size_t length;
103  bool readOnly;
104  bool isStatic;
108 
112 typedef struct _SbgStringIterator
113 {
114  const char *pCursor;
116 
117 //----------------------------------------------------------------------//
118 //- Public functions -//
119 //----------------------------------------------------------------------//
120 
130 
142 
153 
164 SBG_COMMON_LIB_API SbgErrorCode sbgStringConstructVF(SbgString *pString, const char *pFormat, va_list args) SBG_CHECK_FORMAT(printf, 2, 0);
165 
175 SBG_COMMON_LIB_API SbgErrorCode sbgStringConstructF(SbgString *pString, const char *pFormat, ...) SBG_CHECK_FORMAT(printf, 2, 3);
176 
196 SBG_COMMON_LIB_API SbgErrorCode sbgStringConstructStatic(SbgString *pString, const char *pCString, char *pBuffer, size_t size);
197 
209 SBG_COMMON_LIB_API void sbgStringConstructReadOnly(SbgString *pString, const char *pCString);
210 
217 
227 SBG_COMMON_LIB_API int32_t sbgStringCompare(const SbgString *pString, const SbgString *pOtherString);
228 
238 SBG_COMMON_LIB_API int32_t sbgStringCompareCString(const SbgString *pString, const char *pCString);
239 
249 SBG_COMMON_LIB_API int32_t sbgStringCompareIgnoreCase(const SbgString *pString, const SbgString *pOtherString);
250 
260 SBG_COMMON_LIB_API int32_t sbgStringCompareIgnoreCaseCString(const SbgString *pString, const char *pCString);
261 
269 
277 
287 
296 SBG_COMMON_LIB_API SbgErrorCode sbgStringCharAt(const SbgString *pString, size_t index, char *pChar);
297 
305 SBG_COMMON_LIB_API size_t sbgStringFind(const SbgString *pString, const SbgString *pStringToFind);
306 
314 SBG_COMMON_LIB_API size_t sbgStringFindCString(const SbgString *pString, const char *pCString);
315 
328 SBG_COMMON_LIB_API SbgErrorCode sbgStringSubstring(const SbgString *pString, size_t startIndex, size_t endIndex, SbgString *pSubstring);
329 
337 SBG_COMMON_LIB_API bool sbgStringStartsWith(const SbgString *pString, const char *pCString);
338 
346 SBG_COMMON_LIB_API bool sbgStringEndsWith(const SbgString *pString, const char *pCString);
347 
348 //----------------------------------------------------------------------//
349 //- Modification methods -//
350 //----------------------------------------------------------------------//
351 
359 
366 
379 
388 
397 
408 SBG_COMMON_LIB_API SbgErrorCode sbgStringAppendVF(SbgString *pString, const char *pFormat, va_list args) SBG_CHECK_FORMAT(printf, 2, 0);
409 
419 SBG_COMMON_LIB_API SbgErrorCode sbgStringAppendF(SbgString *pString, const char *pFormat, ...) SBG_CHECK_FORMAT(printf, 2, 3);
420 
429 
438 
449 SBG_COMMON_LIB_API SbgErrorCode sbgStringAssignVF(SbgString *pString, const char *pFormat, va_list args) SBG_CHECK_FORMAT(printf, 2, 0);
450 
460 SBG_COMMON_LIB_API SbgErrorCode sbgStringAssignF(SbgString *pString, const char *pFormat, ...) SBG_CHECK_FORMAT(printf, 2, 3);
461 
472 
486 
497 
507 
515 
523 
531 
539 
547 
557 SBG_COMMON_LIB_API void sbgStringTruncate(SbgString *pString, size_t length);
558 
559 //----------------------------------------------------------------------//
560 //- Conversion methods -//
561 //----------------------------------------------------------------------//
562 
571 
580 
589 
598 
607 
616 
625 
633 SBG_COMMON_LIB_API SbgErrorCode sbgStringToUint16(const SbgString *pString, uint16_t *pValue);
634 
643 
652 
661 
669 SBG_COMMON_LIB_API SbgErrorCode sbgStringToUint32(const SbgString *pString, uint32_t *pValue);
670 
679 
688 
697 
705 SBG_COMMON_LIB_API SbgErrorCode sbgStringToUint64(const SbgString *pString, uint64_t *pValue);
706 
715 
724 
733 
742 
751 
760 
761 //----------------------------------------------------------------------//
762 //- Iterator methods -//
763 //----------------------------------------------------------------------//
764 
774 
788 SBG_COMMON_LIB_API SbgErrorCode sbgStringIteratorWalk(SbgStringIterator *pIterator, const char *pSeparators, bool skipEmptyTokens, SbgString *pToken);
789 
790 //----------------------------------------------------------------------//
791 //- Legacy functions -//
792 //----------------------------------------------------------------------//
793 
807 SBG_COMMON_LIB_API SbgErrorCode sbgStringCopy(char *pDestination, const char *pSource, size_t destMaxSize);
808 
815 SBG_COMMON_LIB_API const char *sbgStringFirstValidChar(const char *pInputStr);
816 
817 //----------------------------------------------------------------------//
818 //- Footer (close extern C block) -//
819 //----------------------------------------------------------------------//
820 
821 #ifdef __cplusplus
822 }
823 #endif
824 
825 #endif // SBG_STRING_H
Main header for the SBG Systems common C library.
#define SBG_COMMON_LIB_API
Definition: sbgDefines.h:79
enum _SbgErrorCode SbgErrorCode
Used to read/write data from/to a memory buffer stream.
SBG_COMMON_LIB_API SbgErrorCode sbgStringFromUint16(SbgString *pString, uint16_t value)
SBG_COMMON_LIB_API SbgErrorCode sbgStringAppend(SbgString *pString, const SbgString *pAppendString)
SBG_COMMON_LIB_API SbgErrorCode sbgStringTrim(SbgString *pString)
SBG_COMMON_LIB_API SbgErrorCode sbgStringToDouble(const SbgString *pString, double *pValue)
SBG_COMMON_LIB_API void sbgStringClearLastError(SbgString *pString)
SBG_COMMON_LIB_API SbgErrorCode sbgStringFromInt8(SbgString *pString, int8_t value)
SBG_COMMON_LIB_API int32_t sbgStringCompareCString(const SbgString *pString, const char *pCString)
SBG_COMMON_LIB_API SbgErrorCode sbgStringFromInt16(SbgString *pString, int16_t value)
SBG_COMMON_LIB_API SbgErrorCode sbgStringFromStreamBuffer(SbgString *pString, SbgStreamBuffer *pStream)
SBG_COMMON_LIB_API SbgErrorCode sbgStringIteratorWalk(SbgStringIterator *pIterator, const char *pSeparators, bool skipEmptyTokens, SbgString *pToken)
struct _SbgString SbgString
SBG_COMMON_LIB_API SbgErrorCode SBG_COMMON_LIB_API SbgErrorCode SBG_COMMON_LIB_API SbgErrorCode sbgStringMove(SbgString *pString, SbgString *pSourceString)
SBG_COMMON_LIB_API SbgErrorCode sbgStringGetLastError(const SbgString *pString)
SBG_COMMON_LIB_API SbgErrorCode sbgStringMoveCString(SbgString *pString, char *pCString)
SBG_COMMON_LIB_API SbgErrorCode sbgStringFromInt64(SbgString *pString, int64_t value)
SBG_COMMON_LIB_API void sbgStringIteratorConstruct(SbgStringIterator *pIterator, const SbgString *pString)
SBG_COMMON_LIB_API SbgErrorCode sbgStringFromUint64(SbgString *pString, uint64_t value)
SBG_COMMON_LIB_API SbgErrorCode sbgStringToStreamBuffer(const SbgString *pString, SbgStreamBuffer *pStream)
SBG_COMMON_LIB_API SbgErrorCode sbgStringClear(SbgString *pString)
SBG_COMMON_LIB_API int32_t sbgStringCompare(const SbgString *pString, const SbgString *pOtherString)
SBG_COMMON_LIB_API const char * sbgStringGetCString(const SbgString *pString)
SBG_COMMON_LIB_API SbgErrorCode sbgStringToUint32(const SbgString *pString, uint32_t *pValue)
SBG_COMMON_LIB_API SbgErrorCode sbgStringConstruct(SbgString *pString, const SbgString *pSourceString)
SBG_COMMON_LIB_API const char * sbgStringFirstValidChar(const char *pInputStr)
SBG_COMMON_LIB_API void sbgStringDestroy(SbgString *pString)
SBG_COMMON_LIB_API void sbgStringConstructReadOnly(SbgString *pString, const char *pCString)
SBG_COMMON_LIB_API SbgErrorCode sbgStringToLowerCase(SbgString *pString)
SBG_COMMON_LIB_API SbgErrorCode sbgStringToInt32(const SbgString *pString, int32_t *pValue)
SBG_COMMON_LIB_API SbgErrorCode sbgStringConstructCString(SbgString *pString, const char *pCString)
SBG_COMMON_LIB_API SbgErrorCode sbgStringToUint16(const SbgString *pString, uint16_t *pValue)
SBG_COMMON_LIB_API bool sbgStringEndsWith(const SbgString *pString, const char *pCString)
SBG_COMMON_LIB_API int32_t sbgStringCompareIgnoreCase(const SbgString *pString, const SbgString *pOtherString)
SBG_COMMON_LIB_API SbgErrorCode SBG_COMMON_LIB_API SbgErrorCode SBG_COMMON_LIB_API SbgErrorCode sbgStringConstructStatic(SbgString *pString, const char *pCString, char *pBuffer, size_t size)
SBG_COMMON_LIB_API SbgErrorCode sbgStringToInt8(const SbgString *pString, int8_t *pValue)
SBG_COMMON_LIB_API char * sbgStringExtract(SbgString *pString)
SBG_COMMON_LIB_API SbgErrorCode sbgStringToInt64(const SbgString *pString, int64_t *pValue)
SBG_COMMON_LIB_API SbgErrorCode sbgStringToFloat(const SbgString *pString, float *pValue)
struct _SbgStringIterator SbgStringIterator
SBG_COMMON_LIB_API SbgErrorCode sbgStringConstructVF(SbgString *pString, const char *pFormat, va_list args) SBG_CHECK_FORMAT(printf
SBG_COMMON_LIB_API SbgErrorCode sbgStringSubstring(const SbgString *pString, size_t startIndex, size_t endIndex, SbgString *pSubstring)
SBG_COMMON_LIB_API bool sbgStringStartsWith(const SbgString *pString, const char *pCString)
SBG_COMMON_LIB_API SbgErrorCode sbgStringToInt16(const SbgString *pString, int16_t *pValue)
SBG_COMMON_LIB_API size_t sbgStringGetLength(const SbgString *pString)
SBG_COMMON_LIB_API SbgErrorCode sbgStringFromDouble(SbgString *pString, double value)
SBG_COMMON_LIB_API void sbgStringTruncate(SbgString *pString, size_t length)
SBG_COMMON_LIB_API SbgErrorCode sbgStringTrimRight(SbgString *pString)
SBG_COMMON_LIB_API int32_t sbgStringCompareIgnoreCaseCString(const SbgString *pString, const char *pCString)
SBG_COMMON_LIB_API SbgErrorCode sbgStringSetCharAt(SbgString *pString, size_t index, char c)
SBG_COMMON_LIB_API SbgErrorCode sbgStringFromFloat(SbgString *pString, float value)
SBG_COMMON_LIB_API SbgErrorCode SBG_COMMON_LIB_API SbgErrorCode SBG_COMMON_LIB_API SbgErrorCode sbgStringAssign(SbgString *pString, const SbgString *pAssignString)
SBG_COMMON_LIB_API SbgErrorCode sbgStringToUint8(const SbgString *pString, uint8_t *pValue)
SBG_COMMON_LIB_API SbgErrorCode SBG_COMMON_LIB_API SbgErrorCode sbgStringAssignF(SbgString *pString, const char *pFormat,...) SBG_CHECK_FORMAT(printf
SBG_COMMON_LIB_API SbgErrorCode sbgStringTrimLeft(SbgString *pString)
SBG_COMMON_LIB_API size_t sbgStringHash(const SbgString *pString)
SBG_COMMON_LIB_API SbgErrorCode sbgStringAssignVF(SbgString *pString, const char *pFormat, va_list args) SBG_CHECK_FORMAT(printf
SBG_COMMON_LIB_API SbgErrorCode sbgStringCopy(char *pDestination, const char *pSource, size_t destMaxSize)
SBG_COMMON_LIB_API SbgErrorCode SBG_COMMON_LIB_API SbgErrorCode sbgStringConstructF(SbgString *pString, const char *pFormat,...) SBG_CHECK_FORMAT(printf
SBG_COMMON_LIB_API SbgErrorCode sbgStringAppendCString(SbgString *pString, const char *pCString)
SBG_COMMON_LIB_API SbgErrorCode sbgStringToUpperCase(SbgString *pString)
SBG_COMMON_LIB_API size_t sbgStringFind(const SbgString *pString, const SbgString *pStringToFind)
SBG_COMMON_LIB_API SbgErrorCode sbgStringAssignCString(SbgString *pString, const char *pCString)
SBG_COMMON_LIB_API SbgErrorCode sbgStringFromUint8(SbgString *pString, uint8_t value)
SBG_COMMON_LIB_API SbgErrorCode sbgStringFromUint32(SbgString *pString, uint32_t value)
SBG_COMMON_LIB_API SbgErrorCode SBG_COMMON_LIB_API SbgErrorCode sbgStringAppendF(SbgString *pString, const char *pFormat,...) SBG_CHECK_FORMAT(printf
SBG_COMMON_LIB_API SbgErrorCode sbgStringCharAt(const SbgString *pString, size_t index, char *pChar)
SBG_COMMON_LIB_API SbgErrorCode sbgStringFromInt32(SbgString *pString, int32_t value)
SBG_COMMON_LIB_API SbgErrorCode sbgStringAppendVF(SbgString *pString, const char *pFormat, va_list args) SBG_CHECK_FORMAT(printf
SBG_COMMON_LIB_API void sbgStringConstructEmpty(SbgString *pString)
SBG_COMMON_LIB_API SbgErrorCode sbgStringToUint64(const SbgString *pString, uint64_t *pValue)
SBG_COMMON_LIB_API size_t sbgStringFindCString(const SbgString *pString, const char *pCString)
Definition: sbgStreamBufferCommon.h:201
Definition: sbgString.h:91
size_t length
Definition: sbgString.h:101
bool readOnly
Definition: sbgString.h:103
SbgErrorCode errorCode
Definition: sbgString.h:106
char * pBuffer
Definition: sbgString.h:99
bool isStatic
Definition: sbgString.h:104
char internalBuffer[SBG_CONFIG_STRING_INTERNAL_BUFFER_SIZE]
Definition: sbgString.h:97
size_t capacity
Definition: sbgString.h:100
Definition: sbgString.h:113
const char * pCursor
Definition: sbgString.h:114