/home/coin/SVN-release/Bcp-1.2.1/Bcp/src/include/BCP_USER.hpp

Go to the documentation of this file.
00001 // Copyright (C) 2000, International Business Machines
00002 // Corporation and others.  All Rights Reserved.
00003 #ifndef _BCP_USER_H
00004 #define _BCP_USER_H
00005 
00006 // This file is prepared for doxygen.
00007 
00008 #include "CoinSmartPtr.hpp"
00009 #include "BCP_error.hpp"
00010 #include "BCP_message_single.hpp"
00011 #include "BCP_functions.hpp"
00012 
00013 class BCP_var_algo;
00014 class BCP_cut_algo;
00015 class BCP_warmstart;
00016 
00017 //#############################################################################
00018 
00019 class BCP_user_data : public Coin::ReferencedObject {
00020 public:
00021     virtual ~BCP_user_data() {}
00022 };
00023 
00024 //#############################################################################
00025 
00026 class BCP_user_class {
00027 public:
00028     virtual ~BCP_user_class() {}
00029 };
00030 
00031 //#############################################################################
00032 
00048 class BCP_user_pack {
00049 public:
00055     BCP_user_class* user_class;
00056 
00057 public:
00058     virtual ~BCP_user_pack() {}
00059 
00060     //-------------------------------------------------------------------------
00062     virtual void
00063     pack_warmstart(const BCP_warmstart* ws, BCP_buffer& buf,
00064                    bool report_if_default = false)
00065     {
00066         if (report_if_default) {
00067             printf("BCP_user_pack : default pack_warmstart() executed.\n");
00068         }
00069         BCP_pack_warmstart(ws, buf);
00070     }
00071 
00073     virtual BCP_warmstart*
00074     unpack_warmstart(BCP_buffer& buf,
00075                      bool report_if_default = false)
00076     {
00077         if (report_if_default) {
00078             printf("BCP_user_pack : default unpack_warmstart() executed.\n");
00079         }
00080         return BCP_unpack_warmstart(buf);
00081     }
00082     
00083     //-------------------------------------------------------------------------
00085     virtual void
00086     pack_var_algo(const BCP_var_algo* var, BCP_buffer& buf)
00087     {
00088         throw BCP_fatal_error("\
00089 BCP_user_pack::pack_var_algo() invoked but not overridden!\n");
00090     }
00091 
00093     virtual BCP_var_algo* unpack_var_algo(BCP_buffer& buf)
00094     {
00095         throw BCP_fatal_error("\
00096 BCP_user_pack::unpack_var_algo() invoked but not overridden!\n");
00097         return 0; // to satisfy aCC on HP-UX
00098     }
00099       
00100     //-------------------------------------------------------------------------
00102     virtual void pack_cut_algo(const BCP_cut_algo* cut, BCP_buffer& buf)
00103     {
00104         throw BCP_fatal_error("\
00105 BCP_user_pack::pack_cut_algo() invoked but not overridden!\n");
00106     }
00107 
00109     virtual BCP_cut_algo* unpack_cut_algo(BCP_buffer& buf)
00110     {
00111         throw BCP_fatal_error("\
00112 BCP_user_pack::unpack_cut_algo() invoked but not overridden!\n");
00113         return 0; // to satisfy aCC on HP-UX
00114     }
00115 
00116     //-------------------------------------------------------------------------
00118     virtual void
00119     pack_user_data(const BCP_user_data* ud, BCP_buffer& buf)
00120     {
00121         throw BCP_fatal_error("\
00122 BCP_user_pack::pack_user_data() invoked but not overridden!\n");
00123     }
00124 
00126     virtual BCP_user_data* unpack_user_data(BCP_buffer& buf)
00127     {
00128         throw BCP_fatal_error("\
00129 BCP_user_pack::unpack_user_data() invoked but not overridden!\n");
00130     }
00131 };
00132 
00133 //#############################################################################
00134 
00135 class BCP_tm_user;
00136 class BCP_ts_user;
00137 class BCP_lp_user;
00138 class BCP_vg_user;
00139 class BCP_cg_user;
00140 class BCP_vp_user;
00141 class BCP_cp_user;
00142 
00143 class BCP_tm_prob;
00144 class BCP_ts_prob;
00145 class BCP_lp_prob;
00146 class BCP_vg_prob;
00147 class BCP_cg_prob;
00148 class BCP_vp_prob;
00149 class BCP_cp_prob;
00150 
00151 class BCP_proc_id;
00152 class BCP_message_environment;
00153 
00160 class USER_initialize {
00161 public:
00165    virtual ~USER_initialize() {}
00168    //--------------------------------------------------------------------------
00175    virtual BCP_message_environment * msgenv_init(int argc, char* argv[]);
00178    //--------------------------------------------------------------------------
00186 
00187    virtual BCP_tm_user * tm_init(BCP_tm_prob& p,
00188                                  const int argnum,
00189                                  const char * const * arglist) {
00190       throw BCP_fatal_error("USER_initialize::tm_init() missing.\n");
00191       return 0; // to satisfy aCC on HP-UX
00192    }
00194    virtual BCP_ts_user * ts_init(BCP_ts_prob& p) {
00195      // If the user does not need any info in the TS for (un)packing
00196      // cuts/vars/user_data, then a NULL is fine
00197       return 0;
00198    }
00200    virtual BCP_lp_user * lp_init(BCP_lp_prob& p) {
00201       throw BCP_fatal_error("USER_initialize::lp_init() missing.\n");
00202       return 0; // to satisfy aCC on HP-UX
00203    }
00205    virtual BCP_vg_user * vg_init(BCP_vg_prob& p) {
00206       throw BCP_fatal_error("USER_initialize::vg_init() missing.\n");
00207       return 0; // to satisfy aCC on HP-UX
00208    }
00210    virtual BCP_cg_user * cg_init(BCP_cg_prob& p) {
00211       throw BCP_fatal_error("USER_initialize::cg_init() missing.\n");
00212       return 0; // to satisfy aCC on HP-UX
00213    }
00215    virtual BCP_vp_user * vp_init(BCP_vp_prob& p) {
00216       throw BCP_fatal_error("USER_initialize::vp_init() missing.\n");
00217       return 0; // to satisfy aCC on HP-UX
00218    }
00220    virtual BCP_cp_user * cp_init(BCP_cp_prob& p) {
00221       throw BCP_fatal_error("USER_initialize::cp_init() missing.\n");
00222       return 0; // to satisfy aCC on HP-UX
00223    }
00225    virtual BCP_user_pack* packer_init(BCP_user_class* p) {
00226        return NULL;
00227    }
00229 };
00230 
00231 //#############################################################################
00232 
00239 int bcp_main(int argc, char* argv[], USER_initialize* user_init);
00240 
00241 #endif

Generated on Thu Jan 15 03:00:59 2009 for coin-Bcp by  doxygen 1.4.7