diff options
Diffstat (limited to 'portable/include/PFileImpl.h')
-rw-r--r-- | portable/include/PFileImpl.h | 82 |
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 */ |