forked from ElektraInitiative/libelektra
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTODO
111 lines (70 loc) · 2.36 KB
/
TODO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
This is a list of TODO items which do not fit in
the other TODO categories which should be resolved in 0.8.
== META DATA LIBRARY ==
(maybe generate similar to gen/liberror)
warning/error iterators
comment iterators
documentation:
comment -> metadata
split real metadata functions + kdbhelpers
library for metadata access functions
array access
== VARIANTS ==
for python plugin
- fix symbol generator
- avoid full/static for symbol clashes
== errno ==
better errnostore solution?
reset errno in user functions and avoid code in every plugin
always provide last errno in ADD_WARNING+SET_ERROR
use safe implementation see
https://github.com/fish-shell/fish-shell/commit/c70e92e98d34e14b1e1310a10677b7c0f6e2b54c
(even strerrno_r seems to deadlock from time to time because of translations?)
== inotify ==
get list of involved configuration files and do inotify on it
== ALGORITHM ==
aka distributor+filebackend plugin
(currently directly in core)
change to proper 2phase algorithm?
kdbGet
* only run on those parts where needed (not only shortcut on nothing changed)
* create an error if no kdbGet was done (no plugin added)
kdbSet
* do not run on empty configuration
* but remove config file instead
* create an error if no kdbSet was done (no plugin added)
== DATA STRUCTURES ==
Only implement what is really needed.
(can take some time to do it well!)
See also OPTIMISE
ksForEach (ks, func, handle)
void func (Key*, void* handle);
also with lambdas in c++ (check if external loop is faster?)
ksLookup: value keys only
with relations
only in the same folder (sibling)
only below the current folder (below)
merge + split configuration
http://en.wikipedia.org/wiki/Set_(mathematics)
allow to change behaviour of keyset using callbacks:
collect statistics which keys were used and modified how often
allow tracing of individual (non-removed) keys
KeySet* ksUnion
ksIntersection
ksMerge
http://en.wikipedia.org/wiki/Complement_(set_theory)
ksComplement (Difference, SymmetricDifference)
ksCopy -> ksAssign
ksPopCurrent
InsertIterator
ksAppend() in O(1)
KDB_O_NOALL could use binary search
AccessIterator
not integrated
ksCurrent only for iterator
feature for error handling needed?
functors and same level iterators build on top of it
=== Data transformation ===
use Key's refcount to put it into different data structures
- property tree
- json objects