/***********************************************************************
 * Copyright (c) 1993 Technical Research Centre of Finland
 * All rights reserved.
 *
 * This software is provided ``as is'' and without any express or
 * implied warranties, including, without limitation, the implied
 * warranties of merchantibility and fitness for a particular purpose.
 **********************************************************************/

doc/bugs
********

There are some restrictions and bugs in our current implementation: 

- ASN.1 BER serialization of floats and doubles not implemented properly
  (SNACC documentation may help?)
- ASN.1 BER indefinite length coding is always used for encoding of 
  C structs (SEQUENCEs) and arrays (SEQUENCEOF).
- Currently we use explicit tagging of optional elements in the 
  implementation of AsnBerCerial. Implicit tagging would produce more 
  compact ASN.1 BER transfer-syntax encodings.  This may be added 
  if needed in future.  In our case tagging is mostly used for 
  optional pointer elements, so it should not adversely impact the length 
  of encodings from C++ types without many pointers.  
- Not all the mystical feature richness and options of ASN.1 basic 
  encoding rules are supported (e.g. we only encode an OCTETSTRING in 
  one way).  This is an area for future improvement.
- Encoding and decoding errors cause serialize() routines to return 
  immediately.  The application programmer is then responsible 
  for error handling.  
- We have not implemented a C++ class library supporting all 
  ASN.1 basic types.  This is an area for future improvement based on 
  user needs.
- the mini-compiler cannot handle all the complexities of C++
  See doc/mini-compiler.manual.ps
- SocketStreams are difficult to use.  Buffer header manipulation should
  be moved from user code to SocketStream code, and pipedef() handling
  could be moved to SocketStream constructor.
