00001 #ifndef LUX_API_ENGINE_H 00002 #define LUX_API_ENGINE_H 00003 00004 #include "lux/lux.h" 00005 #ifdef HAVE_TR1_MEMORY 00006 #include <tr1/memory> 00007 #elif HAVE_BOOST_SHARED_PTR_HPP 00008 #include <boost/shared_ptr.hpp> 00009 #endif 00010 00011 namespace Lux { 00012 00013 class SearchIndex; 00014 struct EngineImpl; 00015 namespace Config { class Document; } 00016 00020 class Engine { 00021 00022 public: 00027 Engine(Config::Document &doc_config); 00031 ~Engine(); 00037 bool open(std::string dir, db_flags_t oflags); 00041 bool close(void); 00045 bool is_opened; 00049 db_flags_t oflags_; 00050 00051 #ifdef HAVE_TR1_MEMORY 00052 std::tr1::shared_ptr<EngineImpl> pimpl_; 00053 #elif HAVE_BOOST_SHARED_PTR_HPP 00054 boost::shared_ptr<EngineImpl> pimpl_; 00055 #endif 00056 }; 00057 } 00058 00059 #endif