00001 // Last edit: 5/5/04 00002 // 00003 // Name: OS_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 "OS_user_data.hpp" 00014 00015 00016 using namespace std; 00017 00018 /****************************************************************************/ 00019 MY_user_data::MY_user_data(const int max_size) 00020 : is_processed(0) { 00021 00022 // Normally, no modifications required, except possibly modifying 00023 // the parameters to the constructor 00024 00025 p_rud = new real_user_data(max_size); 00026 } 00027 00028 /****************************************************************************/ 00029 MY_user_data::MY_user_data(BCP_buffer& buf) 00030 { 00031 // Normally, no modifications required. 00032 00033 buf.unpack(is_processed); 00034 buf.unpack(p_rud); 00035 } 00036 00037 /****************************************************************************/ 00038 MY_user_data::~MY_user_data() { 00039 00040 // Normally, no modifications required. 00041 00042 if(is_processed && (p_rud != NULL)) { 00043 delete p_rud; 00044 p_rud = NULL; 00045 } 00046 } 00047 00048 /****************************************************************************/ 00049 void 00050 MY_user_data::pack(BCP_buffer& buf) const 00051 { 00052 // Normally, no modifications required. 00053 00054 buf.pack(is_processed); 00055 buf.pack(p_rud); 00056 } /* pack */ 00057 00058 00059 /****************************************************************************/ 00060 void 00061 MY_user_data::print() const 00062 { 00063 // Normally, no modifications required. 00064 00065 printf("is_processed: %d\n", is_processed); 00066 if(p_rud != NULL) { 00067 p_rud->print(); 00068 } 00069 } /* print */ 00070 00071 00072 /****************************************************************************/ 00073 real_user_data::real_user_data(const int max_size) { 00074 00075 /* Add : initialize fields of real_user_data */ 00076 00077 max_card_set_zero = max_size; 00078 card_set_zero = 0; 00079 set_zero = new int[max_card_set_zero]; 00080 } 00081 00082 /****************************************************************************/ 00083 real_user_data::~real_user_data() { 00084 00085 /* Add : deletion of complex fields in real_user_data */ 00086 00087 delete[] set_zero; 00088 } 00089 00090 /****************************************************************************/ 00091 void 00092 real_user_data::print() const { 00093 00094 /* Add : print fields of real_user_data */ 00095 00096 printf("max_card_set_zero: %d\n", max_card_set_zero); 00097 printf("card_set_zero: %d\n", card_set_zero); 00098 if(card_set_zero > 0) { 00099 printf("set_zero:\n"); 00100 for(int i=0; i<card_set_zero; i++) { 00101 printf(" %4d", set_zero[i]); 00102 } 00103 printf("\n"); 00104 } 00105 printf("\n"); 00106 } /* print */ 00107 00108