#include "ellipsis-include.h"
#include "ellipsis-infra.h"
#include "utils/ellipsis-error.h"
#include <stdlib.h>
#include <threads.h>
#include "language/ellipsis-special.h"
#include "utils/ellipsis-carray.h"
#include "ellipsis-macros.h"
#include "ellipsis-expression.h"
#include "utils/ellipsis-init.h"
#include "utils/ellipsis-malloc.h"
#include "language/directive/ellipsis-directive.h"
#include "language/directive/ellipsis-special-directive_include.h"
#include "ellipsis-filter.h"
#include "ellipsis-tokenize.h"
#include <stdio.h>
#include <stdint.h>
Macros | |
#define | ELLIPSIS_CONTRACT(COUNT, COND, ACTION, VERB, CSTR, CTYPE, ...) |
#define | ELLIPSIS_CONTRACT_CHECK_STATIC(CTYPE, COND, CSTR, ...) |
#define | ELLIPSIS_CONTRACT_ICE_OR_TRUE(...) |
#define | ELLIPSIS_CONTRACT_IMPL(COUNT, COND, ACTION, VERB, CSTR, CTYPE, ...) |
#define | ELLIPSIS_CONTRACT_VIOLATION(COUNT, VERB, CTYPE, CSTR, ...) |
#define | ELLIPSIS_TEST_ICE(...) (false ? ELLIPSIS_TO_VOIDS(__VA_ARGS__) : (ellipsis‿contracts‿is_ice*)nullptr) |
#define | ELLIPSIS_TO_VOIDS(...) ((void*)((uintptr_t)((__VA_ARGS__)-(__VA_ARGS__)))) |
#define | STRINGIFY(...) STRINGIFY_(__VA_ARGS__) |
#define | STRINGIFY_(...) #__VA_ARGS__ |
Typedefs | |
typedef struct ellipsis‿contracts‿is_ice | ellipsis‿contracts‿is_ice |
Functions | |
_Atomic (size_t) | |
char * | copy_filename (char const d[static 1]) |
static void | ellipsis‿include‿_Once‿atexit‿callback (void) |
static void | ellipsis‿include‿_Once‿init‿callback (void) |
static void | ellipsis‿include‿_Once‿init‿user (void) |
void | ellipsis‿include‿_Once‿init (void) |
void | ellipsis‿include‿app_dir (char const d[static 1]) |
void | ellipsis‿include‿dat_dir (char const d[static 1]) |
void | ellipsis‿include‿emb_dir (char const d[static 1]) |
ellipsis‿token * | ellipsis‿include‿embed (FILE *f, size_t offset, size_t limit) |
int | ellipsis‿include‿fclose (FILE *f) |
FILE * | ellipsis‿include‿fopen (char *name, bool bin, bool next) |
FILE * | ellipsis‿include‿fopen32 (ellipsis‿str32 const *name32, bool bin, bool next) |
void | ellipsis‿include‿imp_dir (char const d[static 1]) |
void | ellipsis‿include‿process (ellipsis‿token‿list *tl, ellipsis‿token *name[restrict static 1], size_t *restrict offset, size_t *restrict limit, ellipsis‿token *prefix[restrict static 1], ellipsis‿token *suffix[restrict static 1], ellipsis‿token **restrict if_empty, ellipsis‿token **restrict other) |
void | ellipsis‿include‿repair (ellipsis‿token‿list *tl) |
Variables | |
thread_local bool volatile | ellipsis‿contracts‿ignore‿dynamic |
thread_local bool volatile | ellipsis‿contracts‿proceed‿dynamic |
thread_local bool volatile | ellipsis‿contracts‿verbose‿dynamic |
static void(*const | ellipsis‿include‿_Once‿atexit‿pointer )(void) = ellipsis‿include‿_Once‿atexit‿callback |
bool const | ellipsis‿include‿_Once‿strong = true |
ellipsis‿str8 * | ellipsis‿include‿directory |
#define ELLIPSIS_CONTRACT | ( | COUNT, | |
COND, | |||
ACTION, | |||
VERB, | |||
CSTR, | |||
CTYPE, | |||
... | |||
) |
#define ELLIPSIS_CONTRACT_CHECK_STATIC | ( | CTYPE, | |
COND, | |||
CSTR, | |||
... | |||
) |
#define ELLIPSIS_CONTRACT_ICE_OR_TRUE | ( | ... | ) |
#define ELLIPSIS_CONTRACT_IMPL | ( | COUNT, | |
COND, | |||
ACTION, | |||
VERB, | |||
CSTR, | |||
CTYPE, | |||
... | |||
) |
#define ELLIPSIS_CONTRACT_VIOLATION | ( | COUNT, | |
VERB, | |||
CTYPE, | |||
CSTR, | |||
... | |||
) |
#define ELLIPSIS_TEST_ICE | ( | ... | ) | (false ? ELLIPSIS_TO_VOIDS(__VA_ARGS__) : (ellipsis‿contracts‿is_ice*)nullptr) |
#define ELLIPSIS_TO_VOIDS | ( | ... | ) | ((void*)((uintptr_t)((__VA_ARGS__)-(__VA_ARGS__)))) |
#define STRINGIFY | ( | ... | ) | STRINGIFY_(__VA_ARGS__) |
#define STRINGIFY_ | ( | ... | ) | #__VA_ARGS__ |
typedef struct ellipsis‿contracts‿is_ice ellipsis‿contracts‿is_ice |
_Atomic | ( | size_t | ) |
start inner defer anchor at level 1
DEFER_TYPE needs a semicolon
defer needs braces and a semicolon
defer needs braces and a semicolon
end inner defer anchor, level 1
References ellipsis‿expression‿evaluate(), ellipsis‿str32‿construct(), ellipsis‿str32‿delete(), ellipsis‿token‿list‿append(), ellipsis‿token‿list‿close(), ellipsis‿token‿list‿destroy(), ELLIPSIS_ERROR, and exp_signed.
Referenced by ellipsis‿token‿list::ellipsis‿token‿list‿pop().
char * copy_filename | ( | char const | d[static 1] | ) |
start inner defer anchor at level 1
DEFER_TYPE needs a semicolon
defer needs braces and a semicolon
end inner defer anchor, level 1
References ellipsis_alloc, and ELLIPSIS_CONTRACT.
Referenced by ellipsis‿include‿_Once‿init‿user(), ellipsis‿include‿app_dir(), ellipsis‿include‿dat_dir(), ellipsis‿include‿emb_dir(), and ellipsis‿include‿imp_dir().
|
static |
References ellipsis‿carray‿delete(), and ellipsis‿include‿directory.
|
static |
References __FILE__, ellipsis‿include‿_Once‿atexit‿pointer, ellipsis‿include‿_Once‿init‿user(), and GNU_ATTR_USED.
Referenced by ellipsis‿include‿_Once‿init().
|
static |
References __FILE__, copy_filename(), ellipsis‿token‿_Once‿init(), and GNU_ATTR_USED.
Referenced by ellipsis‿include‿_Once‿init‿callback().
void ellipsis‿include‿_Once‿init | ( | void | ) |
References ellipsis‿include‿_Once‿init‿callback().
Referenced by ellipsis‿include‿app_dir(), ellipsis‿include‿dat_dir(), ellipsis‿include‿emb_dir(), and ellipsis‿include‿imp_dir().
void ellipsis‿include‿app_dir | ( | char const | d[static 1] | ) |
References __FILE__, copy_filename(), ellipsis‿include‿_Once‿init(), ellipsis‿include‿_Once‿strong, and GNU_ATTR_USED.
Referenced by ellipsis‿directive‿include_common(), and main().
void ellipsis‿include‿dat_dir | ( | char const | d[static 1] | ) |
References __FILE__, copy_filename(), ellipsis‿include‿_Once‿init(), ellipsis‿include‿_Once‿strong, and GNU_ATTR_USED.
Referenced by ellipsis‿directive‿embed_common().
void ellipsis‿include‿emb_dir | ( | char const | d[static 1] | ) |
References __FILE__, copy_filename(), ellipsis‿include‿_Once‿init(), ellipsis‿include‿_Once‿strong, and GNU_ATTR_USED.
Referenced by ellipsis‿directive‿embed_common().
ellipsis‿token * ellipsis‿include‿embed | ( | FILE * | f, |
size_t | offset, | ||
size_t | limit | ||
) |
start inner defer anchor at level 1
DEFER_TYPE needs a semicolon
defer needs braces and a semicolon
end inner defer anchor, level 1
References binary, ellipsis‿infra‿filter_file, ellipsis‿infra‿filter_line, ellipsis‿token‿what‿binary, ELLIPSIS_CONTRACT, end, and line.
Referenced by ellipsis‿directive‿embed_common().
int ellipsis‿include‿fclose | ( | FILE * | f | ) |
Referenced by ellipsis‿macros‿cb‿has_file(), and ellipsis‿tokenize().
FILE * ellipsis‿include‿fopen | ( | char * | name, |
bool | bin, | ||
bool | next | ||
) |
start inner defer anchor at level 1
defer needs braces and a semicolon
start inner defer anchor at level 2
defer needs braces and a semicolon
end inner defer anchor, level 2
end inner defer anchor, level 1
References ellipsis‿str8::array, dirs, ellipsis‿carray‿delete(), ellipsis‿infra‿data(), ellipsis‿infra‿dependencies, ellipsis‿infra‿dir(), ellipsis‿infra‿up(), ellipsis‿str32‿construct(), ellipsis‿str32‿delete(), ellipsis‿strdup, ellipsis‿carray::length, and ellipsis‿str8::length.
Referenced by ellipsis‿directive‿embed_common(), ellipsis‿directive‿include_common(), ellipsis‿include‿fopen32(), ellipsis‿language‿c‿_Once‿init‿user(), ellipsis‿language‿html‿_Once‿init‿user(), ellipsis‿language‿lex‿_Once‿init‿user(), ellipsis‿language‿markdown‿_Once‿init‿user(), and main().
FILE * ellipsis‿include‿fopen32 | ( | ellipsis‿str32 const * | name32, |
bool | bin, | ||
bool | next | ||
) |
start inner defer anchor at level 1
DEFER_TYPE needs a semicolon
defer needs braces and a semicolon
defer needs braces and a semicolon
end inner defer anchor, level 1
References ellipsis‿str32::array, ellipsis‿include‿fopen(), ellipsis‿str32‿delete(), ellipsis‿str32‿dup, and ellipsis‿str32::length.
Referenced by ellipsis‿macros‿cb‿has_file().
void ellipsis‿include‿imp_dir | ( | char const | d[static 1] | ) |
References __FILE__, copy_filename(), ellipsis‿include‿_Once‿init(), ellipsis‿include‿_Once‿strong, and GNU_ATTR_USED.
Referenced by ellipsis‿directive‿include_common(), ellipsis‿language‿c‿_Once‿init‿user(), ellipsis‿language‿html‿_Once‿init‿user(), ellipsis‿language‿lex‿_Once‿init‿user(), ellipsis‿language‿markdown‿_Once‿init‿user(), and main().
void ellipsis‿include‿process | ( | ellipsis‿token‿list * | tl, |
ellipsis‿token * | name[restrict static 1], | ||
size_t *restrict | offset, | ||
size_t *restrict | limit, | ||
ellipsis‿token * | prefix[restrict static 1], | ||
ellipsis‿token * | suffix[restrict static 1], | ||
ellipsis‿token **restrict | if_empty, | ||
ellipsis‿token **restrict | other | ||
) |
start inner defer anchor at level 1
defer needs braces and a semicolon
start inner defer anchor at level 2
defer needs braces and a semicolon
end inner defer anchor, level 2
start inner defer anchor at level 2
defer needs braces and a semicolon
end inner defer anchor, level 2
start inner defer anchor at level 2
defer needs braces and a semicolon
end inner defer anchor, level 2
end inner defer anchor, level 1
References comment, ellipsis‿category‿getname(), ellipsis‿str32‿delete(), ellipsis‿str32‿dup, ellipsis‿token‿list‿all(), ellipsis‿token‿list‿append(), ellipsis‿token‿list‿collect_call(), ellipsis‿token‿list‿destroy(), ellipsis‿token‿list‿flush(), ellipsis‿token‿list‿pop(), ellipsis‿token‿list‿top(), ELLIPSIS_CONTRACT, ELLIPSIS_DIAGNOSTIC, ELLIPSIS_WARNING, exp_signed, exp_unsigned, and parameter.
Referenced by ellipsis‿directive‿embed_common(), ellipsis‿directive‿include_common(), and ellipsis‿macros‿cb‿has_file().
void ellipsis‿include‿repair | ( | ellipsis‿token‿list * | tl | ) |
start inner defer anchor at level 1
defer needs braces and a semicolon
defer needs braces and a semicolon
end inner defer anchor, level 1
start inner defer anchor at level 1
defer needs braces and a semicolon
end inner defer anchor, level 1
References ellipsis‿filter(), ellipsis‿if_case‿open, ellipsis‿special‿directive_include‿find, ellipsis‿str32‿delete(), ellipsis‿str32‿dup, ellipsis‿token‿list‿all(), ellipsis‿token‿list‿append(), ellipsis‿token‿list‿close(), ellipsis‿token‿list‿destroy(), ellipsis‿token‿list‿top(), ellipsis‿tokenize‿string(), ELLIPSIS_CONTRACT, and first.
Referenced by ellipsis‿directive‿embed_common(), ellipsis‿directive‿include_common(), and ellipsis‿macros‿cb‿has_file().
|
extern |
|
extern |
|
extern |
|
static |
Referenced by ellipsis‿include‿_Once‿init‿callback().
bool const ellipsis‿include‿_Once‿strong = true |
ellipsis‿str8* ellipsis‿include‿directory |