CX Framework
Cross-platform C utility framework
Loading...
Searching...
No Matches
High-Level Operations

Macros

#define stDestroy(type, pobj, ...)    _stDestroy(stFullType(type), stArgPtr(type, pobj), opt_flags(__VA_ARGS__))
 
#define stCmp(type, obj1, obj2, ...)    _stCmp(stFullType(type), stArg(type, obj1), stArg(type, obj2), opt_flags(__VA_ARGS__))
 
#define stCopy(type, pdest, src, ...)    _stCopy(stFullType(type), stArgPtr(type, pdest), stArg(type, src), opt_flags(__VA_ARGS__))
 
#define stHash(type, obj, ...)   _stHash(stFullType(type), stArg(type, obj), opt_flags(__VA_ARGS__))
 
#define stConvert(desttype, pdest, srctype, src, ...)
 

Detailed Description

Type-safe wrappers for common operations on typed values. These macros expand to the appropriate function calls with compile-time type checking.

Macro Definition Documentation

◆ stCmp

#define stCmp (   type,
  obj1,
  obj2,
  ... 
)     _stCmp(stFullType(type), stArg(type, obj1), stArg(type, obj2), opt_flags(__VA_ARGS__))

intptr stCmp(type, obj1, obj2, [flags])

Compare two typed values for ordering.

Parameters
typeType name
obj1First value
obj2Second value
...(flags) Optional operation flags:
  • ST_CaseInsensitive: Case-insensitive comparison
  • ST_Equality: Only check equality, not ordering
Returns
Negative if obj1 < obj2, zero if equal, positive if obj1 > obj2

Example:

if (stCmp(string, s1, s2) == 0) {
// strings are equal
}
#define stCmp(type, obj1, obj2,...)
Definition stype.h:1408

Definition at line 1408 of file stype.h.

◆ stConvert

#define stConvert (   desttype,
  pdest,
  srctype,
  src,
  ... 
)
Value:
_stConvert(stType(desttype), \
stArgPtr(desttype, pdest), \
stFullType(srctype), \
stArg(srctype, src), \
opt_flags(__VA_ARGS__))
#define stType(name)
Definition stype.h:822
#define stFullType(name)
Definition stype.h:876
#define stArg(type, val)
Definition stype.h:937
#define stArgPtr(type, val)
Definition stype.h:990

bool stConvert(desttype, pdest, srctype, src, [flags])

Convert a value from one type to another.

WARNING: Overwrites destination without destroying existing value.

Parameters
desttypeDestination type name
pdestPointer to destination
srctypeSource type name
srcSource value
...(flags) Conversion flags:
  • ST_Overflow: Allow overflow without error
  • ST_Lossless: Fail if conversion loses precision
Returns
true if conversion succeeded

Example:

float32 f;
if (stConvert(float32, &f, int32, 42)) {
// f now contains 42.0
}
#define stConvert(desttype, pdest, srctype, src,...)
Definition stype.h:1517

Definition at line 1517 of file stype.h.

◆ stCopy

#define stCopy (   type,
  pdest,
  src,
  ... 
)     _stCopy(stFullType(type), stArgPtr(type, pdest), stArg(type, src), opt_flags(__VA_ARGS__))

void stCopy(type, pdest, src, [flags])

Copy a typed value from source to destination.

WARNING: Overwrites destination without destroying existing value. For managed types, the destination must be uninitialized or already destroyed.

Parameters
typeType name
pdestPointer to destination
srcSource value
...(flags) Optional operation flags

Example:

int32 dest; // uninitialized
stCopy(int32, &dest, 42);
#define stCopy(type, pdest, src,...)
Definition stype.h:1445

Definition at line 1445 of file stype.h.

◆ stDestroy

#define stDestroy (   type,
  pobj,
  ... 
)     _stDestroy(stFullType(type), stArgPtr(type, pobj), opt_flags(__VA_ARGS__))

void stDestroy(type, pobj, [flags])

Destroy a typed value, releasing any resources it owns.

Calls the appropriate destructor based on the type. For reference-counted types, decrements the reference count. For containers, recursively destroys elements. For primitives, this is typically a no-op.

Parameters
typeType name (e.g., string, int32, object)
pobjPointer to the value to destroy
...(flags) Optional operation flags

Example:

string s = _S"hello";
stDestroy(string, &s); // s is now invalid
#define _S
Creates a static ASCII string from a string literal.
Definition strbase.h:392
#define stDestroy(type, pobj,...)
Definition stype.h:1377

Definition at line 1377 of file stype.h.

◆ stHash

#define stHash (   type,
  obj,
  ... 
)    _stHash(stFullType(type), stArg(type, obj), opt_flags(__VA_ARGS__))

uint32 stHash(type, obj, [flags])

Compute a hash value for a typed value.

Parameters
typeType name
objValue to hash
...(flags) Optional operation flags:
  • ST_CaseInsensitive: Case-insensitive hash
Returns
32-bit hash value

Example:

uint32 h = stHash(string, s);
#define stHash(type, obj,...)
Definition stype.h:1481

Definition at line 1481 of file stype.h.