1999-01-25  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* defobj.m (registerLocalClass): Fix thinko increment bug.

	* DefObject.m ([Object_s -doesNotRecognize:]): New method.
	Objective C runtime fails to format arguments, so we'll do
	it with raiseEvent.

1999-01-24  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* Arguments.m (prefix): Make sure new string is terminated.
	(strip_quotes): New function.
	([Arguments_c -createEnd]): Use it.

1999-01-23  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* defobj.m (lispIn): Continue to support make-objc.
	(initDefobj): Set inhibitLoadFlag from either
	--no-init-file or SWARM_INHIBIT_ARCHIVER_LOAD environment variable.

	* DefClass.m ([CreatedClass_s -updateArchiver]): Use lispArchiver,
	instead of archiver.

	* defobj.m (initDefobj): Initialize hdf5Archiver and lispArchiver
	instead of single archiver.

	* Archiver.m (Application): Remove Lisp and HDF5 deep/shallow
	variants and accessors.
	(lisp_output_objects, hdf5_output_objects): Don't stop on nil
	Map members, but ignore them.
	([Archiver_c +createBegin:]): Initialize inhibitLoadFlag to NO.

	* Archiver.h (Archiver_c): Remove lispPath and hdf5Path.  Add path and
	hdf5Flag.  

	* Archiver.[hm], defobj.h (hdf5Archiver, lispArchiver): New
	globals.
	(archiver): Removed.
	([Archiver_c -putDeep:object:], [Archiver_c -putShallow:object:], 
	[Archiver_c -getObject:], [Archiver_c -setDefaultLispPath], 
	[Archiver_c -setDefaultHDF5Path]): New methods.
	Remove Lisp and HDF5 variants.

1999-01-21  Marcus G. Daniels  <mgd@chama.santafe.edu>

	* DefObject.m (lisp_output_type): Don't print #:skipped, just
	print nil.
	([Object_s -_lispOut_:deep:]): Remove output space after typeName.

	* Arguments.m ([Arguments_c -_getSwarmHome_:]): Don't verify
	swarmHome if there wasn't one found.  Move findSwarm to the
	end, for when all else fails.
	(SIGNATURE_SUBPATH, SIGNATURE_PATH): Derive from INCLUDE_SUBPATH.

1999-01-20  Marcus G. Daniels  <mgd@chama.santafe.edu>

	* Makefile.am (CURRENT): Bump.

	* HDF5Object.m (hdf5_not_available): Moved from defobj.m.

	* Archiver.[hm], defobj.h: Switch registration and get/put to
	object-oriented interface.

	* DefClass.m ([CreatedClass_s -updateArchiver]): Use lispPutShallow:
	instead of lispArchiverPut().

	* HDF5Object.m ([HDF5_c -writeRowNames]): Prefer c_rnmlen to c_rnnlen
	(the latter has a default).

	* HDF5Object.[hm], defobj.h ([HDF5_c -checkName:]): New method.

	* Archiver.m (hdf5_output_objects): Split deep / shallow handling
	in to two different clauses.

1999-01-19  Marcus G. Daniels  <mgd@chama.santafe.edu>

	* HDF5Object.[hm] ([HDF5_c -readRowNames]), defobj.h: New method.

	* Archiver.m, DefClass.[hm], DefObject.[hm], defobj.h:
	Switch from {hdf5,lisp}Out:deep: to {hdf5,lisp}Out{Shallow,Deep}:.

	* HDF5Object.h (HDF5_c): Replace c_rnlen with two variables:
	c_rnnlen and c_rnmlen.  

	* HDF5Object.[hm], defobj.h ([HDF5_c -setCompoundType:], [HDF5_c
	-setCount:],
	[HDF5_c -getCount]): New methods.
	([HDF5_c -setCompoundType:count:]): Remove.
	([HDF5_c -setRowNameLength:]): Remove.

	* HDF5Object.m ([HDF5_c -createEnd]): Check that rank is one and
	restore c_count in compoundType case.
	([HDF5_c -numberRecord:]): Use c_rnnlen instead of c_rnlen.
	([HDF5_c -nameRecord:name:]): Maintain max len in c_rnmlen.
	([HDF5_c -writeRowsNames]): Set row name length to max
	c_rnnlen and c_rnmlen, whichever is non-zero.

	* DefObject.m ([HDF5_c -hdf5Out:deep:]): Replace
	setCompoundType:count: with setCompoundType: (which defaults to 1).
	Create rowname entry using object name (for R).
	([HDF5_c -hdf5In:]): Remove compoundType check (now in
	shallowLoadObject:).

	* HDF5Object.m (objc_type_for_did): New function.
	([HDF5_c -getClass]): Use it.
	([HDF5_c -loadDataset:]): Handle strings.

	* HDF5Object.[hm], defobj.h ([HDF5_c -loadDataset:]): New method.

	* HDF5Object.h (HDF5CompoundType_c): Make name public.

	* internal.[hm] (find_ivar): Moved from DefObject.m.
	(ivar_ptr): New function.
	(objc_type_for_array): New function.

	* DefClass.m (addVariable): Duplicate type and name.

1999-01-18  Marcus G. Daniels  <mgd@chama.santafe.edu>

	* HDF5Object.[hm], defobj.h ([HDF5_c -storeComponentTypeName:]):
	New method.
	([HDF5_c -shallowStoreObject:]): Rename of storeObject:.

	* HDF5Object.m (check_for_empty_class, check_align): New static
	functions.
	(create_compound_type_from_class): Use it.
	(insert_var): Check for arrays, objects, and strings, which cannot
	be handled here.
	(create_class_from_compound_type): Adjust for object header size
	in comparision of tid size and instance size.  Likewise for offset
	checks, and then check for alignment deviations.
	([HDF5_c -createEnd]): Initialize psid (was c_sid) to be available
	all the time.  Create a compoundType for simple shallow object,
	too.
	([HDF5_c -storeAsDataset:typeName:type:ptr:]): Remove scalar_space
	internal function, use psid.
	([HDF5_c -drop]): Accomodate different scopes.

	* HDF5Object.h (ATTRIB_COMPONENT_TYPE_NAME): New constant.
	(HDF5CompoundType_c): Rename c_msid to psid.

	* DefObject.m ([Object_s hdf5Out:deep:]): Handle compoundType
	and simple shallow store separately (the latter with a wrapper).

	* Archiver.m (compareStrings): Remove.
	([Application +createBegin:], [Archiver_c +createBegin:]): Remove
	usage of compareStrings.
	(hdf5LoadArchiver): Only make one app.
	(hdf5_output_objects): Don't support clases here.

	* DefClass.[hm]: Remove lispIn: and hdf5In:.

	* DefClass.[hm], defobj.h ([CreatedClass_s -setBaseTypeObject:]):
	New method.
	(createType): New function.

	* defobj.m (lispIn, hdf5In): Use createType.
	
	* DefClass.m ([CreatedClass_s -hdf5InCreate:]): Set the baseTypeObject
	to self and call HDF5's getClass.  

	* HDF5Object.m (get_attribute): Trap error from H5Aopen_name.

	* HDF5Object.[hm], defobj.h: New method setBaseTypeObject: and
	getClass.  -iterate: and -iterateAttributes: now require function
	to return integer.

	* HDF5Object.h (HDF5_c): c_type -> compoundType.
	New ivar baseTypeObject.  The baseTypeObject is to
	avoid redundant type objects being created and thrown away.

	* Archiver.m (hdf5LoadArchiver): Provide return value of 0
	on iterators.

