X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=todo.txt;h=16521f03241bd2ab2b986322c87645f29e730e85;hb=70ebe6bd8740d8cb32cd0b0a21ca28a4fa74a2a5;hp=4e5d94fddb30bf7c22d4eaf47abe13937932f81d;hpb=90efcb0b905753a2eac864bc1a869781d7c31919;p=protos%2Flibecoli.git diff --git a/todo.txt b/todo.txt index 4e5d94f..16521f0 100644 --- a/todo.txt +++ b/todo.txt @@ -3,7 +3,7 @@ tk_cmd X evaluate expression tree in ec_tk_expr X cmd token -- example +X example X tk_re cleanup / rework @@ -24,7 +24,7 @@ X iterate children nodes without chaining them - better logs - check return values (-1 or NULL) + use errno - check missing static / const -- license: SPDX +X license: SPDX - check all completion nodes X split ecoli_tk.h - size_t or unsigned int? @@ -37,13 +37,14 @@ X rename: X save node path in completion to fix help string - code coverage - try to hide structures -- anything better than weakref? +X anything better than weakref? - add ec_node_defaults.[ch] providing usual implementations of node methods X use vec for strvec -- ELOOP in case of loop -- remove weakref? +/ ELOOP in case of loop +X remove weakref? - sh_lex to provide offsets in attributes - accessors for all structs +- private vs user attributes? dependencies ============ @@ -61,15 +62,15 @@ yaml ==== X register nodes by name -- interface to add attributes: all nodes must be configurable through a - generic api - - attr string - - attr string list - - attr node - - attr node list - - attr int - -- yaml interface to create nodes +X interface to add attributes: all nodes must be configurable through a + generic api: + X attr string + X attr string list + X attr node + X attr node list + X attr int + +X yaml interface to create nodes - example examples @@ -83,6 +84,7 @@ examples - configuration file - mini shell: cd, ls, cat, stat - mini network console based on ip +- dialog-like for use in shell doc === @@ -105,6 +107,7 @@ build framework - add make help - add make config - -fvisibility= +- use meson tests ===== @@ -115,12 +118,14 @@ new nodes ========= - regexp -- node which always matches -- file + partial completion +X node which always matches +X file + partial completion - ether, ip, network -- fusion node: need to match several children, same for completion +- fusion node: need to match several children, same for completion? - float - not +- reparse: parse a tree with received strvec, then another tree + with strvec generated from first tree encoding ======== @@ -132,7 +137,7 @@ encoding netconf example =============== -- demonstration example that parses yang file and generate cli +/ demonstration example that parses yang file and generate cli @@ -419,3 +424,95 @@ c --------------- +about split in several libraries + +There are several options: + +1/ one library, config options to select libyaml, libedit + - need to manage dependencies in build system + +2/ one library for ecoli-core, one for ecoli-yaml, one for + ecoli-edit + - extra complexity + +3/ one library with core + yaml + edit + dependency is managed at runtime + + +-------------- + +current naming: ec_node_parse* and ec_comp_complete* are not +so good names + +struct ec_comp +alloc ec_complete() +free ec_complete_free() +action ec_comp_complete() +action ec_comp_complete_strvec() +action ec_comp_dump() +action ec_comp_merge() +accessors ec_comp_get() + +struct ec_parse +alloc ec_parse() +free ec_parse_free() +action ec_node_parse() +action ec_node_parse_strvec() +accessors ... + +struct ec_node +alloc ec_node() +free ec_node_free() +action ... +accessors ... + +struct ec_strvec +alloc ec_strvec() +free ec_strvec_free() +action ec_strvec_*() + +--------- + +proposal + +- struct name must not be a verb (ex: not ec_parse) +- allocator is the name of struct +- actions are _() except for basic/common actions +- basic actions are ec_() +- accessors (get) are _() +- accessors (set) are _set_() + + +XXX list all functions to be sure +XXX this could go in documentation (coding rules) + +struct ec_comp +alloc ec_comp() +free ec_comp_free() +action ec_complete() +action ec_complete_strvec() +action ec_comp_dump() +action ec_comp_merge() +accessors ec_comp_id() +accessors ec_comp_attrs() + +(pnode means parsed node) +struct ec_pnode +alloc ec_pnode() +free ec_pnode_free() +action ec_parse() +action ec_parse_strvec() +accessors ... + +(node means grammar node) +struct ec_node +alloc ec_node() +free ec_node_free() +action ... +accessors ec_node_get*() + +struct ec_strvec +alloc ec_strvec() +free ec_strvec_free() +action ec_strvec_*() +