⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xiofile.h

📁 君正早期ucos系统(只有早期的才不没有打包成库),MPLAYER,文件系统,图片解码,浏览,电子书,录音,想学ucos,识货的人就下吧 russblock fmradio explore set
💻 H
字号:
#if !defined(__xiofile_h)
#define __xiofile_h
#include "xfile.h"
#if CXIMAGE_SUPPORT_UCOS
#include "ucfsdef.h"
#endif

class DLL_EXP CxIOFile : public CxFile
	{
protected:
	unsigned char cbuf[512];
	unsigned short curlen;
  unsigned short bufpos;
  unsigned int curpos;
public:
	CxIOFile()
	{
	
	}
	CxIOFile(FILE* fp = NULL)
	{
		m_fp = fp;
		m_bCloseFile = (bool)(fp==0);
	}

	~CxIOFile()
	{
		fclose(m_fp);
	}
//////////////////////////////////////////////////////////
	bool Open(const char *filename, const char *mode)
	{
		if (m_fp) return false;	// Can't re-open without closing first
                
		m_fp = fopen(filename, mode);
		if (!m_fp)
                { 
                    printf(" sorry ! Can not open this file \n"); 
                    return false;
                }
		m_bCloseFile = true;
	  curlen = 0; 	
	  curpos = (unsigned int)-1;
		return true;
	}
//////////////////////////////////////////////////////////
	virtual bool Close()
	{
		int iErr = 0;
		if ( (m_fp) && (m_bCloseFile) ){ 
			fclose(m_fp);
			m_fp = NULL;
		}
		return (bool)(iErr==0);
	}
//////////////////////////////////////////////////////////
	virtual size_t	Read(void *buffer, size_t size, size_t count)
	{
		if (!m_fp) return 0;
		
		curpos =(unsigned int) -1;
		return fread(buffer, size, count, m_fp);
	}
//////////////////////////////////////////////////////////
	virtual size_t	Write(const void *buffer, size_t size, size_t count)
	{
		if (!m_fp) return 0;
		return fwrite(buffer, size, count, m_fp);
	}
//////////////////////////////////////////////////////////
	virtual bool Seek(long offset, int origin)
	{
		if (!m_fp) return false;
		return (bool)(fseek(m_fp, offset, origin) == 0);
	}
//////////////////////////////////////////////////////////
	virtual long Tell()
	{
		if (!m_fp) return 0;
		
		return ftell(m_fp);
	}
//////////////////////////////////////////////////////////
	virtual long	Size()
	{
		if (!m_fp) return -1;
		long pos,size;
		pos = ftell(m_fp);
		fseek(m_fp, 0, SEEK_END);
		size = ftell(m_fp);
		fseek(m_fp, pos,SEEK_SET);
		
		return size;
	}
//////////////////////////////////////////////////////////
	virtual bool	Flush()
	{
		//if (!m_fp) return false;
		return 1;//(bool)(fflush(m_fp) == 0);
	}
//////////////////////////////////////////////////////////
	virtual bool	Eof()
	{
		if (!m_fp) return true;
		
		return 1;//(bool)(feof(m_fp) != 0);
	}
//////////////////////////////////////////////////////////
	virtual long	Error()
	{
		if (!m_fp) return -1;
		
		return ferror(m_fp);
	}
//////////////////////////////////////////////////////////
	virtual bool PutC(unsigned char c)
	{
		//if (!m_fp) return false;
		//return (bool)(fputc(c, m_fp) == c);
	}
//////////////////////////////////////////////////////////
	virtual long	GetC()
	{
		unsigned int ret; 
		//printf("no getC!\n");
		/*
		unsigned int pos;
	
		if (!m_fp) return EOF;
		pos = ftell(m_fp);
		
		if(curpos != pos)
		{
			curpos = pos;
			ret = fread(cbuf, 1, 512, m_fp);
			if(ret == 0)
				return EOF;
			curlen = ret;
			bufpos = curpos % 512;
		} 
		ret = cbuf[bufpos++];
		*/
		if(fread(&ret, 1, 1, m_fp) == 0)
			return EOF;
		return ret;
	}
//////////////////////////////////////////////////////////
protected:
	FILE *m_fp;
	bool m_bCloseFile;
	
///////////////////////////////////////////////////////////	
};

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -