24 #include <sys/types.h>
44 if (l->mode[0] !=
'\0' && (strcmp(l->mode,
"r") == 0))
50 else if (strcmp(l->mode,
"w") == 0) mode =
"w";
54 if (l->name[0] ==
'\0')
59 l->data = (
void *) stdin;
64 l->data = (
void *) stdout;
72 char *filename=l->name;
89 l->data = (
void *) outfile;
103 if (l->name[0] !=
'\0')
105 return (fclose((FILE *)l->data)!=0);
112 FILE *
fp=(FILE *)l->data;
114 if (fp!=
NULL && l->name[0] !=
'\0')
121 Print(
"//Reading %ld chars\n",len);
134 WerrorS(
"read(<link>,<string>) expected");
147 memset(&tmp,0,
sizeof(
sleftv));
149 tmp.
data=(
void*)
"? ";
155 FILE *outfile=(FILE *)l->data;
164 fprintf(outfile,
"%s\n",
s);
169 Werror(
"cannot convert to string");
180 if (strcmp(request,
"read") == 0)
183 else return "not ready";
185 else if (strcmp(request,
"write") == 0)
188 else return "not ready";
190 else return "unknown status request";
197 FILE *
fd = (FILE *) l->data;
205 fprintf(fd,
"RETURN();\n");
245 if (fprintf(fd,
"setring %s;\n",
IDID(rhdl)) == EOF)
return TRUE;
247 IDMAP(h)->preimage, rhs) == EOF)
264 int type_id =
IDTYP(h);
270 if (type_str ==
NULL)
282 if (fprintf(fd,
"%s %s", type_str,
IDID(h)) == EOF)
288 if (fprintf(fd,
"[%d][%d]", id->nrows, id->ncols)== EOF)
return TRUE;
298 return (fprintf(fd,
";\n") == EOF);
302 if (fprintf(fd,
" = ") == EOF)
return TRUE;
308 if (fprintf(fd,
";\n") == EOF)
return TRUE;
322 int i, nl = l->
nr + 1;
355 char *ring_str = h->
String();
361 if (fprintf(fd,
"attrib(temp_ideal, \"isSB\", 1);\n") == EOF)
return TRUE;
362 if (fprintf(fd,
"%s %s = temp_ideal;\n", type_str,
IDID(h)) == EOF)
364 if (fprintf(fd,
"kill temp_ring;\n") == EOF)
return TRUE;
375 int type_id =
IDTYP(h);
382 fprintf(fd,
"list(");
399 while (*pstr !=
'\0')
401 if (*pstr ==
'"' || *pstr ==
'\\') fputc(
'\\', fd);
415 while (*pstr !=
'\0')
417 if (*pstr ==
'"' || *pstr ==
'\\') fputc(
'\\', fd);
423 else fputs(
"(null)", fd);
429 if (rhs ==
NULL)
return EOF;
432 if (type_id ==
INTVEC_CMD) { fprintf(fd,
"intvec(");need_klammer=
TRUE; }
433 else if (type_id ==
IDEAL_CMD) { fprintf(fd,
"ideal(");need_klammer=
TRUE; }
434 else if (type_id ==
MODUL_CMD) { fprintf(fd,
"module(");need_klammer=
TRUE; }
436 if (fprintf(fd,
"%s", rhs) == EOF)
return EOF;
445 if (fprintf(fd,
"; minpoly = %s", rhs) == EOF) {
omFree(rhs);
return EOF;}
448 else if (need_klammer) fprintf(fd,
")");
455 if (l->name[0] ==
'\0')
457 Werror(
"getdump: Can not get dump from stdin");
479 FILE *
f = (FILE *) l->data;
const CanonicalForm int s
char *(* fe_fgets_stdin)(const char *pr, char *s, int size)
Class used for (list of) interpreter objects.
leftv slReadAscii(si_link l)
static BOOLEAN DumpAsciiMaps(FILE *fd, idhdl h, idhdl rhdl)
BOOLEAN slOpenAscii(si_link l, short flag, leftv)
static const char * GetIdString(idhdl h)
#define SI_LINK_R_OPEN_P(l)
static FORCE_INLINE int n_GetChar(const coeffs r)
Return the characteristic of the coeff. domain.
void WerrorS(const char *s)
si_link_extension si_link_root
char * String(BOOLEAN typed=FALSE)
int int kStrategy strat if(h==NULL) return NULL
#define SI_LINK_SET_CLOSE_P(l)
BOOLEAN slGetDumpAscii(si_link l)
omBin s_si_link_extension_bin
char * String(void *d=NULL, BOOLEAN typed=FALSE, int dim=1)
Called for conversion to string (used by string(..), write(..),..)
#define SI_LINK_SET_OPEN_P(l, flag)
ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
static BOOLEAN DumpAsciiIdhdl(FILE *fd, idhdl h)
static int DumpRhs(FILE *fd, idhdl h)
leftv slReadAscii2(si_link l, leftv pr)
size_t myfread(void *ptr, size_t size, size_t nmemb, FILE *stream)
FILE * myfopen(const char *path, const char *mode)
void StringSetS(const char *st)
const char * slStatusAscii(si_link l, const char *request)
int status int void * buf
static BOOLEAN DumpAscii(FILE *fd, idhdl h)
const Variable & v
< [in] a sqrfree bivariate poly
const char * Tok2Cmdname(int tok)
used for all algebraic extensions, i.e., the top-most extension in an extension tower is algebraic ...
#define SI_LINK_W_OPEN_P(l)
BOOLEAN slCloseAscii(si_link l)
BOOLEAN slWriteAscii(si_link l, leftv v)
BOOLEAN newFile(char *fname, FILE *f)
void p_Write(poly p, ring lmRing, ring tailRing)
char * iiGetLibProcBuffer(procinfo *pi, int part)
char * iiStringMatrix(matrix im, int dim, const ring r, char ch)
void Werror(const char *fmt,...)
static BOOLEAN DumpQring(FILE *fd, idhdl h, const char *type_str)
BOOLEAN slDumpAscii(si_link l)