Back to home page

Enduro/X

 
 

    


0001 /*  see copyright notice in pscript.h */
0002 #ifndef _PSSTDIO_H_
0003 #define _PSSTDIO_H_
0004 
0005 #ifdef __cplusplus
0006 
0007 #define PSSTD_STREAM_TYPE_TAG 0x80000000
0008 
0009 struct PSStream {
0010     virtual PSInteger Read(void *buffer, PSInteger size) = 0;
0011     virtual PSUserPointer ReadLine(void *buffer, PSInteger size)=0;
0012     virtual PSInteger Write(void *buffer, PSInteger size) = 0;
0013     virtual PSInteger Flush() = 0;
0014     virtual PSInteger Tell() = 0;
0015     virtual PSInteger Len() = 0;
0016     virtual PSInteger Seek(PSInteger offset, PSInteger origin) = 0;
0017     virtual bool IsValid() = 0;
0018     virtual bool EOS() = 0;
0019 };
0020 
0021 extern "C" {
0022 #endif
0023 
0024 #include <stddef.h>
0025 
0026 #define PS_SEEK_CUR 0
0027 #define PS_SEEK_END 1
0028 #define PS_SEEK_SET 2
0029 
0030 typedef void* PSFILE;
0031 
0032 /**
0033  * bytecode reader structure
0034  */
0035 typedef struct
0036 {
0037     char *memptr;   /**< ptr to memory block                        */
0038     size_t size;    /**< size of memory block                       */
0039     size_t offset;  /**< current position               */
0040 } PSMemReader;
0041 
0042 PSCRIPT_API PSFILE psstd_fopen(const PSChar *,const PSChar *);
0043 PSCRIPT_API PSInteger psstd_fread(PSUserPointer, PSInteger, PSInteger, PSFILE);
0044 PSCRIPT_API PSUserPointer psstd_fgets(PSUserPointer, PSInteger, PSFILE);
0045 PSCRIPT_API PSInteger psstd_fwrite(const PSUserPointer, PSInteger, PSInteger, PSFILE);
0046 PSCRIPT_API PSInteger psstd_fseek(PSFILE , PSInteger , PSInteger);
0047 PSCRIPT_API PSInteger psstd_ftell(PSFILE);
0048 PSCRIPT_API PSInteger psstd_fflush(PSFILE);
0049 PSCRIPT_API PSInteger psstd_fclose(PSFILE);
0050 PSCRIPT_API PSInteger psstd_feof(PSFILE);
0051 
0052 PSCRIPT_API PSRESULT psstd_createfile(HPSCRIPTVM v, PSFILE file,PSBool own);
0053 PSCRIPT_API PSRESULT psstd_getfile(HPSCRIPTVM v, PSInteger idx, PSFILE *file);
0054 
0055 /* compiler helpers */
0056 PSCRIPT_API PSRESULT psstd_loadfile(HPSCRIPTVM v,const PSChar *filename,PSBool printerror);
0057 PSCRIPT_API PSRESULT psstd_dofile(HPSCRIPTVM v,const PSChar *filename,PSBool retval,PSBool printerror);
0058 PSCRIPT_API PSRESULT psstd_writeclosuretofile(HPSCRIPTVM v,const PSChar *filename);
0059 PSCRIPT_API PSRESULT psstd_register_iolib(HPSCRIPTVM v);
0060 
0061 /* Load bytecode from memory */
0062 PSCRIPT_API PSRESULT psstd_loadmem(HPSCRIPTVM v, PSMemReader *reader);
0063 
0064 
0065 #ifdef __cplusplus
0066 } /*extern "C"*/
0067 #endif
0068 
0069 #endif /*_PSSTDIO_H_*/
0070