screpl.utils.referencetable module

screpl.utils.referencetable. search_table ( key , table_epd , compare_func , retval_epd ) [source]

EUDFuncN

screpl.utils.referencetable. search_table_inv ( value , table_epd , retval_epd ) [source]

EUDFuncN

class screpl.utils.referencetable. LengthForward ( iterable , offset = 0 ) [source]

Bases: eudplib.core.allocator.constexpr.ConstExpr

Evaluate ( ) [source]
class screpl.utils.referencetable. ReferenceTable ( initdict=None , ref_by=None , key_f=<function ReferenceTable.<lambda>> , value_f=<function ReferenceTable.<lambda>> , sortkey_f=<function ReferenceTable.<lambda>> , final=False ) [source]

Bases: eudplib.core.eudobj.eudobj.EUDObject

Dynamic object to store key-value pair

Same as EUDArray with contents:

index

0

1

2

3

4

2N-1

2N

value

size(=N)

key1

value1

key2

value2

keyN

valueN

However, these key-value pair are lazily collected.

key_f transforms key before registered:

rt = ReferenceTable(key_transformer = EPDConstString)
rt.add_pair("Hello", 3) # transforms "Hello" to EPD(Db())

value_f works similar to key_f

CollectDependency ( pbuffer ) [source]
DynamicConstructed ( ) [source]

Whether function is constructed dynamically.

Dynamically constructed EUDObject may have their dependency list generated during object construction. So their dependency list is re-examined before allocation phase.

Evaluate ( ) [source]

What this object should be evaluated to when used in eudplib program.

Returns

Default) Memory address of this object.

Note

In overriding this method, you can use eudplib.GetObjectAddr() .

GetDataSize ( ) [source]

Memory size of object.

WritePayload ( pbuffer ) [source]

Write object

add_pair ( key , value ) [source]
add_pair_lazily ( key , value ) [source]
find_key_by_value ( value ) [source]
find_value_by_key ( key ) [source]
static get_size ( table_epd ) [source]
static iter_table ( table_epd , func ) [source]

func receives i, key_epd, value_epd and do something

size ( ) [source]