ScopedStdioHandle

class ScopedStdioHandle {

 public:

  ScopedStdioHandle()

      : handle_(NULL) { }

 

  explicit ScopedStdioHandle(FILE* handle)

      : handle_(handle) { }

 

  ~ScopedStdioHandle() {

    Close();

  }

 

  void Close() {

    if (handle_) {

      fclose(handle_);

      handle_ = NULL;

    }

  }

 

  FILE* get() const { return handle_; }

 

  FILE* Take() {

    FILE* temp = handle_;

    handle_ = NULL;

    return temp;

  }

 

  void Set(FILE* newhandle) {

    Close();

    handle_ = newhandle;

  }

 

 private:

  FILE* handle_;

 

  DISALLOW_EVIL_CONSTRUCTORS(ScopedStdioHandle);

};

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章