eĿlipsis
a language independent preprocessor
 
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Loading...
Searching...
No Matches
ellipsis-output.c File Reference
#include "ellipsis-tokenize.h"
#include "ellipsis-output.h"
#include "utils/ellipsis-error.h"
#include "ellipsis-macros.h"
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
Include dependency graph for ellipsis-output.c:

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_STR32_LITERAL   ELLIPSIS_STR32_LITERAL_LOCAL
 
#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 void ellipsis‿output‿base64 (ellipsis‿str8 const dat[static restrict 1], FILE *out)
 
static void ellipsis‿output‿byte (ellipsis‿str8 const *dat, FILE *out)
 
static void ellipsis‿output‿codeblock (ellipsis‿str32 const *s32, char const *code_addition, FILE *out)
 
int ellipsis‿output‿cont (ellipsis‿str32 const s32[static restrict 1], FILE *out)
 
int ellipsis‿output‿space (ellipsis‿str32 const s32[static restrict 1], FILE *out)
 
static void ellipsis‿output‿string (ellipsis‿str32 const *s32, FILE *out)
 
static int ellipsis‿output‿thrd (void *p)
 
thrd_t ellipsis‿output‿thread (ellipsis‿token‿list tl[static 1])
 
static void ellipsis‿output‿verbatim (ellipsis‿str8 const *s8, FILE *out)
 
thrd_t ellipsis‿output‿verbose (ellipsis‿token‿list tl[static 1])
 
static int ellipsis‿output‿vrbs (void *p)
 

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
 
int(* ellipsis‿output‿others )(ellipsis‿str32 const *restrict s, FILE *stream) = ellipsis‿str32‿fputs
 
int(* ellipsis‿output‿punctuators )(ellipsis‿str32 const *restrict s, FILE *stream) = ellipsis‿str32‿fputs
 

Detailed Description

Warning
This is a file generated by eĿlipsis version 20250309, do not modify

Macro Definition Documentation

◆ ELLIPSIS_CONTRACT

#define ELLIPSIS_CONTRACT (   COUNT,
  COND,
  ACTION,
  VERB,
  CSTR,
  CTYPE,
  ... 
)
Value:
\
do { \
_Generic( \
default: ELLIPSIS_CONTRACT_IMPL(COUNT, COND, ACTION, VERB, CSTR, CTYPE __VA_OPT__(,) __VA_ARGS__));\
} while(false)
struct ellipsis‿contracts‿is_ice ellipsis‿contracts‿is_ice
Definition ellipsis-expression.c:24
#define ELLIPSIS_TEST_ICE(...)
Definition ellipsis-output.c:45
#define ELLIPSIS_CONTRACT_CHECK_STATIC(CTYPE, COND, CSTR,...)
Definition ellipsis-output.c:53
#define ELLIPSIS_CONTRACT_IMPL(COUNT, COND, ACTION, VERB, CSTR, CTYPE,...)
Definition ellipsis-output.c:35
#define __VA_OPT__
A pseudo macro that cannot be redefined.
Definition ellipsis-predefined.dirs:89

◆ ELLIPSIS_CONTRACT_CHECK_STATIC

#define ELLIPSIS_CONTRACT_CHECK_STATIC (   CTYPE,
  COND,
  CSTR,
  ... 
)
Value:
({\
static_assert(ELLIPSIS_CONTRACT_ICE_OR_TRUE(COND), \
"compile time violation of " CTYPE " " CSTR \
__VA_OPT__(", ") __VA_ARGS__ );\
})
#define ELLIPSIS_CONTRACT_ICE_OR_TRUE(...)
Definition ellipsis-output.c:47

◆ ELLIPSIS_CONTRACT_ICE_OR_TRUE

#define ELLIPSIS_CONTRACT_ICE_OR_TRUE (   ...)
Value:
_Generic( \
ELLIPSIS_TEST_ICE(__VA_ARGS__), \
ellipsis‿contracts‿is_ice*: (__VA_ARGS__), \
default: true)
#define true
The constant true made accessible to the preprocessor.
Definition ellipsis-builtins.dirs:32

