#ifndef VAL_HELPERS_H #define VAL_HELPERS_H #include "xce/types.h" // Thin accessors for xce_val_t union fields. // CGO cannot access C union fields by name (they appear as [N]byte in Go), // so these helpers extract typed values without unsafe pointer arithmetic. static inline int xce_val_which(xce_val_t *v) { return v->which; } static inline int32_t xce_val_i32(xce_val_t *v) { return v->u.ivalue32; } static inline int64_t xce_val_i64(xce_val_t *v) { return v->u.ivalue64; } static inline uint32_t xce_val_u32(xce_val_t *v) { return v->u.uvalue32; } static inline uint64_t xce_val_u64(xce_val_t *v) { return v->u.uvalue64; } static inline double xce_val_fval(xce_val_t *v) { return v->u.fvalue; } static inline char* xce_val_str(xce_val_t *v) { return v->u.svalue; } static inline int xce_val_bool(xce_val_t *v) { return v->u.bvalue; } #endif /* VAL_HELPERS_H */