#ifndef LIBINTERFACE_H #define LIBINTERFACE_H #include "browse.h" #include "queryinfo.h" #include "mgsearch.h" #include "display.h" #include "gdbmclass.h" #ifdef __GNUG__ # include # include #else # ifndef USE_OBJECTSPACE # include # else # include # include # endif #endif #include "cgiargs.h" // This is the precedence given to various parameters // by the display class - note that at present language // is excluded but will be required for multi-language // collections #define MACROPRECEDENCE "style,collection,queryversion,version" // errors related to this module #define LI_NOERROR 0 #define LI_LOADDATABASEFAILED 1 class libinterface { public: libinterface (); virtual ~libinterface() {} // setgsdlhome will set the macros, gdbm, index, and text homes void setgsdlhome (const text_t &thegsdlhome); void setmacroshome (const text_t &themacroshome); void setgdbmhome (const text_t &thegdbmhome); void setindexhome (const text_t &theindexhome); void sethttpprefix (const text_t &thehttpprefix); void setgwcgi (const text_t &thegwcgi); // init should be called after the various homes are set, // it returns 'false' on failure and 'true' on success bool init (); // examine the cgi arguments and create the appropriate page, // outputing the page to textout and any debug information to logout // // returns LI_NOERROR on success, LI_LOADDATABASEFAILED on failure virtual int getpage (const text_t &argstr, ostream &textout, ostream &logout); // returns the compressed arguments for the last getpage const text_t &getlastcomparg() {return lastcomparg;} protected: text_t gsdlhome; text_t macroshome; text_t gdbmhome; text_t indexhome; text_t books; text_t hrefs; text_t titles; vector bookarr; vector hrefarr; vector titlearr; int numbooks; text_t default_index; text_t httpprefix; text_t gwcgi; text_t quotedstring; text_t lastcomparg; gdbmclass gdbm; outconvertclass text_t2ascii; displayclass disp; browseclass *browse; mgsearchclass search; virtual void get_arg_config (text_t &argconfigstr); text_t::iterator get_next_config_arg (text_t::iterator first, text_t::iterator last, text_t &argname, text_t &defaultvalue, bool &longarg); virtual text_t get_compressed_args (cgiargsclass &args); virtual void expand_compressed_args (cgiargsclass &args); virtual void add_default_args (cgiargsclass &args); virtual void check_args (cgiargsclass &args); virtual void define_general_macros (cgiargsclass &args, ostream &logout); virtual void prepare_page (cgiargsclass &args, ostream &logout); virtual void set_query_params (cgiargsclass &args, queryparamclass &queryparams); virtual void define_query_macros (cgiargsclass &args, queryparamclass &queryparams, queryresultsclass &queryresults, ostream &logout); virtual void docLinks (cgiargsclass &args, queryresultsclass &queryresults, ostream &logout); virtual int query_action (cgiargsclass &args, ostream &textout, ostream &logout); virtual void browse_action (cgiargsclass &args, ostream &textout, ostream &logout); virtual void document_action (cgiargsclass &args, ostream &textout, ostream &logout); virtual void page_action (cgiargsclass &args, ostream &textout, ostream &logout); virtual void auxiliary_action (cgiargsclass &args, ostream &textout, ostream &logout); virtual void displayresults (cgiargsclass &args, ostream &textout, ostream &logout, queryresultsclass &queryresults); virtual void define_pref_macros (cgiargsclass &args, ostream &logout); virtual int do_query(cgiargsclass &args, queryparamclass &queryparams, queryresultsclass &queryresults, ostream &logout); virtual void highlighttext(vector &termvars, ostream &textout, ostream &logout, text_t &text); void libinterface::format_querystring (text_t &querystring); virtual void set_default_index(void) {} virtual text_t get_collection_name(void) {return "";} virtual void assemble_index (cgiargsclass &args, text_t &index) {} virtual void define_collection_macros (cgiargsclass &args, ostream &logout) {} virtual bool collection_init(const text_t &collection) {return true;} virtual void displaydocsummary (cgiargsclass &args, ostream &textout, ostream &logout, queryresultsclass &queryresults, int resultnum) {} }; #endif