a
This commit is contained in:
parent
f8c7e4b9cd
commit
8084ed69fb
1 changed files with 38 additions and 0 deletions
38
slibs.h
38
slibs.h
|
@ -40,6 +40,26 @@
|
||||||
void *: "%p", \
|
void *: "%p", \
|
||||||
default: "Unknown")
|
default: "Unknown")
|
||||||
|
|
||||||
|
#define sl_stringify(x) #x
|
||||||
|
|
||||||
|
// Helper macros to count the number of arguments
|
||||||
|
#define NARG_(...) NARG_##__VA_ARGS__
|
||||||
|
#define NARG(...) NARG_(__VA_ARGS__, RSEQ_N())
|
||||||
|
#define RSEQ_N() 5, 4, 3, 2, 1, 0
|
||||||
|
#define ENUM_NAMES_N(values, n) ENUM_NAMES_##n values
|
||||||
|
#define ENUM_NAMES_(values, n) ENUM_NAMES_N(values, n)
|
||||||
|
#define ENUM_NAMES(...) ENUM_NAMES_(__VA_ARGS__, NARG(__VA_ARGS__))
|
||||||
|
#define ENUM_NAMES_0
|
||||||
|
#define ENUM_NAMES_1(x) #x
|
||||||
|
#define ENUM_NAMES_2(x, ...) #x, ENUM_NAMES_1(__VA_ARGS__)
|
||||||
|
#define ENUM_NAMES_3(x, ...) #x, ENUM_NAMES_2(__VA_ARGS__)
|
||||||
|
#define ENUM_NAMES_4(x, ...) #x, ENUM_NAMES_3(__VA_ARGS__)
|
||||||
|
#define ENUM_NAMES_5(x, ...) #x, ENUM_NAMES_4(__VA_ARGS__)
|
||||||
|
|
||||||
|
#define sl_named_enums(enum_name, ...) \
|
||||||
|
enum enum_name { __VA_ARGS__, enum_name##_COUNT }; \
|
||||||
|
const char *enum_name##EnumNames[] = {ENUM_NAMES(__VA_ARGS__)};
|
||||||
|
|
||||||
#pragma endregion
|
#pragma endregion
|
||||||
#pragma region Vector
|
#pragma region Vector
|
||||||
|
|
||||||
|
@ -165,6 +185,24 @@ typedef sl_vec(char) sl_string;
|
||||||
sl_ptr_release(smart_ptr); \
|
sl_ptr_release(smart_ptr); \
|
||||||
});
|
});
|
||||||
|
|
||||||
|
void sl_read_file(const char *filename, sl_string *buffer) {
|
||||||
|
FILE *file = fopen(filename, "r");
|
||||||
|
if (!file) {
|
||||||
|
fprintf(stderr, "Error: could not open file %s\n", filename);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
fseek(file, 0, SEEK_END);
|
||||||
|
size_t file_size = ftell(file);
|
||||||
|
fseek(file, 0, SEEK_SET);
|
||||||
|
|
||||||
|
for (size_t i = 0; i < file_size; i++) {
|
||||||
|
sl_vec_push(*buffer, fgetc(file));
|
||||||
|
}
|
||||||
|
|
||||||
|
fclose(file);
|
||||||
|
}
|
||||||
|
|
||||||
#pragma endregion
|
#pragma endregion
|
||||||
|
|
||||||
#endif // SLIBS_H
|
#endif // SLIBS_H
|
Loading…
Add table
Reference in a new issue