eĿlipsis
a language independent preprocessor
 
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Loading...
Searching...
No Matches
ellipsis-tdict.c File Reference
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include "ellipsis-tdict.h"
#include "utils/ellipsis-hash.h"
#include "utils/ellipsis-error.h"
#include "ellipsis-tlist.h"
#include "ellipsis-macros.h"
Include dependency graph for ellipsis-tdict.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_FA_UNDEPRECATE   [[__deprecated__("you should not see this")]]
 
#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_FA_UNDEPRECATE tokenellipsis‿token‿dictionary‿catch (ellipsis‿token‿dictionary *dict, ellipsis‿str32 const *s)
 
ELLIPSIS_FA_UNDEPRECATE void ellipsis‿token‿dictionary‿destroy (ellipsis‿token‿dictionary *dict)
 
ELLIPSIS_FA_UNDEPRECATE tokenellipsis‿token‿dictionary‿find (ellipsis‿token‿dictionary *dict, ellipsis‿str32 const *s)
 
static ELLIPSIS_FA_UNDEPRECATE size_t ellipsis‿token‿dictionary‿find_pos (ellipsis‿token‿dictionary *dict, ellipsis‿str32 const *s)
 
ELLIPSIS_FA_UNDEPRECATE void ellipsis‿token‿dictionary‿fputs (ellipsis‿token‿dictionary dict[static 1], FILE *outf, char const prefix[static 1])
 
void ellipsis‿token‿dictionary‿init (ellipsis‿token‿dictionary *const d, size_t len)
 
ELLIPSIS_FA_UNDEPRECATE bool ellipsis‿token‿dictionary‿insert (ellipsis‿token‿dictionary *dict, token *t)
 
static void ellipsis‿token‿dictionary‿inverse_inplace (uint64_t res[static 2])
 Compute gcd and relative inverse (r, inv) of two numbers (a, m) and return them in place.
 
static void ellipsis‿token‿dictionary‿maintain (ellipsis‿token‿dictionary *dict)
 
ELLIPSIS_FA_UNDEPRECATE void ellipsis‿token‿dictionary‿remove (ellipsis‿token‿dictionary *dict, ellipsis‿str32 const *s)
 
static ELLIPSIS_FA_UNDEPRECATE void ellipsis‿token‿dictionary‿resize (ellipsis‿token‿dictionary *dict, size_t nlen)
 

Variables

constexpr auto φ = 7540113804746346429.0L / 12200160415121876738.0L
 
thread_local bool volatile ellipsis‿contracts‿ignore‿dynamic
 
thread_local bool volatile ellipsis‿contracts‿proceed‿dynamic
 
thread_local bool volatile ellipsis‿contracts‿verbose‿dynamic
 
constexpr auto num = 17U
 
constexpr auto qot = 9U
 

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 __VA_OPT__
A pseudo macro that cannot be redefined.
Definition ellipsis-predefined.dirs:89
#define ELLIPSIS_TEST_ICE(...)
Definition ellipsis-tdict.c:40
#define ELLIPSIS_CONTRACT_CHECK_STATIC(CTYPE, COND, CSTR,...)
Definition ellipsis-tdict.c:48
#define ELLIPSIS_CONTRACT_IMPL(COUNT, COND, ACTION, VERB, CSTR, CTYPE,...)
Definition ellipsis-tdict.c:30

◆ 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-tdict.c:42

◆ 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-tdict.c:21

◆ 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-tdict.c:18

◆ ELLIPSIS_FA_UNDEPRECATE

#define ELLIPSIS_FA_UNDEPRECATE   [[__deprecated__("you should not see this")]]

◆ 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‿token‿dictionary‿catch()

static ELLIPSIS_FA_UNDEPRECATE token * ellipsis‿token‿dictionary‿catch ( ellipsis‿token‿dictionary dict,
ellipsis‿str32 const *  s 
)
static

◆ ellipsis‿token‿dictionary‿destroy()

◆ ellipsis‿token‿dictionary‿find()

◆ ellipsis‿token‿dictionary‿find_pos()

◆ ellipsis‿token‿dictionary‿fputs()

ELLIPSIS_FA_UNDEPRECATE void ellipsis‿token‿dictionary‿fputs ( ellipsis‿token‿dictionary  dict[static 1],
FILE *  outf,
char const  prefix[static 1] 
)

start inner defer anchor at level 1

defer needs braces and a semicolon

end inner defer anchor, level 1

Referenced by ellipsis‿infra‿_Once‿atexit‿callback(), and ellipsis‿macros‿_Once‿atexit‿callback().

Here is the caller graph for this function:

◆ ellipsis‿token‿dictionary‿init()

void ellipsis‿token‿dictionary‿init ( ellipsis‿token‿dictionary *const  d,
size_t  len 
)

◆ ellipsis‿token‿dictionary‿insert()

◆ ellipsis‿token‿dictionary‿inverse_inplace()

static void ellipsis‿token‿dictionary‿inverse_inplace ( uint64_t  res[static 2])
static

Compute gcd and relative inverse (r, inv) of two numbers (a, m) and return them in place.

inv fulfills inv * a == r (m), so in particular if r is 1, inv is the multiplicative inverse of a in the ring Zₘ.

If m is 0, the computation is done as if it where max+1, where max is the maximum value of the base type.

Referenced by ellipsis‿token‿dictionary::ellipsis‿token‿dictionary‿init().

Here is the caller graph for this function:

◆ ellipsis‿token‿dictionary‿maintain()

static ELLIPSIS_FA_UNDEPRECATE void ellipsis‿token‿dictionary‿maintain ( ellipsis‿token‿dictionary dict)
static

◆ ellipsis‿token‿dictionary‿remove()

ELLIPSIS_FA_UNDEPRECATE void ellipsis‿token‿dictionary‿remove ( ellipsis‿token‿dictionary dict,
ellipsis‿str32 const *  s 
)

Referenced by ellipsis‿macros‿remove().

Here is the caller graph for this function:

◆ ellipsis‿token‿dictionary‿resize()

Variable Documentation

◆ φ

constexpr auto φ = 7540113804746346429.0L / 12200160415121876738.0L
constexpr

◆ 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

◆ num

constexpr auto num = 17U
constexpr

◆ qot

constexpr auto qot = 9U
constexpr