api documentation for ec_parse
[protos/libecoli.git] / todo.txt
index 4e5d94f..739e350 100644 (file)
--- 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,16 @@ 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?
+- limit max loop,
+- limit max completions
 
 dependencies
 ============
@@ -61,15 +64,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 +86,8 @@ examples
 - configuration file
 - mini shell: cd, ls, cat, stat
 - mini network console based on ip
+- dialog-like for use in shell
+- pcap https://github.com/the-tcpdump-group/libpcap/blob/master/grammar.y
 
 doc
 ===
@@ -105,6 +110,7 @@ build framework
 - add make help
 - add make config
 - -fvisibility=
+- use meson
 
 tests
 =====
@@ -115,12 +121,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 +140,7 @@ encoding
 netconf example
 ===============
 
-- demonstration example that parses yang file and generate cli
+/ demonstration example that parses yang file and generate cli
 
 
 
@@ -419,3 +427,97 @@ 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 <structname>_<verb>() except for basic/common actions
+- basic actions are ec_<verb>()
+- accessors (get) are <structname>_<field>()
+- accessors (set) are <structname>_set_<field>()
+
+
+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_*()
+
+---
+