You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
88 lines
2.6 KiB
88 lines
2.6 KiB
4 months ago
|
#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 */
|