ARC SDK
DataHandle.h
1 // -*- indent-tabs-mode: nil -*-
2 
3 #ifndef __ARC_DATAHANDLE_H__
4 #define __ARC_DATAHANDLE_H__
5 
6 #include <arc/data/DataPoint.h>
7 
8 namespace Arc {
9 
10  class URL;
11  class UserConfig;
12 
14 
33  class DataHandle {
34  public:
36  DataHandle(const URL& url, const UserConfig& usercfg)
37  : p(getLoader().load(url, usercfg)) {}
40  if (p)
41  delete p;
42  }
45  return p;
46  }
48  const DataPoint* operator->() const {
49  return p;
50  }
53  return *p;
54  }
56  const DataPoint& operator*() const {
57  return *p;
58  }
60  bool operator!() const {
61  return !p;
62  }
64  operator bool() const {
65  return !!p;
66  }
68 
72  static DataPoint* GetPoint(const URL& url, const UserConfig& usercfg) {
73  return getLoader().load(url, usercfg);
74  }
75  private:
77  DataPoint *p;
79  static DataPointLoader& getLoader();
81  DataHandle(void);
84  DataHandle(const DataHandle&);
85  DataHandle& operator=(const DataHandle&);
86  };
87 
88 } // namespace Arc
89 
90 #endif // __ARC_DATAHANDLE_H__