######################################################################
# 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.
######################################################################

README
******

This software package, Cerial, supports serialization of C++ objects.  
The Cerial mini-compiler generates routines for encoding and decoding 
C++ objects to/from several transfer-syntaxes, for data types defined as 
normal C++ classes.  XDR and ASN.1 Basic Encoding Rules (BER) are currently 
supported.  The transfer-syntaxes are supported by three underlying types of 
communication models: File I/O, simple memory buffers, and TCP/IP sockets.  
In addition, ASN.1 abstract type definitions corresponding to the user's 
C++ classes are generated.

Cerial is openly available.  For details, see file COPYING.


Directories:
************

cerial:	cerial kernel; Cerial and StreamFamily class libraries
doc:	documentation
prepro:	mini-compiler from C++ to serialize() functions
demo1:	a very simple demo example
demo2:	more complicated demo: how to tailor serialize() functions for 
	exceptional cases
ezdemo:	a socket example


Authors:
********

	Juha Koivisto		Juha.Koivisto@tel.vtt.fi
	Jim Reilly		James.Reilly@tel.vtt.fi


Installation:
*************

1) ********** Install other libraries

You need a cfront (AT&T based) C++ 2.* compiler (not gcc/g+) and an ANSI C 
compiler.  In addition, Cerial uses several freely available software packages.
You must install all of them before you can install Cerial.

Software	ftp address		directory
--------	-----------		---------
bison		nic.funet.fi		pub/gnu
SNACC		cs.ubc.ca		pub/local/src/snacc
sstream		ftp.cs.cornell.edu	pub/sockets


Cerial source code and some documentation can be found in:

Cerial		nic.funet.fi		pub/unix/development/tools/OTSO

2) ********** Tell where the libraries are, and which features to compile

Edit Cerial source files:

	Makefile.inc	 

to tell where source code lies in your system, and

	cerial/env_sel.h 

If you set CERIAL_CPLUSPLUS_INCLUDE 0, you should create cerial/rpc
directory as explained in step 3.  You may need to edit also

	Makefile.generic

3) ********** make all

	make all

If the rpc header files in your machine are not C++ compatible, you may
get compilation errors like

"./xdr.ext", line 53: error: inconsistent linkage specifications for xdr_void()
"cerial.cc", line 154: error: unexpected  1 argument for ?

In this case you should use the header files in directory rpc.headers:

	cd cerial
	ln -s rpc.headers rpc

Good luck!

