00001 // Last edit: 5/19/07 00002 // 00003 // Name: BB_user_data.cpp 00004 // Author: Francois Margot 00005 // Tepper School of Business 00006 // Carnegie Mellon University, Pittsburgh, PA 00007 // email: fmargot@andrew.cmu.edu 00008 // Date: 12/28/03 00009 //----------------------------------------------------------------------------- 00010 // Copyright (C) 2003, Francois Margot. All Rights Reserved. 00011 00012 #include "BCP_buffer.hpp" 00013 #include "BB_user_data.hpp" 00014 00015 using namespace std; 00016 00017 /****************************************************************************/ 00018 MY_user_data::MY_user_data(const int max_size) 00019 : is_processed(0) { 00020 00021 // Normally, no modifications required, except possibly modifying 00022 // the parameters to the constructor 00023 00024 p_rud = new real_user_data(max_size); 00025 } 00026 00027 /****************************************************************************/ 00028 MY_user_data::MY_user_data(BCP_buffer& buf) 00029 { 00030 // Normally, no modifications required. 00031 00032 buf.unpack(is_processed); 00033 buf.unpack(p_rud); 00034 } 00035 00036 /****************************************************************************/ 00037 MY_user_data::~MY_user_data() { 00038 00039 // Normally, no modifications required. 00040 00041 if(is_processed && (p_rud != NULL)) { 00042 delete p_rud; 00043 p_rud = NULL; 00044 } 00045 } 00046 00047 /****************************************************************************/ 00048 void 00049 MY_user_data::pack(BCP_buffer& buf) const 00050 { 00051 // Normally, no modifications required. 00052 00053 buf.pack(is_processed); 00054 buf.pack(p_rud); 00055 } /* pack */ 00056 00057 00058 /****************************************************************************/ 00059 void 00060 MY_user_data::print() const 00061 { 00062 // Normally, no modifications required. 00063 00064 printf("is_processed: %d\n", is_processed); 00065 if(p_rud != NULL) { 00066 p_rud->print(); 00067 } 00068 } /* print */ 00069 00070 00071 /****************************************************************************/ 00072 real_user_data::real_user_data(const int max_size) { 00073 00074 /* Add : initialize fields of real_user_data */ 00075 00076 max_card_set_zero = max_size; 00077 card_set_zero = 0; 00078 set_zero = new int[max_card_set_zero]; 00079 } 00080 00081 /****************************************************************************/ 00082 real_user_data::~real_user_data() { 00083 00084 /* Add : deletion of complex fields in real_user_data */ 00085 00086 delete[] set_zero; 00087 } 00088 00089 /****************************************************************************/ 00090 void 00091 real_user_data::print() const { 00092 00093 /* Add : print fields of real_user_data */ 00094 00095 printf("max_card_set_zero: %d\n", max_card_set_zero); 00096 printf("card_set_zero: %d\n", card_set_zero); 00097 if(card_set_zero > 0) { 00098 printf("set_zero:\n"); 00099 for(int i=0; i<card_set_zero; i++) { 00100 printf(" %4d", set_zero[i]); 00101 } 00102 printf("\n"); 00103 } 00104 printf("\n"); 00105 } /* print */