
#define langsystem7include


/*
#ifndef __ALIASES__

	#include <Aliases.h>

#endif
*/


#ifndef langinclude

	#include "lang.h"
	
#endif


#if MACVERSION
	#define filespecsize(fs) (sizeof (tyfilespec) - sizeof (Str63) + stringsize ((fs).name))
#endif

#if WIN95VERSION
	#define filespecsize(fs) (sizeof (tyfilespec))	// assume all data is contiguous
#endif


typedef boolean (*langvisitlistvaluescallback) (tyvaluerecord *, ptrvoid); /*2003-04-28 AR*/


/*prototypes*/

extern boolean filespectoalias (const tyfilespec *, boolean, AliasHandle *);  /*landsystem7.c*/

extern boolean aliastostring (Handle, bigstring);

extern boolean aliastofilespec (AliasHandle, tyfilespec *);

extern boolean coercetoalias (tyvaluerecord *);

extern boolean langpackfileval (const tyvaluerecord *, Handle *);

extern boolean langunpackfileval (Handle, tyvaluerecord *);

extern boolean objspectoaddress (tyvaluerecord *);

extern boolean objspectofilespec (tyvaluerecord *);

extern boolean filespectoobjspec (tyvaluerecord *);

extern boolean objspectostring (Handle, bigstring);

extern boolean coercetoobjspec (tyvaluerecord *);

extern boolean setobjspecverb (hdltreenode, tyvaluerecord *);

extern boolean evaluateobjspec (hdltreenode, tyvaluerecord *);

extern boolean isobjspectree (hdltreenode);

#ifdef flnewfeatures

extern boolean filespecaddvalue (tyvaluerecord *, tyvaluerecord *, tyvaluerecord *);

extern boolean filespecsubtractvalue (tyvaluerecord *, tyvaluerecord *, tyvaluerecord *);

extern boolean getobjectmodeldisplaystring (tyvaluerecord *, bigstring);

extern boolean makelistvalue (hdltreenode, tyvaluerecord *);

extern boolean makerecordvalue (hdltreenode, boolean, tyvaluerecord *);

extern boolean langgetlistsize (const tyvaluerecord *, long *);

#ifdef oplanglists
	extern boolean langgetlistitem (const tyvaluerecord *, long, ptrstring, tyvaluerecord *);
	
	extern boolean langpushlistval (struct tylistrecord **, ptrstring, tyvaluerecord *);

	extern boolean langpushlisttext (struct tylistrecord ** hlist, Handle hstring);
	
	extern boolean langpushliststring (struct tylistrecord ** hlist, bigstring bs);
	
	extern boolean langpushlistaddress (struct tylistrecord ** hlist, hdlhashtable ht, bigstring bs);
	
	extern boolean langpushlistlong (struct tylistrecord ** hlist, long num);
	
	extern boolean getnthlistval (struct tylistrecord ** hlist, long n, ptrstring pkey, tyvaluerecord *val);

	extern boolean setnthlistval (struct tylistrecord ** hlist, long n, ptrstring pkey, tyvaluerecord *val);
#else
	extern boolean langgetlistitem (const tyvaluerecord *, long, OSType *, tyvaluerecord *);
#endif

extern boolean coercetolist (tyvaluerecord *, tyvaluetype);

extern boolean coercelistvalue (tyvaluerecord *, tyvaluetype);

extern boolean listaddvalue (tyvaluerecord *, tyvaluerecord *, tyvaluerecord *);

extern boolean listsubtractvalue (tyvaluerecord *, tyvaluerecord *, tyvaluerecord *);

extern boolean listcomparevalue (tyvaluerecord *, tyvaluerecord *, tytreetype, tyvaluerecord *);

extern boolean coercetolistposition (tyvaluerecord *);
	
extern boolean listarrayvalue (tyvaluerecord *, bigstring, tyvaluerecord *, tyvaluerecord *);

extern boolean listassignvalue (tyvaluerecord *, bigstring, tyvaluerecord *, tyvaluerecord *);

extern boolean listdeletevalue (tyvaluerecord *, bigstring, tyvaluerecord *);

extern boolean langvisitlistvalues (tyvaluerecord *, langvisitlistvaluescallback, ptrvoid); /*2003-04-28 AR*/

#endif


