2000-01-03 Marcus G. Daniels  <mgd@drone.swarm.org>

	* LispArchiver.m (LispArchiverObject): Remove.
	(lispProcessPairs): Take stream instead of expr as argument.
	Create an InputStream to pass to mapUpdateFunc.
	(lispProcessMakeObjcPairs): Take stream instead of expr as argument.
	(lispProcessApplicationPairs): Likewise.
	([LispArchiver_c -lispLoadArchiver:]): Likewise.
	([LispArchiver_c -lispLoadArchiver:]): Create an InputStream
	to pass to lispProcessApplicationPairs.  Pass stream
	to lispProcessMakeObjcPairs.
	(lisp_output_objects): Use catEndCons.  Take app as argument
	instead of objectMap.
	(lisp_output_app_objects): Use cat{Start,End}List.
	([LispArchiver_c -_lispOut_:]): Use cat{Start,End}Function
	and catEndList.
	(archiverLispPut): Remove add/remove map arguments.  Don't
	use LispArchiverObject, just record stream.
	([LispArchiver_c -put{Deep,Shallow}:object:]): Accomodate.
	(archiverLispGet): Don't use deep/shallow map.

	* LispArchiver.[hm], Archiver.[hm]: Move Application to LispArchiver.
	
	* DefObject.m ([Object_s -_lispOut_:deep:]): Use catEndMakeInstance
	instead of catEndExpr.

	* DefClass.m ([CreatedClass_s -lispOutShallow:]): Use
	catEndMakeClass instead of catEndExpr.

	* Archiver.[hm] (Application, [Application +createBegin:],
	[Archiver_c -countObjects:]): Replace deepMap, shallowMap,
	initialization, and accessors with streamMap.

	* internal.m (lisp_output_type): Use Class argument to catClass.

1999-12-31  Marcus G. Daniels  <mgd@drone.swarm.org>

	* DefObject.m ([Object_s -lispOutVars:deep:],
	[Object_s -_lispOut_:deep:]): Use new OutputStream methods.

	* LispArchiver.m (lisp_output_objects, lisp_output_type): Likewise.

	* internal.m (lisp_process_array): Likewise.

	* DefClass.m, internal.[hm] (process_type,
	objc_type_for_lisp_type, TYPE_*): Moved to internal.m.
	([CreatedClass_s -lispOutShallow:]): Use new OutputStream
	methods.

1999-12-29  Marcus G. Daniels  <mgd@drone.swarm.org>

	* LispArchiver.m ([LispArchiver_c -createEnd]): Use
	super for creating application key.

	* LispArchiver.[hm] ([LispArchiver_c -lispLoadArchiver:]): Return nil.

	* HDF5Object.[hm], defobj.h (HDF5_c): Rename createFlag -> writeFlag.
	Rename setter.  Add getter.  New method iterate:drop:.

	* HDF5Object.m (suppress_message): New function.
	([HDF5_c -checkName:], get_attribute_string_list): Use it.
	(hdf5_delete_attribute): New function.
	([HDF5_c -writeLevel:], hdf5_store_attribute,
	[HDF5_c -writeRowNames]): Use it.
	(hdf5_open_file): New function.
	([HDF5_c -createEnd]): Use it.
	(hdf5_open_dataset): New function.
	([HDF5_c -createEnd], [HDF5_c
	-storeAsDataset:typeName:type:ptr:]): Use it.  Change
	create semantics to write semantics.  Existing groups are
	not discarded, however attributes and datasets are discarded
	and recreated.

	* HDF5Archiver.m ([HDF5Archiver_c -createEnd]): Don't check for
	file, just attempt load and install result that in applicationMap
	(even if nil).  Don't load from it and don't drop it.
	([HDF5Archiver_c -put{Deep,Shallow}:object:, -getWithZone:key:]):
	Create a HDF5 instance on the fly.

	* HDF5Archiver.[hm] ([HDF5Archiver -hdf5LoadObjectMap:key:,
	-hdf5LoadArchiver], [HDF5Archiver -_hdf5Out_:],
	hdf5_output_objects, archiverHDF5Put, archiverHDF5Get): Remove.
	([HDF5Archiver -getWritableController]): New method.
	([HDF5Archiver -sync]): Only call updateArchiver.

	* DefObject.m ([Object_s -hdf5Out{Deep,Shallow}:]): Use setWriteFlag:
	instead of setCreateFlag:.

	* Archiver.m ([Archiver_c -getApplication]): Don't make
	an Application instance if there isn't one.

	* Archiver.[hm] ([Archiver_c -createEnd]): New method.
	
	* Archiver.[hm], HDF5Archiver.[hm], LispArchiver.[hm], defobj.h
	([.. -registerClient:]): 
	([.. -unregisterClient:], [.. -putDeep:object:],
	[.. -putShallow:object:]): Return void.
	([.. -getWithZone:key:]): Renamed from -getWithZone:object:.
	([.. -sync]): Renamed from save.

1999-12-27    <mgd@DRONE>

	* directory.m (swarm_directory_signature_for_class): Use "J"
	for long, not "L".

