00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #include "BCP_buffer.hpp"
00014 #include "OS_cut.hpp"
00015 #include "OS_var.hpp"
00016 #include "OS_user_data.hpp"
00017 #include "OS_packer.hpp"
00018
00019 using namespace std;
00020
00021
00022
00023 void OS_packer::pack_cut_algo(const BCP_cut_algo* cut, BCP_buffer& buf) {
00024
00025
00026 const OS_cut* bb_cut = dynamic_cast<const OS_cut*>(cut);
00027
00028
00029
00030
00031 bb_cut->pack(buf);
00032 return;
00033
00034 throw BCP_fatal_error("OS_pack_cut(): unknown cut type.");
00035 }
00036
00037
00038
00039 BCP_cut_algo* OS_packer::unpack_cut_algo(BCP_buffer& buf)
00040 {
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051 return new OS_cut( buf);
00052
00053
00054
00055
00056
00057 }
00058
00059
00060
00061 void OS_packer::pack_var_algo(const BCP_var_algo* var, BCP_buffer& buf) {
00062
00063 const OS_var* v = dynamic_cast<const OS_var*>(var);
00064
00065
00066
00067
00068 v->pack( buf);
00069 return;
00070
00071 }
00072
00073
00074
00075 BCP_var_algo* OS_packer::unpack_var_algo(BCP_buffer& buf) {
00076
00077
00078
00079
00080
00081 return new OS_var( buf);
00082
00083 }
00084
00085
00086
00087
00088
00089 void OS_packer::pack_user_data(const BCP_user_data* ud, BCP_buffer& buf)
00090
00091 {
00092 const MY_user_data *mud = dynamic_cast<const MY_user_data*> (ud);
00093 if(!mud)
00094 throw BCP_fatal_error("OS_lp::pack_user_data() : unknown data type!\n");
00095
00096 printf("OS_lp::pack_user_data:\n");
00097 mud->print();
00098 mud->pack(buf);
00099 }
00100
00101
00102
00103 BCP_user_data* OS_packer::unpack_user_data(BCP_buffer& buf)
00104
00105 {
00106 MY_user_data *p_ud = new MY_user_data(buf);
00107 printf("OS_lp::unpack_user_data:\n");
00108 p_ud->print();
00109
00110 if (p_ud->is_processed) {
00111 p_ud->p_rud = NULL;
00112 delete(p_ud);
00113 p_ud = NULL;
00114 printf("user_data deleted\n");
00115 }
00116
00117 return(p_ud);
00118 }