xdump: Make meta-type numbers portable, get rid of meta-type "c"
The xdump field data types are abstract symbols "d", "f", "s" and "c". However, the abstraction leaks: we dump the enum nsc_type ca_type values verbatim in meta table field "type", and have symbol table meta-type map all integer types to "d", and both floating-point types to "f". Not a problem for well-behaved clients, since all they do with the dumped value is referencing table meta-type. It is a problem for version-test: since the integer type compatible with an enumeration type is implementation-defined, the type value of selectors of enumeration type can vary between compilers. It also makes table meta-type a somewhat ugly exception to the rule that a symbol table maps integers to names 1:1. Virtual selectors let us seal the abstraction: dump the promoted ca_type value. The integer types get all promoted to NSC_LONG. This takes care of version-test. The floating-point types get all promoted to NSC_DOUBLE. Makes sense. NSC_STRINGY gets promoted to NSC_STRING. This changes all field data types "c" to "s". Getting rid of "c" is a welcome simplification, because now the meaning of meta type field "len" no longer depends on "type", but always means that the array is dumped as that many fields. We lose string length limit information, though. Signed-off-by: Markus Armbruster <armbru@pond.sub.org>
This commit is contained in:
parent
6e9f256c68
commit
89a06ec2d4
5 changed files with 671 additions and 696 deletions
|
@ -116,10 +116,6 @@ while (<>) {
|
|||
# duration in xdump news (column 4)
|
||||
s/^(($xdfld_re ){4})([0-9]+) /${1}0 /
|
||||
if $dump eq 'news';
|
||||
### nsc_type values in xdump
|
||||
# Can vary between systems, because the width of enumeration types
|
||||
# is implementation-defined.
|
||||
# TODO type in xdump meta
|
||||
### nrndx values in xdump
|
||||
# Encoding depends on the host, see resources[]. Too clever by half;
|
||||
# perhaps we should change it.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue