void Directory::CreateData ( const char *dataName, DArray <int> *darray ) { if ( GetData( dataName ) ) { AppReleaseAssert(false, "Attempted to create duplicate data %s at location\n%s", dataName, m_name); } else { Directory *directory = AddDirectory ( dataName ); AppAssert( directory ); directory->CreateData( "tID", "DArray<int>" ); directory->CreateData( "Size", darray->Size() ); for ( int i = 0; i < darray->Size(); ++i ) { char indexName[16]; sprintf ( indexName, "[i %d]", i ); Directory *thisDir = directory->AddDirectory( indexName ); if ( darray->ValidIndex(i) ) { thisDir->CreateData( "[Used]", true ); thisDir->CreateData( "[Data]", darray->GetData(i) ); } else { thisDir->CreateData( "[Used]", false ); } } } }
Directory *Directory::AddDirectory ( const char *dirName ) { AppAssert( dirName ); char *firstSubDir = GetFirstSubDir ( dirName ); char *otherSubDirs = GetOtherSubDirs ( dirName ); if ( firstSubDir ) { Directory *subDir = NULL; // // Search for that subdirectory for ( int i = 0; i < m_subDirectories.Size(); ++i ) { if ( m_subDirectories.ValidIndex(i) ) { Directory *thisDir = m_subDirectories[i]; AppAssert( thisDir ); if ( strcmp ( thisDir->m_name, firstSubDir ) == 0 ) { subDir = thisDir; break; } } } // If the directory doesn't exist, create it and recurse into it if ( !subDir ) { subDir = new Directory(); subDir->SetName( firstSubDir ); m_subDirectories.PutData( subDir ); } delete[] firstSubDir; firstSubDir = NULL; // // Have we finished building directories? // Otherwise, recurse in if ( !otherSubDirs ) { return subDir; } else { return subDir->AddDirectory( otherSubDirs ); } } else { AppReleaseAssert(false, "Failed to get first SubDir from %s", dirName ); return NULL; } }
void Directory::CreateData ( const char *dataName, LList <Directory *> *llist ) { if ( GetData( dataName ) ) { AppReleaseAssert(false,"Attempted to create duplicate data %s at location\n%s", dataName, m_name); } else { Directory *directory = AddDirectory ( dataName ); AppAssert( directory ); directory->CreateData( "tID", "LList<Directory *>" ); directory->CreateData( "Size", llist->Size() ); for ( int i = 0; i < llist->Size(); ++i ) { char indexName[16]; sprintf ( indexName, "[i %d]", i ); Directory *newDir = directory->AddDirectory( indexName ); Directory *obj = llist->GetData(i); AppAssert( obj ); newDir->AddDirectory( obj ); } } }