#ifndef PROLOGPARSE_HH #define PROLOGPARSE_HH #include #include #include #include #include #include class prologparse{ private: std::vector gEvents; void unstack(int element){ gEvents.push_back(Mk_Integer(element)); } void unstack(const char* element){ gEvents.push_back(Mk_String(element)); } void unstack(std::string element){ gEvents.push_back(Mk_String(const_cast(element.c_str()))); } void unstack(float element){ gEvents.push_back(Mk_Float(element)); } template void unstack(int element,Values... elements){ gEvents.push_back(Mk_Integer(element)); unstack(elements...); } template void unstack(const char* element,Values... elements){ gEvents.push_back(Mk_String(element)); unstack(elements...); } template void unstack(std::string element,Values... elements){ gEvents.push_back(Mk_String(const_cast(element.c_str()))); unstack(elements...); } template void unstack(float element,Values... elements){ gEvents.push_back(Mk_Float(element)); unstack(elements...); } public: /** \brief Void constructor * * add desc * */ prologparse(){ //std::cout<<"lol"<(name.c_str())); Pl_Query_Begin(PL_FALSE); std::cout< int rule(std::string name,Value val,Values... vals){ Pl_Reset_Prolog (); unstack(val,vals...); //gEvents.push_back(Mk_Variable()); PlTerm* plt=&gEvents[0]; //std::cout<(name.c_str())); //std::cout< void process_one_type(){ std::cout< void unpack(){ int _[]={0,(process_one_type(),0)...}; (void)_; std::cout<