MMgr v1.0.0
Zero-heap memory manager in C11. One borrowed buffer, carved by asserted offset.
Loading...
Searching...
No Matches
ascii_persona_bitorum.h File Reference

ASCII class membership: mask type, class list, and the ascii dispatch table. More...

#include "mmgr.h"

Go to the source code of this file.

Data Structures

struct  MmgrAsciiMask
 Sixteen bytes holding one bit for each of the code points 0 to 127. More...
struct  AsciiCfg
 Arguments to mmgr_ascii_in: the class and the byte to test. More...
struct  AsciiPersonaBitorumNs
 Type of the ascii dispatch table. More...

Enumerations

enum  MmgrAsciiClass {
  MMGR_ASCII_NUM ,
  MMGR_ASCII_ALPHA ,
  MMGR_ASCII_ALNUM ,
  MMGR_ASCII_UPPER ,
  MMGR_ASCII_LOWER ,
  MMGR_ASCII_HEX ,
  MMGR_ASCII_PUNCT ,
  MMGR_ASCII_CTRL ,
  MMGR_ASCII_PRINT ,
  MMGR_ASCII_CLASSES
}
 Asserts an MmgrAsciiMask is exactly sixteen bytes. More...

Functions

embed_bool mmgr_ascii_in (const AsciiCfg *args)
 Returns whether args->byte has its bit set in the kind bitmap.

Variables

static const AsciiPersonaBitorumNs ascii
 Dispatch table instance named ascii, whose in member is set to mmgr_ascii_in.

Detailed Description

ASCII class membership: mask type, class list, and the ascii dispatch table.

Author
dstroy0 (Douglas Quigg) dquig.nosp@m.g123.nosp@m.@gmai.nosp@m.l.co.nosp@m.m
Date
2026-08-29
Note
Class membership as a bitmap lookup and not a chain of range compares. One shift, one mask and one test answer any class, and the cost does not grow with how many ranges the class covers.
Covers code points 0 to 127 only. A byte of 0x80 or above is in no class here, and that keeps the table sixteen bytes and not thirty-two.

Definition in file ascii_persona_bitorum.h.

Enumeration Type Documentation

◆ MmgrAsciiClass

Asserts an MmgrAsciiMask is exactly sixteen bytes.

Note
mmgr_ascii_in reads bits[byte >> 3] for every byte below 0x80. All sixteen have to be there.
Sixteen reach code point 127 and no further, as leaves a byte of 0x80 or above in no class at all.

Character class selector, numbered from 0.

Note
MMGR_ASCII_CLASSES is the enumerator count and not a class. Passing it is out of range.
Enumerator
MMGR_ASCII_NUM 

'0' to '9'.

MMGR_ASCII_ALPHA 

'A' to 'Z' and 'a' to 'z'.

MMGR_ASCII_ALNUM 

'0' to '9', 'A' to 'Z' and 'a' to 'z'.

MMGR_ASCII_UPPER 

'A' to 'Z'.

MMGR_ASCII_LOWER 

'a' to 'z'.

MMGR_ASCII_HEX 

'0' to '9', 'A' to 'F' and 'a' to 'f'.

MMGR_ASCII_PUNCT 

'!' to '/', ':' to '@', '[' to '`' and '{' to '~'. */ MMGR_ASCII_SPACE, /**< 9 to 13, and 32.

MMGR_ASCII_CTRL 

0 to 31, and 127.

MMGR_ASCII_PRINT 

32 to 126.

MMGR_ASCII_CLASSES 

Enumerator count and not a class.

Definition at line 52 of file ascii_persona_bitorum.h.

Function Documentation

◆ mmgr_ascii_in()

embed_bool mmgr_ascii_in ( const AsciiCfg * args)

Returns whether args->byte has its bit set in the kind bitmap.

Parameters
[in]argsClass and byte to test [BORROWS].
Returns
EMBED_TRUE when the bit is set, EMBED_FALSE otherwise.
Note
Bytes 0x80 and above return EMBED_FALSE.
Warning
args->kind must be below MMGR_ASCII_CLASSES, and nothing holds it there outside a MMGR_DEBUG_CHECKS build: the bitmap is indexed by it. A byte under 0x80 then reads past the table.

References mmgr_ascii_in().

Referenced by mmgr_ascii_in().

Variable Documentation

◆ ascii

const AsciiPersonaBitorumNs ascii
static

Dispatch table instance named ascii, whose in member is set to mmgr_ascii_in.

Definition at line 102 of file ascii_persona_bitorum.h.