00001 // Last edit: 5/20/07 00002 // 00003 // Name: BB_packer.hpp 00004 // Author: Francois Margot 00005 // Tepper School of Business 00006 // Carnegie Mellon University, Pittsburgh, PA 15213 00007 // email: fmargot@andrew.cmu.edu 00008 // Date: 5/18/07 00009 //----------------------------------------------------------------------------- 00010 // Copyright (C) 2007, Francois Margot, IBM and others. All Rights Reserved. 00011 00012 #ifndef _BB_PACKER_H 00013 #define _BB_PACKER_H 00014 00015 #include "BCP_USER.hpp" 00016 00017 class BCP_buffer; 00018 class BB_user_data; 00019 00022 class BB_packer : public BCP_user_pack { 00023 public: 00024 00025 //------------------------------------------------------------------------- 00027 virtual void 00028 pack_warmstart(const BCP_warmstart* ws, BCP_buffer& buf, 00029 bool report_if_default = false) 00030 { 00031 if (report_if_default) { 00032 printf("BCP_user_pack : default pack_warmstart() executed.\n"); 00033 } 00034 BCP_pack_warmstart(ws, buf); 00035 } 00036 00038 virtual BCP_warmstart* 00039 unpack_warmstart(BCP_buffer& buf, 00040 bool report_if_default = false) 00041 { 00042 if (report_if_default) { 00043 printf("BCP_user_pack : default unpack_warmstart() executed.\n"); 00044 } 00045 return BCP_unpack_warmstart(buf); 00046 } 00047 00048 //------------------------------------------------------------------------- 00050 virtual void 00051 pack_var_algo(const BCP_var_algo* var, BCP_buffer& buf) 00052 { 00053 throw BCP_fatal_error("\ 00054 BCP_user_pack::pack_var_algo() invoked but not overridden!\n"); 00055 } 00056 00058 virtual BCP_var_algo* unpack_var_algo(BCP_buffer& buf) 00059 { 00060 throw BCP_fatal_error("\ 00061 BCP_user_pack::unpack_var_algo() invoked but not overridden!\n"); 00062 return 0; // to satisfy aCC on HP-UX 00063 } 00064 00065 //------------------------------------------------------------------------- 00067 virtual void pack_cut_algo(const BCP_cut_algo* cut, BCP_buffer& buf); 00068 00070 virtual BCP_cut_algo* unpack_cut_algo(BCP_buffer& buf); 00071 00072 //------------------------------------------------------------------------- 00074 virtual void pack_user_data(const BCP_user_data* ud, BCP_buffer& buf); 00075 00077 virtual BCP_user_data* unpack_user_data(BCP_buffer& buf); 00078 }; 00079 00080 00081 #endif 00082 00083