#include "ellipsis-filter.h"
#include "ellipsis-infra.h"
#include "ellipsis-macros.h"
#include "ellipsis-expression.h"
#include "language/ellipsis-special.h"
#include "ellipsis-lexer.h"
#include "language/c/ellipsis-special-c.h"
#include "language/c/ellipsis-special-c_pragma.h"
#include "language/c/ellipsis-special-c_comment.h"
#include "language/c/ellipsis-special-c_directive.h"
#include "language/c/ellipsis-special-c_include.h"
#include "language/directive/ellipsis-special-directive_define.h"
#include "language/directive/ellipsis-special-directive_if.h"
#include "language/directive/ellipsis-special-directive_include.h"
#include <stdio.h>
#include <stdlib.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 | |
static ellipsis‿token‿list * | callback_call (ellipsis‿token *repl, ellipsis‿token *al) |
static void | ellipsis‿filter‿local (ellipsis‿token *repl, ellipsis‿token‿list *in, ellipsis‿token‿list *out, ellipsis‿category cat) |
static int | ellipsis‿filter‿thrd (void *p) |
thrd_t | ellipsis‿filter‿thread (ellipsis‿token‿list tl[static 2]) |
void | ellipsis‿filter (ellipsis‿token‿list in[restrict static 1], ellipsis‿token‿list *restrict out, ellipsis‿if_case ic, bool close) |
static bool | evaluate_expression (ellipsis‿token‿list *tl) |
static ellipsis‿token‿list * | expand_functional (ellipsis‿token repl[static 1], ellipsis‿token‿list in[static 1], bool with_paren, ellipsis‿str32 const *spacep[static 1]) |
static bool | expand_macro (ellipsis‿token h[static 1], ellipsis‿token repl[static 1], ellipsis‿token‿list in[static 1], ellipsis‿token‿list out[static 1]) |
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 |
#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 |
|
static |
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‿token‿list‿append(), ellipsis‿token‿list‿close(), ellipsis‿token‿list‿open(), and ELLIPSIS_CONTRACT.
Referenced by expand_macro().
|
static |
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
References ellipsis‿token::cat, comment, ellipsis‿filter(), ellipsis‿if_case‿open, ellipsis‿token‿list‿all(), ellipsis‿token‿list‿append(), ellipsis‿token‿list‿close(), ellipsis‿token‿list‿destroy(), and ellipsis‿token‿list‿top().
Referenced by expand_functional().
|
static |
References ellipsis‿filter(), ellipsis‿if_case‿open, ellipsis‿infra‿fileno(), ellipsis‿infra‿filter_file, ellipsis‿token‿list‿open(), and ELLIPSIS_BUG.
Referenced by ellipsis‿filter‿thread().
thrd_t ellipsis‿filter‿thread | ( | ellipsis‿token‿list | tl[static 2] | ) |
References ellipsis‿filter‿thrd().
Referenced by main().
void ellipsis‿filter | ( | ellipsis‿token‿list | in[restrict static 1], |
ellipsis‿token‿list *restrict | out, | ||
ellipsis‿if_case | ic, | ||
bool | close | ||
) |
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
start inner defer anchor at level 3
defer needs braces and a semicolon
start inner defer anchor at level 4
defer needs braces and a semicolon
end inner defer anchor, level 4
start inner defer anchor at level 4
defer needs braces and a semicolon
defer needs braces and a semicolon
start inner defer anchor at level 5
defer needs braces and a semicolon
end inner defer anchor, level 5
end inner defer anchor, level 4
end inner defer anchor, level 3
end inner defer anchor, level 2
end inner defer anchor, level 1
References ellipsis‿str32::array, ellipsis‿token::contents, directive, ellipsis‿category‿is_multiline(), ellipsis‿directive‿define(), ellipsis‿directive‿define_process(), ellipsis‿directive‿embed(), ellipsis‿directive‿embed_resource(), ellipsis‿directive‿environment(), ellipsis‿directive‿error(), ellipsis‿directive‿expand(), ellipsis‿directive‿gather(), ellipsis‿directive‿include(), ellipsis‿directive‿include_directives(), ellipsis‿directive‿include_next(), ellipsis‿directive‿include_source(), ellipsis‿directive‿line(), ellipsis‿directive‿linenumber(), ellipsis‿directive‿marker, ellipsis‿directive‿move(), ellipsis‿directive‿pragma(), ellipsis‿directive‿scatter(), ellipsis‿directive‿undef(), ellipsis‿directive‿warning(), ellipsis‿filter(), ellipsis‿if_case‿else, ellipsis‿if_case‿endif, ellipsis‿if_case‿maybe, ellipsis‿if_case‿open, ellipsis‿infra‿file(), ellipsis‿infra‿filter_file, ellipsis‿infra‿filter_line, ellipsis‿infra‿filter_lineno, ellipsis‿lex‿Continue(), ellipsis‿macros‿find(), ellipsis‿macros‿insert(), ellipsis‿macros‿paren‿dec(), ellipsis‿macros‿paren‿inc(), ellipsis‿macros‿unbind_set(), ellipsis‿str32‿construct(), 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‿open(), ellipsis‿token‿list‿pop(), ellipsis‿token‿list‿push(), ellipsis‿token‿list‿top(), ELLIPSIS_CONTRACT, ellipsis_expand_prefix_max, ELLIPSIS_WARNING, evaluate_expression(), expand_macro(), frozen, keep, last, ellipsis‿str32::length, nominal, ellipsis‿token::payload, and peek.
Referenced by ellipsis‿directive‿embed(), ellipsis‿directive‿expand(), ellipsis‿directive‿include(), ellipsis‿directive‿include_common(), ellipsis‿directive‿include_next(), ellipsis‿directive‿line(), ellipsis‿filter‿local(), ellipsis‿filter‿thrd(), ellipsis‿filter(), ellipsis‿include‿repair(), ellipsis‿language‿c‿_Once‿init‿user(), ellipsis‿language‿html‿_Once‿init‿user(), ellipsis‿language‿lex‿_Once‿init‿user(), ellipsis‿language‿markdown‿_Once‿init‿user(), evaluate_expression(), expand_macro(), has_c_attribute_callback(), and main().
|
static |
start inner defer anchor at level 1
DEFER_TYPE needs a semicolon
defer needs braces and 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‿expression‿resolve_defined(), ellipsis‿filter(), ellipsis‿if_case‿open, ellipsis‿token‿list‿destroy(), ELLIPSIS_CONTRACT, and ellipsis‿token::value.
Referenced by ellipsis‿filter().
|
static |
start inner defer anchor at level 1
DEFER_TYPE needs a semicolon
defer needs braces and a semicolon
defer needs braces and a semicolon
defer needs braces and a semicolon
defer needs braces and a semicolon
defer needs braces and a semicolon
defer needs braces and a semicolon
start inner defer anchor at level 2
defer needs braces and a semicolon
start inner defer anchor at level 3
defer needs braces and a semicolon
end inner defer anchor, level 3
start inner defer anchor at level 3
defer needs braces and a semicolon
end inner defer anchor, level 3
end inner defer anchor, level 2
defer needs braces and a semicolon
end inner defer anchor, level 1
References ellipsis‿token::cat, ellipsis‿token::contents, ellipsis‿filter‿local(), ellipsis‿lex‿category(), ellipsis‿macros‿find(), ellipsis‿special‿directive_define‿find, ellipsis‿str32‿delete(), ellipsis‿token‿list‿all(), ellipsis‿token‿list‿append(), ellipsis‿token‿list‿close(), ellipsis‿token‿list‿collect_call(), ellipsis‿token‿list‿destroy(), ellipsis‿token‿list‿first(), ellipsis‿token‿list‿flush(), ellipsis‿token‿list‿pop(), ellipsis‿token‿list‿push(), ellipsis‿token‿list‿scatter(), ellipsis‿token‿list‿top(), ELLIPSIS_CONTRACT, exp_signed, exp_unsigned, first, frozen, ellipsis‿token::is_functional, is_variable(), ellipsis‿token::next, nominal, parameter, ellipsis‿token::payload, string, stringifier, and ellipsis‿token::value.
Referenced by expand_macro().
|
static |
start inner defer anchor at level 1
DEFER_TYPE needs a semicolon
start inner defer anchor at level 2
defer needs braces and a semicolon
defer needs braces and a semicolon
start inner defer anchor at level 3
defer needs braces and a semicolon
defer needs braces and a semicolon
end inner defer anchor, level 3
end inner defer anchor, level 2
end inner defer anchor, level 1
References callback_call(), ellipsis‿token::cat, ellipsis‿token::contents, ellipsis‿filter(), ellipsis‿if_case‿open, ellipsis‿str32‿delete(), ellipsis‿token‿list‿all(), ellipsis‿token‿list‿collect_call(), ellipsis‿token‿list‿destroy(), ellipsis‿token‿list‿last(), ellipsis‿token‿list‿push(), ellipsis‿token‿list‿top(), ellipsis‿token‿what‿binary, ellipsis‿token‿what‿callback, ellipsis‿token‿what‿else, expand_functional(), frozen, ellipsis‿token::is_functional, ellipsis‿token::is_what, last, macro, ellipsis‿token::payload, and ellipsis‿token::space.
Referenced by ellipsis‿filter().
|
extern |
|
extern |
|
extern |