ObjectPtr ArchiveBinary::FromStream( std::iostream& stream, const Class* searchClass ) { if ( searchClass == NULL ) { searchClass = Reflect::GetClass<Object>(); } ArchiveBinary archive; archive.m_SearchClass = searchClass; Reflect::CharStreamPtr charStream = new CharStream( &stream, false ); archive.OpenStream( charStream, false ); archive.Read(); archive.Close(); std::vector< ObjectPtr >::iterator itr = archive.m_Objects.begin(); std::vector< ObjectPtr >::iterator end = archive.m_Objects.end(); for ( ; itr != end; ++itr ) { if ((*itr)->IsClass(searchClass)) { return *itr; } } return NULL; }
void ArchiveBinary::FromStream( std::iostream& stream, std::vector< ObjectPtr >& objects ) { ArchiveBinary archive; Reflect::CharStreamPtr charStream = new CharStream( &stream, false ); archive.OpenStream( charStream, false ); archive.Read(); archive.Close(); objects = archive.m_Objects; }
void ArchiveBinary::ToStream( const std::vector< ObjectPtr >& objects, std::iostream& stream ) { ArchiveBinary archive; // fix the spool archive.m_Objects = objects; Reflect::CharStreamPtr charStream = new CharStream( &stream, false ); archive.OpenStream( charStream, true ); archive.Write(); archive.Close(); }