1999-01-17  Marcus G. Daniels  <mgd@chama.santafe.edu>

	* HDF5Object.m ([HDF -writeRowNames]): Wrap contents in #ifdef
	HAVE_HDF5, otherwise call hdf5_not_available.

	* Archiver.m (hdf5LoadArchiver): Wrap in #ifdef HAVE_HDF5.

	* defobj.m (findTypeOrLocalClass): New static function.
	(initDefobj): Use it for _objc_lookup_class hook.
	(lispIn): Use only objc_lookup_class.
	(hdf5In): If necessary, call hdf5InCreate:, hdf5In: for class object.

	* HDF5Object.[hm], defobj.h
	([HDF5CompoundType_c -getClass]): New method.
	([HDF5CompoundType_c -setClass:]): Was -setSourceClass:.
	([HDF5CompoundType_c -setName:]): New method (and ivar).

	* HDF5Object.m (create_compound_type_from_class,
	create_class_from_compound_type): New static functions.
	([HDF5CompoundType_c -createEnd]): Use them.
	(get_attribute, make_string_ref_type, objc_type_for_id): New
	static functions.
	([HDF5_c -createEnd]): When loading, set c_type from dataset tid
	and type name acquired from get_attribute.  Remove code now in
	-writeRowNames.
	([HDF5_c -drop]): Remove code now in writeRowNames.
	([HDF5_c -setCompoundType:count:]): Was -setRecordType:count:.
	([HDF5_c -getCompoundType], [HDF5_c -writeRowNames]): New methods.
	([HDF5_c -iterateAttributes:]): Use get_attribute.

	* HDF5Object.[hm] ([HDF5CompoundType_c -setTid:],
	[HDF5CompoundType_c -getTid]): New methods.

	* DefClass.[hm], defobj.h ([CreatedClass_s -setClass:],
	[CreatedClass_s -setSuperclass:], [CreatedClass_s
	-setDefiningClass:],
	[CreatedClass_s -at:addMethod:]): Return self.

	* defobj.[hm] (hdf5In): New function.

	* HDF5Object.[hm] (HDF5_c): Remove c_did; use loc_id (and thus
	parent->loc_id) throughout.

	* HDF5Object.m ([HDF5_c iterate:]): Open/close dataset around
	iterateFunc as with group.

	* Archiver.m (lispLoadArchiver): Renamed from
	lispLoadArchiverExpr.
	(hdf5LoadArchiver): New function.
	([Archiver_c -createEnd]): Use it -- code of hdf5LoadArchiver was
	here.

	* DefObject.m ([Object_s -lispOut:deep:], [Object_s
	-hdf5Out:deep:]): Use getTypeName instead of name.

	* DefObject.[hm], defobj.h ([Object_s -getTypeName]): New method.

	* HDF5Object.[hm], defobj.h ([HDF5_c -iterateAttributes:]): New method.

	* HDF5Object.m (string_ref): New function.

	* HDF5Object.m ([HDF5_c -createEnd]): Register string_ref.
	([HDF5_c -drop]): Unregister string_ref.
	
1999-01-16  Marcus G. Daniels  <mgd@chama.santafe.edu>

	* Archiver.m ([Archiver_c -createEnd]): Check for readability
	of swarmArchiver.hdf before attempting load.

	* HDF5Object.m ([HDF5_c +createBegin:]): Only init loc_id if HAVE_HDF5 
	is defined.

	* HDF5Object.[hm]: Only define setId: if HAVE_HDF5 is defined.

	* Archiver.m ([Archiver_c -save]): Set createFlag to YES.
	([Archiver_c -createEnd]): Add applicationMap processing support
	for HDF5.
	(hdf5_output_objects): setCreateGroupFlag -> setDatasetFlag.  Set
	createFlag to NO.

	* DefObject.m ([Object_s -hdf5Out:deep:]): Set createFlag to YES.
	
	* HDF5Object.m ([HDF5_c +createBegin:]): Initialize datasetFlag and
	new variable createFlag to NO.

	* HDF5Object.[hm], defobj.h ([HDF5_C -setCreateFlag:], [HDF
	-setId:], [HDF5_c iterate:], [HDF5_c getDatasetFlag]): New methods.
	([HDF5_C -setDatasetFlag:]): Was setCreateGroupFlag:.

	* HDF5Object.h (HDF5_c): Add createFlag.  Rename createGroupFlag to
	datasetFlag.

1999-01-15  Marcus G. Daniels  <mgd@chama.santafe.edu>

	* HDF5Object.m (hdf5_store_attribute): New internal function.
	([HDF -storeAttribute:value:]): Use it.
	([HDF -storeAsDataset:typeName:type:ptr:]): Use it if typeName
	non-NULL.

	* HDF5Object.[hm], defobj.h: Add typeName: to
	storeAsDataset:typeName:type:ptr.

	* DefObject.m ([Object_s -hdf5Out:deep:]): Use it.

	* Archiver.m ([Archiver_c -lispOut:]): Put cons
	(cons appKey objects) within loop over applications.
	(lispProcessMakeObjcPairs): Pass app instead of deepMap.
	(archiverPut): New function.  Keep key in just one Map.
	(lispArchiverPut, hdf5ArchiverPut): Use it.
	(hdf5_output_objects): Set deepFlag to NO if object is a string.

	* HDF5Object.m, defobj.h ([HDF5_c -storeAttributeName:value:]):
	New method (a parameterized storeTypeName:).
	([HDF5_c -storeTypeName:]): Use it.
	Call hdf5_not_available in both when HAVE_HDF5 undefined.

