1*35238bceSAndroid Build Coastguard Worker #ifndef _DEFILE_H 2*35238bceSAndroid Build Coastguard Worker #define _DEFILE_H 3*35238bceSAndroid Build Coastguard Worker /*------------------------------------------------------------------------- 4*35238bceSAndroid Build Coastguard Worker * drawElements Utility Library 5*35238bceSAndroid Build Coastguard Worker * ---------------------------- 6*35238bceSAndroid Build Coastguard Worker * 7*35238bceSAndroid Build Coastguard Worker * Copyright 2014 The Android Open Source Project 8*35238bceSAndroid Build Coastguard Worker * 9*35238bceSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 10*35238bceSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 11*35238bceSAndroid Build Coastguard Worker * You may obtain a copy of the License at 12*35238bceSAndroid Build Coastguard Worker * 13*35238bceSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 14*35238bceSAndroid Build Coastguard Worker * 15*35238bceSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 16*35238bceSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 17*35238bceSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 18*35238bceSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 19*35238bceSAndroid Build Coastguard Worker * limitations under the License. 20*35238bceSAndroid Build Coastguard Worker * 21*35238bceSAndroid Build Coastguard Worker *//*! 22*35238bceSAndroid Build Coastguard Worker * \file 23*35238bceSAndroid Build Coastguard Worker * \brief File abstraction. 24*35238bceSAndroid Build Coastguard Worker *//*--------------------------------------------------------------------*/ 25*35238bceSAndroid Build Coastguard Worker 26*35238bceSAndroid Build Coastguard Worker #include "deDefs.h" 27*35238bceSAndroid Build Coastguard Worker 28*35238bceSAndroid Build Coastguard Worker DE_BEGIN_EXTERN_C 29*35238bceSAndroid Build Coastguard Worker 30*35238bceSAndroid Build Coastguard Worker /* File types. */ 31*35238bceSAndroid Build Coastguard Worker typedef struct deFile_s deFile; 32*35238bceSAndroid Build Coastguard Worker 33*35238bceSAndroid Build Coastguard Worker typedef enum deFileMode_e 34*35238bceSAndroid Build Coastguard Worker { 35*35238bceSAndroid Build Coastguard Worker DE_FILEMODE_READ = (1 << 0), /*!< Read access to file. */ 36*35238bceSAndroid Build Coastguard Worker DE_FILEMODE_WRITE = (1 << 2), /*!< Write access to file. */ 37*35238bceSAndroid Build Coastguard Worker DE_FILEMODE_CREATE = (1 << 3), /*!< Create file if it doesn't exist. Requires DE_FILEMODE_WRITE. */ 38*35238bceSAndroid Build Coastguard Worker DE_FILEMODE_OPEN = (1 << 4), /*!< Open file if it exists. */ 39*35238bceSAndroid Build Coastguard Worker DE_FILEMODE_TRUNCATE = (1 << 5) /*!< Truncate content of file. Requires DE_FILEMODE_OPEN. */ 40*35238bceSAndroid Build Coastguard Worker } deFileMode; 41*35238bceSAndroid Build Coastguard Worker 42*35238bceSAndroid Build Coastguard Worker typedef enum deFileFlag_e 43*35238bceSAndroid Build Coastguard Worker { 44*35238bceSAndroid Build Coastguard Worker DE_FILE_NONBLOCKING = (1 << 0), /*!< Set to non-blocking mode. Not supported on Win32! */ 45*35238bceSAndroid Build Coastguard Worker DE_FILE_CLOSE_ON_EXEC = (1 << 1) 46*35238bceSAndroid Build Coastguard Worker } deFileFlag; 47*35238bceSAndroid Build Coastguard Worker 48*35238bceSAndroid Build Coastguard Worker typedef enum deFileResult_e 49*35238bceSAndroid Build Coastguard Worker { 50*35238bceSAndroid Build Coastguard Worker DE_FILERESULT_SUCCESS = 0, 51*35238bceSAndroid Build Coastguard Worker DE_FILERESULT_END_OF_FILE = 1, 52*35238bceSAndroid Build Coastguard Worker DE_FILERESULT_WOULD_BLOCK = 2, 53*35238bceSAndroid Build Coastguard Worker DE_FILERESULT_ERROR = 3, 54*35238bceSAndroid Build Coastguard Worker 55*35238bceSAndroid Build Coastguard Worker DE_FILERESULT_LAST 56*35238bceSAndroid Build Coastguard Worker } deFileResult; 57*35238bceSAndroid Build Coastguard Worker 58*35238bceSAndroid Build Coastguard Worker typedef enum deFilePosition_e 59*35238bceSAndroid Build Coastguard Worker { 60*35238bceSAndroid Build Coastguard Worker DE_FILEPOSITION_BEGIN = 0, 61*35238bceSAndroid Build Coastguard Worker DE_FILEPOSITION_END = 1, 62*35238bceSAndroid Build Coastguard Worker DE_FILEPOSITION_CURRENT = 2, 63*35238bceSAndroid Build Coastguard Worker 64*35238bceSAndroid Build Coastguard Worker DE_FILEPOSITION_LAST 65*35238bceSAndroid Build Coastguard Worker } deFilePosition; 66*35238bceSAndroid Build Coastguard Worker 67*35238bceSAndroid Build Coastguard Worker /* File API. */ 68*35238bceSAndroid Build Coastguard Worker 69*35238bceSAndroid Build Coastguard Worker bool deFileExists(const char *filename); 70*35238bceSAndroid Build Coastguard Worker bool deDeleteFile(const char *filename); 71*35238bceSAndroid Build Coastguard Worker 72*35238bceSAndroid Build Coastguard Worker deFile *deFile_create(const char *filename, uint32_t mode); 73*35238bceSAndroid Build Coastguard Worker deFile *deFile_createFromHandle(uintptr_t handle); 74*35238bceSAndroid Build Coastguard Worker void deFile_destroy(deFile *file); 75*35238bceSAndroid Build Coastguard Worker 76*35238bceSAndroid Build Coastguard Worker bool deFile_setFlags(deFile *file, uint32_t flags); 77*35238bceSAndroid Build Coastguard Worker 78*35238bceSAndroid Build Coastguard Worker int64_t deFile_getPosition(const deFile *file); 79*35238bceSAndroid Build Coastguard Worker bool deFile_seek(deFile *file, deFilePosition base, int64_t offset); 80*35238bceSAndroid Build Coastguard Worker int64_t deFile_getSize(const deFile *file); 81*35238bceSAndroid Build Coastguard Worker 82*35238bceSAndroid Build Coastguard Worker deFileResult deFile_read(deFile *file, void *buf, int64_t bufSize, int64_t *numRead); 83*35238bceSAndroid Build Coastguard Worker deFileResult deFile_write(deFile *file, const void *buf, int64_t bufSize, int64_t *numWritten); 84*35238bceSAndroid Build Coastguard Worker 85*35238bceSAndroid Build Coastguard Worker DE_END_EXTERN_C 86*35238bceSAndroid Build Coastguard Worker 87*35238bceSAndroid Build Coastguard Worker #endif /* _DEFILE_H */ 88