io_builtins_xsb.c File Reference

#include "xsb_config.h"
#include "xsb_debug.h"
#include <stdio.h>
#include <signal.h>
#include <errno.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/stat.h>
#include "setjmp_xsb.h"
#include "auxlry.h"
#include "cell_xsb.h"
#include "context.h"
#include "error_xsb.h"
#include "cinterf.h"
#include "memory_xsb.h"
#include "psc_xsb.h"
#include "heap_xsb.h"
#include "register.h"
#include "flags_xsb.h"
#include "inst_xsb.h"
#include "loader_xsb.h"
#include "subp.h"
#include "tries.h"
#include "choice.h"
#include "macro_xsb.h"
#include "io_builtins_xsb.h"
#include "wind2unix.h"
#include "binding.h"
#include "deref.h"
#include "findall.h"
#include "heap_defs_xsb.h"
#include "ptoc_tag_xsb_i.h"

Data Structures

struct  fmt_spec
struct  next_fmt_state

Defines

#define current_substr_start   (fmt_state->_current_substr_start)
#define workspace   (*(fmt_state->_workspace))
#define saved_char   (fmt_state->_saved_char)
#define TYPE_ERROR_CHK(ch_type, Label)
#define PRINT_ARG(arg)
#define CHECK_ARITY(i, Arity, Label)
#define SPRINT_ARG(arg)
#define FmtBuf   (*tsgSBuff1)
#define StrArgBuf   (*tsgSBuff2)
#define MAX_SPRINTF_STRING_SIZE   MAX_IO_BUFSIZE
#define SAFE_OUT_SIZE   MAX_SPRINTF_STRING_SIZE/2
#define OutString   (*tsgLBuff1)
#define FmtBuf   (*tsgSBuff1)
#define StrArgBuf   (*tsgSBuff2)
#define FmtBuf   (*tsgSBuff1)
#define StrArgBuf   (*tsgSBuff2)
#define aux_fmt   (*tsgLBuff1)
#define ensure_term_space(ptr, size)
#define free_term_buffer()   findall_free(CTXTc findall_chunk_index)
#define INIT_STK_SIZE   32
#define MAX_INIT_STK_SIZE   1000
#define FUNFUN   0
#define FUNLIST   1
#define FUNDTLIST   2
#define FUNCOMMALIST   3
#define setvar(loc, op1)
#define expand_opstk
#define expand_funstk
#define wcan_string   tsgLBuff1
#define wcan_atombuff   tsgLBuff2
#define wcan_buff   tsgSBuff1

Functions

void next_format_substr (CTXTdeclc char *, struct next_fmt_state *, struct fmt_spec *, int, int)
char * p_charlist_to_c_string (CTXTdeclc prolog_term, VarString *, char *, char *)
xsbBool fmt_write (CTXTdecl)
xsbBool fmt_write_string (CTXTdecl)
xsbBool fmt_read (CTXTdecl)
xsbBool formatted_io (CTXTdecl)
CPtr init_term_buffer (CTXTdeclc int *findall_chunk_index)
static int read_can_error (CTXTdeclc FILE *filep, STRFILE *instr, int prevchar, Cell prologvar, int findall_chunk_index)
int read_canonical (CTXTdecl)
Cell read_canonical_return_var (CTXTdeclc int code)
void bld_boxedfloat_here (CTXTdeclc CPtr *h, CPtr addr, Float value)
int read_canonical_term (CTXTdeclc FILE *filep, STRFILE *instr, int return_location_code)
int xsb_intern_fileptr (FILE *fptr, char *context, char *name, char *strmode)
int xsb_intern_file (char *context, char *addr, int *ioport, char *strmode, int opennew)
void mark_open_filenames ()
xsbBool quotes_are_needed (char *string)
void double_quotes (char *string, char *new_string)
void write_quotedname (FILE *file, char *string)
void call_conv write_canonical_term_rec (CTXTdeclc Cell prologterm, int letter_flag)
DllExport void call_conv write_canonical_term (CTXTdeclc Cell prologterm, int letter_flag)
void print_term_canonical (CTXTdeclc FILE *fptr, Cell prologterm, int letterflag)

Variables

stream_record open_files [MAX_OPEN_FILES]
static Psc prevpsc = 0
int opstk_size = 0
int funstk_size = 0
funstktypefunstk
opstktypeopstk
vartype rc_vars [MAXVAR]
static Psc dollar_var_psc = NULL

Define Documentation

#define aux_fmt   (*tsgLBuff1)
 

#define CHECK_ARITY i,
Arity,
Label   ) 
 

Value:

if (i > Arity) { \
              xsb_abort("[%s] Not enough arguments for given format", Label); \
        }

#define current_substr_start   (fmt_state->_current_substr_start)
 

#define ensure_term_space ptr,
size   ) 
 

Value:

if ((ptr+size) > (current_findall->current_chunk + FINDALL_CHUNCK_SIZE -1)) {\
        if (!get_more_chunk(CTXT)) xsb_abort("Cannot allocate space for term buffer") ;\
        ptr = current_findall->top_of_chunk ;\
  }

#define expand_funstk
 

Value:

{\
    funstk_size = funstk_size+funstk_size;\
    funstk = (struct funstktype *)mem_realloc(funstk,(funstk_size/2)*sizeof(struct funstktype),\
                                          funstk_size*sizeof(struct funstktype),READ_CAN_SPACE);\
    if (!funstk) xsb_abort("[READ CANONICAL] Out of space for function stack");\
    /*printf("RC funstk expanded to %d\n",funstk_size);*/ \
  }

#define expand_opstk
 

Value:

