Provided by: elektra-doc_0.8.14-5.1ubuntu2_all
NAME
doc_decisions_bool_mdDefinition of bool - Issue Inconsistent use of bool in various parts of Elektra. Constraints Assumptions • needs to be string • convenience plugins can convert anything to 0 or 1 • type checker plugins can reject everything not 0 or 1 Considered Alternatives • strictly only allow 0 and 1 (would move validation across the code) • only check presence or absence (no cascading override of already present key possible) • use as in CMake (would move convenience across the code) Decision Use, depending on what your default should be: • 0 is false, everything else is true (default is true) • 1 is true, everything else is false (default is false) Example: if ( strcmp(keyString(k), "0")) {/*true*/} else {/*false*/} if (!strcmp(keyString(k), "1")) {/*true*/} else {/*false*/} In the documentation it should mention that a bool is used and which is the default. The type checker plugin should allow • non-presence (default) • the string '0' • the string '1' The convenience plugin should transform (it might be combined with a plugin that transforms everything lower-case): • • Argument • most easy to implement • allows presence to be true • plugins allow us to convert to any other behaviour Implications • change code with different behavior Related decisions Notes See here