123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- #ifndef CORE_TO_STRING_H
- #define CORE_TO_STRING_H
- #include "core/Check.h"
- #include "core/Types.h"
- check_format(3, 4) size_t
- coreToString(char* buffer, size_t n, const char* format, ...);
- size_t coreToStringSize(const void* p, char* buffer, size_t n);
- size_t coreToStringInt(const void* p, char* buffer, size_t n);
- void coreStringAdd(size_t* w, char** buffer, size_t* n, size_t shift);
- struct CoreQueueT;
- size_t coreToStringQueue(const struct CoreQueueT* r, char* buffer, size_t n,
- CoreToString c);
- #define CORE_STRUCT_TO_STRING(type) \
- struct Core##type##T; \
- size_t coreToString##type(const struct Core##type##T* a, char* buffer, \
- size_t n);
- CORE_STRUCT_TO_STRING(BitArray)
- CORE_STRUCT_TO_STRING(Box)
- CORE_STRUCT_TO_STRING(Matrix)
- CORE_STRUCT_TO_STRING(Plane)
- #ifdef IMPORT_CORE
- #define toStringSize coreToStringSize
- #define toStringInt coreToStringInt
- #define stringAdd coreStringAdd
- #define toStringQueue coreToStringQueue
- #define toStringBitArray coreToStringBitArray
- #define toStringBox coreToStringBox
- #define toStringMatrix coreToStringMatrix
- #define toStringPlane coreToStringPlane
- #define CORE_PAIR(a, b) a: b
- #define CORE_STRUCT_PAIR(name) \
- CORE_PAIR(const struct Core##name##T*, toString##name), \
- CORE_PAIR(struct Core##name##T*, toString##name)
- #define toString(t, ...) \
- _Generic((t), \
- char*: coreToString, \
- CORE_STRUCT_PAIR(BitArray), \
- CORE_STRUCT_PAIR(Box), \
- CORE_STRUCT_PAIR(Matrix), \
- CORE_STRUCT_PAIR(Plane), \
- CORE_STRUCT_PAIR(Queue))(t, __VA_ARGS__)
- #endif
- #endif
|