00001 template<typename T>
00002 class cfg_structlist_t : public cfg_var, public pfc::list_t<T>
00003 {
00004 public:
00005 void get_data_raw(stream_writer * p_stream,abort_callback & p_abort) {
00006 t_uint32 n, m = get_count();
00007 p_stream->write_lendian_t(m,p_abort);
00008 for(n=0;n<m;n++) {
00009 p_stream->write_object(&m_buffer[n],sizeof(T),p_abort);
00010 }
00011 }
00012
00013 void set_data_raw(stream_reader * p_stream,t_size,abort_callback & p_abort) {
00014 t_uint32 n,count;
00015 p_stream->read_lendian_t(count,p_abort);
00016 m_buffer.set_size_e(count);
00017 for(n=0;n<count;n++) {
00018 try {
00019 p_stream->read_object(&m_buffer[n],sizeof(T),p_abort);
00020 } catch(...) {m_buffer.set_size(0); throw;}
00021 }
00022 }
00023 public:
00024 cfg_structlist_t(const GUID & p_guid) : cfg_var(p_guid) {}
00025 };