head 1.6; access; symbols act_first:1.1.1.1 act:1.1.1; locks; strict; comment @# @; 1.6 date 2001.07.28.16.42.17; author rse; state dead; branches; next 1.5; 1.5 date 2000.09.02.16.39.29; author rse; state Exp; branches; next 1.4; 1.4 date 2000.08.18.21.40.00; author rse; state Exp; branches; next 1.3; 1.3 date 2000.08.18.21.34.30; author rse; state Exp; branches; next 1.2; 1.2 date 2000.07.14.19.36.36; author rse; state Exp; branches; next 1.1; 1.1 date 99.11.12.20.37.19; author rse; state Exp; branches 1.1.1.1; next ; 1.1.1.1 date 99.11.12.20.37.19; author rse; state Exp; branches; next ; desc @@ 1.6 log @*** empty log message *** @ text @ Name: o act = abstract container types o dsl = data structure library Data Structures: o buffer: implementation: bucket brigades / buffer aggregates used for: buffer operations: - create, destroy - grow, shrink - insert, remove ??or as a memory based file?? o array/vector implementation: continueos memory chunk used for: matrix, static lists, sets, stacks, queues, virtual string? - create, destroy - grow, shrink - insert, remove - apply (= walk) o list (chain) implementation: double chained ring used for: dynamic lists, sets, stacks, queues o tree implementation: binary tree, avl? used for: sorted lists, tree structures o hash implementation: hash used for: table Features: o streaming: i2s, s2i mit ASN.1/DER o error callback functions o link attributes: intern/builtin or external/seperated o user data: loan or gift o allocation: malloc & friends configurable (heap, shm) o new ctx -> new ds, ds_insert(foo, a) -> foo->insert(foo, a)? o fuer varargs: #define DS_An(a1,...,an) -> (a1,...,an,NULL) Features of each data structure: o initialization group: create, init, dup, destroy o status/state group: control o pointer/iteration group: goto, move o update/edit/manipulation group: insert, delete o search/lookup group: per-key/per-position o I/O group: serialize/unserialize Key/Data Issues: o key/data is pointer or directly value o key/data is gift or loan o key/data is given as ptr+len or as ptr+implicit-NUL o link attributes are part of key/data or separate (wenn object gleichzeitig in mehreren structures ist, muss es entweder mehrere link attribs haben oder es muss extern von dern structur bleiben) Meta-Information per Data Structure: o malloc, realloc, free pointers o loan/gift mode (or specified per import/export call?) o number of elememts in ds (opti)? o pointer to top/first/head element o pointer to end/last/buttom element API === x: context h: handle k: key v: value i: iterator s: stream c: cursor new(x): h ctx(h): x free(h) clone(h): h union(h,h): h insert(h,k,v) delete(h,k) flatten/export/streamline(h): s extract/import/parse(s): h iterator(h): i first(i): k next(i): k prev(i): k last(i): k cursor(h): c root(c): o up(c): o down(c): o left(c): o right(c): o status(h) match search/lookup @ 1.5 log @*** empty log message *** @ text @@ 1.4 log @*** empty log message *** @ text @d8 1 a8 1 implementation: buffer aggregate? @ 1.3 log @*** empty log message *** @ text @d65 41 @ 1.2 log @*** empty log message *** @ text @d14 1 d54 3 @ 1.1 log @Initial revision @ text @d14 1 a14 1 o array @ 1.1.1.1 log @ @ text @@