YAP 7.1.0
yapio.h
1/*************************************************************************
2 * *
3 * YAP Prolog %W% %G%
4 * *
5 * Yap Prolog was developed at NCCUP - Universidade do Porto *
6 * *
7 * Copyright L.Damas, V.S.Costa and Universidade do Porto 1985-2003 *
8 * *
9 **************************************************************************
10 * *
11 * File: yapio.h * Last
12 *rev: 22/1/03 * mods:
13 ** comments: Input/Output information *
14 * *
15 *************************************************************************/
16
17#ifndef YAPIO_H
18
19#define YAPIO_H 1
20
21#ifdef SIMICS
22#undef HAVE_LIBREADLINE
23#endif
24
25#include <stdio.h>
26#include <wchar.h>
27
28#include "YapIOConfig.h"
29#include "YapUTF8.h"
30#include <VFS.h>
31#include <Yatom.h>
32
33
34#define WRITE_DEFS() \
35 PAR("module", isatom, WRITE_MODULE) \
36 , PAR("attributes", isatom, WRITE_ATTRIBUTES), \
37 PAR("cycles", booleanFlag, WRITE_CYCLES), \
38 PAR("quoted", booleanFlag, WRITE_QUOTED), \
39 PAR("ignore_ops", booleanFlag, WRITE_IGNORE_OPS), \
40 PAR("max_depth", nat, WRITE_MAX_DEPTH), \
41 PAR("numbervars", booleanFlag, WRITE_NUMBERVARS), \
42 PAR("singletons", booleanFlag, WRITE_SINGLETONS), \
43 PAR("portrayed", booleanFlag, WRITE_PORTRAYED), \
44 PAR("portray", booleanFlag, WRITE_PORTRAY), \
45 PAR("priority", nat, WRITE_PRIORITY), \
46 PAR("character_escapes", booleanFlag, WRITE_CHARACTER_ESCAPES), \
47 PAR("backquotes", booleanFlag, WRITE_BACKQUOTES), \
48 PAR("brace_terms", booleanFlag, WRITE_BRACE_TERMS), \
49 PAR("fullstop", booleanFlag, WRITE_FULLSTOP), \
50 PAR("nl", booleanFlag, WRITE_NL), \
51 PAR("variable_names", ok, WRITE_VARIABLE_NAMES), \
52 PAR(NULL, ok, WRITE_END)
53#define PAR(x, y, z) z
54typedef enum write_enum_choices { WRITE_DEFS() } write_choices_t;
55
56
57#ifdef BEAM
58int beam_write(USES_REGS1) {
59 Yap_StartSlots();
60 Yap_plwrite(ARG1, GLOBAL_Stream + LOCAL_c_output_stream, LOCAL_max_depth, 0,
61 NULL);
62 Yap_CloseSlots();
64 return (TRUE);
65}
66#endif
67
68#ifndef _PL_WRITE_
69
70#define EOFCHAR EOF
71
72#endif
73
74/* info on aliases */
75typedef struct AliasDescS {
76 Atom name;
77 int alias_stream;
78} * AliasDesc;
79
80#define MAX_ISO_LATIN1 255
81
82typedef struct scanner_extra_params {
83 Term tposINPUT, tposOUTPUT;
84 Term backquotes, singlequotes, doublequotes;
85 bool ce, vprefix, vn_asfl;
86 Term tcomms;
87 Term cmod;
89 bool get_eot_blank;
91
97extern struct vfs *Yap_InitAssetManager(void);
98
99/* routines in parser.c */
100extern VarEntry *Yap_LookupVar(const char *);
101extern Term Yap_VarNames(VarEntry *, Term);
102extern Term Yap_Variables(VarEntry *, Term);
103extern Term Yap_Singletons(VarEntry *, Term);
104
105/* routines in scanner.c */
106extern void Yap_clean_tokenizer(void);
107extern char *Yap_AllocScannerMemory(unsigned int);
108
109/* routines in iopreds.c */
110extern FILE *Yap_FileDescriptorFromStream(Term);
111extern Int Yap_FirstLineInParse(void);
112extern int Yap_CheckIOStream(Term, char *);
113#if defined(YAPOR) || defined(THREADS)
114extern void Yap_LockStream(void *);
115extern void Yap_UnLockStream(void *);
116#else
117#define Yap_LockStream(X)
118#define Yap_UnLockStream(X)
119#endif
120extern Int Yap_GetStreamFd(int);
121extern void Yap_CloseStreams(void);
122extern void Yap_CloseTemporaryStreams(int minstream);
123extern int Yap_FirstFreeStreamD();
124extern void Yap_FlushStreams(void);
125extern void Yap_ReleaseStream(int);
126extern int Yap_PlGetchar(void);
127extern int Yap_PlGetWchar(void);
128extern int Yap_PlFGetchar(void);
129extern int Yap_GetCharForSIGINT(void);
130extern Int Yap_StreamToFileNo(Term);
131int Yap_OpenStream(Term tin, const char* io_mode, YAP_Term user_name, encoding_t enc);
132extern int Yap_FileStream(FILE *, Atom, Term, int, VFS_t *);
133extern char *Yap_TermToBuffer(Term t, int flags);
134extern char *Yap_HandleToString(yhandle_t l, size_t sz, size_t *length,
135 encoding_t *encoding, int flags);
136extern int Yap_GetFreeStreamD(void);
137extern int Yap_GetFreeStreamDForReading(void);
138
139extern Term Yap_BufferToTerm(const char *s, Term opts);
140extern Term Yap_UBufferToTerm(const unsigned char *s, Term opts);
141
142extern Term Yap_WStringToList(wchar_t *);
143extern Term Yap_WStringToListOfAtoms(wchar_t *);
144extern Atom Yap_LookupWideAtom(const wchar_t *);
145
146
147typedef enum mem_buf_source {
148 MEM_BUF_MALLOC = 1,
149 MEM_BUF_USER = 2
150} memBufSource;
151
152extern char *Yap_MemStreamBuf(int sno);
153
154extern char *Yap_StrPrefix(const char *buf, size_t n);
155
156extern Term Yap_StringToNumberTerm(const char *s, encoding_t *encp,
157 bool error_on);
158extern int Yap_FormatFloat(Float f, char **s, size_t sz);
159extern int Yap_open_buf_read_stream(void *st, const char *buf, size_t nchars,
160 encoding_t *encp, memBufSource src,
161 Atom name, Term uname);
162extern int Yap_open_buf_write_stream(encoding_t enc, memBufSource src);
163extern Term Yap_BufferToTerm(const char *s, Term opts);
164
165extern X_API Term Yap_BufferToTermWithPrioBindings(const char *s, Term opts,
166 Term bindings, size_t sz,
167 int prio);
168extern FILE *Yap_GetInputStream(Term t, const char *m);
169extern FILE *Yap_GetOutputStream(Term t, const char *m);
170extern Atom Yap_guessFileName(FILE *f, int sno, size_t max);
171
172extern int Yap_CheckSocketStream(Term stream, const char *error);
173extern void Yap_init_socks(char *host, long interface_port);
174
175extern bool Yap_flush(int sno);
176
177extern uint64_t HashFunction(const unsigned char *);
178extern uint64_t WideHashFunction(wchar_t *);
179
180extern void Yap_InitAbsfPreds(void);
181
182inline static Term MkCharTerm(Int c) {
183 unsigned char cs[8];
184 if (c==EOF)
185 return TermEof;
186 size_t n = put_xutf8(cs, c);
187 if (n<0) n = 0;
188 cs[n] = 0;
189 return MkAtomTerm(Yap_ULookupAtom(cs));
190}
191
192extern char *GLOBAL_cwd;
193
194extern char *Yap_VF(const char *path);
195
196extern char *Yap_VFAlloc(const char *path);
197
199extern uint64_t Yap_StartOfWTimes;
200
201extern bool Yap_HandleSIGINT(void);
202
203#endif
uTF-8 codepoint translation and processing
VFS_t * Yap_InitAssetManager(void)
Definition: assets.c:231
bool Yap_RaiseException()
let's go
Definition: errors.c:1410
void Yap_clean_tokenizer(void)
terminate scanning: just closes the comment store
Definition: scanner.c:1577
@ encoding
support for coding systens, YAP relies on UTF-8 internally
Definition: YapLFlagInfo.h:83
A matrix.
Definition: matrix.c:68
Term cmod
Access to comments.
Definition: yapio.h:87
bool store_comments
Access to commen.
Definition: yapio.h:88
Definition: VFS.h:74
encoding_t enc
set working directory (may be virtual)
Definition: VFS.h:108