NEWS   [plain text]


=======================================================================

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

=======================================================================