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

📄 fileptr.h.svn-base

📁 moses开源的机器翻译系统
💻 SVN-BASE
字号:
// $Id$/* ---------------------------------------------------------------- *//* Copyright 2005 (c) by RWTH Aachen - Lehrstuhl fuer Informatik VI *//* Richard Zens                                                     *//* ---------------------------------------------------------------- */#ifndef FILEPTR_H_#define FILEPTR_H_#include "File.h"// smart pointer for on-demand loading from file// requirement: T has a constructor T(FILE*)template<typename T> class FilePtr {public:  typedef T* Ptr;private:  FILE* f;  OFF_T pos;  mutable Ptr t;public:  FilePtr(FILE* f_=0,OFF_T p=0) : f(f_),pos(p),t(0) {}  ~FilePtr() {}  void set(FILE* f_,OFF_T p) {f=f_;pos=p;}  void free() {delete t;  t=0;}  T& operator* () {load();return *t;}  Ptr operator->() {load();return t;}  operator Ptr () {load();return t;}  const T& operator* () const {load();return *t;}  const Ptr operator->() const {load();return t;}  operator const Ptr  () const {load();return t;}  // direct access to pointer, use with care!  Ptr getPtr() {return t;}  const Ptr getPtr() const {return t;}  operator bool() const {return (f && pos!=InvalidOffT);}  void load() const {    if(t) return;    if(f && pos!=InvalidOffT) {fSeek(f,pos); t=new T(f);}  }};#endif

⌨️ 快捷键说明

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