#
# Author: Jim Kowalkowski
# Date: 2/96
#
# $Revision-Id$
#

Some Notes:

******
The following function described in gddAppTable.h and defined in gddAppDefs.cc:

	gddApplicationTypeTable* gddGenerateApplicationTypeTable(void);

is designed to be called in an application to create the type table
with a default set of attributes already registered.  The current mechanism
for generating the default registered attributes is the C++ code in
gddAppDefs.cc.  See this file for a list of registered attributes.

Creating am application type table using new will perform the same function.

******
The gddCleanUp object will automatically clean up the free list storage
when it is destructed.  There should only be one of these in an application.
It is not required.

******
To build for vxWorks, define an environment variable "VX_BUILD=vw" and type
make.  It will build for the HOST_ARCH architecture and then vxWorks.

You must have gcc/g++ 2.5.8 or later available to cross compile to 68k object
code and vxWorks.  You can get the gcc 2.5.8 package from the HiDEOS home
page along with instructions on building it.

The vxldscript.MRI file instructs the gnu loader on how to propare
object files to load under vxWorks.

You must use the ldpp program under vxWorks shell to load g++ generated
object modules.  The ldpp program is available in the EPICS base package.
Contact me if you want a copy of it.

It is really not difficult to get g++ object files to load under vxWorks
or to get the g++ compiled installed and running.  The makefile is set up
to handle builds for vxWorks.

******
aitTypes.h: Definitions of the architecture independant types.
aitTypes.c: definitions of several lookup tables
aitConvert.h: conversion table description,byte ordering routines
aitConvert.c: conversion information not generated
aitGen.c: creates the general conversion functions
aitConvertGenerated.c: file of generated conversion functions

dbMapper.cc: mappings from DBR types to ait types and GDDs
dbMapper.h: mappings from DBR types to ait types and GDDs

gddApps.h:
	This file contains "#define" statements for quick indexing into
	managed containers.  Generated by program genApps.cc.

*******
Still needed:

1) AppTable method to map application type to offset (index) into a 
   managed container.
* mostly complete

2) Function to map DBRxxxx types to Application types and back.
* still working on mapping method

3) Methods for managing network byte order conversions in gdd class.

4) Method to extract data (and bounds information) from a gdd into a
   user's buffer.

6) #defines to remove extra checks and make the programs run faster.

************ 6/13/96 *************

ref_cnt should be an unsigned short instead of char

menus need to be fixed - use aitFixedString or aitString

get/operator=() should be smarter, do conversion if types do not match

************ 6/20/96 **************

fix the flatten functions so they work properly with aitString and fixed
string

fix the aitString class, add the install string method and change others

*********** 6/21/96 ************

fixe the aitString::compact function, and all other stuff that works with
string info so that if the string that the aitString is holding is NULL,
then the system will act correctly.  The flatten functions have trouble
with this when the described string is NULL.

*********** 6/24/96 *************

still need to fix the transfer of aitString data into a pre-made gdd.
If only array of 5 aitString is placed into a pre-made array of 16,
then the last 11 should be initialized to NULLs or something, same for
fixed string - especially the fixed string

************** 6/26/96 ************

aitString:copy() still has troubles.  Need to correct the
aitConvertStringFloat64() and others.  How are they supposed to work?
Should they be calling aitString::installString() instead of copy()? Yes,
that is the answer.  In the convert functions, the temp variable
used to hold a value (character value) is always a stack variable and
needs to be copied.  Maybe the temp char variable should be copied over
the existing string if it will fit. No.

************** 8/28/96 ****************

network/host byte ordering issue:

Change isNetworkByteOrder() in class gdd to:
	isLocalDataFormat()   - true if data format is local host format
	isNetworkDataFormat() - true if data format is network format

	Both the above can be true at the same time if local host data format
	is the same as network data format

Add method to class gdd:
	markLocalDataFormat()
	markNotLocalDataFormat()

Modify putRef() functions of gdd class:
	add third argument to specify the byte order that data is in.
	default mode to local data format.  this turns out to be ugly
	because the second argument (gddDestructor*) defaults to NULL.
	But this is probably OK, since this will not be used often.

Modify getRef() functions of gdd class:
	add another argument that specifies the data format the user desires.
	default to local data format, first access to an array that is not
	in the correct format will cause the entire array to be converted
	to the desired format.

putConvert() and getConvert() notes:
	getConvert will always return values in local data format
	putConvert will always take local data format values as arguments

put() and get() notes:
	get always returns data in local data format
	put always takes data in local data format

Modify dbMapper.cc:
	add dbMapperToDbrMode({to_network_byte_order,keep_in_local_order})
	change all function to honor this mode setting
	any gdd converted to a dbr type could be change to network byte order
	depending on this mode.

Jim