◆ ELLIPSIS_CONTRACT_IMPL

#define ELLIPSIS_CONTRACT_IMPL (   COUNT,
  COND,
  ACTION,
  VERB,
  CSTR,
  CTYPE,
  ... 
)
Value:
(((false) || (COND)) \
? (void)0 \
: (ELLIPSIS_CONTRACT_VIOLATION(COUNT, VERB, CTYPE, CSTR __VA_OPT__(,) __VA_ARGS__) \
, ((false) \
? (void)0 \
: ACTION())))
#define ELLIPSIS_CONTRACT_VIOLATION(COUNT, VERB, CTYPE, CSTR,...)
Definition ellipsis-output.c:26

◆ ELLIPSIS_CONTRACT_VIOLATION

#define ELLIPSIS_CONTRACT_VIOLATION (   COUNT,
  VERB,
  CTYPE,
  CSTR,
  ... 
)
Value:
({\
static char const contract_format_ ## COUNT[] = \
__FILE__ ":" STRINGIFY(__LINE__) ": violation of " CTYPE " `" CSTR "`" __VA_OPT__(", ") __VA_ARGS__ "\n";\
(VERB \
? fputs(contract_format_ ## COUNT, stderr) \
: 0);\
})
#define __FILE__
The current source file as required by the C standard.
Definition ellipsis-builtins.dirs:21
#define __LINE__
The current physical source line as required by the C standard.
Definition ellipsis-builtins.dirs:24
#define STRINGIFY(...)
Definition ellipsis-output.c:23

◆ ELLIPSIS_STR32_LITERAL

#define ELLIPSIS_STR32_LITERAL   ELLIPSIS_STR32_LITERAL_LOCAL

◆ ELLIPSIS_TEST_ICE

#define ELLIPSIS_TEST_ICE (   ...)    (false ? ELLIPSIS_TO_VOIDS(__VA_ARGS__) : (ellipsis‿contracts‿is_ice*)nullptr)

◆ ELLIPSIS_TO_VOIDS

#define ELLIPSIS_TO_VOIDS (   ...)    ((void*)((uintptr_t)((__VA_ARGS__)-(__VA_ARGS__))))

◆ STRINGIFY

#define STRINGIFY (   ...)    STRINGIFY_(__VA_ARGS__)

◆ STRINGIFY_

#define STRINGIFY_ (   ...)    #__VA_ARGS__

Typedef Documentation

◆ ellipsis‿contracts‿is_ice

Function Documentation

◆ ellipsis‿output‿base64()

static void ellipsis‿output‿base64 ( ellipsis‿str8 const  dat[static restrict 1],
FILE *  out 
)
static

start inner defer anchor at level 1

defer needs braces and a semicolon

end inner defer anchor, level 1

References ellipsis‿base64‿encode(), and ELLIPSIS_CONTRACT.

Referenced by ellipsis‿output‿thrd(), and ellipsis‿output‿vrbs().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ellipsis‿output‿byte()

static void ellipsis‿output‿byte ( ellipsis‿str8 const *  dat,
FILE *  out 
)
static

References ellipsis‿str8::array, ELLIPSIS_CONTRACT, and ellipsis‿str8::length.

Referenced by ellipsis‿output‿thrd().

Here is the caller graph for this function:

◆ ellipsis‿output‿codeblock()

static void ellipsis‿output‿codeblock ( ellipsis‿str32 const *  s32,
char const *  code_addition,
FILE *  out 
)
static

start inner defer anchor at level 1

defer needs braces and a semicolon

end inner defer anchor, level 1

References ellipsis‿str32‿dup, and ELLIPSIS_DIAGNOSTIC.

Referenced by ellipsis‿output‿thrd().

Here is the caller graph for this function:

◆ ellipsis‿output‿cont()

int ellipsis‿output‿cont ( ellipsis‿str32 const  s32[static restrict 1],
FILE *  out 
)

Referenced by ellipsis‿language‿c‿_Once‿init‿user().

Here is the caller graph for this function:

◆ ellipsis‿output‿space()

int ellipsis‿output‿space ( ellipsis‿str32 const  s32[static restrict 1],
FILE *  out 
)

Referenced by ellipsis‿language‿lex‿_Once‿init‿user(), and ellipsis‿output‿thrd().

Here is the caller graph for this function:

◆ ellipsis‿output‿string()

static void ellipsis‿output‿string ( ellipsis‿str32 const *  s32,
FILE *  out 
)
static

start inner defer anchor at level 1

defer needs braces and a semicolon

end inner defer anchor, level 1

References ellipsis‿str32‿dup.

Referenced by ellipsis‿output‿thrd().

Here is the caller graph for this function:

◆ ellipsis‿output‿thrd()

static int ellipsis‿output‿thrd ( void *  p)
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

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

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

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 __FILE__, base64, character, code, codeblock, comment, ellipsis‿error‿dump, ellipsis‿error‿verb, ellipsis‿infra‿_Once‿init(), ellipsis‿infra‿_Once‿strong, ellipsis‿macros‿find(), ellipsis‿output‿base64(), ellipsis‿output‿byte(), ellipsis‿output‿codeblock(), ellipsis‿output‿others, ellipsis‿output‿punctuators, ellipsis‿output‿space(), ellipsis‿output‿string(), ellipsis‿output‿thrd(), ellipsis‿output‿verbatim(), ellipsis‿str32‿delete(), ellipsis‿str32‿dup, ellipsis‿str32‿fputs(), ellipsis‿token‿list‿pop(), ellipsis‿token‿list‿top(), ellipsis‿token‿list‿wait(), ellipsis‿token‿what‿binary, ELLIPSIS_DIAGNOSTIC, first, GNU_ATTR_USED, ellipsis‿token::next, nominal, none, numeral, ellipsis‿token::payload, punctuator, and string.

Referenced by ellipsis‿output‿thrd(), and ellipsis‿output‿thread().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ellipsis‿output‿thread()

thrd_t ellipsis‿output‿thread ( ellipsis‿token‿list  tl[static 1])

References ellipsis‿output‿thrd().

Referenced by main().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ellipsis‿output‿verbatim()

static void ellipsis‿output‿verbatim ( ellipsis‿str8 const *  s8,
FILE *  out 
)
static

References ellipsis‿str8::array.

Referenced by ellipsis‿output‿thrd().

Here is the caller graph for this function:

◆ ellipsis‿output‿verbose()

thrd_t ellipsis‿output‿verbose ( ellipsis‿token‿list  tl[static 1])

References ellipsis‿output‿vrbs().

Referenced by main().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ellipsis‿output‿vrbs()

Variable Documentation

◆ ellipsis‿contracts‿ignore‿dynamic

thread_local bool volatile ellipsis‿contracts‿ignore‿dynamic
extern

◆ ellipsis‿contracts‿proceed‿dynamic

thread_local bool volatile ellipsis‿contracts‿proceed‿dynamic
extern

◆ ellipsis‿contracts‿verbose‿dynamic

thread_local bool volatile ellipsis‿contracts‿verbose‿dynamic
extern

◆ ellipsis‿output‿others

int(* ellipsis‿output‿others) (ellipsis‿str32 const *restrict s, FILE *stream) ( ellipsis‿str32 const *restrict  s,
FILE *  stream 
) = ellipsis‿str32‿fputs

◆ ellipsis‿output‿punctuators

int(* ellipsis‿output‿punctuators) (ellipsis‿str32 const *restrict s, FILE *stream) ( ellipsis‿str32 const *restrict  s,
FILE *  stream 
) = ellipsis‿str32‿fputs