This file contains excerps from the sources, which are linked.
1. Definition of String
=>source: src_emC/emC/Base/types_def_common.h[tag=StringJc]
/**This is the defintion of a reference to a String and a value and state information.
* It is similar as the defintion of AddrVal_emC or the macro STRUCT_AddrVal_emC
* but the address is a union because of different capabilities. It is written in the same kind.
* * First element is a pointer with different types in the union.
* * Second element is the length and flags, see in header emC/Base/StringBase_emC.h
*/
typedef struct StringJc_T {
union CharSeqTypes_T {
char const* str;
#ifndef DEF_NO_StringUSAGE
struct StringBuilderJc_t* bu;
#ifdef DEF_CharSeqJcCapabilities
struct ObjectJc_T const* obj;
#ifdef __cplusplus
class CharSequenceJc* csq;
#endif
#endif
#endif
} addr;
VALTYPE_AddrVal_emC val; //Note: Use same type as in STRUCT_AddrVal_emC
} StringJc;
2. Build operations as const
=>source: src_emC/emC/Base/types_def_common.h[tag=StringJc_Common]
/**StringJc object containing null-values. */
extern_C StringJc const null_StringJc;
/**StringJc object containing an empty String, ref to "", lenght = 0 */
extern_C StringJc const empty_StringJc;
/**Initializer-Macro for constant StringJc, initialize the StringJc-reference to a zero-terminated text.
* The length of the text
* is not stored inside StringJc, the length bits are setted to kIs_0_terminated_StringJc
* (it is the value of ,,mLength_StringJc,,), to detect this constellation.
* @param TEXT should be a text-literal only. If it references a char-array,
* a problem with persistence may existing.
*/
#define INIZ_z_StringJc(TEXT) { TEXT, kIs_0_terminated_StringJc}
#define CONST_z_StringJc(TEXT) INIZ_z_StringJc(TEXT)
/**Initializer-Macro for StringJc, initialize the StringJc-reference to a string literal.
* The length of the literal is calculated via sizeof("text").
* @param TEXT should only be a text-literal.
* If it references a char-array, the size is faulty
* and problem with persistence may existing.
*/
#define INIZ_text_StringJc(TEXT) { TEXT, (int)(sizeof(TEXT)-1) }
/**Initializer-Macro for constant StringJc, initialize the StringJc-reference to a text with known length.
* Using this macro instead ,,CONST_StringJc(...),, saves calculation time to calculate the ,,strlen(),,.
* @param TEXT should be a text-literal only. If it references a char-array,
* a problem with persistence may existing.
* @param LEN The length as number. Do not use methods like strlen(...)
* to determine the length, because this is a const-initializing-macro.
* In C++, methods are syntaxtically able to use, but it produces more machine code
* and the definition cannot store in a const segment. In C it is an error.
*/
#define INIZ_StringJc(TEXT, LEN) { {TEXT}, LEN }
#define CONST_StringJc(TEXT, LEN) INIZ_StringJc(TEXT, LEN)
#define NULL_StringJc { {null}, 0}