sbgECom Library  4.0.1987-stable
C library to 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 
285 
294 SBG_COMMON_LIB_API SbgErrorCode sbgStringCharAt(const SbgString *pString, size_t index, char *pChar);
295 
303 SBG_COMMON_LIB_API size_t sbgStringFind(const SbgString *pString, const SbgString *pStringToFind);
304 
312 SBG_COMMON_LIB_API size_t sbgStringFindCString(const SbgString *pString, const char *pCString);
313 
326 SBG_COMMON_LIB_API SbgErrorCode sbgStringSubstring(const SbgString *pString, size_t startIndex, size_t endIndex, SbgString *pSubstring);
327 
335 SBG_COMMON_LIB_API bool sbgStringStartsWith(const SbgString *pString, const char *pCString);
336 
344 SBG_COMMON_LIB_API bool sbgStringEndsWith(const SbgString *pString, const char *pCString);
345 
346 //----------------------------------------------------------------------//
347 //- Modification methods -//
348 //----------------------------------------------------------------------//
349 
357 
364 
377 
386 
395 
406 SBG_COMMON_LIB_API SbgErrorCode sbgStringAppendVF(SbgString *pString, const char *pFormat, va_list args) SBG_CHECK_FORMAT(printf, 2, 0);
407 
417 SBG_COMMON_LIB_API SbgErrorCode sbgStringAppendF(SbgString *pString, const char *pFormat, ...) SBG_CHECK_FORMAT(printf, 2, 3);
418 
427 
436 
447 SBG_COMMON_LIB_API SbgErrorCode sbgStringAssignVF(SbgString *pString, const char *pFormat, va_list args) SBG_CHECK_FORMAT(printf, 2, 0);
448 
458 SBG_COMMON_LIB_API SbgErrorCode sbgStringAssignF(SbgString *pString, const char *pFormat, ...) SBG_CHECK_FORMAT(printf, 2, 3);
459 
469 
477 
485 
493 
501 
509 
519 SBG_COMMON_LIB_API void sbgStringTruncate(SbgString *pString, size_t length);
520 
521 //----------------------------------------------------------------------//
522 //- Conversion methods -//
523 //----------------------------------------------------------------------//
524 
533 
542 
551 
560 
569 
578 
587 
595 SBG_COMMON_LIB_API SbgErrorCode sbgStringToUint16(const SbgString *pString, uint16_t *pValue);
596 
605 
614 
623 
631 SBG_COMMON_LIB_API SbgErrorCode sbgStringToUint32(const SbgString *pString, uint32_t *pValue);
632 
641 
650 
659 
667 SBG_COMMON_LIB_API SbgErrorCode sbgStringToUint64(const SbgString *pString, uint64_t *pValue);
668 
677 
686 
695 
704 
713 
722 
723 //----------------------------------------------------------------------//
724 //- Iterator methods -//
725 //----------------------------------------------------------------------//
726 
736 
750 SBG_COMMON_LIB_API SbgErrorCode sbgStringIteratorWalk(SbgStringIterator *pIterator, const char *pSeparators, bool skipEmptyTokens, SbgString *pToken);
751 
752 //----------------------------------------------------------------------//
753 //- Legacy functions -//
754 //----------------------------------------------------------------------//
755 
769 SBG_COMMON_LIB_API SbgErrorCode sbgStringCopy(char *pDestination, const char *pSource, size_t destMaxSize);
770 
777 SBG_COMMON_LIB_API const char *sbgStringFirstValidChar(const char *pInputStr);
778 
779 //----------------------------------------------------------------------//
780 //- Footer (close extern C block) -//
781 //----------------------------------------------------------------------//
782 
783 #ifdef __cplusplus
784 }
785 #endif
786 
787 #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 SBG_COMMON_LIB_API SbgErrorCode SBG_COMMON_LIB_API SbgErrorCode sbgStringClear(SbgString *pString)
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 sbgStringGetLastError(const SbgString *pString)
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 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 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