x-engine-c v0.2.13
The C engine for x-lang
Loading...
Searching...
No Matches
Bit-Path Pair Accessors

Navigate nested pairs by a binary path. More...

Macros

#define x_0(X)   x_firstobj(X)
 
#define x_1(X)   x_restobj(X)
 
#define x_00(X)   x_0(x_0(X))
 
#define x_01(X)   x_0(x_1(X))
 
#define x_10(X)   x_1(x_0(X))
 
#define x_11(X)   x_1(x_1(X))
 
#define x_000(X)   x_0(x_00(X))
 
#define x_001(X)   x_0(x_01(X))
 
#define x_010(X)   x_0(x_10(X))
 
#define x_011(X)   x_0(x_11(X))
 
#define x_100(X)   x_1(x_00(X))
 
#define x_101(X)   x_1(x_01(X))
 
#define x_110(X)   x_1(x_10(X))
 
#define x_111(X)   x_1(x_11(X))
 
#define x_0000(X)   x_0(x_000(X))
 
#define x_0001(X)   x_0(x_001(X))
 
#define x_0010(X)   x_0(x_010(X))
 
#define x_0011(X)   x_0(x_011(X))
 
#define x_0100(X)   x_0(x_100(X))
 
#define x_0101(X)   x_0(x_101(X))
 
#define x_0110(X)   x_0(x_110(X))
 
#define x_0111(X)   x_0(x_111(X))
 
#define x_1000(X)   x_1(x_000(X))
 
#define x_1001(X)   x_1(x_001(X))
 
#define x_1010(X)   x_1(x_010(X))
 
#define x_1011(X)   x_1(x_011(X))
 
#define x_1100(X)   x_1(x_100(X))
 
#define x_1101(X)   x_1(x_101(X))
 
#define x_1110(X)   x_1(x_110(X))
 
#define x_1111(X)   x_1(x_111(X))
 

Detailed Description

Navigate nested pairs by a binary path.

Each bit selects a branch – 0 = first, 1 = rest – read left to right as a chain of accessors. For example x_011() is "first of rest of rest", expanding to x_0(x_1(x_1(X))). The leftmost bit is the outermost (last applied) accessor. All results are object pointers. Provided up to four levels deep.

Macro Definition Documentation

◆ x_0

#define x_0 (   X)    x_firstobj(X)

first

◆ x_00

#define x_00 (   X)    x_0(x_0(X))

first of first

◆ x_000

#define x_000 (   X)    x_0(x_00(X))

first of first of first

◆ x_0000

#define x_0000 (   X)    x_0(x_000(X))

first of first of first of first

◆ x_0001

#define x_0001 (   X)    x_0(x_001(X))

first of first of first of rest

◆ x_001

#define x_001 (   X)    x_0(x_01(X))

first of first of rest

◆ x_0010

#define x_0010 (   X)    x_0(x_010(X))

first of first of rest of first

◆ x_0011

#define x_0011 (   X)    x_0(x_011(X))

first of first of rest of rest

◆ x_01

#define x_01 (   X)    x_0(x_1(X))

first of rest

◆ x_010

#define x_010 (   X)    x_0(x_10(X))

first of rest of first

◆ x_0100

#define x_0100 (   X)    x_0(x_100(X))

first of rest of first of first

◆ x_0101

#define x_0101 (   X)    x_0(x_101(X))

first of rest of first of rest

◆ x_011

#define x_011 (   X)    x_0(x_11(X))

first of rest of rest

◆ x_0110

#define x_0110 (   X)    x_0(x_110(X))

first of rest of rest of first

◆ x_0111

#define x_0111 (   X)    x_0(x_111(X))

first of rest of rest of rest

◆ x_1

#define x_1 (   X)    x_restobj(X)

rest

◆ x_10

#define x_10 (   X)    x_1(x_0(X))

rest of first

◆ x_100

#define x_100 (   X)    x_1(x_00(X))

rest of first of first

◆ x_1000

#define x_1000 (   X)    x_1(x_000(X))

rest of first of first of first

◆ x_1001

#define x_1001 (   X)    x_1(x_001(X))

rest of first of first of rest

◆ x_101

#define x_101 (   X)    x_1(x_01(X))

rest of first of rest

◆ x_1010

#define x_1010 (   X)    x_1(x_010(X))

rest of first of rest of first

◆ x_1011

#define x_1011 (   X)    x_1(x_011(X))

rest of first of rest of rest

◆ x_11

#define x_11 (   X)    x_1(x_1(X))

rest of rest

◆ x_110

#define x_110 (   X)    x_1(x_10(X))

rest of rest of first

◆ x_1100

#define x_1100 (   X)    x_1(x_100(X))

rest of rest of first of first

◆ x_1101

#define x_1101 (   X)    x_1(x_101(X))

rest of rest of first of rest

◆ x_111

#define x_111 (   X)    x_1(x_11(X))

rest of rest of rest

◆ x_1110

#define x_1110 (   X)    x_1(x_110(X))

rest of rest of rest of first

◆ x_1111

#define x_1111 (   X)    x_1(x_111(X))

rest of rest of rest of rest