mirror of
https://github.com/pret/pokeplatinum.git
synced 2026-03-21 17:55:13 -05:00
182 lines
3.5 KiB
C
182 lines
3.5 KiB
C
#ifndef _MSL_FILE_STRUC_H
|
|
#define _MSL_FILE_STRUC_H
|
|
|
|
#include <size_t.h>
|
|
|
|
#if _MSL_WIDE_CHAR
|
|
#include <wchar_t.h>
|
|
#endif
|
|
|
|
#ifndef RC_INVOKED
|
|
|
|
#pragma options align=native
|
|
#pragma warn_padding off
|
|
|
|
_MSL_BEGIN_NAMESPACE_STD
|
|
_MSL_BEGIN_EXTERN_C
|
|
|
|
enum __file_kinds {
|
|
__closed_file,
|
|
__disk_file,
|
|
__console_file,
|
|
__unavailable_file
|
|
};
|
|
|
|
enum __open_modes {
|
|
__must_exist,
|
|
__create_if_necessary,
|
|
__create_or_truncate
|
|
};
|
|
|
|
#if _MSL_WIDE_CHAR
|
|
enum __file_orientation {
|
|
__unoriented,
|
|
__char_oriented,
|
|
__wide_oriented
|
|
};
|
|
#endif
|
|
|
|
enum __io_modes {
|
|
__read = 1,
|
|
__write = 2,
|
|
__read_write = 3,
|
|
__append = 4
|
|
};
|
|
|
|
typedef struct {
|
|
unsigned int open_mode : 2;
|
|
unsigned int io_mode : 3;
|
|
unsigned int buffer_mode : 2;
|
|
unsigned int file_kind : 3;
|
|
|
|
#if _MSL_WIDE_CHAR
|
|
unsigned int file_orientation : 2;
|
|
#endif
|
|
|
|
unsigned int binary_io : 1;
|
|
} __file_modes;
|
|
|
|
enum __io_states {
|
|
__neutral,
|
|
__writing,
|
|
__reading,
|
|
__rereading
|
|
};
|
|
|
|
typedef struct {
|
|
unsigned int io_state : 3;
|
|
unsigned int free_buffer : 1;
|
|
unsigned char eof;
|
|
unsigned char error;
|
|
} __file_state;
|
|
|
|
typedef unsigned long __file_handle;
|
|
|
|
typedef unsigned long fpos_t;
|
|
|
|
typedef struct _FILE FILE;
|
|
|
|
enum __io_results {
|
|
__no_io_error,
|
|
__io_error,
|
|
__io_EOF
|
|
};
|
|
|
|
typedef void * __ref_con;
|
|
typedef void (* __idle_proc) (void);
|
|
typedef int (* __pos_proc) (__file_handle file, fpos_t * position, int mode, __ref_con ref_con);
|
|
typedef int (* __io_proc) (__file_handle file, unsigned char * buff, size_t * count, __ref_con ref_con);
|
|
typedef int (* __close_proc) (__file_handle file);
|
|
|
|
#define __ungetc_buffer_size 2
|
|
|
|
struct _FILE {
|
|
__file_handle handle;
|
|
__file_modes mode;
|
|
__file_state state;
|
|
|
|
#if _MSL_OS_DISK_FILE_SUPPORT
|
|
unsigned char is_dynamically_allocated;
|
|
#endif
|
|
|
|
unsigned char char_buffer;
|
|
unsigned char char_buffer_overflow;
|
|
unsigned char ungetc_buffer[__ungetc_buffer_size];
|
|
|
|
#if _MSL_WIDE_CHAR
|
|
wchar_t ungetwc_buffer[__ungetc_buffer_size];
|
|
#endif
|
|
|
|
unsigned long position;
|
|
unsigned char * buffer;
|
|
unsigned long buffer_size;
|
|
unsigned char * buffer_ptr;
|
|
unsigned long buffer_len;
|
|
unsigned long buffer_alignment;
|
|
unsigned long saved_buffer_len;
|
|
unsigned long buffer_pos;
|
|
__pos_proc position_proc;
|
|
__io_proc read_proc;
|
|
__io_proc write_proc;
|
|
__close_proc close_proc;
|
|
__ref_con ref_con;
|
|
|
|
#if _MSL_OS_DISK_FILE_SUPPORT
|
|
struct _FILE * next_file_struct;
|
|
#endif
|
|
};
|
|
|
|
#define _IONBF 0
|
|
#define _IOLBF 1
|
|
#define _IOFBF 2
|
|
|
|
#ifndef _MSL_BUFSIZ
|
|
#define _MSL_BUFSIZ 4096
|
|
#endif
|
|
|
|
#define BUFSIZ _MSL_BUFSIZ
|
|
|
|
#if !_MSL_OS_DISK_FILE_SUPPORT
|
|
#if !_MSL_CONSOLE_SUPPORT
|
|
#define FOPEN_MAX 0
|
|
#else
|
|
#define FOPEN_MAX 3
|
|
#endif
|
|
#define _STATIC_FILES 3
|
|
#else
|
|
#define FOPEN_MAX 35
|
|
#define _STATIC_FILES 4
|
|
#endif
|
|
|
|
#define _MSL_FILENAME_MAX 256
|
|
|
|
#define FILENAME_MAX _MSL_FILENAME_MAX
|
|
|
|
#define L_tmpnam _MSL_FILENAME_MAX
|
|
#define TMP_MAX 32767
|
|
|
|
#if defined(__STDC_WANT_SECURE_LIB__) && __STDC_WANT_SECURE_LIB__
|
|
#define L_tmpnam_s _MSL_FILENAME_MAX
|
|
#define TMP_MAX_S 32767
|
|
#endif
|
|
|
|
#define SEEK_SET 0
|
|
#define SEEK_CUR 1
|
|
#define SEEK_END 2
|
|
|
|
#define stdin (&__std(__files[0]))
|
|
#define stdout (&__std(__files[1]))
|
|
#define stderr (&__std(__files[2]))
|
|
|
|
extern _MSL_IMP_EXP_C FILE __files[];
|
|
|
|
_MSL_END_EXTERN_C
|
|
_MSL_END_NAMESPACE_STD
|
|
|
|
#pragma warn_padding reset
|
|
#pragma options align=reset
|
|
|
|
#endif
|
|
|
|
#endif
|