|
|
|
|
/*********************************************************************
|
|
|
|
|
*<EFBFBD>ļ<EFBFBD>˵<EFBFBD><EFBFBD>: <EFBFBD>Ӷϵ籣<EFBFBD><EFBFBD>+<EFBFBD>汾У<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>д<EFBFBD>ӿ<EFBFBD>
|
|
|
|
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>: logos
|
|
|
|
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>: 2018/11/17
|
|
|
|
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>־: 2018/11/17 logos <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
*PS: <EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD>ӿڶ<EFBFBD><EFBFBD>ǵ<EFBFBD><EFBFBD>߳<EFBFBD>ִ<EFBFBD>У<EFBFBD><EFBFBD><EFBFBD><EFBFBD>̵߳<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
<EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҪΪ<EFBFBD>˷<EFBFBD>ֹ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>ʧԭ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>⣬Ч<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳAPI<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һЩ
|
|
|
|
|
open<EFBFBD>ļ<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD>˰汾<EFBFBD>ţ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD>У<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
***********************************************************************/
|
|
|
|
|
#pragma once
|
|
|
|
|
#ifndef DLL_INCLUDE_FILES_H
|
|
|
|
|
#define DLL_INCLUDE_FILES_H
|
|
|
|
|
|
|
|
|
|
#ifndef EXPORT_C
|
|
|
|
|
#define EXPORT_C extern "C"
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#ifndef WINAPI
|
|
|
|
|
#define WINAPI __stdcall
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#ifndef uint
|
|
|
|
|
#define uint unsigned int
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
class ifiles
|
|
|
|
|
{//<2F>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
public:
|
|
|
|
|
/****************************************************
|
|
|
|
|
*Function: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD> -- <EFBFBD><EFBFBD><EFBFBD>α<EFBFBD>Ĭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼλ<EFBFBD><EFBFBD>
|
|
|
|
|
*Intput: file <EFBFBD>ļ<EFBFBD>ȫ·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
version <EFBFBD>ļ<EFBFBD><EFBFBD>汾<EFBFBD>ţ<EFBFBD>Ĭ<EFBFBD><EFBFBD>Ϊ0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ð汾<EFBFBD><EFBFBD>У<EFBFBD><EFBFBD>
|
|
|
|
|
*Output: NULL
|
|
|
|
|
*Return: <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0 <EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD>ش<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
******************************************************/
|
|
|
|
|
virtual int Open(const char* file, int version = 0) = 0;
|
|
|
|
|
|
|
|
|
|
/****************************************************
|
|
|
|
|
*Function: <EFBFBD>ر<EFBFBD><EFBFBD>ļ<EFBFBD>,<EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD>ˢ<EFBFBD>µ<EFBFBD>Ӳ<EFBFBD><EFBFBD>
|
|
|
|
|
*Intput: NULL
|
|
|
|
|
*Output: NULL
|
|
|
|
|
*Return: <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>NULL
|
|
|
|
|
******************************************************/
|
|
|
|
|
virtual int Close() = 0;
|
|
|
|
|
|
|
|
|
|
/****************************************************
|
|
|
|
|
*Function: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*Intput: NULL
|
|
|
|
|
*Output: NULL
|
|
|
|
|
*Return: <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD>ش<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
******************************************************/
|
|
|
|
|
virtual int Clear() = 0;
|
|
|
|
|
|
|
|
|
|
/****************************************************
|
|
|
|
|
*Function: <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ǰ<EFBFBD>α<EFBFBD><EFBFBD><EFBFBD>С -- <EFBFBD><EFBFBD>ftell<EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD>÷<EFBFBD>ʽ
|
|
|
|
|
*Intput: NULL
|
|
|
|
|
*Output: NULL
|
|
|
|
|
*Return: <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>ǰ<EFBFBD>α<EFBFBD>λ<EFBFBD><EFBFBD>>=0<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD>ش<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><0
|
|
|
|
|
******************************************************/
|
|
|
|
|
virtual int Pos() = 0;
|
|
|
|
|
|
|
|
|
|
/****************************************************
|
|
|
|
|
*Function: <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ǰ<EFBFBD>ļ<EFBFBD>ʵ<EFBFBD>ʴ<EFBFBD>С
|
|
|
|
|
*Intput: NULL
|
|
|
|
|
*Output: NULL
|
|
|
|
|
*Return: <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ش<EFBFBD>С>=0<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD>ش<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><0
|
|
|
|
|
******************************************************/
|
|
|
|
|
virtual int Size() = 0;
|
|
|
|
|
|
|
|
|
|
/****************************************************
|
|
|
|
|
*Function: <EFBFBD>жϵ<EFBFBD>ǰ<EFBFBD>α<EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ĩβ -- <EFBFBD><EFBFBD>feof<EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD>÷<EFBFBD>ʽ
|
|
|
|
|
*Intput: NULL
|
|
|
|
|
*Output: NULL
|
|
|
|
|
*Return: <EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĩβ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0
|
|
|
|
|
******************************************************/
|
|
|
|
|
virtual int IsEof() = 0;
|
|
|
|
|
|
|
|
|
|
/****************************************************
|
|
|
|
|
*Function: <EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>ǰ<EFBFBD>α<EFBFBD>λ<EFBFBD><EFBFBD> -- <EFBFBD><EFBFBD>fseek<EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD>÷<EFBFBD>ʽ
|
|
|
|
|
*Intput: offset <EFBFBD><EFBFBD><EFBFBD><EFBFBD>_Origin<EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
_Origin SEEK_SET-<EFBFBD>ļ<EFBFBD>ͷ SEEK_END-<EFBFBD>ļ<EFBFBD>ĩβ SEEK_CUR-<EFBFBD><EFBFBD>ǰλ<EFBFBD><EFBFBD>
|
|
|
|
|
*Output: NULL
|
|
|
|
|
*Return: <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD>ش<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
******************************************************/
|
|
|
|
|
virtual int Seek(int offset, int _Origin) = 0;
|
|
|
|
|
|
|
|
|
|
/****************************************************
|
|
|
|
|
*Function: <EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>ǰ<EFBFBD>α<EFBFBD>λ<EFBFBD>õ<EFBFBD><EFBFBD>ڼ<EFBFBD><EFBFBD><EFBFBD>?
|
|
|
|
|
*Intput: nline <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼλ<EFBFBD>õڼ<EFBFBD><EFBFBD><EFBFBD>?
|
|
|
|
|
*Output: NULL
|
|
|
|
|
*Return: <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD>ش<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*PS: <EFBFBD>˽ӿڽ<EFBFBD><EFBFBD><EFBFBD>ascii<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>Ч
|
|
|
|
|
******************************************************/
|
|
|
|
|
virtual int SeekLine(int nline) = 0;
|
|
|
|
|
|
|
|
|
|
/****************************************************
|
|
|
|
|
*Function: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><EFBFBD>浽Ӳ<EFBFBD><EFBFBD> -- <EFBFBD><EFBFBD>fflush<EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD>÷<EFBFBD>ʽ
|
|
|
|
|
*Intput: NULL
|
|
|
|
|
*Output: NULL
|
|
|
|
|
*Return: <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD>ش<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
******************************************************/
|
|
|
|
|
virtual int Flush() = 0;
|
|
|
|
|
|
|
|
|
|
/****************************************************
|
|
|
|
|
*Function: <EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>ȡһ<EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD> -- <EFBFBD><EFBFBD>fgets<EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD>÷<EFBFBD>ʽ
|
|
|
|
|
*Intput: psz <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
maxcnt ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>Ĵ<EFBFBD>С
|
|
|
|
|
*Output: NULL
|
|
|
|
|
*Return: <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ض<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽڳ<EFBFBD><EFBFBD>ȣ<EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD>ش<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><=0
|
|
|
|
|
*PS: <EFBFBD><EFBFBD><EFBFBD><EFBFBD>\r\n\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|
|
|
|
******************************************************/
|
|
|
|
|
virtual int Reads(char* psz, uint maxcnt) = 0;
|
|
|
|
|
|
|
|
|
|
/****************************************************
|
|
|
|
|
*Function: д<EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD> -- <EFBFBD><EFBFBD>fputs<EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD>÷<EFBFBD>ʽ
|
|
|
|
|
*Intput: psz <EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*Output: NULL
|
|
|
|
|
*Return: <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD>ش<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><0
|
|
|
|
|
*PS: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD>д<EFBFBD><EFBFBD>\r\n
|
|
|
|
|
******************************************************/
|
|
|
|
|
virtual int Writes(const char* psz) = 0;
|
|
|
|
|
|
|
|
|
|
/****************************************************
|
|
|
|
|
*Function: <EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> -- <EFBFBD><EFBFBD>fread<EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD>÷<EFBFBD>ʽ
|
|
|
|
|
*Intput: psz <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
maxcnt ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>Ĵ<EFBFBD>С
|
|
|
|
|
*Output: NULL
|
|
|
|
|
*Return: <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ض<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽڳ<EFBFBD><EFBFBD>ȣ<EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD>ش<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><=0
|
|
|
|
|
******************************************************/
|
|
|
|
|
virtual int Read(void* psz, uint maxcnt) = 0;
|
|
|
|
|
|
|
|
|
|
/****************************************************
|
|
|
|
|
*Function: д<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><EFBFBD>ļ<EFBFBD> -- <EFBFBD><EFBFBD>fwrite<EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD>÷<EFBFBD>ʽ
|
|
|
|
|
*Intput: psz <EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD>
|
|
|
|
|
ncnt <EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
|
|
|
|
|
*Output: NULL
|
|
|
|
|
*Return: <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD>ش<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><0
|
|
|
|
|
******************************************************/
|
|
|
|
|
virtual int Write(const void* psz, uint ncnt) = 0;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
|
|
|
|
|
EXPORT_C int WINAPI ifiles_open(ifiles* p, const char* file, int version = 0);
|
|
|
|
|
EXPORT_C int WINAPI ifiles_close(ifiles* p);
|
|
|
|
|
EXPORT_C int WINAPI ifiles_clear(ifiles* p);
|
|
|
|
|
EXPORT_C int WINAPI ifiles_pos(ifiles* p);
|
|
|
|
|
EXPORT_C int WINAPI ifiles_size(ifiles* p);
|
|
|
|
|
EXPORT_C int WINAPI ifiles_iseof(ifiles* p);
|
|
|
|
|
EXPORT_C int WINAPI ifiles_flush(ifiles* p);
|
|
|
|
|
EXPORT_C int WINAPI ifiles_seek(ifiles* p, int offset, int _origin);
|
|
|
|
|
EXPORT_C int WINAPI ifiles_seek_line(ifiles* p, int nline);
|
|
|
|
|
EXPORT_C int WINAPI ifiles_reads(ifiles* p, char* psz, uint maxcnt);
|
|
|
|
|
EXPORT_C int WINAPI ifiles_writes(ifiles* p, const char* psz);
|
|
|
|
|
EXPORT_C int WINAPI ifiles_read(ifiles* p, void* psz, uint maxcnt);
|
|
|
|
|
EXPORT_C int WINAPI ifiles_write(ifiles* p, const void* psz, uint ncnt);
|
|
|
|
|
|
|
|
|
|
/****************************************************
|
|
|
|
|
*Function: <EFBFBD><EFBFBD><EFBFBD><EFBFBD>file<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*Intput: NULL
|
|
|
|
|
*Output: h file<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
|
|
|
|
|
*Return: <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0 <EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD>ش<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
******************************************************/
|
|
|
|
|
EXPORT_C int WINAPI CreateFiles(ifiles** h);
|
|
|
|
|
|
|
|
|
|
/****************************************************
|
|
|
|
|
*Function: <EFBFBD>ͷ<EFBFBD>file<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*Intput: NULL
|
|
|
|
|
*Output: h file<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
|
|
|
|
|
*Return: <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0 <EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD>ش<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
******************************************************/
|
|
|
|
|
EXPORT_C int WINAPI ReleaseFiles(ifiles** h);
|
|
|
|
|
|
|
|
|
|
#endif //<2F><>ֹ<EFBFBD>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ļ<EFBFBD>
|