summaryrefslogtreecommitdiff
path: root/portable/include/PFileImpl.h
diff options
context:
space:
mode:
Diffstat (limited to 'portable/include/PFileImpl.h')
-rw-r--r--portable/include/PFileImpl.h82
1 files changed, 82 insertions, 0 deletions
diff --git a/portable/include/PFileImpl.h b/portable/include/PFileImpl.h
new file mode 100644
index 0000000..8e50514
--- /dev/null
+++ b/portable/include/PFileImpl.h
@@ -0,0 +1,82 @@
+/*---------------------------------------------------------------------------*
+ * PFileImpl.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 __PFILEIMPL_H
+#define __PFILEIMPL_H
+
+
+
+#include "PFile.h"
+#include "ptrd.h"
+
+/**
+ * Portable file implementation.
+ */
+typedef struct PFileImpl_t
+{
+ /**
+ * Interface functions that must be implemented.
+ */
+ PFile Interface;
+
+ /**
+ * File name relative to the file-system path.
+ */
+ LCHAR* filename;
+
+ /**
+ * True if file is in little endian format.
+ */
+ ESR_BOOL littleEndian;
+
+#ifdef USE_THREAD
+ /**
+ * Used to lock underlying file and provide atomic read/write operations.
+ */
+ PtrdMonitor* lock;
+#endif
+}
+PFileImpl;
+
+/**
+ * Initializes variables declared in the superinterface.
+ *
+ * @param self PFile handle
+ * @param filename Name of the file
+ * @param littleEndian True if file is little-endian
+ * @return ESR_OUT_OF_MEMORY if system is out of memory
+ */
+PORTABLE_API ESR_ReturnCode PFileCreateImpl(PFile* self, const LCHAR* filename, ESR_BOOL littleEndian);
+
+/**
+ * Default implementation.
+ */
+PORTABLE_API ESR_ReturnCode PFileDestroyImpl(PFile* self);
+
+/**
+ * Default implementation.
+ */
+PORTABLE_API ESR_ReturnCode PFileGetFilenameImpl(PFile* self, LCHAR* filename, size_t* len);
+
+/**
+ * Default implementation.
+ */
+PORTABLE_API ESR_ReturnCode PFileVfprintfImpl(PFile* self, int* result, const LCHAR* format, va_list args);
+
+#endif /* __PFILEIMPL_H */