#ifndef _DEFILE_H #define _DEFILE_H /*------------------------------------------------------------------------- * drawElements Utility Library * ---------------------------- * * Copyright 2014 The Android Open Source Project * * 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. * *//*! * \file * \brief File abstraction. *//*--------------------------------------------------------------------*/ #include "deDefs.h" DE_BEGIN_EXTERN_C /* File types. */ typedef struct deFile_s deFile; typedef enum deFileMode_e { DE_FILEMODE_READ = (1<<0), /*!< Read access to file. */ DE_FILEMODE_WRITE = (1<<2), /*!< Write access to file. */ DE_FILEMODE_CREATE = (1<<3), /*!< Create file if it doesn't exist. Requires DE_FILEMODE_WRITE. */ DE_FILEMODE_OPEN = (1<<4), /*!< Open file if it exists. */ DE_FILEMODE_TRUNCATE = (1<<5) /*!< Truncate content of file. Requires DE_FILEMODE_OPEN. */ } deFileMode; typedef enum deFileFlag_e { DE_FILE_NONBLOCKING = (1<<0), /*!< Set to non-blocking mode. Not supported on Win32! */ DE_FILE_CLOSE_ON_EXEC = (1<<1) } deFileFlag; typedef enum deFileResult_e { DE_FILERESULT_SUCCESS = 0, DE_FILERESULT_END_OF_FILE = 1, DE_FILERESULT_WOULD_BLOCK = 2, DE_FILERESULT_ERROR = 3, DE_FILERESULT_LAST } deFileResult; typedef enum deFilePosition_e { DE_FILEPOSITION_BEGIN = 0, DE_FILEPOSITION_END = 1, DE_FILEPOSITION_CURRENT = 2, DE_FILEPOSITION_LAST } deFilePosition; /* File API. */ deBool deFileExists (const char* filename); deBool deDeleteFile (const char* filename); deFile* deFile_create (const char* filename, deUint32 mode); deFile* deFile_createFromHandle (deUintptr handle); void deFile_destroy (deFile* file); deBool deFile_setFlags (deFile* file, deUint32 flags); deInt64 deFile_getPosition (const deFile* file); deBool deFile_seek (deFile* file, deFilePosition base, deInt64 offset); deInt64 deFile_getSize (const deFile* file); deFileResult deFile_read (deFile* file, void* buf, deInt64 bufSize, deInt64* numRead); deFileResult deFile_write (deFile* file, const void* buf, deInt64 bufSize, deInt64* numWritten); DE_END_EXTERN_C #endif /* _DEFILE_H */