1999-12-26    <mgd@DRONE>

	* LispArchiver.m (archiverLispGet): Handle pre-existing
	objects.
	([LispArchiver_c -{createEnd,_load_]): Split out load code
	into an internal method.

	* Archiver.[hm], LispArchiver.[hm] (LispArchiverObject): Move
	to LispArchiver.

	* directory.[hm] (swarm_directory_dump): New function.
	([Directory -describe:]): New method.

	* Zone.m ([Zone_c -createEnd]): Use List_any instead of List_linked
	for creating population.

1999-12-22    <mgd@nest.swarm.org>

	* FArguments.[hm], defobj.h: New method -setJavaFlag.  Replace
	setSelector:setJavaFlag: with setSelector:.  Add
	+create:setSelector:setJavaFlag: constructor.

	* JavaCollection.m ([JavaCollection -begin:]): Put JavaCollectionIndex
	in component zone.

	* JavaCollection.[hm] ([JavaCollection -beginPermuted:]): 
	New method.

1999-12-21    <mgd@nest.swarm.org>

	* defobj.h (types_t): Add boolean.

	* _fcall.m (ADD_PRIMITIVE, SET_RETURN_TYPE): Handle boolean.

	* FCall.m (defobj_init_java_call_tables, ffi_types): Add entries
	for boolean.
	([FCall_c -performCall]): Handle boolean.
	([FCall_c -getRetVal:buf:]): Add/use return_boolean.

	* FArguments.m (java_type_signature, objc_types): Add entries for
	boolean.
	(fcall_type_size): Handle boolean.

	* FArguments.[hm], defobj.h ([FArguments_c -setSelector:setJavaFlag:],
	[FArguments_c -setBooleanReturnType]): New methods.

	* FArguments.h (FCALL_TYPE_COUNT): Increment.
	(fcall_type_t): Add fcall_type_boolean.

	* directory.m (swarm_directory_init): Associate symbol Sequential.

1999-12-16    <mgd@nest.swarm.org>

	* directory.[hm] ([DirectoryEntry
	-{compare:,getObjcName,getHashCode,drop,describe:}]) Remove.
	Replace with swarm_directory_entry_{drop,describe}.  (Comparisons
	previously done with compare: are done with new function
	compareDirectoryEntries.
	([Directory {-add:javaObject:, -javaFind:, -javaFindObjc:,
	-objcFind:, -objcFindJava:, -objcFindJavaClass:,
	-switchJava:javaObject:, -nextPhase:currentJavaPhase:,
	-swithcObjc:javaObject:, -javaEnsureObjc:, -objcEnsureJava:,
	-objcRemove:}]): Remove.  Replace with
	swarm_directory_{java_find_objc, objc_find_java, add,
	switch_phase, switch_objc, java_ensure_objc, objc_ensure_java,
	objc_remove, objc_find_java_class}.  Update respective macros.

	* directory.m (swarmDirectory): Statically type.
	(getObjcName): Pass JNIEnv.
	(swarm_directory_switch_java): Disable.

	* Zone.m ([Zone_c -freeIVars:], [Zone_c -freeIVarsComponent:]): 
	Use swarm_directory_objc_remove instead of -drop.

1999-12-15    <mgd@nest.swarm.org>

	* FCall.[hm], defobj.h ([FCall_c
	+create:target:selector:arguments:]): New method.

	* FArguments.[hm], defobj.h ([FArguments_c -getJavaFlag]): New method.

	* DefObject.m: Remove f_nameFid declaration.
	([Object_s -forward::]): Replace objc->java selector name
	conversion and FCall creation with call to new FCall
	+create:target:selector:arguments:.

1999-12-14    <mgd@nest.swarm.org>

	* FCall.m ([FCall_c -performCall]): Add local scope around
	ffi_call.

1999-12-13    <mgd@nest.swarm.org>

	* directory.m ([-objcFindJavaClass:]): Clear exceptions and then
	call ExceptionDescribe if exception occurs for FindClass.  

	* JavaCollectionIndex.h (JavaCollectionIndex): Add count and pos
	ivars.  

	* JavaCollectionIndex.[hm] ([JavaCollectionIndex +create:setCount:]): 
	New constructor.

	* JavaCollection.m ([JavaCollection -begin:]): Use it.

	* JavaCollectionIndex.m ([JavaCollectionIndex -getLoc]): Use 
	pos and count to determine if at end.  hasNext is off by one.

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

	* DefClass.m (_obj_initMethodInterfaces): Don't crash when
	there are no methods to be split.

1999-11-21  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* FCall.m ([FCall_c -setJavaMethod:inObject:]): Set
	fobjectPendingGlobalRefFlag for globalreffed object argument.
	(updateTarget): Use updateJavaTarget.
	(updateJavaTarget, [FCall_c -drop]): Handle
	fobjectPendingGlobalRefFlag.

	* FCall.h (FCall_c): New field fobjectPendingGlobalRefFlag.

1999-11-20  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* FCall.m ([FCall_c -setJavaMethod:inObject:], 
	[FCall_c -setJavaMethod:inClass:]): Copy value for methodName.
	([FCall_c -drop]): Free methodName if set.
	([FCall_c -setJavaMethod:inObject:]): Make object a global ref
	to store in fobject.
	([FCall_c -drop]): Remove globalref for fobject if javacall.

	* FCall.h (FCall_c): Constify methodName.

	* FArguments.m ([FArguments_c addString:]): Make globalref from
	java string, not objc string.

1999-11-19  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* FCall.[hm]: Include defobj.h.  Use JOBJECT for
	setJavaMethod:inObject: object argument.

	* defobj.h: New types call_t and JOBJECT.

	* FCall.m (fillHiddenArguments): Add nop for ccall switch case.

	* FCall.[hm], defobj.h ([FCall_c -getCallType]): New method.

1999-11-18  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* JavaCollection.[hm], JavaCollectionIndex.[hm]: New files.

	* javavars.h: Add c_Collection.

	* directory.m: Include JavaCollection.h.
	([-javaEnsureObjc:]): Put a JavaCollection instead of JavaProxy
	for Java collections.
	(create_class_refs): Set c_Collection.

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

	* JavaProxy.[hm] ([JavaProxy -isJavaProxy]): Return is now boolean.

1999-11-16    <mgd@VAIO>

	* Archiver.m: Don't include predicates.h.

	* internal.m (alignment_for_objc_type, size_for_objc_type,
	lisp_output_type): Handle classes.

	* DefClass.m ([CreatedClass_s -lispInCreate:]): Change listp
	to archiver_list_p (just a rename).

	* LispArchiver.m (lispProcessPairs,
	[LispArchiver_c -lispLoadArchiver:], lisp_output_objects): Likewise.

	* defobj.m (lispIn): Likewise.

	* DefObject.m ([Object_s -lispIn:]): Likewise.  Handle classes.

1999-11-08    <mgd@VAIO>

	* directory.m ([-objcRemove:]): Don't make a globalref
	for dropping.

	* FCall.m ([FCall_c -performCall]): If pendingGlobalRefFlag
	is set, drop the return value.  Set pendingGlobalRefFlag
	at the end if return type is jobject or jstring.

	* FArguments.m ([FArguments_c +createBegin:]): Set
	pendingGlobalRefFlag to NO.
	([FArguments_c -drop]): Use pendingGlobalRefFlag instead
	of type check to determine if whether or not to drop
	globalref of return.
	
	* FArguments.h (FArguments_c): Add pendingGlobalRefFlag.

1999-11-07    <mgd@VAIO>

	* FArguments.m ([FArguments_c -drop]): Use globalrefs for 
	return type and string arguments.
	([FArguments_c -addString:]): Likewise.

	* FCall.m (updateJavaTarget): New function.
	([FCall_c -setJavaMethod:in{Class,Object:}]): Use globalref for
	fclass.  Drop localref before leaving.
	([FCall_c -drop]): Drop globalref, not localref for fclass.
	([FCall_c -performCall]): If a Java call and the
	return type is object or string, create a globalref
	and drop the localref.

1999-10-31  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* FCall.[hm], defobj.h (updateTarget, getFunctionPointer): New
	functions.

	* FArguments.m ([FArguments_c +createBegin:]): Don't allocate
	space for argTypes and argValues.
	([FArguments_c -mapAllocations:]): Likewise, don't map them.

	* FArguments.h (FArguments_c): Use arrays for argTypes and
	argValues instead of pointers.

1999-10-29  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* defobj.h: Documentation updates.

1999-10-28  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* directory.m (swarm_directory_swarm_class,
	swarm_directory_language_independent_class_name): Don't
	attempt Java lookups when swarmDirectory doesn't exist.

	* LispArchiver.m (archiverLispGet): Explicitly handle nil 
	ArchiverObjects.

	* internal.m (nil_method): Update for > gcc 2.8.

	* Zone.m ([Zone_c -freeIVars:], [Zone_c -freeIVarsComponent:]): 
	Don't remove from directory unless directory exists.

1999-10-07    <mgd@HELEN>

	* directory.m (JAVAFINDENTRY): New macro.
	([-switchObjc:javaObject:]): Use it.
	([-javaEnsureObjc:]): Don't free string until switch is done.
	(swarm_directory_signature_for_class): Always copy string in
	scratchZone.
	(swarm_directory_ensure_selector_type_signature): Free retSig after
	copying into returned signature.

1999-10-06  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* directory.m ([-javaFind:], [-objcFind:], [-javaEnsureObjc:]):
	Handle null objects explictly.

	* FCall.m ([FCall_c -getRetVal:buf:]): Use SD_ENSUREOBJC instead
	of SD_FINDOBJC for return_jobject.  Remove `res'.

1999-10-05  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* FArguments.m ([FArguments_c -drop]): Dereference argValues[] for
	localref to free.

1999-09-28  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* javavars.h: Add c_Primitives, m_PrimitivesGetTypeMethod,
	and m_MethodGetReturnType.

	* directory.m (get_type_field_for_class): Disable.
	(create_bootstrap_refs): New function.
	(swarm_directory_create_refs): Call it.
	(get_primitive): Use call to getReturnType via method of 
	getTypeMethod to get primitive return types.

1999-09-19    <mgd@HELEN>

	* Arguments.m (getSwarmPrefix): Ensure path ends in slash.
	([Arguments_c -_getSwarmHome_:]): Don't do that here.

1999-09-18  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* Swarm 2.0.1 released.

1999-09-16  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* directory.m (swarm_directory_init): New symbols
	{hdf5,lisp}{App}Archiver, and Randomized.

	* FCall.m ([FCall_c -getRetVal:buf:]): Force BUGGY_BUILTIN_APPLY
	on i386 when < gcc-2.95.

	* Arguments.[hm], defobj.h (Arguments): Add
	inhibitExecutableSearchFlag, setter, and create argument.

	* Arguments.m: Add above as +create argument.
	([Arguments_c -createEnd]): Use it.
	([Arguments_c -_runningFromInstall_]): Return NO when
	inhibitExecutableSearchFlag is set.

	* defobj.m (initDefobj): Add above as argument.

	* Arguments.m: Don't include defobj/directory.h.
	(JAVA_APPNAME_STRING): Don't define.

1999-09-15  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* directory.m (swarm_directory_ensure_selector_type_signature):
	Drop temporary localref to jstring for typeSignature assignment.
	(swarm_directory_ensure_selector,
	swarm_directory_ensure_selector_type_signature): Narrow localref
	creation and deletion as much as possible.

	* FArguments.m ([FArguments_c -drop]): Drop jstring and jobject return
	value localrefs, if any.

	* directory.m (get_swarmEnvironment_field): Delete local ref
	for temp fieldName Java string.

1999-09-14  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* directory.m (get_class_name, swarm_directory_java_class_name,
	[-add:javaObject:],
	[-switchJavaEntry:javaObject:],
	[-nextPhase:currentJavaPhase:],
	[-objcEnsureJava:], get_type_field_for_class, create_class_refs,
	get_swarmEnvironment_field, swarm_directory_init, classp,
	swarm_directory_ensure_selector, swarm_directory_swarm_class,
	swarm_directory_ensure_selector_type_signature): Handle cleanup
	of localrefs.
	(swarm_directory_class_from_objc_object): Disable.

	* FCall.m ([FCall_c -drop]): New method.  Delete local ref
	to Java class.

	* FArguments.m ([FArguments_c -_addArgument_:ofType:]): Call
	addObject: and addString: for object and string cases.
	([FArguments_c -addString:], [FArguments_c -addObject:]): 
	Handle Java conversions here.
	([FArguments_c -drop]): New method.  Delete local refs to
	string copies.

	* DefObject.m ([Object_s -forward::]): Delete method name
	local ref after FCall is setup.

	* directory.m (swarm_directory_get_java_class_name): Renamed
	from get_class_name_from_object.

	* directory.h: Declare swarm_directory_get_java_class_name.
	(JAVA_APPNAME): Remove.

	* directory.[hm]: Remove "get" from names of swarm_directory_*
	routines.
	(swarm_directory_java_hash_code): Add JNIEnv * arg.

	* DefObject.m ([Object_s -getName]): Accomodate.

	* DefObject.m: Use getZone (self) throughout instead of [self getZone].

1999-09-12  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* defobj.m (lispIn): Call getQuotedObject to get typeNameString.

	* LispArchiver.m (lispProcessPairs): Handle quotedp.

	* DefObject.m ([Object_s -lispIn:]): Handle quotedp.

	* Archiver.m: Include defalloc.h. 
	Use getZone (self) throughout instead of method.

 	* LispArchiver.m: Likewise.

	* HDF5Archiver.m: Likewise.

	* Archiver.m (defaultPath, defaultAppPath): alloc: in scratchZone,
	not xmalloc.

1999-09-10  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* Zone.m ([Zone_c -describeForEachID:], [Zone_c -mapAllocations:]): 
	Quit on getLoc != Member, not nil.

	* Zone.[mh] ([Zone_c -allocIVars:]): Use Class argument type.

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

	* directory.m (swarm_directory_ensure_selector_type_signature): Free
	argSigs[] members after combining them.

	* DefObject.m ([Object_s -drop]): Always do index drop after
	suballocEntry loop.
	(xfexec): Do drop after loop.  Change loop to end on non-Member
	not nil.

1999-09-07  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* FArguments.m ([FArguments_c -createEnd]): Set javaSignatureLength
	when its set.

	* directory.m (swarm_directory_copy_java_string): Use SSTRDUP
	instead of DUPCLASSNAME.

	* HDF5Object.m: Include defobj/defalloc.h.
	(create_class_from_compound_type, [HDF5_c -readRowNames]): 
	Use alloc: instead of xmalloc.

1999-09-05  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* directory.m: Include objc/mframe.h
	(swarm_directory_ensure_selector): Transform
	new selector type signature with mframe_build_signature before
	registering it.

	* FArguments.m ([FArguments_c -_addArgument_:ofType:]): Handle
	Objective C -> Java argument conversions.

1999-09-03  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* javavars.h: Add f_typeSignatureFid.

	* directory.m (create_field_refs): Set f_typeSignatureFid.
	(exactclassp, classp): Make them toplevel static functions.
	(swarm_directory_signature_for_class): New function.  Use them.
	(swarm_directory_objc_type_for_java_class): Modify usage of
	exactclassp, classp. 
	(swarm_directory_ensure_selector_type_signature): New function.

	* directory.h (swarm_directory_signature_for_class,
	swarm_directory_objc_type_for_java_class): Declare new functions.

	* FArguments.m ([FArguments_c -createEnd]):
	Don't call createJavaSignature if one has been set.

	* DefObject.m ([Object_s -forward::]): Call new function
	swarm_directory_ensure_selector_type_signature and give that to
	setJavaSignature:.

	* FArguments.[hm], defobj.h ([FArguments_c -setJavaSignature:]): 
	New method.  Replaces -setJavaFlag:.

1999-08-28  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* Swarm 2.0 released.

	* Makefile.am ($(srcdir)/modulemap.c): Build modulemap.elc in
	a submake; don't make it a dependency.

1999-08-27  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* fcall_java.m: Don't define MSVC when HAVE_KAFFE is set.

1999-08-26  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* directory.m: Remove swarmEnvironment static variable and globalref
	setup.

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

	* DefObject.m ([Object_s -lispIn:]): Use isDigit instead of isdigit.

	* internal.m (alignment_for_objc_type): Likewise.

	* Arguments.m (VARCHAR): Avoid using ctype macros.

	* DefObject.m ([Object_s -getDisplayName]): Return [self getName]
	if none set.

	* DefObject.[hm] ([Object_s -getIdName]): Remove.

	* directory.h (JAVA_APPNAME): Define to javaswarm.

	* Arguments.m: Include directory.h.
	([Arguments_c -createEnd]): If applicationName is
	JAVA_APPNAME_STRING (from directory.h), set executablePath to 0,
	otherwise pass argv0 to find_executable.

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

	* Makefile.am ($(srcdir)/modulemap.c): Add change rule to srcdir but
	depend on protocol files.

1999-08-22  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* defobj.h: Add (id <Zone>) argument and return types.  Reorganize.
	Add (id <HDF5>) argument types.
	
	* HDF5Object.h (HDF5CompoundType_c): Implement HDF5CompoundType.
	(HDF5_c): Implement HDF5.

	* deftype.h (RETURNABLE): New protocol.

	* Program.m (_obj_initModule): Check for "RETURNABLE" as synonym
	to "CREATABLE".

1999-08-21  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* directory.m (swarm_directory_objc_type_for_java_class): New function.
	(swarm_directory_ensure_selector.add): Use it.

1999-08-19    <mgd@HELEN>

	* directory.m (get_class_name): Use env not jniEnv.
	Add DISABLE_ZONES macro switches for not depending on Zones
	(e.g. when you want to do debugging before initSwarm); changes
	throughout.
	(java_classname_for_typename, objcFindJavaClassName): New functions.
	([-objcFindJavaClass:]): Use objcFindJavaClassName.
	(create_class_refs): Set c_SwarmEnvironment.
	(swarm_directory_create_refs): New function.
	(get_swarmEnvironment_field): New function.
	(swarm_directory_init): Use both.  Rewrite to expect pre-instantiated
	SwarmEnvironment variables.

	* javavars.h: Add c_SwarmEnvironment.

	* FArguments.m ([FArguments_c -_addArgument_:ofType:]): Missing
	size assignment for object->jobject switcheroo.

1999-08-18  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* javavars.h: Remove m_ClassGetClass.

	* directory.m (create_method_refs): Remove initialization of
	m_ClassGetClass.

	* directory.m (get_type_field_for_class): Disable.
	(get_primitive): Use alternate code that looks in SwarmEnvironment
	for copies of the primtive types copied from static variables in
	java/lang Classes.

1999-08-14  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* Symbol.m: Remove common globals _obj_globalZone, _obj_scratchZone,
	_obj_initZone, _obj_sessionZone.

1999-08-13  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* internal.m (alignment_for_objc_type): Handle long long.

	* DefObject.m ([Object_s -lispIn:]): Use convertToType:
	instead of memcpy.

1999-08-12  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* defobj.m (lispInInteger): Don't do type check here (it's now
	in getInteger).

	* DefObject.m ([Object_s -lispIn:]): Handle long double and
	long long. 

	* DefClass.m ([CreatedClass_s -lispInCreate:]): Use getUnsigned
	instead of getInteger.

	* directory.m (swarm_directory_get_language_independent_class_name): 
	Referenced object needn't be a proxy.

1999-08-12  Alex Lancaster  <alex@santafe.edu>

	* DefObject.m: Move include of directory.h, outside HAVE_JDK,
	require swarm_directory_get_language_independent_class_name
	function in non-Java context.

	* directory.h: Likewise.

	* directory.m: Protect include of javavars.h with HAVE_JDK.

1999-08-11  Alex Lancaster  <alex@santafe.edu>

	* directory.[hm]
	(swarm_directory_get_language_independent_class_name): New
	function, performs a directory lookup to returns the Java class
	name the Java proxy, if there is one, otherwise defaults to the
	Objective C.

	* DefObject.m ([Object_s -getName]): Use new function.

1999-08-11  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* directory.m: Move all c_*, m_*, and f_* Java variables to
	javavars.h. (create_method_refs): Replace m_StringValueOf with
	m_StringValueOf{Boolean,Char,Int,Long,Float,Double,Object}.

	* Makefile.am (defobj_HEADERS): Add javavars.h.

	* javavars.h: New file.

1999-08-10  Marcus Daniels  <mgd@caos.santafe.edu>

	* directory.m (swarm_directory_ensure_selector): Add trailing
	colon if one is needed but is absent in Java spec.

1999-08-10  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* FCall.m (ffi_types): Add entries for long double and Class.
	([FCall_c -performCall], [FCall_c -getRetVal:buf:]): Add
	support for long double.
	(defobj_init_java_call_tables): Set fcall_type_{class,long_double}
	cases to NULL.

1999-08-09  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* directory.m (c_Field, c_Class, c_Method, c_Object, c_String):
	Renamed from lowercased version; use consistent naming convention
	for standard classes vs. primtives.  Accommodate throughout.
	(get_java_class, get_type_field_for_class): Split out internal
	functions previously named `find' and `find_primtive'.
	(swarm_directory_ensure_selector): Add type info to type-conflict
	message.
	(m_ClassGetClass, m_ClassGetName): New variables.
	(get_class_name_from_object, get_class_name): Return const char *,
	not jstring.
	([DirectoryEntry -describe:], create_signature_from_object,
	swarm_directory_ensure_class, swarm_directory_get_swarm_class):
	Per previous change.
	(objc_class_from_class_name): Renamed.
	(classp): Search up tree.  Handle c_Class.

	* defobj.h (types_t): Add Class.

	* FArguments.m (java_type_signature, objc_types, fcall_type_size,
	[FArguments_c -_setReturnType_:]): Accomodate fcall_type_class.
	(get_fcall_type_for_objc_type): Raise an event rather than aborting.

	* FArguments.h (FCALL_TYPE_COUNT): Increment.
	(fcall_type_t): Add fcall_type_class.

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

	* directory.m (swarm_directory_ensure_selector): Add types to
	error message. Add case for selector argument
	type.  Use IsInstanceOf instead of IsSameObject.
	Raise an error if unknown type (instead of defaulting to object).

1999-08-08  Marcus G. Daniels  <swamsfi@lark.cc.ukans.edu>

	* directory.m: Declare alloca.

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

	* internal.m (lisp_output_type, alignment_for_objc_type,
	size_for_objc_type): Add case for long double.

	* defobj.h (types_t): Add _long_double.

	* HDF5Object.m (tid_for_objc_type): Add case for long double.
	(objc_type_for_tid): Check for long double - sized float.

	* FArguments.m (java_type_signature): Placeholder for long double.
	(objc_types): Add _C_LNG_DBL.
	(fcall_type_size): Add case for fcall_type_long_double.
	([FArguments_c -_setReturnType_:]): Add case for
	fcall_type_long_double.

	* FArguments.[mh], defobj.h. ([FArguments_c -addLongDouble:]): New
	method.

	* FArguments.h (FCALL_TYPE_COUNT): Increment.
	Add fcall_type_long_double.

	* DefClass.m (TYPE_LONG_LONG, TYPE_UNSIGNED_LONG_LONG,
	TYPE_LONG_DOUBLE): New macros.
	(objc_type_for_lisp_type, process_type): Use them.

	* internal.m (size_for_objc_type, alignment_for_objc_type,
	size_for_objc_type, lisp_output_type): Handle _C_LNG_DBL when 
	it is defined.

	* HDF5Object.m (ref_string, string_ref): Add `stride' and 
	`dataset_xfer_plid' options per 1.2 H5T_conv_t.
	([HDF5_c -checkName:]): Check for negative number, not just
	-1 from H5Gget_objinfo.
	([HDF5_c -createEnd]): Update H5Tregister API to 1.2.
	([HDF5_c -drop]): Update H5Tunregister API to 1.2.

1999-08-07  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>
	* directory.m (DIRECTORY_SIZE): Set to 21599.  Add an alternate
	larger size.

	* directory.[hm] ([Directory -describe:]): New method.

1999-08-07  Marcus G. Daniels  <mgd@helen.santafe.edu>

	* directory.m ([Directory -add:javaObject:]): Create the entry
	first thing, with a globalref.
	([Directory -switchJavaEntry:javaObject:]): Likewise.
	([Directory -objcRemove:]): Likewise.  Use remove: instead of
	removeKey; we are certain that this entry is it, and GC may screw
	up the javaObject.

	* DefObject.m ([Object_s -drop]): Don't call objcRemove here.
	* Zone.m ([Zone_c -freeIVars:], [Zone_c -freeIVarsComponent:]): 
	Call it here.

1999-08-07  Alex Lancaster  <alex@santafe.edu>

	* Symbol.h (Symbol_c): Make Symbol_c class conform to <Symbol>
	protocol.  Thanks to Ken Cline.

1999-08-06  Marcus G. Daniels  <mgd@helen.santafe.edu>

	* directory.h (Directory): new ivar findEntry.

	* directory.m ([Directory -javaFind:]): Use it.
	
	* directory.m: Include defalloc.h.
	([Directory -add:javaObject:]):
	([Directory +createBegin:]): Preallocate an entry for searching
	for Java objects.
	([DirectoryEntry -drop], [Directory -add:javaObject:],
	[Directory -switchJavaEntry:javaObject:]): Use getZone macro
	instead of method.

	* directory.[hm] ([DirectoryEntry -describe:]): New methods.

1999-08-06  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* directory.[hm] ([-objcRemove:]): New method.

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

	* directory.m (OBJCFINDENTRY): New macro.
	([-objcFind:], [-switchJava:javaObject:],
	[-nextPhase:currentJavaPhase:], [-nextPhase:currentJavaPhase:],
	[-switchObjc:javaObject:]): Use it.

1999-08-06  Alex Lancaster  <alex@santafe.edu>

	* Arguments.m ([Arguments_c -getConfigPath]): Prepend a forward
	slash before `swarm' subdirectory, as SYSCONFDIR does not always
	generate a slash.
	([Arguments_c -getDataPath]): Likewise.

1999-08-06  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* FArguments.h (MAX_ARGS): Increase from 5 to 10.

	* FArguments.m ([FArguments_c -_setReturnType_:]): Get
	return type signature after adjustment per javaFlag.

	* directory.m (objc_class_for_classname): Reserve extra byte for 
	typename terminator.

	* FArguments.m (ZALLOCBLOCK, ALLOCBLOCK): New macros.
	(ALLOCTYPE): Use ALLOCBLOCK instead of allocBlock:.
	([FArguments_c +createBegin:]): Likewise
	(createJavaSignature): Likewise.

1999-08-05  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* HDF5Object.m (tid_for_objc_type): Add support for [unsigned] 
	long long.

	* internal.[hm], defobj.h (zstrdup): New function.

	* internal.m (objc_type_for_array): Use SSTRDUP instead of strdup.

	* directory.m ([-javaEnsureObjc:]): Use STRDUP instead of strdup.
	(create_signature_from_class_name,
	swarm_directory_copy_java_string): Use SSTRDUP instead of strdup.
	(swarm_directory_ensure_selector): Use alloc: in scratchZone
	instead of xmalloc. Use SSTRDUP instead of stdup.

	* defobj.m (generate_class_name): use SSTRDUP instead of strdup.

	* HDF5Object.m (create_class_from_compound_type): Use ZSTRDUP
	instead of strdup.
	(string_ref): Use SSTRDUP instead of strdup.
	([HDF5_c -getClass], [HDF5_c -nameRecord:name:], [HDF5_c
	-numberRecord:]): Use STRDUP instead of strdup.

	* HDF5Archiver.m (hdf5_create_app_group): Use OSTRDUP instead
	of strdup.

	* DefObject.m ([Object_s -lispIn:]): Use STRDUP instead of strdup.

	* DefClass.m (addVariable): Use SSTRDUP instead of strdup.
	(createType, [CreatedClass_s -lispInCreate:]): Use ZSTRDUP instead
	of strdup.

	* Arguments.m (getApplicationValue, strip_quotes, countSlashes,
	ensureEndingSlash) Use SSTRDUP instead of strdup.
	(findDirectory): Use ZSTRDUP instead of strdup.
	(convertToLongPath): Use SSTRDUP instead of strdup.
	([Arguments_c -_runningFromInstall_], [Arguments_c
	-getAppConfigPath], [Arguments_c -getAppDataPath]): Use STRDUP
	instead of strdup.

	* Archiver.m ([Application -setName:]): Use STRDUP instead of strdup.

	* internal.m (zstrdup): New function.

	* defobj.h (ZSTRDUP, SSTRDUP, OSTRDUP, STRDUP, OFREEBLOCK,
	ZFREEBLOCK): New macros.

	* Zone.m ([Zone_c -alloc:]): Store offset after alignment and size
	in allocation. 
	([Zone_c -free:]): And free it.

	* DefClass.m (addVariable): Use renamed alignsizeto instead of
	alignto.

	* HDF5Object.m (create_compound_type_from_class,
	create_class_from_compound_type): Likewise.

	* internal.[hm] (alignsizeto): Renamed from alignto.
	(alignptrto): New function.

1999-08-04  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* directory.[mh] ([-getHashCode], swarm_directory_java_hash_code):
	Make return unsigned.

	* directory.m ([-compare:]): Call `equals' instead of using
	IsSameObject.
	(create_method_refs): New methodId `m_Equals'.

1999-08-03  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* directory.m (internalimplementation): New macro.
	Use @internalimplementation instead of @implementation.

1999-07-30  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* directory.m ([Directory -switchJavaEntry:javaObject:]): 
	Ensure map exists in new entry.
	([Directory -javaEnsureObjc:], [Directory -objcEnsureJava:]): 
	Allow nil objects.

	* directory.[hm]: Add swarm_directory_java_hash_code and companion
	method in DirectoryEntry.

	* DefObject.m ([Object_s -forward::]): Print more information
	about context when a selector is not found.

	* directory.m ([Directory -nextPhase:currentJavaPhase:]): 
	New method.
	([Directory -objcFindJavaClass:]): New method.
	([Directory -objcEnsureJava:]): Use it.

	* directory.[hm]: Rename Directory methods to make it more
	clear the semantics from their names.

1999-07-29  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* directory.[hm] (swarm_directory_get_swarm_class): Always
	define (revert to getClass when no JDK), move objc/objc.h
	before declarations.

1999-07-28  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* FCall.m ([FCall_c -getRetVal:buf:]): Use SD_SWITCHOBJC instead
	of JUPDATE.  Use SD_FINDOBJC instead of JFINDOBJC.

	* DefObject.m ([Object_s -forward::]): Accomodate J* to SD_* renames.

	* directory.[hm] (DirectoryEntry, Directory): New classes.
	Directory lookups on Java side are done using hashCode method
	to index into table of Maps.
	(jobject_id): Remove; use directory instances as avl entry.
	Rename all java_directory_* routines to swarm_directory_*. 
	Change all macros to use new Directoy methods. Accomodate J* to
	SD_* renames.
	Use find/add instead of ensure whenever possible.  Remove
	distinction between `update' and `switch' -- stick with switch
	predicated on valid reverse lookup.

1999-07-27  Vladimir Jojic  <vjojic@ute.santafe.edu>

	* directory.m: New global variables c_PhaseCImpl, 
	m_PhaseCImpl_copy_creating_phase_to_using_phase and
	f_nextPhase used in java_next_phase.
	(java_next_phase): Use global variables to invoke 
	copy_creating_phase_to_using_phase and get value of field
	nextPhase.

1999-07-27  Vladimir Jojic  <vjojic@chama.santafe.edu>

	* directory.m (java_get_swarm_class): Rename 
	java_get_class_from_objc_object to java_get_swarm_class.
	(objc_class_for_classname): New function.
	(java_ensure_class): Use objc_class_for_classname instead of
	objc_lookup_class.

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

	* HDF5Object.m ([HDF -packObj:to:]): Improve type mismatch
	error message.

1999-07-21  Vladimir Jojic  <vjojic@chama.santafe.edu>

	* directory.m: Add new global variables for different Control 
	States.
	(java_directory_objc_find): Add two additional cases for different
	Objective-C classes.
	(java_directory_update): Erase data entry after serach in java tree
	to eliminate redundancy.
	(java_instantiate): Create object by instantiating and calling 
	constructor on it.
	(java_directory_init): New function setFieldInSwarm that sets field
	in the SwarmEnvironment.
	(java_get_class_from_objc_object): New function that returns class
	for Objective-C object, and if it is a JavaProxy returns
	Objective-C class the corresponds to the Java class of the Java
	object JavaProxy represents.

	* DefObject.m: Declare extern global variable f_nameFid.
	([Object_s -forward::]): Use f_nameFid field id for signature
	field in Selector.

1999-07-21  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* Zone.m ([Zone_c -alloc:]): Pad return pointer up to
	max alignment.

1999-07-12  Vladimir Jojic  <vjojic@chama.santafe.edu>

	* directory.m (java_ensure_selector): If there exists selector 
	with same name as Java method check to see, if the types match.
	(java_directory_init): Initialize probeLibrary field of 
	SwarmEnvironment.
	(java_directory_init): Initialize ControlState... fields in
	SwarmEnvironment that correspond to Symbols ControlState...
	from simtoolsgui.

1999-07-11  Vladimir Jojic  <vjojic@chama.santafe.edu>

	* directory.m (java_directory_objc_find): Use getTypeImplemented
	to find out which protocol non-creatable object conforms to.
	(java_ensure_selector): Store global reference of a Java selector
	object to directory.

	* Program.m (_obj_initModule): Disable audit for implementations
	in creatable types.

1999-07-09  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* fcall_{objc,java}.m: Include swarmconfig.h.  Don't define
	anything unless USE_AVCALL is set.

1999-07-09  Vladimir Jojic  <vjojic@chama.santafe.edu>

	* directory.m: Remove static from declarations of variables
	with prefix c_.
	Add new global variables with prefixes c_/m_/f_ standing
	for class/method/field objects.
	(create_class_refs): Add initialization for new global class 
	variables.
	(create_method_refs): Add new function. Intialize global method
	variables.
	(create_field_refs): Add new function. Intialize global field 
	variables.
	(java_directory_init): Call create_method_refs and 
	create_field_refs after create_class_refs.
	(java_ensure_selector): Remove declarations and initializations
	of variables that are now global and set in create_class_refs or
	create_field_refs.

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

	* directory.m (java_directory_init): Make o_globalZone,
	o_uniformIntRand, and o_uniformDblRand global refs.

1999-07-06  Alex Lancaster  <alex@santafe.edu>

	* FCall.m (add_ffi_types): Protect Java-specific code with
	HAVE_JDK ifdefs.
	([FCall_c -performCall]): Likewise.

	* fcall_java.m (java_setup_static_call): Likewise.

	* fcall_java.h (java_call): Likewise.

1999-07-06  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* fcall_{objc,java}.[hm]: New files.

	* Makefile.am (EXTRA_DIST): Add fcall_{objc,java}.h and _fcall.m.
	(SRC): Add fcall_{objc,java}.m.

	* FCall.m: Include fcall_{objc,java}.h instead of avcall.h.
	(fillHiddenArguments): Use objc_setup_call, java_setup_call,
	and java_setup_static_call instead of direct use av_* macros.
	(avcall_add_primitive): Remove.
	(add_ffi_types): Use calls to {objc_java}_set_return_type and
	{objc_java}_add_primitive per call type.
	([FCall_c -performCall]): Call {java_objc}_call instead of
	av_call.

	* FArguments.h (FArguments_c): Replace avalist with objc_avalist
	and java_avalist.

1999-07-05    <mgd@HELEN>

	* Arguments.m: When __CYGWIN__, include sys/cygwin.h and
	windows.h.
	(stripSlash, convertToLongPath): New internal functions.
	([Arguments_c -_runningFromInstall_]): Convert candidate SWARMHOME
	directories to Win32, and then expand them for strcmp (continue
	to use inode comparision for Unix).
	([Arguments_c -createEnd]): Set executablePath.
	([Arguments_c -getExecutablePath]): Return executablePath.
	(findDirectory): Handle empty executablePath.
	([Arguments_c -_runningFromInstall_]): Likewise.

	* Arguments.h (Arguments_c): New ivar executablePath.

1999-07-02  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* modulemap.el (generate-module-map): Include string.h for strlen.

	* {Lisp,HDF5}Archiver.m, defobj.m: Move global archiver objects 
	variables to defobj.m.

	* directory.m (create_signature_from_class_name): New function.
	(java_next_phase): Use it.  nextPhase is of type Object.
	(create_signature_from_object): Use it.
	(create_signature): Remove.
	(java_ensure_selector): Allocate space in signatureBuf for
	return type, object, and selector.

	* DefObject.m ([Object_s -lispIn:]): Accept _C_LNG as an array
	value type.

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

	* defalloc.h: Include swarmconfig.h.  
	(getZone, getSuballocList): Use PTRUINT instead of unsigned long.

	* DefObject.h: Include swarmconfig.h.
	(setBit, getField): Use PTRUINT instead of
	unsigned. (int is smaller than void * on alphaev56-dec-osf4.0.)

	* LispArchiver.m ([LispArchiver_c -createEnd]): Set inStreamZone to
	nil when inhibitLoadFlag is set.

1999-06-30  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* Zone.m ([Zone_c -freeIVars:]): Use getCZone macro instead of
	getComponentZone method.

	* DefObject.m ([Object_s -lispIn:]): Handle long long types.

	* internal.m (lisp_output_type): Renable long long handling,
	using -cat[Unsigned]LongLong.

	* Archiver.m ([Archiver_c -drop]): Don't drop inStreamZone.

	* Archiver.h (Archiver_c): Remove ivar inStreamZone.
	Declare -drop.

	* LispArchiver.h (LispArchiver_c): New ivar inStreamZone.

	* LispArchiver.[hm] ([LispArchiver_c -drop]): New method.

	* FArguments.m (ALLOCTYPE): New macro.
	([FArguments_c -_addArgument_:ofType:], ADD_PRIMITIVE): Use it.

1999-06-29  Vladimir Jojic  <vjojic@chama.santafe.edu>

	* directory.m (java_ensure_class): If corresponding objc class
	is not found create a JavaProxy object and insert it into the
	directory. 
	
	* directory.h: Declare jclass variables that store primitive
	Java types classes as extern.

	* JavaProxy.h ([-isJavaProxy]): New method used as indicator that
	object is a Java Proxy.
	
	* JavaProxy.m ([JavaProxy -isJavaProxy]): Likewise.

1999-06-29  Alex Lancaster  <alex@santafe.edu>

	* Archiver.[hm] ([Archiver_c +createBegin:]): Initialize
	variables.
	([Archiver_c +create:setPath:]): Set path variable.

	* HDF5Archiver.m ([HDF5Archiver_c +createBegin:]): Don't init
	variables here, call super class.
	([HDF5Archiver_c +create:setPath:]): Likewise.

	* LispArchiver.m ([LispArchiver_c +createBegin:]): Likewise.
	([LispArchiver_c +create:setPath:]): Likewise.

1999-06-29  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* modulemap.el (generate-module-map): Add "Phase" as a non-module
	protocol.  Include <stddef.h> in output for NULL.

	* directory.m (java_class_for_typename): Handle empty module name.
	(get_class_name_from_class_object): New function.
	(get_class_name): Use it.
	(get_class_name_from_object): New function.
	(get_base_class_name): Disable.
	(create_signature): Now takes jclass as an argument.
	(create_signature_from_object): Replaces functionality of
	create_signature.
	(java_directory_init): Use it.
	(java_ensure_selector): Insert zeros for frame info.  They
	are needed for the Objective runtime type-parsing functions
	to work, but the values are unimportant since mframe will figure
	it out. 

	* directory.h (JNEXTPHASE): New macro.

	* directory.[hm] (java_next_phase): New function.
	(java_instantiate_using): Remove (replaced by java_next_phase).

1999-06-28  Alex Lancaster  <alex@santafe.edu>

	* defobj.m (initDefobj): Instantiate LispArchiver and HDF5Archiver
	instances, rather than Archiver.

	* Makefile.am (SRC): Add {HDF5,Lisp}Archiver.m
	(defobj_HEADERS): Add {HDF5,Lisp}Archiver.h

	* defobj.h: Reflect Archiver changes.  Make `Archiver' an abstract
	protocol.
	(HDF5Archiver, LispArchiver): New protocols now conform to and
	CREATABLE.

	* HDF5Archiver.[hm]: New files.

	* LispArchiver.[hm]: New files.

	* Archiver.[hm]: Removed all references to `hdf5Flag', move all
	{lisp, HDF5}-specific code into separate subclasses of Archiver_c
	(LispArchiver_c, HDF5Archiver_c), respectively.  Moved
	Archiver{Value,Object}, Application interfaces into Archiver.h, so
	they are accessible from subclasses.

1999-06-28  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* directory.m (fill_signature, create_signature): New functions.
	(java_directory_init): Use them to get class type signatures
	instead of hardcoding syntax.  Create and set the globalZone,
	uniformIntRand, and uniformDblRand slots here.

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

	* Archiver.[hm], defobj.h ([Archiver_c
	+create:set{Lisp,HDF5}Path:]): Removed:
	Added +create:setPath:setHDF5Flag:.

1999-06-21  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* directory.m (java_class_for_typename): New function.
	(java_directory_objc_find): Use it.  Add support for creating
	Java-side class on-the-fly.
	(java_directory_java_find): Return NULL if java_object is 0.

	* directory.[hm] (java_directory_objc_find{_java}): Add JNI environment
	as first argument.  Add createFlag as last argument.
	(JFINDJAVA): Accomodate.
	(JENSUREJAVA): New macro.
	(java_directory_java_find_objc): New function.
	(JFINDOBJC): Use it.
	(JENSUREOBJCMETHOD, JENSUREOBJCCLASS): Renamed from JFIND*.

	* DefObject.m ([Object_s -forward::]): JFINDJAVA now takes
	a JNI environment as first argument.

	* Makefile.am (modulemap.c): New target.
	(EXTRA_DIST): Add modulemap.el
	(libdefobj_la_SOURCES): Add modulemap.c.

	* modulemap.elc: New target.  Depend on $(top_builddir)/protocol.elc.

	* modulemap.el: New file.

1999-06-20  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* Program.m (initModules): Don't use a componentZone for scratchZone.

	* FArguments.m (ADD_COMMON_TEST): Remove.
	(ADD_PRIMITIVE): Use strlen (java_type_signature[fcall_type])
	instead of 1.

	* FArguments.[hm], defobj.h ([FArguments_c -addString:],
	[FArguments_c -addObject:]): New methods.

	* Zone.m ([Zone_c -freeIVars:]): Use componentZone of scratchZone
	to avoid call to self when index is dropped.

	* directory.m (get_base_class_name): New function.
	(java_instantiate_using): Use it.  Tack on "Impl" after "U".
	(java_directory_init): Accomodate Impl suffix.

1999-06-19  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* directory.h: Undef SIZEOF_LONG before including jni.h.

1999-06-17  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* DefClass.h (BehaviorPhase_s): Add another filler slot.

	* Archiver.m (SWARMARCHIVER_LISP_SUFFIX, SWARMARCHIVER_HDF5_SUFFIX):
	Prepend ".".
	(defaultAppPath): Off by one error in malloc. 
	Remove addition of `delim' (a ".").

1999-06-13  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* defobj.h (types_t): Add signed and unsigned types.

	* FCall.m (defobj_init_java_call_tables): Add long long entries.
	Treat them as long for now.
	(ffi_types): Treat long long as ffi_type_[us]int64 for now.
	(add_ffi_types): Support long long types.
	([FCall_c -performCall]): Likewise.
	([FCall_c -getRetVal:buf:]): Likewise.

	* FArguments.m (java_type_signature): Add long long entries.
	Treat them as long for now.
	(objc_types): Add long long entries.
	(fcall_type_size): Support long long types.
	([FArguments_c -_setReturnType_:]): Likewise.

	* FArguments.[hm], defobj.h ([FArguments_c -addLongLong:]): 
	([FArguments_c -addUnsignedLongLong:]): New methods.

	* FArguments.h (fcall_type_t): Add signed and unsigned long long.
	(FCALL_TYPE_COUNT): Bump by 2.

1999-06-11  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* Arguments.m (getSwarmPrefix): New function.
	(getSwarmPrefix, getnenv): Use it.  Handle special case
	of ${prefix}.
	(expandvars): Renamed from `prefix'.
	([Arguments_c -_getSwarmHome_:]): Offbyone in sigPathBuf size.
	([Arguments_c -_getPath_:subpath:]): Expand fixed path (for ${prefix}).
	([Arguments_c -_runningFromInstall_]): Revert last change.
	([Arguments_c -getConfigPath], [Arguments_c -getDataPath]): 
	Add swarm/ to fixed path.
	([Arguments_c -getConfigPath]): Use etc/swarm/ for subpath, not
	SIGNATURE_SUBPATH.

1999-06-11  Alex Lancaster  <alex@santafe.edu>

	* Arguments.m ([Arguments_c -_getSwarmHome_:]): Add missing '/'
	between swarmHome generated by the compiled-in PREFIX and the
	SIGNATURE_PATH, which was preventing the full correct SWARMHOME
	path being identified.
	([Arguments_c -createEnd]): Re-enable the setting of
	program_invocation_name from the result of the findExecutable()
	function call.
	([Arguments_c -_runningFromInstall_]): Drop another directory from
	the executablePath to generate possibleHomeSrc to account for
	.libs subdirectory generated by libtool.

1999-06-10  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* Arguments.m ([Arguments_c -createEnd]): Cover
	program_invocation_[short]_name initializations in w/ and w/o
	applicationName as well as w/ and w/o glibc.

	* Makefile.am (BUILT_SOURCES): Use TYPEINFO.
	(module_headers): Remove.

1999-06-09  Alex Lancaster  <alex@santafe.edu>

	* Arguments.m ([Arguments_c -createEnd]): Disable the setting of
	the application name from the argp information, if the
	applicationName is non-NULL.

	* Arguments.[hm] ([Arguments_c
	+createArgc:Argv:appName:version:bugAddress:options:optionFunc:):
	Accept new appName argument.  Set appName internally.

	* defobj.h (initDefobj): Declare to accept new `appName' argument.

	* defobj.m (initDefobj): Accept new `appName' argument.  Pass to
	constructor of global Arguments instance.

1999-06-08  Alex Lancaster  <alex@santafe.edu>

	* defobj.h (Archiver): Add ([Archiver_c
	+create:from{Lisp,HDF5}Path:]) method to protocol.

	* Archiver.m (lisp_output_objects): Serialize the ArchiverList
	instance directly using lispOutDeep:, don't pass the list to the
	obsolete [OutputStream_C -catExpr:].  

	* Archiver.[hm] ([Archiver_c +create:fromLispPath:]): New
	convenience method to generate Lisp Archiver.
	([Archiver_c +create:fromHDF5Path:]): Likewise for HDF5.

	* internal.m (lisp_output_type): Use OutputStream
	-cat{Float,Integer...}: calls to hide the sprintf calls.

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

	* Makefile.am (noinst_LTLIBRARIES, lib_LTLIBRARIES): Substitute
	{noinst,inst}LIBS.
	(EXTRA_LTLIBRARIES): New variable.
	(libdefobj_la_LDFLAGS): Substitute @inst_LDFLAGS@.

	* Arguments.m ([Arguments_c -createEnd]): For glibc, don't
	assign to program_invocation_short_name and don't use it.

	* Makefile.am (module_headers): Use $(TYPEINFO).

	* FCall.m (avcall_add_primitive): Handle fcall_type_object.

1999-06-05  Alex Lancaster  <alex@santafe.edu>

	* defobj.h (Archiver): Add method [Archiver_c getWithZone:object:]
	to protocol.  Document all existing methods.

	* defobj.m (initDefobj): Don't make {lisp,hdf5}AppArchiver expect
	application metadata.

	* Archiver.m (ArchiverObject): New class, a wrapper object to
	store either a parsed expression or a changed object instance for
	output serialization at the Application map, to support lazy
	archiving.  Sets the changed state of an archiver object
	implicitly.
	(lispProcessMakeObjcPairs): Implement lazy instantiation: the
	Application map stores only the parsed expression from
	InputStream, rather than an instantiated object.
	([Archiver_c -createEnd]): Don't make Zone for storage of parsed
	expressions temporary, use the new instance variable
	`inStreamZone'.
	([Archiver_c -drop]): Drop the `inStreamZone' ivar.
	(lisp_output_objects): If ArchiverObject instance contains a
	changed object, serialize it in the conventional way, if it
	contains an unchanged parsed expression, write it back out to the
	OutputStream.
	(archiverPut): Accept Zone and hdf5Flag arguments, Lisp instances
	in the Application map are now stored differently.
	([Archiver_c -putDeep:object:]): Use new archiverPut call.
	([Archiver_c -putShallow:object:]): Likewise.
	(archiverGet): New function.
	([Archiver_c -_getWithZone_:_object_:]): Internal method, use
	archiverGet.
	([Archiver_c -getObject:]): Use -_getWithZone_:_object_:.
	([Archiver_c -getWithZone:object:]): New method, creates the new
	object in the specified Zone, rather than inside the Archiver's
	Zone.

1999-06-03  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* Arguments.[hm]: Include swarmconfig.h.  Include argp.h or
	misc/argp.h depending on HAVE_ARGP_H.

1999-05-30  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* directory.m (java_ensure_selector): Use unsigned for `pos'
	argument to addstr to avoid potential confusion with %u.

	* DefObject.m ([Object_s -forward::]): Declare alloca.

1999-05-29  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* make-h2x: Instead of unsetting externvar, set disable_externvar
	so that externvar can be disabled in externvar.h.

	* defobj.h: Import externvar.h.

1999-05-28  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* Arguments.m (arguments): Add externvardef.

	* Program.m (_obj_{globalZone,sessionZone,scratchZone}): Add
	externvardef.

	* defobj.m (_obj_debug, _obj_xerror, _obj_xdebug):
	Add externvardef.
	(t_Object, t_ByteArray): Remove.

	* Archiver.m (hdf5Archiver, lispArchiver, hdf5AppArchiver,
	lispAppArchiver):  Add externvardef.

	* make-h2x: Handle externvar and externvardef.

	* defobj.h: Use `externvar' for external variable declarations.

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

	* Makefile.am (noinst_LTLIBRARIES): Switch from lib_LTLIBRARIES.

1999-05-24  Alex Lancaster  <alex@santafe.edu>

	* make-h2x: Modify sed script that generates the .xm+ file, to
	only output lines that have id<{Symbol,Warning,Error,Event}> if
	prefaced by `extern'.  This avoids the problem of
	misinterpretation of methods that take or return an argument that
	have casts to id<{Symbol,Warning,Error,Event}>, as symbols.

1999-05-20  Alex Lancaster  <alex@santafe.edu>

	* directory.[hm]: Protect Java-specific code with HAVE_JDK
	#ifdef's.

	* defobj.h: Declare extern {lisp,hdf5}AppArchiver.
	(Archiver): Add -setDefaultApp{Lisp,HDF5}Path to protocol
	definition.

	* defobj.m (initDefobj): Create singleton instances of
	{lisp,hdf5}AppArchiver.

	* Archiver.[hm] ([Archiver_c -setDefaultAppLispPath]): New method
	to set the default path name for the lispAppArchiver, use
	defaultAppPath.
	
	* Archiver.[hm] ([Archiver_c -setDefaultAppHDF5Path]): Likewise
	for hdf5AppArchiver, use defaultAppPath.
	
	* Archiver.m: (defaultAppPath): Function to generate the
	application-specific Archiver pathname.

1999-05-20  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* DefObject.m ([Object_s +getName]): Keep this method.  Some
	apps depend on it.

1999-05-19  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* Makefile.am (JAVAINCLUDES): Remove java/c include.
	(SRC): Add directory.m and JavaProxy.m.
	(defobj_HEADERS): Add directory.h and JavaProxy.h.

	* JavaProxy.[hm], directory.[hm]: Moved here from java/c.

1999-05-17  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* internal.m (lisp_output_type): Add support for long long and
	unsigned long long, but disable it pending autoconf support for %lld.

1999-05-11  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* FCall.m ([FCall_c -getRetVal:buf:]): For builtin_apply workaround
	support, handle char, short, and long.  char and short are special
	cases for Sparc, since they are aligned at the top, not the bottom
	of a word.

1999-05-09  Marcus G. Daniels  <mgd@helen.santafe.edu>

	* FCall.[hm], defobj.h ([FCall_c -getRetVal:buf:]): Replaces 
	getRetVal:.

	* DefObject.m ([Object_s -forward::]): Use it, pre-allocating
	retVal with alloca.

1999-05-08  Marcus Daniels  <marcusd@asl.krasnow.gmu.edu>

	* FCall.m (APPLY): New macro. Use it in all apply_* functions.
	This macro uses a fixed size of 16 for the __builtin_apply stack
	size argument -- necessary for unknown reasons on Irix6.5.

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

	* FCall.m ([FCall_c -performCall]): Add casts for jobject and jstring
	return assignment.

1999-05-02  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* HDF5Object.m ([HDF5_c -checkDatasetName:]): New method.

	* HDF5Object.[hm], defobj.h: 

	* internal.m (map_ivars): Ignore pointers.

	* HDF5Object.m (create_class_from_compound_type): Remove
	checks for ivar vs. HDF5 type size and count consistency -- we're
	automatically ignoring pointers.  Use find_ivar instead of
	positional access to ivar_list.
	([HDF5_c -createEnd]): Move initialization of point space to the end.
	Handle Dataset as well as Group opens.  Don't raise events
	when opens fail, return nil.

	* HDF5Object.[hm], defobj.h ([HDF5_c -assignIvar:]): New method.
	([HDF5_c -setName:]): Move to setting phase.

	* DefObject.m ([Object_s -lispOutVars:deep:]): Remove check
	for _C_PTR, this is now avoided by map_ivars.

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

	* HDF5Object.[mh], defobj.h ([HDF5_c -getDatasetRank], [HDF5_c
	-getDatasetDimension:]): New methods.

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

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

1999-04-30  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* FCall.m: Include directory.h instead of jni.h.

	* FArguments.m: Include directory.h instead of jni.h with jniEnv
	extern declaration.

	* DefObject.m: Don't include jni.h.

1999-04-29  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* DefObject.h (Object_s): Adopt GetName.

	* DefObject.[hm] ([Object_s -getName]): New method, remove factory 
	method of same.

	* defobj.h (GetName): Add instance -getName, remove +getName:.

	* FCall.m ([FCall_c -performCall]): Put libffi return type in
	a types_t and recover it per the case (libffi bug workarounds for
	char, short, and pointers).

1999-04-28  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* HDF5Object.m ([HDF5CompoundType_c -packObj:to:],
	[HDF5CompoundType_c -writeLevel:]): Use PTRINT for offset (cast to id).

	* FCall.m: Include avcall.h.
	
	* Zone.m ([Zone_c -describe:]): Cast all counts to unsigned long
	and use %lu specifier.
	([Zone_c createEnd]): New variable indexOffset (avoids compiler
	warning on Irix).

	* Zone.h: Use size_t instead of unsigned for return of getPageSize.
	(Zone_c): Use size_t for all counts.

	* FCall.m (ffi_types, avcall_add_primitive): Protect per
	USE_AVCALL.
	(avcall_add_primitive): Protect per HAVE_JDK.

	* HDF5Object.m: Don't include limits.h.

1999-04-26  Marcus G. Daniels  <mgd@helen.santafe.edu>

	* FCall.m (ffi_types): Use float for float, not double.
	([FCall_c -performCall]): Don't convert back from float to double.

1999-04-26  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* FArguments.m, FCall.m: Moved ffi_types to FCall.

	* FCall.m: Don't declare fillHiddenArguments.
	(FUNCPTR): Use local macro instead of FFI_FN.
	(fillHiddenArguments): Add support for avcall.
	(avcall_add_primitive): New function.
	(add_ffi_types): Moved from FArguments -- now calls
	fillHiddenArguments at the right point.  Add support for avcall
	(use avcall_add_primitive).
	([FCall_c -createEnd]): Don't call fillHiddenArguments.
	([FCall_c -setMethod:inObject:], [FCall_c -createEnd]): Don't
	abort in avcall case.
	([FCall_c -performCall]): Use av_call in avcall case.

	* FArguments.m: Include avcall.h if USE_AVCALL.
	Ifdef ffi_types.
	(fcall_type_size): Make static.  Rewrite to do case/sizeof.
	([FArguments_c +createBegin:]): Ifdef ffiArgTypes and ffiReturnType
	init.  Don't abort if USE_AVCALL.
	(ADD_PRIMITIVE): This is valid for USE_AVCALL or not; don't abort
	in AVCALL case.
	([FArguments_c -mapAllocations:]): Ifdef mapalloc setup for
	ffiArgTypes.

	* FArguments.h: Include swarmconfig.h.  Include avcall.h if
	USE_AVCALL.
	(FArguments_c): Add avalist.  Ifdef ffi-specific things.

	* FArguments.[hm]: Remove add_ffi_types and fcall_type_size.

1999-04-26  Alex Lancaster  <alex@lucero.santafe.edu>

	* FCall.m ([FCall_c -getRetVal:]): (fcall_type_jobject,
	fcall_type_jstring): Likewise protect Java-specific functions.

1999-04-25  Alex Lancaster  <alex@santafe.edu>

	* FCall.m ([FCall_c -getRetVal:]): Protect Java-specific function
	calls: (return_jobject, return_jstring) with #ifdef HAVE_JDK.

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

	* FCall.m ([FCall_c -getRetVal:]): Decrement float and double
	return pointers by 8 in the case of Sparc.  

	* FCall.[mh], defobj.h ([FCall_c -getRetVal:]): Remove argFrame
	argument.

	* DefObject.m ([Object_s -forward::]): Accomodate.

1999-04-24  Marcus G. Daniels  <mgd@helen.santafe.edu>

	* FCall.m ([FCall_c -performCall]): Move double return to float
	on i386.

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

	* FCall.m: Include directory.h.
	(defobj_init_java_call_tables): Add static and non-statci jstring
	entries.
	([FCall_c -getRetVal:buf:]): Handle jobject and jstring
	return conversions (for use with -forward::).

	* FArguments.m (ffi_types): Add ffi_type_pointer for
	fcall_type_jstring.
	(java_type_signature): Add Ljava/lang/String; for jstring.
	(objc_types): Add placeholder for jstring.
	([FArguments_c -_addArgument_:ofType:]): Convert fcall_type_string
	to fcall_type_jstring in when javaFlag is set.
	([FArguments_c -_setReturnType_:]): Likewise.  Set result to
	`object' slot, like jobject.

	* FArguments.h (FCALL_TYPE_COUNT): Increment.
	(fcall_type_t): Add fcall_type_jstring.

1999-04-23  Alex Lancaster  <alex@santafe.edu>

	* internal.h: #import collections.h for OutputStream protocol.
	
	* internal.[hm] (lisp_process_array, lisp_output_type): Moved from
	DefObject.m.  Declare as extern, make non-static.

	* DefObject.m (lisp_process_array, lisp_output_type): Removed
	functions.

1999-04-22  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* FArguments.m ([FArguments_c -createEnd]): Call super createEnd.

	* defobj.h: Clarify docs on addRef:withArgument:.
	(Zone): Switch return type of getPageSize from int to size_t.
	(FArguments): Add using phase tag before getResult.

1999-04-21  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* DefObject.m ([Object_s -lispIn:]): If function name is
	`parse', don't raise an exception.  This is to allow for
	compact custom -lispIn: routines.

	* defobj.h (MAKE_PARSE_FUNCTION_NAME): New macro.

	* FArguments.m ([FArguments_c -mapAllocations:]): Protect use
	of jstring.

	* defobj.m (_defobj_implement): Set FArguments implemented type.

	* Makefile.am (JAVAINCLUDES): New variable.
	(INCLUDES): use it.

	* FArguments.[hm]: Renamed to FArguments_c. 

	* FCall.[hm]: Accomodate.

	* DefObject.m: Don't include FArguments.h.

	* defobj.h (Serialization): Move -lispIn: and -hdf5In:
	to setting phase.
	(FArguments): Add.

	* DefObject.m ([Object_s -{lisp,hdf5}In:]): Likewise.

1999-04-20  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* FCall.m: Make jniEnv be global.  This is to avoid unresolved
	symbols when the support shared libraries for Java are not used.

1999-04-19  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* FArguments.m: Include swarmconfig.h.
	([FArguments -_addArgument_:ofType:]): Initialize size to avoid
	warning.
	([FArguments -mapAllocations:]): Set mapalloc->size before
	each mapAlloc on a block.

1999-04-18  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* FCall.m ([FCall_c -getRetVal:buf:]): Handle jobject in both cases.

	* Makefile.am (JAVAINCLUDES): Add $(top_srcdir)/java/c and
	$(top_builddir)/libobjc.

	* FArguments.m: Include jni.h and declare jniEnv extern.
	([FArguments -_addArgument_:ofType:]): Use variable offset instead
	of recomputing it several times.  Handle conversion of
	fcall_type_object to fcall_type_jobject when javaFlag is set.
	([FArguments -_setReturnType_:]): Handle void case.  Convert
	fcall_type_object to fcall_type_jobject if javaFlag is set.
	Handle fcall_type_jobject.

	* FArguments.[hm] ([FArguments -setJavaFlag:]): New ivar and setter.

	* FCall.m ([FCall_c -createEnd]): Add method name and signature
	to error message.

	* DefObject.m ([Object_s -forward::]): Moved from JavaProxy (also
	relevant header file includes).

1999-04-17  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* FCall.m (jniEnv): Make extern.

1999-04-16  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* defobj.h (types_t): New typedef.

	* FCall.[hm], defobj.h ([FCall_c -getRetVal:buf:]): New method
	(replaces getReturnVal).  Use __builtin_apply unless it's broken.
	In that case, try to set argFrame[0].arg_ptr by hand.

	* FCall.[hm] (FCall): Remove result. 

	* FArguments.m ([FArguments -_setReturnType_:]): Set result to 
	proper place in resultVal (instead of malloced `result').  This
	is to ensure the alignment is right.
	([FArguments -mapAllocations:]): Remove mapAlloc of result.

	* FArguments.h (FArguments): Add resultVal.  
	Declare add_ffi_types.

	* FArguments.[hm]: New function fcall_type_size.  Use it throughout.

1999-03-31  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* Makefile.am (JAVAINCLUDES): Use substitution.

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

	* FArguments.m: Include misc.h.
	(java_type_signature): Bogus "X" for object.
	(java_type_signature_length): Remove.
	([FArguments -_addArgument_:ofType:]): Single clause.  
	(ADD_PRIMITIVE): Was ADD_COMMON.
	([FArguments -_setReturnType_:]): Use strlen for adding to
	javaSignatureLength.
	(createJavaSignature): Simplify to use stpcpy; no offsets.
	(objc_types): Add _C_CHR.  Use \001 instead of \0 to avoid
	possibile confusion with end of signature.

	* FArguments.[hm], FCall.[hm]: Rename argSwarmTypes -> argTypes
	and argTypes -> ffiArgTypes.  Likewise for returns.
	Add support for selectors.

1999-03-23  Vladimir Jojic  <vjojic@chama.santafe.edu>

	* FArguments.m ([FArguments -mapAllocations:]): Map argSwarmTypes.

	* defobj.h (FCall): Mark phases in FCall protocol.
	
	* FArguments.h: Put swarm types into a enum.
	(FArguments): Two new instance variables argSwarmTypes and
	returnSwarmType.

	* FArguments.m (FArguments): Use new instance variables 
	argSwarmTypes and returnSwarmTypes to store swarm types.
	Modify swarm_types array in such way that 
	swarm_types[swarm_float_type] == &ffi_type_double to
	avoid the ffi related bug.
	([FArguments -addFloat:]): Call ADD_COMMON with float type.

	* FCall.m (FCall_c): Insert Phase markers.
	Move createEnd into the creating phase.
	Move fillHiddenArguments in front of createEnd.
	
1999-03-23  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* defobj.h (FCall): Add getReturnVal.

	* FArguments.[hm] ([FArguments -addArgument:ofObjCType:], 
	[FArguments -setObjCReturnType:]): New methods.
	([FArguments -_setReturnType_:]): Renamed from setReturnType:.
	([FArguments -_addArgument_:ofType:]): Renamed from

	* FArguments.h: Include objc/objc.h.
	(swarm_type_object): Renamed from swarm_type_pointer.

	* FCall.m (defobj_init_java_call_tables): Accomodate.

	* FCall.[hm] ([FArguments -getReturnVal:]): New method.

	* FCall.h, FArguments.h: Move JOBJECT to FCall.h.

	* FArguments.[hm] ([FArguments -addUnsignedChar:], 
	[FArguments -addUnsignedShort:], [FArguments -addUnsigned:],
	[FArguments -addUnsignedLong:]): New methods.

	* FArguments.m (ADD_COMMON): Add type and value assignment to macro.

1999-03-21  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* FCall.m (fillHiddenArguments): Make static.

	* FCall.[hm], FArguments.m: Avoid libffi things.

1999-03-19  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* Archiver.m (defaultPath): Append slash only if $HOME is empty
	or the last character is not already a slash.

1999-03-17  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* defobj.h, FCall.[hm]: Rename init_javacall_tables to
	defobj_init_java_call_tables and declare in defobj.h.

	* defobj.m (_defobj_implement): Call setTypeImplemented: for FCall.

	* FCall.h: Include swarmconfig.h, but first undefine PACKAGE 
	and VERSION after inclusion of ffi.h.
	(FCall_c): Make ffunction be of type func_t.  

	* defobj.h, FCall.[hm]: Use setFunctionPointer: with func_t 
	argument instead of setFunction: with (void (*)()) argument.

1999-03-17  Vladimir Jojic  <vjojic@chama.santafe.edu>

	* FCall.m (FCall_c): Rename FCall to FCall_c to avoid name clash
	with new protocol.
	([FCall_c -performCall]): Rename _performAction_: to performCall.

	* FCall.h (FCall_c): Likewise. 

	* defobj.h: Add new protocol FCall.

1999-03-17  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* FCall.h: Include ffi.h.

	* FCall.m: Include misc.h instead of stdlib.h.  Include ffi.h.

	* FArguments.[hm]: Remove include of ffi.h in header file, put
	it in implementation file.

1999-03-16  Vladimir Jojic  <vjojic@chama.santafe.edu>

	* FCall.m (fillHiddenArguments): Hide java dependent code.

	* FCall.h (init_javacall_tables): jniEnv is passed as VOID * 
	argument.
	
	* FCall.m ([FCall -createEnd]): Pass correct number of arguments.
	([FCall -_performAction_:]): Pass correct offset of argument 
	values array.
	(init_javacall_tables): Get the jniEnv as an argument.

1999-03-16  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* FArguments.h (FArguments): Rename signature to javaSignature and 
	constify.  Rename signatureLength to javaSignatureLength.

	* FArguments.m (createJavaSignature): Constify return and make static.
	([FArguments -createEnd]): Use renamed version.

1999-03-16  Vladimir Jojic  <vjojic@chama.santafe.edu>

	* FCall.m ([FCall -getArguments]): New method.

	* FCall.h: Add getArguments method.

1999-03-16  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* Makefile.am (OBJCFLAGS): Append @CFLAGS_NOWARN_UNKNOWN_PRAGMAS@.
	(libdefobj_la_CPPFLAGS): Remove.

	* FArguments.h: Never include jni.h.
	(JOBJECT): Always define as VOID *.

	* FCall.m: Include jni.h if HAVE_JDK.

1999-03-15  Vladimir Jojic  <vjojic@chama.santafe.edu>

	* Makefile.am (libdefobj_la_CPPFLAGS): Add 
	CFLAGS_NOWARN_UNKNOWN_PRAGMAS.
	Do not override CFLAGS nor OBJCFLAGS.
	
	* FCall.m: Hide jniEnv is JDK is not available.
	Hide JNI function tables if JDK is not available.
	(init_javacall_tables): Likewise.
	([FCall -createEnd]): Call fillHiddenArguments outside of the
	JDK dependent if block.

	* FCall.h: Hide init_javacalltables if JDK is not available. 

	* Makefile.am: Add CFLAGS_NOWARN_UNKNOWN_PRAGMAS to OBJCFLAGS and 
	CFLAGS to prevent unkown pragma warning while parsing jni.h.

	* FCall.h: Rename FCall fields with f prefix to avoid name clashes.

	* FCall.m: Likewise
	
	* Makefile.am (INCLUDES): Add FFIINCLUDES.

	* FCall.m: Remove extern from declaration of jniEnv.

	* FArguments.m: New file. FArguments is used for describing
	arguments passed to a foreign call and return value type

	* FArguments.h: New file. 

	* FCall.m: Separate FCall into FCall and FArguments. FCall
	is used for actual method specification and performing that
	call. It takes arguments and return type specification from
	FArguments.

	* FCall.h: Likewise.

	* Makefile.am (jdkdir, javaincludedir, JAVAINCLUDES): Add
	new variables for java include directories.
	(INCLUDES): Add JAVAINCLUDES to INCLUDES variable.
	(SRC): Add FCall.m and FArguments.m
	(defobj_HEADERS): Add FCall.h and FArguments.h

1999-03-14  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* Makefile.am (INCLUDES): Add -I for libobjc.
	(libdefobj_a_SOURCES): Remove.

1999-03-10  Vladimir Jojic  <vjojic@chama.santafe.edu>

	* FCall.h: New FCall.h

	* FCall.m: New FCall.m

1999-03-10  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* Archiver.m (lisp_output_objects, [Archiver_c -registerClient:],
	[Archiver_c -unregisterClient:]): Use isInstance instead of isClass.

1999-03-09  Vladimir Jojic  <vjojic@chama.santafe.edu>

	* FCall.h (JOBJECT): Define JOBJECT as void * if Java is not available
	and jobject if Java is available.
	

	* FCall.m: Use HAVE_JDK to hide related code.

1999-03-09  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* FCall.h: Include swarmconfig.h. Only declare
	addJObject:, and setJavaMethod:inClass:inObject when HAVE_JDK
	is set.

	* FCall.[hm]: Reformatting.

1999-03-09  Vladimir Jojic  <vjojic@chama.santafe.edu>

	* defobj.m: Remove import FCall.h
	(_defobj_initialize): Remove init_javacall_tables.

	* Makefile.am (defobj_HEADERS): Remove FCall.h
	(SRC): Remove FCall.m

	* FCall.h: If Java available then include jni.h.
	Import Create.h

	* Makefile.am (SRC): Add FCall.m to SRC variable.
	(defobj_HEADERS): Add FCall.h to defobj_HEADERS.

	* defobj.m: Include FCall.h for init_javacall_tables definition.
	(_defobj_initialize): If Java is enabled call init_javacall_tables.

	* FCall.m (init_javacall_tables): Rename init_java to 
	init_javacall_tables.

	* FCall.h: Rename init_java to init_javacall_tables.

	* FCall.m (init_java): Remove JNI initialization from init_java.
	([FCall -setCallType:cType]): Use switch instead of if else.
	([FCall -setNumberOfArguments:number]): Likewise.
	([FCall -addArgument:value:type]): Likewise.

	* FCall.h: Insert contents of swarm_types.h in FCall.h 

	* swarm_types.h: Remove file. 

1999-03-05  Vladimir Jojic  <vjojic@chama.santafe.edu>

	* swarm_types.h: New file. 

	* FCall.h: New file.

	* FCall.m: New file.
	

1999-02-27  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* defobj.h: Put all setters needed for createEnd to creating
	phase.  Remove duplicate setAppModeString: in setting.

1999-02-22  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* Archiver.m ([Archiver_c -hdf5LoadObjectMap:key:],
	[Archiver_c -hdf5LoadArchiver:]): Return self.
	
1999-02-20  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* defobj.m (initDefobj): Call setSystemArchiverFlag: YES for
	hdf5Archiver and lispArchiver.

	* DefObject.m (lisp_output_type): Make buf larger.  Print empty/ignored
	object as #f instead of nil.

	* Archiver.m (lisp_output_objects): Add systemArchiverFlag
	argument (used to adjust indentation).  Generate EOL at the
	end of the loop instead of beginning. 
	(lisp_output_app_objects): New function.
	([Archiver_c -_lispOut_:]): Use it.
	([Archiver_c -_hdf5Out_:]): Handle non system archiver case.

	* Archiver.[hm] ([Archiver_c -createAppKey:mode:],
	([Archiver_c -ensureApp:], [Archiver_c -hdf5LoadObjectMap:key:],
	[Archiver_c -{hdf5,lisp}LoadArchiver:], [Archiver_c
	hdf5LoadObjectMap:key:]): New methods.
	(lispLoadArchiver, hdf5LoadArchiver): Remove.
	([Archiver_c +createBegin:]): Initialize systemArchiverFlag to NO.
	([Archiver_c -createEnd]): Use createAppKey: to get value of
	currentApplicationKey.  Use {hdf5,lisp}LoadArchiver: instead of
	functions.

	* Archiver.[hm], defobj.h ([Archiver_c -setSystemArchiverFlag:]):
	New method.

	* Archiver.h (CreateDrop_s): New ivar systemArchiverFlag.

	* defobj.h: Disable CreateDrop protocol; it is already an @interface.

1999-02-19  Vladimir Jojic  <vjojic@chama.santafe.edu>

	* defobj.h: Add CreateDrop protocol. 

1999-02-16  Alex Lancaster  <alex@santafe.edu>

	* defobj.h (generate_class_name):  Prefix with `extern'.

1999-02-15  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* defobj.m (hdf5In): Use getAttribute: instead of iterateAttributes:
	for getting the type name.
	(hdf5In): Generate a class name if type attribute absent.

	* HDF5Object.m ([HDF5_c -getClass]): If baseTypeObject is
	set, peer into the class instance to see what name it was given,
	otherwise depend on the type attribute being present.

	* defobj.[hm], HDF5Object.m: Move generate_class_name and
	generateClassNameCount from HDF5Object.m.

1999-02-08  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* defobj.m (initDefobj): Don't create hdf5Archiver if HAVE_HDF5
	isn't set, set hdf5Archiver to nil.

	* Makefile.am (CURRENT): Bump.  Version 1.4.1.

	* HDF5Object.[hm]: Only include pack{Obj,Buf}to: when HAVE_HDF5
	is defined.

	* HDF5Object.m (generate_class_name, [HDF5_c -writeLevels]): Likewise.

1999-02-07  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* HDF5Object.m (objc_type_for_tid,
	create_class_from_compound_type, [HDF5_c -shallowLoadObject:]):
	Fail if H5Tget_size returns 0.

	* DefObject.[hm], defobj.h: Add archiver argument to
	updateArchiver.

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

	* Archiver.m ([Archiver_c -updateArchiver]): Pass self to
	updateArchiver:.

	* DefObject.m ([Object_s -_lispOut_:deep:]): Modify per map_ivars
	change.
	([Object_s -hdf5OutDeep:]): Likewise.
	
	* HDF5Object.m ([HDF5CompoundType -packObj:to:]): Likewise.
	
	* DefObject.m ([Object_s -lispIn:]): Modify per find_ivar change.

	* internal.[hm] (map_ivars): Take class, not objc_ivar_list, as
	primary argument.
	(find_ivar): Take class, not object as primary argument.
	(ivar_ptr): Modify per find_ivar.

1999-02-06  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* internal.m (alignment_for_objc_type, size_for_objc_type): 
	Support char and unsigned char.

	* HDF5Object.m (compare_objc_types): New function.  Allow
	long/int mismatch iff size of two types is the same.
	(create_class_from_compound_type, [HDF5CompoundType_c
	-packObj:to:], [HDF5CompoundType_c -packBuf:to:]): Use it.

	* DefObject.m ([Object_s -lispIn:]): Handle assignments to 
	types of integers other than int.
	([Object_s hdf5OutShallow:]): Call writeLevels.

	* Archiver.m ([Application -drop]): Don't delete items in shallowMap
	and deepMap.

1999-02-05  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* HDF5Object.m (generatedClassNameCount): New variable.
	(generate_class_name): Use it.
	([HDF5_c -createEnd]): Use generate_class_name, always set c_count.

	* defobj.m (attrIterateFunc): Return 1 whether typeObject is
	found or created.
	(hdf5In): Set typeObject to List if dataset and
	count > 1.

	* HDF5Object.m: Include limits.h.
	(create_compound_type_from_class): Handle const char * -> int.
	Add insertFlag to allow presizing.
	([HDF5CompoundType_c -createEnd]): Create string map for
	each ivar.
	([HDF5CompoundType -drop]): Delete maps in stringMaps and drop
	toplevel Map.
	([HDF5_c -shallowStoreObject:]): Call packBuf:to: to a scratch
	buffer for writing.

	* HDF5Object.[hm] ([HDF5CompoundType_c -packBuf:to:], 
	[HDF5CompoundType_c -writeLevel:], [HDF5CompoundType_c -writeLevels],
	[HDF5_c -writeLevels]): New methods.
	([HDF5_c -setDataset:]): Move to setting phase (called from
	HDF5_c's writeLevels).

	* HDF5Object.h (HDF5CompoundType_c): Rename stringMap to stringMaps,
	since it now made of up Maps, not just arrays.

1999-02-04  Marcus G. Daniels  <mgd@pojoaque.santafe.edu>

	* HDF5Object.m (LEVELSPREFIX): New macro.
	(get_attribute_string_list): New function.
	(get_attribute_levels_string_list, get_attribute): Use it.
	(create_class_from_compound_type): Returns boolean to indicate
	if class is aligned with compound type.  Return class by reference.
	Don't compute alignment based on compound type offsets; accumulate
	offsets using size and component alignment.
	([HDF5CompoundType_c -createEnd]): Add string lists to stringMap
	if any ivar attributes are found.
	([HDF5_c -createEnd]): Set dataset as a part of compoundType 
	creation.
	([HDF5_c -iterateAttributes:]): Skip attributes
	with the names `row.names', `names', and `levels.*'.
	([HDF5_c -shallowLoadObject:]): Load to scratch buffer and
	then call pack:to: to install in object.

	* HDF5Object.[hm] ([HDF5CompoundType_c -setDataset:]): 
	[HDF5CompoundType_c -packObj:to:]): New methods.

	* HDF5Object.h (HDF5CompoundType_c): Add ivar did.
	Declare setDataset: setter for above. 

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

	* Arguments.m ([Arguments_c -_runningFromInstall_]): If using Cygwin,
	normalize possibleHome and home to lower case before inode
	test.

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): New macro for sizing decimal scratch buffers.

	* 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): New protocol.

	* 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): Add deep: option to lispOut and hdf5Out.
	(Archiver): Add deep argument to lispArchiverPut, hdf5ArchvierPut.

	* 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): New error types.

	* 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.
	(lisp_process_array): Call catEndArray at end.

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): Declare lispInCreate:, lispIn:, lispOut:,
	updateArchiver, and copyClass.

	* 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): Declare +createBegin:, -createEnd,
	-setArgc:Argv:, -setAppModeString:, -setOptionFunc:, -setBugAddress:,
	and -setVersion:.  Move addOptions: to creating phase.

	* 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): Declare addVariable.
	(Serialization): Declare 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): Add protocol summary and
	description strings.

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}): Prefix declaration with `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): New protocol.  Move archiver functions
	inside this protocol declaration.

	* 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: Add archiver{Register,Unregister}, and
	{HDF5,lisp}Archiver{Get,Put} to Serialization protocol.

	* Archiver.h: Include collections.h and make applicationMap
	an object conforming to Map.
	(HDF5Archiver{Get,Put}): Add.
	
	* defobj.h (Symbol): Remove 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: Remove readOnly accessors from SetInitialValue protocol
	(moved to design document).

	* 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): New protocol.  Put lispIn,
	lispInQuotedExpr, and archvierSave here.
	Put lispInCreate: in creating phase.
	Rename lisp{in,out}: to lisp{In,Out}:. Declare 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): Declare +lispin:expr: in creating
	phase. 
	(lispinQuotedExpr): Declare.
	(MAKE_OBJC_FUNCTION_NAME): Define (was confined to 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): New protocol.
	(Arguments): Add protocol (from 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: Replace @deftype with @protocol throughout.

	* 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: Remove mention of what might happen with other
	(nonexistent) zone types.  Remove mention of status of current
	Zone implementation.  Remove mention of -setReclaimPolicy:,
	-setStackedSubzones:, -getSubzones, -mergeWithOwner, -getSubzone:.
	Remove -reclaimStorage, -releaseStorage, xfprint, and xfprintid
	declarations.  Improve description of xsetname, xprint, xprintid,
	xfprint, xfprintid, xexec, and xfexec.

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

	* defobj.h: Updated documentation tags.
	(PTRFMT): Use %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}): Added method and
	doc tags that should exist to DefinedObject protocol.

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

	* defobj.h: Fix //# doc strings (following colon required).

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

	* defobj.h (raiseEvent,M(), initModule, globalZone, scratchZone,
	defsymbol, defwarning, deferror): Added (//#) doc strings.
	(<{Warning,Error}>): Added (//G) doc strings after each definition.
	(<Symbol>, _obj_formatIDString, objc_get_class, _obj_debug,
	(_obj_xerror, *_obj_xdebug, xsetname, xprint, xprintid, xfprint,
	xfprintid, xexec, xfexec): Added (//G) doc strings before each
	definition.

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

	* defobj.h: Remove instances of <p> in the documentation.
	Minor changes to method spacing.
	(Create):  Move some documentation from createBegin: to 
	be general documentation. 
	(Error): Add a description.

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

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

	* defobj.h: Add CREATING and USING tags where absent.

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

	* defobj.h: Add documentation tags.

	* 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 is factory method.
	(DefinedClass): All methods are factory methods.

	* 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: Declare nameToObject function.

	* 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: Constify argument to setDisplayName.
	Constify return of getDisplayName.
	Constify return of getName in GetName deftype.
	Constify setName argument to Symbol +create.
	Constify argument to Symbol setName.
	Constify argument to Warning setMessageString.
	Constify return of Warning getMessageString.
	Constify argument to CreatedClass setName.
	Constify argument to objc_get_class.
	Constify name argument to xsetname, exec, and xfexec.
	Drop APIChange warning.
	Reformatting throughout.

	* 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: Reenable LibraryUsage, DefaultAssumed, and ObsoleteFeature.
	Put back ObsoleteMessage (gepr argues they are important for a minor
	release).

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

	* defobj.h: Add APIChange to the standard error types.
	Delete ObsoleteMessage, since it appears to be redundant 
	with ObsoleteFeature.  Disable LibraryUsage, DefaultAssumed, 
	and ObsoleteFeature because they aren't used.

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.

