This repository has been archived on 2023-08-20. You can view files and clone it, but cannot push or open issues or pull requests.
vsc e5f4633c39 This commit was generated by cvs2svn to compensate for changes in r4,
which included commits to RCS files with non-trunk default branches.


git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@5 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
2001-04-09 19:54:03 +00:00

61 lines
1.6 KiB
C

/*************************************************************************
* *
* YAP Prolog *
* *
* Yap Prolog was developed at NCCUP - Universidade do Porto *
* *
* Copyright L.Damas, V.S.Costa and Universidade do Porto 1985-1997 *
* *
**************************************************************************
* *
* File: corout.c *
* Last rev: *
* mods: *
* comments: Co-routining from within YAP *
* *
*************************************************************************/
#ifdef SCCS
static char SccsId[]="%W% %G%";
#endif
#ifdef COROUTINING
/*
Attributed variales are controlled by the attvar_record. This includes
three pieces of information:
A pointer to the list of attributes;
The value for the variable, if the variable was bound
Whether we are done with this variable as an attributed variable
An array of NUM_OF_ATTS attributes.
Each attribute contains;
o a time stamp;
o the current value ([] if unbound).
*/
typedef struct attvar_struct {
Term Done; /* if unbound suspension active, if bound terminated */
CELL sus_id;
Term NS; /* other attributed variables */
Term Value; /* value the variable will take */
#ifdef __GNUC__
/* GNUCC understands empty arrays */
Term Atts[0];
#else
Term Atts[2]; /* size of an entry */
#endif
} attvar_record;
/*********** tags for suspension variables */
#define AbsAttVar(attvar_ptr) AbsAppl(((CELL *)(attvar_ptr)))
#define RepAttVar(val) ((attvar_record *)RepAppl(val))
#endif