support for UNICODE, and other bug fixes.

git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@1725 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
vsc
2006-11-27 17:42:03 +00:00
parent 0a21ac1b71
commit 0705ca0640
34 changed files with 2128 additions and 632 deletions

View File

@@ -189,6 +189,7 @@ IsFunctorProperty (int flags)
ff df sparse functor
ff ex arithmetic property
ff f7 array
ff f8 wide atom
ff fa module property
ff fb blackboard property
ff fc value property
@@ -267,6 +268,79 @@ IsGlobalProperty (int flags)
}
/* Wide Atom property */
typedef struct
{
Prop NextOfPE; /* used to chain properties */
PropFlags KindOfPE; /* kind of property */
UInt SizeOfAtom; /* index in module table */
} WideAtomEntry;
#if USE_OFFSETS_IN_PROPS
inline EXTERN WideAtomEntry *RepWideAtomProp (Prop p);
inline EXTERN WideAtomEntry *
RepWideAtomProp (Prop p)
{
return (WideAtomEntry *) (AtomBase + Unsigned (p));
}
inline EXTERN Prop AbsWideAtomProp (WideAtomEntry * p);
inline EXTERN Prop
AbsWideAtomProp (WideAtomEntry * p)
{
return (Prop) (Addr (p) - AtomBase);
}
#else
inline EXTERN WideAtomEntry *RepWideAtomProp (Prop p);
inline EXTERN WideAtomEntry *
RepWideAtomProp (Prop p)
{
return (WideAtomEntry *) (p);
}
inline EXTERN Prop AbsWideAtomProp (WideAtomEntry * p);
inline EXTERN Prop
AbsWideAtomProp (WideAtomEntry * p)
{
return (Prop) (p);
}
#endif
#define WideAtomProperty ((PropFlags)0xfff8)
inline EXTERN PropFlags IsWideAtomProperty (int);
inline EXTERN PropFlags
IsWideAtomProperty (int flags)
{
return (PropFlags) ((flags == WideAtomProperty));
}
inline EXTERN int IsWideAtom (Atom);
inline EXTERN int
IsWideAtom (Atom at)
{
return RepAtom(at)->PropsOfAE &&
IsWideAtomProperty(RepWideAtomProp(RepAtom(at)->PropsOfAE)->KindOfPE);
}
/* Module property */
typedef struct
{