00001 00009 #ifndef BS_CALC_PERF_DENSITY_BASE_H_ 00010 #define BS_CALC_PERF_DENSITY_BASE_H_ 00011 00012 00013 namespace blue_sky 00014 { 00015 00016 template <typename strategy_t> 00017 class calc_model; 00018 00019 template <typename strategy_t> 00020 class well; 00021 00027 template <typename strategy_t> 00028 class calc_perf_density_base : public objbase 00029 { 00030 public: 00031 00032 typedef typename strategy_t::index_t index_t; 00033 typedef typename strategy_t::item_t item_t; 00034 00035 typedef calc_model <strategy_t> calc_model_t; 00036 typedef well <strategy_t> well_t; 00037 00038 typedef smart_ptr <calc_model_t, true> sp_calc_model_t; 00039 typedef smart_ptr <well_t, true> sp_well_t; 00040 00041 public: 00045 virtual ~calc_perf_density_base () {} 00046 00052 virtual void 00053 calculate (sp_well_t &well, const sp_calc_model_t &calc_model) const = 0; 00054 }; 00055 00056 00057 } // namespace blue_sky 00058 00059 00060 #endif // #ifndef BS_CALC_PERF_DENSITY_BASE_H_ 00061