1999-01-14  Marcus G. Daniels  <mgd@chama.santafe.edu>

	* DefClass.m ([CreatedClass_s -lispInCreate:], [CreatedClass_s
	-lispOut:deep:]): Use DSIZE.

	* defobj.h (DSIZE): 10ʥåХåեΥѤοޥ

	* HDF5Object.[hm], defobj.h (HDF5_c): Remove typeName and setter.  
	New method -storeTypeName:, which replaces internal function
	store_type_name.

	* Archiver.m (hdf5_create_app_group): Return application group 
	by reference.  Assert that mode exists.
	(hdf5_output_objects): Drop memberGroup when member serialization
	complete.
	([Archiver_c hdf5Out:]): Drop appGroup and modeGroup when 
	hdf5_output_objects has processed both shallow and deep requests
	for the app.

	* defobj.[hm] (hdf5_not_available): New function for raising an error
	any time a HDF5 feature is used but HDF5 not present in
	configuration.

	* Archiver.[hm], DefClass.h, DefObject.[hm], HDF5Object.[hm]:
	Don't ifdef out HDF5 support when HAVE_HDF5 not set, call
	hdf5_not_available instead.

1999-01-13  Marcus G. Daniels  <mgd@chama.santafe.edu>

	* HDF5Object.[hm], defobj.h ([HDF5_c +createBegin:]): New method.
	createGroupFlag defaults to YES.

	* Archiver.m ([Archiver +createBegin:]): Set inhibitLoadFlag
	to YES if the environment variable SWARM_INHIBIT_ARCHIVER_LOAD
	exists.

	* defobj.m (initDefobj): Call setInhibitLoadFlag on Archiver with
	Arguments' inhibitArchiverLoadFlag value.

	* HDF5Object.m (store_type_name): New function.
	([HDF5_c -createEnd]): Use it.
	Don't create group unless createGroupFlag is set,
	otherwise set loc_id from parent.

	* HDF5Object.[hm], defobj.h (HDF5_c): New ivars typeName and
	createGroupFlag and setters.
	([HDF5_c -getName]): New method.

	* Archiver.m (hdf5_output_objects): Pass deepFlag to
	setCreateGroupFlag.

	* Arguments.[hm] (Arguments_c): New ivar inhibitArchiverLoadFlag
	and accessors.

	* Archiver.[hm] (Archiver): New ivar inhibitLoadFlag and setter.

	* Archiver.m ([Archiver_c -createEnd]): Use it.
	(base_options): New option --no-init-file.
	([Arguments_c -parseKey:arg:]): Call setInhibitArchiverLoadFlag:
	on --no-init-file.

	* HDF5Object.[hm], defobj.h ([HDF5_c -nameRecord:name:], [HDF5_c
	-numberRecord:], [HDF5_c -setRowNameLength:]: New methods.

	* HDF5Object.m ([HDF5_c -setRecordType:count:]): Set c_rnlen from
	decimal size of recordCount.
	([HDF5_c -createEnd]): Create HDF5 attribute for row names.
	([HDF5_c -drop]): Close c_rn* HDF5 objects.

	* HDF5Object.h (HDF5_c): New ivars c_rnlen, c_rntid, c_rnsid,
	c_rnaid, and c_rnbuf.

1999-01-12  Marcus G. Daniels  <mgd@chama.santafe.edu>

	* DefObject.m ([Object_s hdf5Out:deep:]): Call -storeObject: when
	not deep.

	* HDF5Object.m ([HDF5_c -createEnd]): Handle compound type case.
	(hdf5InstanceCount): Use this to register and unregister 
	type converters in -createEnd and -drop.
	([HDF5_c -createEnd]): Setup point space.
	([HDF5_c -drop]): Close point space when c_type is set.

	* HDF5Object.[hm], defobj.h ([HDF5_c -setRecordType:count:]): New
	method.
	(HDF5CompoundType): New type.
	([HDF5_c -selectRecord:], [HDF5_c -storeObject:]): New methods.

	* defobj.m (_defobj_implement): Call setTypeImplemented for HDF5
	and HDF5CompoundType.

	* internal.[hm] (alignment_for_objc_type, size_for_objc_type,
	alignto): Moved from DefClass.m (formerly type_alignment, type_size,
	align).
	(map_ivars): Moved from DefObject.m.

	* DefClass.m: Include internal.h.
	(addVariable): Use alignment_for_objc_type, size_for_objc_type, and
	alignto.

	* HDF5Object.m (ref_string): Handler for const char * -> HDF5 string
	conversion.
	([HDF5_c -createEnd]): Ensure that ref_string is installed.
	([HDF5_c -drop]): Drop ref_string if converters installed.
	Call super drop.

	* defobj.h (HDF5): ץȥ롣

	* Makefile.am (SRC): Add HDF5Object.m.
	(defobj_HEADERS): Add HDF5Object.h.

	* HDF5.[hm]: New files split out from Archiver.[hm].

	* internal.m (process_array): Add baseType argument to setup_array.
	Don't permute over array if no output_type.  Don't call any
	NULL function argument.  Remove end_array argument.

	* DefObject.m (lisp_output_type): Return nothing.
	(lisp_end_array): Removed.
	(lisp_array_output_type): Remove end_array argument.
	(lisp_setup_array): Add third argument for base type.

	* Archiver.m: Include internal.h.
	(hdf5_tid_for_objc_type): New function.
	([HDF5_c -storeAsDataset:type:ptr:]): Add support for strings and
	arrays.

	* Makefile.am (SRC): Add internal.m.
	(EXTRA_DIST): Add internal.h.

	* DefObject.m: Include internal.h.

	* internal.m (process_array, nil_method): Moved from DefObject.m.
	Add dims argument to start_array.  Remove arguments to end_array
	and end_dim.

	* internal.[hm]: New files.

1999-01-11  Marcus G. Daniels  <mgd@chama.santafe.edu>

	* DefObject.m (map_ivars): New function.
	([Object_s -lispOut:deep:]): Use it.
	([Object_s -hdf5Out:deep:]): New method (also use map_ivars).

	* Archiver.m ([HDF5_c -setName:], [HDF5_c
	-storeAsDataset:type:ptr:],
	[HDF5_c -drop]): New methods.
	([HDF5_c -createEnd]): Create groups if parent exists, other
	create file.
	(defaultPath): New function.
	(lispDefaultPath, hdf5DefaultPath): Use it.
	(hdf5ArchiverPut, hdf5ArchiverGet): New functions.
	([Archiver_c +createBegin:]): Initialize hdf5Path.
	(hdf5_create_app_group, hdf5_output_objects): New functions.
	([Archiver_c -hdf5Out:]): New method, use above.
	([Archiver_c -countHDF5Objects:]): New method.
	([Archiver_c -save]): Call hdf5Out: with new HDF5 toplevel object
	if there are any HDF5 objects stored.

	* Archiver.h: Include swarmconfig.h.
	(HDF5): Declare interface here, with archiver constants.

1999-01-10  Marcus G. Daniels  <mgd@chama.santafe.edu>

	* defobj.h (Serialization): lispOuthdf5Outdeep:ץɲá
	(Archiver): lispArchiverPuthdf5ArchiverPutdeepɲá

	* DefClass.m ([CreatedClass_s -updateArchiver]): Pass NO
	to new deep-archive argument of lispArchiverPut.

	* DefClass.[hm] ([CreatedClass_s -lispOut:deep:], [CreatedClass_s
	-hdf5Out:deep:): Add deep: argument.

	* DefObject.[hm] ([Object_s -lispOut:deep:], [Object_s
	-hdf5Out:deep:]): Likewise.
	(lisp_process_array, lisp_output_type): Add deep-archive argument.

	* Archiver.m (Application): Split lispMap and hdf5Map into
	shallow/deep pairs.  Add accessors, and drop support.
	(lisp_print_appkey, lisp_output_objects): New static functions.
	([Archiver_c -lispOut:]): Use them.
	([Archiver_c -updateArchiver]): New method.
	([Archiver_c -save]): Use it.

	* Archiver.[hm] (lispArchiverPut, hdf5ArchiverPut): Add deep flag.

	* defobj.h (LoadError, SaveError): 顼

	* Archiver.[hm]: Use hdf5Path instead of HDF5Path throughtout.

	* DefObject.m (process_array): New function.
	(lisp_process_array): Use it, providing
	lisp{start,end}{array,dim,element} and output_type
	functions.
	(lisp_output_type): Renamed from output type.
	Use lisp_process_array for arrays instead of own code.

1999-01-09  Marcus G. Daniels  <mgd@chama.santafe.edu>

	* DefObject.m (output_type, [Object_s -lispIn:]):
	Handle nil type of id.

	* DefClass.m (objc_type_for_lisp_type, process_type): New functions.
	(TYPE_SHORT, TYPE_UNSIGNED_SHORT, TYPE_INT, TYPE_UNSIGNED,
	TYPE_LONG, TYPE_UNSIGNED_LONG, TYPE_FLOAT, TYPE_DOUBLE,
	TYPE_STRING, TYPE_OBJECT): New string macro constants.
	(process_type, objc_type_for_lisp_type): Use them.
	(type_size, type_alignment): New functions.
	(addVariable): Use them.
	([CreatedClass_s -lispInCreate:]): Use it for base type
	conversion.  Add support code to parse (array 'type dim1 dim2)
	syntax.
	([CreatedClass_s -lispOut:]): Use process_type for type
	conversion.  Add support code for array output.

1999-01-08  Marcus G. Daniels  <mgd@chama.santafe.edu>

	* defobj.m (localClasses, localClassCount): New variables.
	(registerLocalClass, findLocalClass): New static functions.
	(collectRemaining, lispInBoolean, lispInInteger,
	lispInString, lispInKeyword, lispIn): Moved from DefObject.m.
	(lispIn): Handle classes, registering them with registerLocalClass.
	(initDefobj): Use findLocalClasses as a class lookup hook.

	* defobj.h (DefinedClass): lispInCreate:lispIn:lispOut:updateArchivercopyClass

	* DefObject.m ([Object_s -lispOut:]): Use MAKE_INSTANCE_FUNCTION_NAME
	instead of MAKE_OBJC_FUNCTION_NAME.
	([Object_s -updateArchiver]): Don't use getObjectName
	as a key; instead, raise an event if used.
	([Object_s -lispIn:]): Accept MAKE_CLASS_FUNCTION_NAME and
	MAKE_INSTANCE_FUNCTION_NAME.  Set ivarname after type checks.

	* DefObject.h (Object_s): Comply to serialization protocol.

	* DefClass.m: Include predicates.h.
	([CreatedClass_s -lispInCreate:]): Implement.
	([CreatedClass_s -lispIn:]): NOP.
	([CreatedClass_s -hdf5InCreate:,-hdf5In:,-hdf5Out:]): Stubs.
	([CreatedClass_s -lispOut:]): Use MAKE_CLASS_FUNCTION_NAME instead
	of literal text.

	* DefClass.[hm] (copyClass): New method.

	* DefClass.m (extend_ivar_list): Renamed from allocate_var_list.
	Handle reallocation.

1999-01-07  Marcus G. Daniels  <mgd@chama.santafe.edu>

	* Archiver.m (archiverRegister): Don't copy and adapt class --
	we'll do a fake method invocation in save: and lispOut:.

	* Archiver.[hm] (Archiver_c, archiverRegister, archiverUnregister,
	save:, lispOut:, drop): Split classes and instances into two
	different lists: classes and instances.

	* DefClass.m: Move updateArchvier and lispOut: to CreatedClass_s.
	([CreatedClass_s -updateArchiver]): Use [self name] 
	instead of looking for definingClass (which won't work if we
	aren't using defobj classes).

	* Arguments.h (Arguments_c): Inherit from CreateDrop, not
	CreateDrop_s, since we can't do dynamic phase splitting.

1999-01-06  Marcus G. Daniels  <mgd@chama.santafe.edu>

	* defobj.h (Arguments): +createBegin:-createEnd-setArgc:Argv:-setAppModeString:-setOptionFunc:-setBugAddress:-setVersion:addOptions:ե˰ư

	* Arguments.m
	(+createArgc:Argv:version:bugAddress:options:optionFunc:): Split
	to use createEnd.

	* Arguments.[hm] ([Arguments_c -setVersion:], 
	[Arguments_c -setBugAddress:], [Arguments_c -createEnd]): New 
	methods.

	* Arguments.h (Arguments): Add version and bugAddress ivars.
	Declare +createBegin:. 

	* defobj.h (DefinedClass): addVariable(Serialization):updateArchiver

	* DefObject.m ([Object_s -updateArchiver]): New method
	(need something better than getObjectName for key).

	* DefClass.m (allocate_ivar_list, align, addVariable): 
	New functions -- addVariable uses former two.
	([BehaviorPhase_s -updateArchiver], [BehaviorPhase_s -lispOut:]): 
	New methods.

	* Archiver.m (archiverRegister): If client is a class, copy
	it and change class to id_BehaviorPhase_s so that it can
	be queried.

1998-12-28  Marcus G. Daniels  <mgd@chama.santafe.edu>

	* defobj.h (Archiver, Serialization): ץȥ륵ޥꤪӵʸɲá

1998-12-21  Marcus G. Daniels  <mgd@chama.santafe.edu>

	* Symbol.m: Don't include stdio.h or stdarg.h.

	* DefObject.[hm], defobj.h: New method +conformsTo:.

	* Customize.h: Include DefClass.h.

	* Customize.[hm] (getNextPhase, setNextPhase): Use deference to
	casts to BehaviorPhase_s instead of doing constant array offset
	into a Class.

	* make-h2x: Don't accept @implementation with a name starting with "_".

	* defobj.h (archiver{Register,Unregister},
	{lisp,HDF5}Archiver{Get,Put}): ץեå`extern'

1998-12-20  Marcus G. Daniels  <mgd@chama.santafe.edu>

	* DefClass.m ([CreatedClass_s +createBegin:]): Don't use temporary
	variable.

	* Customize.h (createByCopy, createByMessageTo,
	createByMessageToCopy): Return YES/NO instead of 1/0.

	* Create.m: Don't include swarmconfig.h. 

1998-12-19  Marcus G. Daniels  <mgd@chama.santafe.edu>

	* defobj.m (_defobj_implement): Call setTypeImplemented: Archiver
	on id_Archiver_c.

	* defobj.h (Archiver): ץȥ롣archiverؿ򤳤Υץȥ˰ư

	* Archiver.m: Include hdf5.h if HAVE_HDF5 is defined.
	Make archiver of type Archiver_c.  Only include HDF things if 
	HAVE_HDF5 is defined.
	([Archiver_c +createBegin:]): Make newArchiver of type Archiver_c.
	([Archiver_c -createEnd]): Make call to super createEnd.
	([Archiver_c -setHDF5Path): New method.

	* Archiver.[hm] (Archiver_c): Renamed from Archiver.
	Add HDF5Path ivar and setter.  Declare/define HDF5Archiver{Get,Put}.

1998-12-18  Marcus G. Daniels  <mgd@chama.santafe.edu>

	* Archiver.m: Don't include objc/objc-api.h.
	(Application): New internal class.
	(lispProcessPairs): Pass map update function instead reader
	function and map.
	(lispProcessMakeObjcPairs, lispProcessApplicationPairs): Add map
	update function, pass it to lispProcessPairs.
	(lispArchiverPut, lispArchiverGet): Get object map from
	Application object.
	([Archiver +createBegin:]): Initialize applicationMap in 
	one expression.
	([Archiver -lispOut:]): Get objectMap from Application object
	using getLispMap.
	([Archiver -drop]): Delete members and then drop applicationMap.

	* Archiver.[hm] ([Archiver -getApplication]): New method.
	(lispArchiver{Get,Put}): Renamed from archiver{Get,Put}.
	([Archiver -getMap]): Remove.

	* defobj.h: archiver{Register,Unregister}{HDF5,lisp}Archiver{Get,Put}Serializationץȥɲá

	* Archiver.h: Include collections.h and make applicationMap
	an object conforming to Map.
	(HDF5Archiver{Get,Put}): Add.
	
	* defobj.h (Symbol): setName:

	* DefClass.[hm], defobj.h (CreatedClass): Return self for setName:.

1998-12-18  Vladimir Jojic  <vjojic@wijiji.santafe.edu>

	* DefObject.h (setBit): Typo.

1998-12-17  Vladimir Jojic  <vjojic@aztec.santafe.edu>

	* DefObject.h: Modify setBit by casting the bit as unsigned.

1998-12-17  Marcus G. Daniels  <mgd@chama.santafe.edu>

	* defobj.h: readOnlySetInitialValueץȥ뤫(ǥʸ˰ư)

	* defobj.m (initDefobj): Call Archiver create: instead of ensure:.

	* Makefile.am (INCLUDES): Add $(HDF5INCLUDES).

	* DefObject.[hm], defobj.h: Include swarmconfig.h.
	Declare/define hdf5InCreate:, hdf5In: and hdf5Out: if HAVE_HDF5 is
	defined.

	* Archiver.m (lispDefaultPath, lispProcessPairs,
	lispProcessMakeObjcPairs, lispProcessApplicationPairs,
	lispLoadArchiverExpr): Prefix with lisp.
	([Archiver -createEnd]): Setup and call lispLoadArchiverExpr here.

	* Archiver.[hm]: Rename path to lispPath throughout.
	Remove load:, load:fromPath, +ensure:path: and ensure: as
	+createBegin:/createEnd work fine.

1998-12-13  Marcus G. Daniels  <mgd@chama.santafe.edu>

	* Arguments.m ([Arguments_c +createBegin:]): Initialize optionFunc
	to NULL.
	([Arguments_c -parseKey:arg:]): Call parseFunc if set.
	(+createArgc:Argv:version:bugAddress:options:parseFunc): Call
	addOptions if options is set.  Rename (local) arguments to argObj.

	* Arguments.[hm], defobj.h: Add options:optionFunc: to
	+createArgc:Argv:version:bugAddress:options:optionFunc.
	Return self from addOptions:.
	(argp): Make instance variable.
	New method setOptionFunc:.

	* defobj.m: Include misc.h instead of stdio.h.  Use YES instead
	of 1 for initialization of _warning_dropFrom and _obj_debug.
	(initDefobj): Default to Arguments if argumentsClass
	is Nil.

	* Makefile.am (module_headers): Add defobj.xm.

1998-12-11  Marcus G. Daniels  <mgd@chama.santafe.edu>

	* make-h2x: Use OBJC and OBJCFLAGS instead of CC and CFLAGS.

	* Program.[hm] (_obj_nclasses, _obj_nmodules): Make unsigned.

1998-11-19  Marcus G. Daniels  <mgd@chama.santafe.edu>

	* Makefile.am (CLEANFILES): Append version.h.

	* DefObject.m (lispIn): Get typeNameString directly from list.

	* DefObject.[hm], defobj.h: Remove lispInQuotedExpr.

	* Archiver.m (processPairs): Simplified to use ArchiverPair objects.

1998-11-18  Marcus G. Daniels  <mgd@chama.santafe.edu>

	* DefObject.[hm], defobj.h: Add lispIn{String,Keyword}.

	* DefObject.m ([Object_s -lispOut:]): Add a (very fragile) special
	case to allow member_t, so that Lists with setIndexFromMemberLoc:
	can be serialized.

1998-11-17  Marcus G. Daniels  <mgd@chama.santafe.edu>

	* Program.[hm] (defobj_lookup_type): New function.

	* DefObject.m (lispInQuotedExpr): Renamed from lispinQuotedExpr.
	(lispInBoolean, lispInInteger): New functions.
	(lispIn): First try type object, then look for a class of the
	desired name.
	([Object_s -lispInCreate:]): New stub.
	Handle renames of lispIn: and lispOut: throughout.
	
	* DefObject.h (Object_s): Rename lisp{in,out} to lisp{In,Out}.
	Declare lispIn, lispInQuotedExpr, lispInBoolean, and lispInInteger
	here. 

	* Archiver.h: Rename lispout to lispOut. Use
	renamed lispInQuotedExpr and lispIn.

	* defobj.h (Serialization): ץȥ롣lispInlispInQuotedExprarchvierSaveSerialization˰ưlispInCreate:ե֡lisp{in,out}:lisp{In,Out}:̾ѹdefobj_lookup_type

1998-11-16  Marcus G. Daniels  <mgd@chama.santafe.edu>

	* DefObject.m: Include predicates.h.
	(find_ivar): New function.
	([Object_s -lispin:]): Handle arrays, numbers, strings, and 
	object creation.
	(output_type): Print character when isprint-able, otherwise
	use 3-digit octal.  Return type + 1 in default return.

	* defobj.h, DefObject.[hm]: Replace +lispin:expr with lispin ().
	Declare archiverSave.

	* Archiver.m (callLispIn): Remove.
	(processMakeObjcPairs): Call lispin directly.

	* Makefile.am ($(OBJECTS)): Depend on version.h.

1998-11-15  Marcus G. Daniels  <mgd@chama.santafe.edu>

	* DefObject.m (output_type): Return next type position.
	([Object_s -lispin:]): Initial key/value processing.

1998-11-13  Marcus G. Daniels  <mgd@chama.santafe.edu>

	* defobj.h (DefinedObject): creatingե+lispin:expr:
	(lispinQuotedExpr):
	(MAKE_OBJC_FUNCTION_NAME):(ޤǤArchiver.m¤Ƥ)
	
	* DefObject.m (output_type, collectRemaining): New internal
	functions.
	(lispinQuotedExpr): New function.
	([Object_s +lispin:expr:]): New method, put in creating phase.
	([Object_s -lispout:], [Object_s -lispin:]): New methods (latter
	is empty).
	
	* DefObject.h: Declare lispin:, +lispin:expr:, and lispout:.

	* Archiver.m: Make archiver statically typed.
	(processPairs, callLispIn, processMakeObjcPairs,
	processApplicationPairs, loadArchiverExpr): Change from methods
	to functions.
	([Archiver +load:fromPath:]): Call loadArchiverExpr.
	([Archiver -setPath:]): Put in Setting phase.
	([Archiver -lispout:]): Remove output of `make-objc' text, this
	must now be a part of the called lispout method.
	(archiverRegister, archiverUnregister): Remove internal methods
	and implement here.

	* Archiver.h (Archiver): Make clients public.
	Declare lispout:.

1998-11-12  Marcus G. Daniels  <mgd@chama.santafe.edu>

	* defobj.m: Include defobj.h and defobj/Archiver.h.
	(_defobj_implement): Set up Arguments.
	(initDefobj): New function.

	* defobj.h (Dataset): ץȥ롣(Arguments):ץȥ(objectbase)ɲá

	* Makefile.am (SRC, defobj_HEADERS): Add {Archiver,Arguments}.[mh].
	(version.h, install-data-local): New rules (formerly in objectbase).

1998-11-11  Marcus G. Daniels  <mgd@chama.santafe.edu>

	* DefObject.m (_obj_dropAlloc): Use YES and NO instead of 1 and 0.
	(_obj_formatIDString): Use getClass macro instead of sending method
	and casting to Class.

1998-10-09  Alex Lancaster  <alex@santafe.edu>

	* Makefile.am (bin_SCRIPTS): Removed noinst_ prefix from make-h2x
	and m2h.  Used by gridturtle programs.

1998-10-04  Marcus G. Daniels  <mgd@wijiji.santafe.edu>

	* Makefile.am (REVISION): Increment. Swarm 1.3.1 released.
	
	* Customize.m ([Customize_s -_setCreateByMessage_:to:], 
	[Customize_s -_setCreateByMessage_:toCopy:]): 
	Eliminate sign vs. unsigned warnings.

1998-09-24  Marcus G. Daniels  <mgd@wijiji.santafe.edu>

	* Create.[hm] ([CreateDrop_s -getObjectName], [CreateDrop_s
	-getIdName]): Move to DefObject.[hm].

1998-09-09  Marcus G. Daniels  <mgd@wijiji.santafe.edu>

	* Zone.m ([Zone_c -alloc:]): Allocate enough for a size_t and
	stash the size there.  Adjust-up returned pointer. Increment
	allocTotal.
	([Zone_c -free:]): Decrement allocTotal.  Adjust-down pointer
	before freeing.

1998-09-08  Marcus G. Daniels  <mgd@wijiji.santafe.edu>

	* DefObject.h: Reformatting throughout.
	(mapalloc): Make descriptor of type id <Symbol>.

1998-08-24  Marcus G. Daniels  <mgd@wijiji.santafe.edu>

	* Makefile.am (REVISION): Increment.  Swarm 1.3 released.
	(install-data-local): Do two installs, for install-sh case.

1998-08-21  Marcus G. Daniels  <mgd@wijiji.santafe.edu>

	* Zone.m (dalloc, [Zone_c -freeIVars:], [Zone_c
	-freeIVarsComponent:], [Zone_c -free:], [Zone_c
	-freeBlock:blockSize:]): Use XFREE instead of xfree.

1998-08-11  Marcus G. Daniels  <mgd@wijiji.santafe.edu>

	* Makefile.am: Don't install m2h or make-h2x.
	Create.m: Include swarmconfig.h instead of config.h.

1998-08-07  Marcus G. Daniels  <mgd@wijiji.santafe.edu>

	* Zone.m ([Zone_c -mapAllocations:]): Drop index.

1998-08-05  Marcus G. Daniels  <mgd@wijiji.santafe.edu>

	* Create.m: Include config.h.

1998-07-24  Marcus G. Daniels  <mgd@wijiji.santafe.edu>

	* Create.m ([CreateDrop_s -getObjectName]): Don't add 0x if
	it is known to already be in %p output.

1998-07-22  Marcus G. Daniels  <mgd@wijiji.santafe.edu>

	* Program.m: Tweak comment (@deftype -> @protocol).

	* make-h2x: Search for @protocol instead of @deftype.

	* defobj.h: Τ@deftype@protocolѹ

	* Create.m (ATDELIM): Go back to `@' until BLT 2.4 is for real.

1998-07-21  Marcus G. Daniels  <mgd@wijiji.santafe.edu>

	* DefClass.m: Don't include stdio.h or stdlib.h.

1998-07-19  Marcus G. Daniels  <mgd@wijiji.santafe.edu>

	* Create.m (ATDELIMCHAR): New macro, used to delimit name
	and address in -getObjectName (now is `_' instead of `@').

1998-07-08  Marcus G. Daniels  <mgd@wijiji.santafe.edu>

	* DefClass.m, DefObject.m, Symbol.m: Include misc.h instead of
	string.h.

	* Customize.m, DefClass.m, DefObject.m: Reformatting throughout.

1998-07-06  Marcus G. Daniels  <mgd@wijiji.santafe.edu>

	* make-h2x: Use sed instead of basename for determining source
	filename.

1998-06-24  Marcus G. Daniels  <mgd@ute.santafe.edu>

	* Customize.m, Program.m, Zone.m: Don't include string.h.

	* make-h2x: Handle .lo files.

	* Makefile.am (defobj_HEADERS): Remove module_headers.

	* objc.patch: Remove.

1998-06-23  Marcus G. Daniels  <mgd@ute.santafe.edu>

	* Makefile.am (lib_LTLIBRARIES, libdefobj_la_SOURCES,
	libdefobj_la_LDFLAGS, SRC, CURRENT, REVISION, AGE): New variables.
	Set *_SOURCES from SRC.

1998-06-22  Marcus G. Daniels  <mgd@ute.santafe.edu>

	* Makefile: Remove.
	
	* make-h2x: Accept srcdir as second argument.

1998-06-21  Marcus G. Daniels  <mgd@ute.santafe.edu>

	* Makefile.am: New file.

1998-06-15  Alex Lancaster  <alex@santafe.edu>

	* DefObject.m ([Object_s -setDisplayName:]): Removed cast of
	pointer to unsigned long.
	(_obj_formatIDString),(xsetname), (xexec), (xfexec): Likewise.

1998-06-14  Marcus G. Daniels  <mgd@ute.santafe.edu>

	* defobj.h: ¾(¸ߤʤ)󷿤ȤȤȯ뤳ȤؤθڤߤZoneμؤθڤ-setReclaimPolicy:-setStackedSubzones:-getSubzones-mergeWithOwner-getSubzone:ؤθڤ-reclaimStorage-releaseStoragexfprintxfprintidxsetnamexprintxprintidxfprintxfprintidxexecxfexecεҤ

1998-06-03  Marcus G. Daniels  <mgd@ute.santafe.edu>

	* defobj.h: ɥơ󥿥ι
	(PTRFMT): %pλѡ

1998-06-01  Alex Lancaster  <alex@santafe.edu>

	* DefObject.m ([Object_s -xfprintid]): Fixed typo in comment above
	method

	* defobj.h ([DefinedObject -{xfprint,xfprintid}): DefinedObjectץȥ¸ߤ٤᥽åɤȥɥơ󥿥ɲá

1998-05-28  Marcus G. Daniels  <mgd@ute.santafe.edu>

	* defobj.h: //# ɥơʸ(³Υɬ)

1998-05-26  Alex Lancaster  <alex@santafe.edu>

	* defobj.h (raiseEvent,M(), initModule, globalZone, scratchZone, defsymbol, defwarning, deferror): (//#)ɥơʸɲá(<{Warning,Error}>):줾θ(//G)ɥơʸɲá (<Symbol>, _obj_formatIDString, objc_get_class, _obj_debug, (_obj_xerror, *_obj_xdebug, xsetname, xprint, xprintid, xfprint, xfprintid, xexec, xfexec):줾(//G)ɥơʸɲá

1998-05-06  Marcus G. Daniels  <mgd@ute.santafe.edu>

	* defobj.h: ɥơ<p>Υ󥹥󥹤᥽åɥڡ󥰤˼㴳ѹ(Create): createBegin:餤ĤΥɥơ̥ɥơ˰ư(Error):Ҥɲá

	* DefObject.m: Minor reformatting.
	(Object_s): Add phase tags. 

1998-05-04  Marcus G. Daniels  <mgd@wijiji.santafe.edu>

	* defobj.h: 礱ƤȤCREATINGUSINGɲá

1998-04-27  Marcus G. Daniels  <mgd@wijiji.santafe.edu>

	* defobj.h: ɥơ󥿥ɲá

	* make-h2x: Insist that @deftype start at the beginning of a line.

1998-04-25  Marcus G. Daniels  <mgd@wijiji.santafe.edu>

	* defobj.[hm]:  Add ProtocolViolation error symbol.

1998-04-23  Marcus G. Daniels  <mgd@wijiji.santafe.edu>

	* Zone.m: Include string.h for memset.

	* defobj.m: Don't include nil_method redefinition unless we
	are using gcc >= 2.8.0.

1998-04-22  Marcus G. Daniels  <mgd@wijiji.santafe.edu>

	* defobj.m: Reformatting throughout.
	(nil_method): New function.  

	* Zone.m: Include collections/List_Linked.h instead of
	collections.h.  Include misc.h instead of stdlib.h and memory.h.
	Reformatting throughout.
	([Zone -createEnd]): Use List_linked instead of List to make
	population. 

	* Program.m: Include misc.h instead of stdlib.h. 
	Reformatting throughout.

1998-04-17  Marcus G. Daniels  <mgd@wijiji.santafe.edu>

	* defobj.h (GetName): getNameϥեȥ᥽åɡ(DefinedClass):٤ƤΥ᥽åɤϥեȥ᥽åɡ

	* DefObject.h (Object_s): Make it conform to DefinedClass protocol.

1998-03-17  Marcus G. Daniels  <mgd@wijiji.santafe.edu>

	* Makefile ($(BINDIR)/m2h, $(BINDIR)/make-h2x): Ensure that
	there are execute permissions for installed versions.

1998-03-09  Marcus G. Daniels  <mgd@wijiji.santafe.edu>

	* Create.m ([CreateDrop_s -getObjectName]): In cygwin B19 case,
	don't prefix %p with 0x (it does it).

1998-02-21  Marcus G. Daniels  <mgd@wijiji.santafe.edu>

	* Create.m: Add PHASE(Using) before getIdName and getObjectName.

1998-01-27  Marcus G. Daniels  <mgd@wijiji.santafe.edu>

	* defobj.m (nameToObject): New function.  Include <stdio.h>
	and objc/objc-api.h on its behalf.

	* defobj.h: nameToObjectؿ

	* Makefile ($(INCDIR)/defobj.h): Remove target before copying
	to it.

1998-01-24  Marcus G. Daniels  <mgd@wijiji.santafe.edu>

	* Create.m ([CreateDrop_s -getIdName], [CreateDrop_s
	-getObjectName]): New method.

	* Create.h: Declare new methods getIdName and getObjectName.

1998-01-11  Marcus G. Daniels  <mgd@wijiji.santafe.edu>

	* make-h2x:  Quote CFLAGS so that embedded quotes will work (e.g. in
	EXTRACFLAGS).

1997-12-17  Marcus G. Daniels  <mgd@wijiji.santafe.edu>

	* Customize.m (_obj_splitPhases): Rename className to classNameBuf.
	Reformat function.

	* Symbol.m ([Symbol_c +create:setName:]): Rename variable newName
	to newNameBuf.

1997-12-10  Marcus G. Daniels  <mgd@wijiji.santafe.edu>

	* Symbol.m ([Symbol_c -raiseEvent:]): Constify argument (Error_c,
	Warning_c, EventType_c).
	(printMessage): Constify eventData argument.

	* Symbol.h: Constify argument to raiseEvent (Warning, Error_c,
	EventType).

	* DefObject.m (notifyDisplayName): Cast insert: displayName
	argument to id.
	(notifyDisplayName): Cast freeBlock: displayName argument to void *.

1997-12-08  Marcus G. Daniels  <mgd@wijiji.santafe.edu>

	* DefObject.m (xsetname): Add braces to pacify GCC.

	* DefClass.h (Class_s): Constify name.

	* DefObject.m ([Object_s -describeID:]): Constify displayName.

	* defobj.h: setDisplayNameΰ
	getDisplayNameͤ
	GetName deftypegetNameͤ
	Symbol +createsetName
	SymbolsetNameΰ
	WarningsetMessageStringΰ
	WarninggetMessageStringͤ
	CreatedClasssetNameΰ
	objc_get_classΰ
	xsetnameexecxfexecname
	APIChangeηٹκ
	Τͼѹ

	* Symbol.m ([Symbol_c +create:setName:]): Constify argument and
	use non-const intermediate variable for copy.
	([Symbol_c -getName]): Constify.
	([Symbol_c -describe:]): Don't use fixed-size scratch buffer.
	(printMessage): Constify eventClass, eventName, and messageString
	arguments.  Make eventData void*.
	([Warning_c -setMessageString:]): Constify argument.
	([Warning_c -getMessageString]): Constify return.
	([Warning_c -describe:]): Don't use fixed-size scratch buffer.
	Reformatting throughout.

	* Symbol.h (Symbol_s): Constify name instance variable.
	Constify symbolName argument to +create.
	Constify return of getName.
	(Warning_c): Constify messageString instance variable.
	Constify argument to setMessageString.
	Constify return of getMessageString.

	* Program.m ([Type_c -getName]): Constify return.
	[ProgramModule_c -getName]): Likewise.

	* Program.h (Type_s): Constify name instance variable.
	Constify return of getName.
	(ProgramModule_c): Likewise.

	* DefObject.m ([Object_s +getName]): Constify return.
	(notifyDisplayName): Constify displayName.
	([Object_s -setDisplayName:]): Constify argument.
	([Object_s -getDisplayName]): Constify return.
	(xsetname): Constify displayName argument.
	(xexec): Constify msgName argument.
	(xfexec): Constify msgName argument.

	* DefObject.h: Constify return of getName and getDisplayName.
	Constify argument to setDisplayName.

	* DefClass.m (_obj_initMethodInterfaces): Constify mname.
	([CreatedClass_s -setName:]): Constify argument.

	* DefClass.h: Constify argument to setName.

	* Customize.m ([Customize_s -_setCreateByMessage_:to:]): Constify
	messageName.
	([Customize_s -_setCreateByMessage_:toCopy:]): Likewise.

	* defobj.h: LibraryUsageDefaultAssumedObsoleteFeature衣ObsoleteMessage(geprޥʡ꡼ˤϽפȼĥ뤿)

1997-12-07  Marcus G. Daniels  <mgd@wijiji.santafe.edu>

	* defobj.h: APIChangeɸ२顼ɲáObsoleteFeatureȽʣȸ뤿ObsoleteMessageLibraryUsageDefaultAssumedObsoleteFeatureϻѤʤ̵

1997-11-29  Marcus G. Daniels  <mgd@wijiji.santafe.edu>

	* Program.m (initModules): Move initModule of Collections below
	initialization of standard zones so that it can use the zones.

