======================================================================= main changes between versions 1.1 and 1.2: * ports to linux and alpha, which should make snacc both endianess and 64 bit clean. * to complement the destructors, T::T (const T&) and T &T::operator = (const T &) have been added to override the defaults supplied by the compiler. reason: simple pointer duplication may lead to unreferenced objects and to objects referenced more than once (on which the destructors delete may choke). * the files asn_useful.[hcC] and tbl.[ch] get regenerated automagically. since the compiler itself is compiled with it, a bootstapping version is included in the distribution. * the choice selector and all pointer members get initialized to get predictable behaviour from the destructors (C++ code only, the C code may still be broken!). * turned C++ inline functions into normal functions. this can reduce the size of .o files and executables dramatically! (the change was partially made by IBM ENC.) * the c++ lib compiles under gcc 2.6 (which has the bool type built-in). * GNU autoconf support added. * makefiles rewritten to provide the usual phony targets. * code duplication (4 config files, 3 c_libs) reduced. * C++ destructors added (partially contributed by IBM ENC). ======================================================================= Snacc Changes from version 1.0 to 1.1 Thanks to many bug reports from users of snacc 1.0, snacc 1.1 is more reliable. Most of the changes between 1.0 and 1.1 are listed in the "1.0-to-1.1-changes" file. Type tables are the biggest addition. The rest were mostly bug fixes. If you reported a bug and you don't see the fix, I either didn't have time or simply forgot. Sorry. See README.future for the status of snacc now that I have graduated. The remainder of this file contains descriptions of many of the fixes between version 1.0 and 1.1. I am sure there are fixes that are not documented here. ======================================================================= The GNU Library Public License (LGPL) has been punted. ======================================================================= Added table generation the compiler files: src/{ tbl.c tbl.h gen_tbls.c } ======================================================================= Added table libraries and tools files: tbl_include/* tbl_lib/* tbl_tools/* tbl_example/* ======================================================================= Re-aligned data structure for parse tree with code generated by newer version of snacc (yes, the parse tree was originally defined in ASN.1 - see asn1specs/asn1module.asn1) ======================================================================= defined T61String and ISO646String Tag codes. files: snacc/c_inlcude/asn_tag.h and snacc/c++_inlcude/asn_tag.h #define TT61STRING_TAG_CODE TELETEXSTRING_TAG_CODE #define ISO646STRING_TAG_CODE VISIBLESTRING_TAG_CODE ======================================================================= Named arcs in OBJECT IDENTIFER values no longer generate ASN.1 integers. e.g. test OBJECT IDENTIFIER ::={2 3 4 ds(5) 1} used to be equivalent to: ds INTEGER ::= 5 test OBJECT IDENTIFER ::= {2 3 4 ds 1} Snacc now ignores the name (ds in this case). Ideally the arc could be entered into an object identifier tree maintained by snacc. files: snacc/src/val_parser.c ======================================================================= Fixed bug in macro definition parsing that threw off the line number global. file: asn1.lex ======================================================================= Added file and line number information to import errors. A lineNo field was added to the ImportElmt and ImportModule data structures. The yacc code for the import elements & modules sets the lineNo values correctly. The error reporting code in line_types.c and line_values.c now prints the line number info. files: link_types.c link_values.c asn1module.h asn1.yacc ======================================================================= Added some line number info to multiply defined symbol error reports file: err_chk.c - uses importElmt line number info ======================================================================= Added line number info to export errors. ======================================================================= Added file and line number info to typing errors for OBJECT IDENTIFIER values. Also stopped errors that cascade from other OID values referencing a malformed oid value. file: normalize.c ======================================================================= Error messages will be printed for recursively defined OBJECT IDENTIIFER values. file: link_values.c ======================================================================= Fixed bug #20. ie Not grabbing EOC on tagged (by def or in parent) CHOICEs embedded in other SET, SEQ, CHOICE, SET OF or SEQ OF types. file: gen_c_dec.c ======================================================================= Fixed bug #21. ie Value linking problem when assigning a value to a choice with a named number from one of the choice's elmts. file: link_values.c, snacc_util.c (added routine "GetAllNamedElmts") ======================================================================= Fixed bug #22 - potentially not allocating enough space for a C++ field name conflict file: snacc/src/back_ends/c++_gen/cpp_types.c ======================================================================= Fixed nibble alloc bug. curr pointer could be incremened past end ptr which then caused problems with new allocs. file: c_lib/nibble_alloc.c tbl_lib/nibble_alloc.c =======================================================================