Вы на НеОфициальном сайте факультета ЭиП

На нашем портале ежедневно выкладываются материалы способные помочь студентам. Курсовые, шпаргалки, ответы и еще куча всего что может понадобиться в учебе!
Главная Контакты Карта сайта
 
Где мы?

Реклама


Программирование xiofile

Просмотров: 3126 Автор: Angel
#if !defined(__xiofile_h)
#define __xiofile_h

#include "xfile.h"

class DLL_EXP CxIOFile : public CxFile
 {
public:
 CxIOFile(FILE* fp = NULL)
 {
  m_fp = fp;
  m_bCloseFile = (bool)(fp==0);
 }

 ~CxIOFile()
 {
  Close();
 }
//////////////////////////////////////////////////////////
 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) return false;

  m_bCloseFile = true;

  return true;
 }
//////////////////////////////////////////////////////////
 virtual bool Close()
 {
  int iErr = 0;
  if ( (m_fp) && (m_bCloseFile) ){ 
  iErr = 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;
  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 || offset == -286392320) 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 (bool)(fflush(m_fp) == 0);
 }
//////////////////////////////////////////////////////////
 virtual bool Eof()
 {
  if (!m_fp) return true;
  return (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()
 {
  if (!m_fp) return EOF;
  return getc(m_fp);
 }
//////////////////////////////////////////////////////////
protected:
 FILE *m_fp;
 bool m_bCloseFile;
 };

#endif

Информация

Комментировать статьи на нашем сайте возможно только в течении 60 дней со дня публикации.

Популярные новости

Статистика сайта



Rambler's Top100



 
Copyright © НеОфициальный сайт факультета ЭиП