Virtual U.org
Get Personal Training on VU Today
    
Top shadow
 
 register/help
User Name:

Password:

OGFILE4.CPP Source File
Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members  

OGFILE4.CPP

Go to the documentation of this file.
00001 //Filename    : OGFILE4.CPP
00002 //Description : Object Game file, save game and restore game, part 3.2
00003 
00004 //=================================================================================//
00005 // for write_file_3
00006 
00007 #include <ODEPT.H>
00008 
00009 //=================================================================================//
00010 #include <OGFILE.H>
00011 
00012 //=================================================================================//
00013 //============================ section 3/3 ========================================//
00014 //=================================================================================//
00015 
00016 //------------------------------------
00017 // continue section 3/3 in ogfile3.cpp
00018 
00019 //--------- Begin of function DepartmentArray::write_file ---------------//
00021 int DepartmentArray::write_file(File* filePtr) {
00022     //------ write info in DepartmentArray ------//
00023 
00024     if( !filePtr->file_write( (char*) this + sizeof(DynArrayB), sizeof(DepartmentArray)-sizeof(DynArrayB) ) )
00025         return 0;
00026 
00027     err_when(department_count == 0);
00028 
00029     //---------- write Departments --------------//
00030 
00031     int    i;
00032     Department *deptPtr;
00033 
00034     int deptSize = size();
00035 
00036     filePtr->file_put_short( deptSize );            // no. of nations in nation_array
00037 
00038     for( i=1; i<=deptSize; i++) {
00039         deptPtr = (Department*) get_ptr(i);
00040 
00041         //----- write nationId or 0 if the nation is deleted -----//
00042 
00043         if( !deptPtr ) {                              // the object is deleted
00044             filePtr->file_put_short(0);
00045         }
00046         else {
00047             filePtr->file_put_short(1);                 // there is a object in this record
00048 
00049             //------ write data in the base class ------//
00050 
00051             if( !deptPtr->write_file(filePtr) )
00052                 return 0;
00053 
00054             err_when(i != deptPtr->department_recno);   // assume no object deleted
00055         }
00056     }
00057 
00058     //------- write empty room array --------//
00059 
00060     write_empty_room(filePtr);
00061 
00062     return 1;
00063 }
00064 
00065 int DepartmentArray::read_file(File* filePtr) {
00066     if( !filePtr->file_read( (char*) this + sizeof(DynArrayB), sizeof(DepartmentArray)-sizeof(DynArrayB) ) )
00067         return 0;
00068 
00069     err_when(department_count == 0);
00070 
00071     //---------- read Depts --------------//
00072 
00073     int     i, deptRecno, deptSize;
00074     Department* deptPtr;
00075 
00076     deptSize = filePtr->file_get_short();           // get no. of depts from file
00077 
00078     // err_when(deptCount != department_count);
00079 
00080     for( i=1; i<=deptSize; i++) {
00081         if( filePtr->file_get_short() == 0 ) {
00082             add_blank(1);                               // it's a DynArrayB function
00083         }
00084         else {
00085             //----- create nation object -----------//
00086 
00087             deptRecno = create_dept();
00088 
00089             deptPtr   = department_array[deptRecno];
00090 
00091             //----- read data in base class --------//
00092 
00093             if( !deptPtr->read_file( filePtr ) )
00094                 return 0;
00095 
00096             deptPtr->create_department_firm();          // in order to call create_department_firm(); since we don't save firm_array
00097 
00098             err_when(deptRecno != deptPtr->department_recno);
00099         }
00100     }
00101 
00102     //-------- linkout() those record added by add_blank() ----------//
00103     //-- So they will be marked deleted in DynArrayB and can be -----//
00104     //-- undeleted and used when a new record is going to be added --//
00105 
00106     for( i=size() ; i>0 ; i-- ) {
00107         DynArrayB::go(i);                             // since NationArray has its own go() which will call GroupArray::go()
00108 
00109         if( get_ptr() == NULL )                       // add_blank() record
00110             linkout();
00111     }
00112 
00113     //------- read empty room array --------//
00114 
00115     read_empty_room(filePtr);
00116 
00117     err_when(packed_size() != department_count || department_count == 0);
00118     return 1;
00119 }
00120 
00121 //--------- End of function DepartmentArray::write_file ---------------//
00122 
00123 //--------- Begin of function Department::write_file ---------------//
00125 int Department::write_file(File* filePtr) {
00126     first_write_offset = 1;
00127 
00128     if ( !GeneralDepartment::write_file(filePtr) )
00129         return 0;
00130 
00131     //---------------------//
00132 
00133     if ( !faculty_array.write_file(filePtr) )
00134         return 0;
00135 
00136     if ( !course_array.write_file(filePtr) )
00137         return 0;
00138 
00139 #if(GAME_VERSION>=200)
00140     if ( !display_faculty_array.write_file(filePtr) )
00141         return 0;
00142 
00143     if ( !cur_faculty_array.write_file(filePtr) )
00144         return 0;
00145 #endif
00146 
00147     //---------------------//
00148 
00149     int writeSize = sizeof(Department) - ((char*)(&first_write_offset) - (char*)(this));
00150 
00151     return filePtr->file_write( (&first_write_offset), writeSize);
00152 }
00153 
00154 int Department::read_file(File* filePtr) {
00155     first_write_offset = 0;
00156 
00157     if ( !GeneralDepartment::read_file(filePtr) )
00158         return 0;
00159 
00160     //---------------------//
00161 
00162     if ( !faculty_array.read_file(filePtr) )
00163         return 0;
00164 
00165     if ( !course_array.read_file(filePtr) )
00166         return 0;
00167 
00168 #if(GAME_VERSION>=200)
00169     if ( !display_faculty_array.read_file(filePtr) )
00170         return 0;
00171 
00172     if ( !cur_faculty_array.read_file(filePtr) )
00173         return 0;
00174 #endif
00175 
00176     //---------------------//
00177 
00178     int readSize = sizeof(Department) - ((char*)(&first_write_offset) - (char*)(this));
00179 
00180     if (! filePtr->file_read( (&first_write_offset), readSize) )
00181         return 0;
00182 
00183     err_when(first_write_offset != 1);
00184 
00185     return 1;
00186 }
00187 
00188 //--------- End of function Department::write_file ---------------//
00189 
00190 //--------- Begin of function GeneralDepartment::write_file ---------------//
00192 int GeneralDepartment::write_file(File* filePtr) {
00193     //---------------------//
00194 
00195     if ( !student_array.write_file(filePtr) )
00196         return 0;
00197 
00198     //---------------------//
00199 
00200     int writeSize = sizeof(GeneralDepartment) - ((char*)(&first_write_offset) - (char*)(this));
00201 
00202     return filePtr->file_write( (&first_write_offset), writeSize);
00203 }
00204 
00205 int GeneralDepartment::read_file(File* filePtr) {
00206     //---------------------//
00207 
00208     if ( !student_array.read_file(filePtr) )
00209         return 0;
00210 
00211   //---------------------//
00212 
00213     int readSize = sizeof(GeneralDepartment) - ((char*)(&first_write_offset) - (char*)(this));
00214 
00215     return filePtr->file_read( (&first_write_offset), readSize);
00216 }
00217 
00218 //--------- End of function GeneralDepartment::write_file ---------------//
00219 
00220 //--------- Begin of function StudentArray::write_file ---------------//
00222 int StudentArray::write_file(File* filePtr) {
00223     if( !filePtr->file_write( (char*) this + sizeof(DynArrayB), sizeof(StudentArray)-sizeof(DynArrayB) ) )
00224         return 0;
00225 
00226     return DynArrayB::write_file( filePtr );
00227 }
00228 
00229 int StudentArray::read_file(File* filePtr) {
00230     if( !filePtr->file_read( (char*) this + sizeof(DynArrayB), sizeof(StudentArray)-sizeof(DynArrayB) ) )
00231         return 0;
00232 
00233     if ( !DynArrayB::read_file( filePtr ) )
00234         return 0;
00235 
00236     err_when(packed_size() != student_count);
00237 
00238     return 1;
00239 }
00240 
00241 //--------- End of function StudentArray::write_file ---------------//
00242 
00243 /*
00244 //--------- Begin of function Student::write_file ---------------//
00246 int Student::write_file(File* filePtr)
00247 {
00248   return filePtr->file_write(this, sizeof(Student));
00249 }
00250 
00251 int Student::read_file(File* filePtr)
00252 {
00253   return filePtr->file_read(this, sizeof(Student));
00254 }
00255 //--------- End of function Student::write_file ---------------//
00256 */
00257 
00258 //--------- Begin of function FacultyArray::write_file ---------------//
00260 int FacultyArray::write_file(File* filePtr) {
00261     if( !filePtr->file_write( (char*) this + sizeof(DynArrayB), sizeof(FacultyArray)-sizeof(DynArrayB) ) )
00262         return 0;
00263 
00264     return DynArrayB::write_file( filePtr );
00265 }
00266 
00267 int FacultyArray::read_file(File* filePtr) {
00268     if( !filePtr->file_read( (char*) this + sizeof(DynArrayB), sizeof(FacultyArray)-sizeof(DynArrayB) ) )
00269         return 0;
00270 
00271     return DynArrayB::read_file( filePtr );
00272 }
00273 
00274 //--------- End of function FacultyArray::write_file ---------------//
00275 
00276 /*
00277 //--------- Begin of function Faculty::write_file ---------------//
00279 int Faculty::write_file(File* filePtr)
00280 {
00281   //return filePtr->file_write(this, sizeof(Faculty));
00282   return 1;
00283 }
00284 
00285 int Faculty::read_file(File* filePtr)
00286 {
00287 //return filePtr->file_read(this, sizeof(Faculty));
00288 return 1;
00289 }
00290 //--------- End of function Student::Faculty ---------------//
00291 */
00292 
00293 //--------- Begin of function CourseArray::write_file ---------------//
00295 int CourseArray::write_file(File* filePtr) {
00296     if( !filePtr->file_write( (char*) this + sizeof(DynArrayB), sizeof(CourseArray)-sizeof(DynArrayB) ) )
00297         return 0;
00298 
00299     return DynArrayB::write_file( filePtr );
00300 }
00301 
00302 int CourseArray::read_file(File* filePtr) {
00303     if( !filePtr->file_read( (char*) this + sizeof(DynArrayB), sizeof(CourseArray)-sizeof(DynArrayB) ) )
00304         return 0;
00305 
00306     return DynArrayB::read_file( filePtr );
00307 }
00308 
00309 //--------- End of function CourseArray::write_file ---------------//
00310 
00311 /*
00312 //--------- Begin of function Course::write_file ---------------//
00314 int Course::write_file(File* filePtr)
00315 {
00316   return 1;     //return filePtr->file_write(this, sizeof(Faculty));
00317 }
00318 
00319 int Course::read_file(File* filePtr)
00320 {
00321     return 1;   //return filePtr->file_read(this, sizeof(Faculty));
00322 }
00323 //--------- End of function Course::write_file ---------------//
00324 */

Generated on Fri Aug 23 01:37:47 2002 for VirtualU by doxygen1.2.17