{\
    opstk_size = opstk_size+opstk_size;\
    opstk = (struct opstktype *)mem_realloc(opstk,(opstk_size/2)*sizeof(struct opstktype),\
                                            opstk_size*sizeof(struct opstktype),READ_CAN_SPACE);\
    if (!opstk) xsb_abort("[READ_CANONICAL] Out of space for operand stack");\
    /*printf("RC opstk expanded to %d\n",opstk_size);*/ \
  }

#define FmtBuf   (*tsgSBuff1)
 

#define FmtBuf   (*tsgSBuff1)
 

#define FmtBuf   (*tsgSBuff1)
 

 
#define free_term_buffer  )     findall_free(CTXTc findall_chunk_index)
 

#define FUNCOMMALIST   3
 

#define FUNDTLIST   2
 

#define FUNFUN   0
 

#define FUNLIST   1
 

#define INIT_STK_SIZE   32
 

#define MAX_INIT_STK_SIZE   1000
 

#define MAX_SPRINTF_STRING_SIZE   MAX_IO_BUFSIZE
 

#define OutString   (*tsgLBuff1)
 

#define PRINT_ARG arg   ) 
 

Value:

switch (current_fmt_spec->size) { \
        case 1: fprintf(fptr, current_fmt_spec->fmt, arg); \
                break; \
        case 2: fprintf(fptr, current_fmt_spec->fmt, width, arg); \
                break; \
        case 3: fprintf(fptr, current_fmt_spec->fmt, width, precision, arg); \
                break; \
        }

#define SAFE_OUT_SIZE   MAX_SPRINTF_STRING_SIZE/2
 

#define saved_char   (fmt_state->_saved_char)
 

#define setvar loc,
op1   ) 
 

Value:

if (rc_vars[opstk[op1].op].varval) \
       cell(loc) = rc_vars[opstk[op1].op].varval; \
    else { \
             cell(loc) = (Cell) loc; \
             rc_vars[opstk[op1].op].varval = (Cell) loc; \
         }

#define SPRINT_ARG arg   ) 
 

Value:

XSB_StrEnsureSize(&OutString, OutString.length+SAFE_OUT_SIZE); \
        switch (current_fmt_spec->size) { \
        case 1: sprintf(OutString.string+OutString.length, \
                        current_fmt_spec->fmt, arg); \
                bytes_formatted = strlen(OutString.string+OutString.length); \
                break; \
        case 2: sprintf(OutString.string+OutString.length, \
                        current_fmt_spec->fmt, width, arg); \
                bytes_formatted = strlen(OutString.string+OutString.length); \
                break; \
        case 3: sprintf(OutString.string+OutString.length, \
                        current_fmt_spec->fmt, \
                        width, precision, arg); \
                bytes_formatted = strlen(OutString.string+OutString.length); \
                break; \
        } \
        OutString.length += bytes_formatted; \
        XSB_StrNullTerminate(&OutString);

#define StrArgBuf   (*tsgSBuff2)
 

#define StrArgBuf   (*tsgSBuff2)
 

#define StrArgBuf   (*tsgSBuff2)
 

#define TYPE_ERROR_CHK ch_type,
Label   ) 
 

Value:

if (current_fmt_spec->type != ch_type) { \
            xsb_abort("[%s] in argument value %d. Expected %c, got %c.", Label, i,current_fmt_spec->type,ch_type); \
        }

#define wcan_atombuff   tsgLBuff2
 

#define wcan_buff   tsgSBuff1
 

#define wcan_string   tsgLBuff1
 

#define workspace   (*(fmt_state->_workspace))
 


Function Documentation

void bld_boxedfloat_here CTXTdeclc CPtr h,
CPtr  addr,
Float  value
[inline]
 

void double_quotes char *  string,
char *  new_string
 

xsbBool fmt_read CTXTdecl   ) 
 

xsbBool fmt_write CTXTdecl   ) 
 

xsbBool fmt_write_string CTXTdecl   ) 
 

xsbBool formatted_io CTXTdecl   ) 
 

CPtr init_term_buffer CTXTdeclc int findall_chunk_index  ) 
 

void mark_open_filenames  ) 
 

void next_format_substr CTXTdeclc char *  ,
struct next_fmt_state ,
struct fmt_spec ,
int  ,
int 
 

char* p_charlist_to_c_string CTXTdeclc  prolog_term,
VarString ,
char *  ,
char * 
 

void print_term_canonical CTXTdeclc FILE *  fptr,
Cell  prologterm,
int  letterflag
 

xsbBool quotes_are_needed char *  string  ) 
 

static int read_can_error CTXTdeclc FILE *  filep,
STRFILE *  instr,
int  prevchar,
Cell  prologvar,
int  findall_chunk_index
[static]
 

int read_canonical CTXTdecl   ) 
 

Cell read_canonical_return_var CTXTdeclc int  code  ) 
 

int read_canonical_term CTXTdeclc FILE *  filep,
STRFILE *  instr,
int  return_location_code
 

DllExport void call_conv write_canonical_term CTXTdeclc Cell  prologterm,
int  letter_flag
 

void call_conv write_canonical_term_rec CTXTdeclc Cell  prologterm,
int  letter_flag
 

void write_quotedname FILE *  file,
char *  string
 

int xsb_intern_file char *  context,
char *  addr,
int ioport,
char *  strmode,
int  opennew
 

int xsb_intern_fileptr FILE *  fptr,
char *  context,
char *  name,
char *  strmode
 


Variable Documentation

Psc dollar_var_psc = NULL [static]
 

struct funstktype* funstk
 

int funstk_size = 0
 

stream_record open_files[MAX_OPEN_FILES]
 

struct opstktype* opstk
 

int opstk_size = 0
 

Psc prevpsc = 0 [static]
 

struct vartype rc_vars[MAXVAR]
 


Generated on Wed Jul 26 13:26:53 2006 for XSB by  doxygen 1.4.5