new atoms and functors

This commit is contained in:
Vitor Santos Costa 2016-07-31 10:23:19 -05:00
parent 460dfafcc8
commit 2213bc6f36
5 changed files with 609 additions and 610 deletions

View File

@ -430,6 +430,7 @@ A WakeUpGoal F "$wake_up_goal"
A Warning N "warning"
A When F "$when"
A Write N "write"
A WriteTerm N "write_term"
A Xml N "xml"
A YapHacks N "yap_hacks"
A ZeroDivisor N "zero_divisor"
@ -569,4 +570,5 @@ F TypeError TypeError 2
F UMinus Minus 1
F UPlus Plus 1
F VBar VBar 2
F WriteTerm WriteTerm 2
F HiddenVar HiddenVar 1

View File

@ -46,12 +46,10 @@ typedef struct atom_blob {
typedef struct AtomEntryStruct *Atom;
typedef struct PropEntryStruct *Prop;
/* I can only define the structure after I define the actual atoms */
/* atom structure */
typedef struct AtomEntryStruct
{
typedef struct AtomEntryStruct {
Atom NextOfAE; /* used to build hash chains */
Prop PropsOfAE; /* property list for this atom */
#if defined(YAPOR) || defined(THREADS)
@ -64,12 +62,10 @@ typedef struct AtomEntryStruct
wchar_t uWStrOfAE[MIN_ARRAY]; /* representation of atom as a string */
struct atom_blob blob[MIN_ARRAY];
} rep;
}
AtomEntry;
} AtomEntry;
// compatible with C and C++;
typedef struct ExtraAtomEntryStruct
{
typedef struct ExtraAtomEntryStruct {
Atom NextOfAE; /* used to build hash chains */
Prop PropsOfAE; /* property list for this atom */
#if defined(YAPOR) || defined(THREADS)
@ -82,14 +78,12 @@ typedef struct ExtraAtomEntryStruct
wchar_t uWStrOfAE[2]; /* representation of atom as a string */
struct atom_blob blob[2];
} rep;
}
ExtraAtomEntry;
} ExtraAtomEntry;
#define UStrOfAE rep.uUStrOfAE
#define StrOfAE rep.uStrOfAE
#define WStrOfAE rep.uWStrOfAE
/* Props and Atoms are stored in chains, ending with a NIL */
#ifdef USE_OFFSETS
#define EndOfPAEntr(P) (Addr(P) == AtomBase)
@ -97,7 +91,6 @@ typedef struct ExtraAtomEntryStruct
#define EndOfPAEntr(P) (Addr(P) == NIL)
#endif
/* ********************** Properties **********************************/
#if defined(USE_OFFSETS)
@ -109,8 +102,7 @@ typedef struct ExtraAtomEntryStruct
typedef SFLAGS PropFlags;
/* basic property entry structure */
typedef struct PropEntryStruct
{
typedef struct PropEntryStruct {
Prop NextOfPE; /* used to chain properties */
PropFlags KindOfPE; /* kind of property */
} PropEntry;
@ -125,13 +117,12 @@ typedef struct PropEntryStruct
#define MaxArity 255
typedef CELL arity_t;
typedef size_t arity_t;
#define FunctorProperty ((PropFlags)(0xbb00))
/* functor property */
typedef struct FunctorEntryStruct
{
typedef struct FunctorEntryStruct {
Prop NextOfPE; /* used to chain properties */
PropFlags KindOfPE; /* kind of property */
arity_t ArityOfFE; /* arity of functor */
@ -144,5 +135,4 @@ typedef struct FunctorEntryStruct
typedef FunctorEntry *Functor;
#endif /* ATOMS_H */

View File

@ -425,6 +425,7 @@
AtomWarning = Yap_LookupAtom("warning"); TermWarning = MkAtomTerm(AtomWarning);
AtomWhen = Yap_FullLookupAtom("$when"); TermWhen = MkAtomTerm(AtomWhen);
AtomWrite = Yap_LookupAtom("write"); TermWrite = MkAtomTerm(AtomWrite);
AtomWriteTerm = Yap_LookupAtom("write_term"); TermWriteTerm = MkAtomTerm(AtomWriteTerm);
AtomXml = Yap_LookupAtom("xml"); TermXml = MkAtomTerm(AtomXml);
AtomYapHacks = Yap_LookupAtom("yap_hacks"); TermYapHacks = MkAtomTerm(AtomYapHacks);
AtomZeroDivisor = Yap_LookupAtom("zero_divisor"); TermZeroDivisor = MkAtomTerm(AtomZeroDivisor);
@ -564,4 +565,5 @@
FunctorUMinus = Yap_MkFunctor(AtomMinus,1);
FunctorUPlus = Yap_MkFunctor(AtomPlus,1);
FunctorVBar = Yap_MkFunctor(AtomVBar,2);
FunctorWriteTerm = Yap_MkFunctor(AtomWriteTerm,2);
FunctorHiddenVar = Yap_MkFunctor(AtomHiddenVar,1);

View File

@ -425,6 +425,7 @@
AtomWarning = AtomAdjust(AtomWarning); TermWarning = MkAtomTerm(AtomWarning);
AtomWhen = AtomAdjust(AtomWhen); TermWhen = MkAtomTerm(AtomWhen);
AtomWrite = AtomAdjust(AtomWrite); TermWrite = MkAtomTerm(AtomWrite);
AtomWriteTerm = AtomAdjust(AtomWriteTerm); TermWriteTerm = MkAtomTerm(AtomWriteTerm);
AtomXml = AtomAdjust(AtomXml); TermXml = MkAtomTerm(AtomXml);
AtomYapHacks = AtomAdjust(AtomYapHacks); TermYapHacks = MkAtomTerm(AtomYapHacks);
AtomZeroDivisor = AtomAdjust(AtomZeroDivisor); TermZeroDivisor = MkAtomTerm(AtomZeroDivisor);
@ -564,4 +565,5 @@
FunctorUMinus = FuncAdjust(FunctorUMinus);
FunctorUPlus = FuncAdjust(FunctorUPlus);
FunctorVBar = FuncAdjust(FunctorVBar);
FunctorWriteTerm = FuncAdjust(FunctorWriteTerm);
FunctorHiddenVar = FuncAdjust(FunctorHiddenVar);

File diff suppressed because it is too large Load Diff