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

📄 file.h.svn-base

📁 moses开源的机器翻译系统
💻 SVN-BASE
字号:
// $Id$/* ---------------------------------------------------------------- *//* Copyright 2005 (c) by RWTH Aachen - Lehrstuhl fuer Informatik VI *//* Richard Zens                                                     *//* ---------------------------------------------------------------- */#ifndef FILE_H_#define FILE_H_#include <cstdio>#include <iostream>#include <vector>#include <cassert>#include "UserMessage.h"#include "TypeDef.h"#include "Util.h"#ifdef WIN32#define OFF_T __int64 #define FTELLO(file) _ftelli64(file)#define FSEEKO(file, offset, origin) _fseeki64(file, offset, origin)#else#define OFF_T off_t #define FTELLO(f) ftello(f)#define FSEEKO(file, offset, origin) fseeko(file, offset, origin)#endifstatic const OFF_T InvalidOffT=-1;//  WARNING://    these functions work only for bitwise read/write-able typestemplate<typename T> inline size_t fWrite(FILE* f,const T& t) {  if(fwrite(&t,sizeof(t),1,f)!=1) {    TRACE_ERR("ERROR:: fwrite!\n");abort();}  return sizeof(t);}template<typename T> inline void fRead(FILE* f,T& t)  {  if(fread(&t,sizeof(t),1,f)!=1) {TRACE_ERR("ERROR: fread!\n");abort();}}template<typename T> inline size_t fWrite(FILE* f,const T* b,const T* e) {  UINT32 s=std::distance(b,e);size_t rv=fWrite(f,s);  if(fwrite(b,sizeof(T),s,f)!=s) {TRACE_ERR("ERROR: fwrite!\n");abort();}  return rv+sizeof(T)*s;}template<typename T> inline size_t fWrite(FILE* f,const T b,const T e) {  UINT32 s=std::distance(b,e);size_t rv=fWrite(f,s);  if(fwrite(&(*b),sizeof(T),s,f)!=s) {TRACE_ERR("ERROR: fwrite!\n");abort();}  return rv+sizeof(T)*s;}template<typename C> inline size_t fWriteVector(FILE* f,const C& v) {  UINT32 s=v.size();  size_t rv=fWrite(f,s);  if(fwrite(&v[0],sizeof(typename C::value_type),s,f)!=s) {TRACE_ERR("ERROR: fwrite!\n");abort();}  return rv+sizeof(typename C::value_type)*s;}template<typename C> inline void fReadVector(FILE* f, C& v) {  UINT32 s;fRead(f,s);v.resize(s);  size_t r=fread(&(*v.begin()),sizeof(typename C::value_type),s,f);  if(r!=s) {    TRACE_ERR("ERROR: freadVec! "<<r<<" "<<s<<"\n");abort();}}inline OFF_T fTell(FILE* f) {return FTELLO(f);}inline void fSeek(FILE* f,OFF_T o) {  if(FSEEKO(f,o,SEEK_SET)<0) {    TRACE_ERR("ERROR: could not fseeko position "<<o<<"\n");    if(o==InvalidOffT) TRACE_ERR("You tried to seek for 'InvalidOffT'!\n");    abort();  }}inline FILE* fOpen(const char* fn,const char* m) {  if(FILE* f=fopen(fn,m)) 		return f; 	else {		assert(false);		UserMessage::Add(std::string("ERROR: could not open file ") + fn + " with mode " + m + "\n");		return NULL;	}}inline void fClose(FILE* f) {fclose(f);} // for consistent function names only#endif

⌨️ 快捷键说明

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