summaryrefslogtreecommitdiff
path: root/portable/include/pstream.h
diff options
context:
space:
mode:
Diffstat (limited to 'portable/include/pstream.h')
-rw-r--r--portable/include/pstream.h105
1 files changed, 105 insertions, 0 deletions
diff --git a/portable/include/pstream.h b/portable/include/pstream.h
new file mode 100644
index 0000000..7678640
--- /dev/null
+++ b/portable/include/pstream.h
@@ -0,0 +1,105 @@
+/*---------------------------------------------------------------------------*
+ * pstream.h *
+ * *
+ * Copyright 2007, 2008 Nuance Communciations, Inc. *
+ * *
+ * Licensed under the Apache License, Version 2.0 (the 'License'); *
+ * you may not use this file except in compliance with the License. *
+ * *
+ * You may obtain a copy of the License at *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, software *
+ * distributed under the License is distributed on an 'AS IS' BASIS, *
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
+ * See the License for the specific language governing permissions and *
+ * limitations under the License. *
+ * *
+ *---------------------------------------------------------------------------*/
+
+
+
+#ifndef _PORTSTREAM_H_
+#define _PORTSTREAM_H_
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+#include <stdio.h>
+#include "ptypes.h"
+
+#ifdef PFILE_VIRTUAL_SUPPORT
+
+ struct FileBufferFrame;
+ typedef struct PORT_FILE_HANDLE
+ {
+ const char *filename;
+ struct FileBufferFrame *startFrame;
+ struct FileBufferFrame *endFrame;
+ struct FileBufferFrame *curFrame; /* current buffer; useful for writable file */
+ const unsigned char *curPos;
+ const unsigned char *endPos;
+ unsigned int size; /* total buffer size; useful for writable file */
+ unsigned int frame_size; /* buffer size in current frame; useful for writable file */
+ int eof;
+ int mode; /* 0 readonly text; 1 readonly binary; 2 writable text; 3 writalbe binary */
+ }
+ PORT_FILE_HANDLE;
+
+ typedef PORT_FILE_HANDLE* PORT_FILE;
+
+ typedef struct _FileRecord
+ {
+ char name[80];
+ unsigned char *start;
+ int end; /* offset of the end of the file */
+ int size; /* total buffer size */
+ int mode;
+ }
+ FileRecord;
+
+ typedef struct VirtualFileTable_t
+ {
+ const FileRecord* pFileTable;
+ const unsigned char* pFirstFile;
+ }
+ VirtualFileTable;
+
+ /* Function prototypes */
+ PORTABLE_API void PortFileInit(void);
+ PORTABLE_API PORT_FILE PortFopen(const char* filename, const char* mode);
+ PORTABLE_API int PortFclose(PORT_FILE PortFile);
+ PORTABLE_API size_t PortFread(void* buffer, size_t size, size_t count, PORT_FILE PortFile);
+ PORTABLE_API size_t PortFwrite(const void* buffer, size_t size, size_t count, PORT_FILE PortFile);
+ PORTABLE_API int PortFseek(PORT_FILE PortFile, long offset, int origin);
+ PORTABLE_API long PortFtell(PORT_FILE PortFile);
+ PORTABLE_API int PortFprintf(PORT_FILE PortFile, const char* format, ...);
+ PORTABLE_API char* PortFgets(char* string, int n, PORT_FILE PortFile);
+ PORTABLE_API int PortFflush(PORT_FILE PortFile);
+ PORTABLE_API int PortFeof(PORT_FILE PortFile);
+ PORTABLE_API int PortFgetc(PORT_FILE PortFile);
+ PORTABLE_API int PortFscanf(PORT_FILE PortFile, const char *format, ...);
+ PORTABLE_API int PortFerror(PORT_FILE PortFile);
+ PORTABLE_API void PortClearerr(PORT_FILE PortFile);
+ PORTABLE_API void PortRewind(PORT_FILE PortFile);
+ PORTABLE_API PORT_FILE PortFreopen(const char *path, const char *mode, PORT_FILE PortFile);
+ PORTABLE_API char* PortGetcwd(char *buffer, int maxlen);
+ PORTABLE_API int PortMkdir(const char *dirname);
+
+ /* this function is to create a file with the limit size */
+ PORTABLE_API int PortFcreate(const char *fname, void *pBuffer, int size);
+ PORTABLE_API void PortFdelete(const char *fname);
+
+ PORTABLE_API void PortSetFileTable(const FileRecord* pFileTable, const unsigned char* pFirstFile);
+
+ void SetFileTable(VirtualFileTable *table);
+
+#endif /* #ifdef PFILE_VIRTUAL_SUPPORT */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PORTSTREAM_H */