예제 #1
0
 void load_override(
     const boost::serialization::nvp< T > & t
 ){
     load_start(t.name());
     archive::load(* this->This(), t.value());
     load_end(t.name());
 }
예제 #2
0
 void save_override(
         const ::boost::serialization::nvp< T > & t
     ){
     save_start(t.name());
     archive::save(* this->This(), t.const_value());
     save_end(t.name());
 }
예제 #3
0
 void save_override(
             #ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
             const
             #endif
             ::boost::serialization::nvp<T> & t, int
     ){
     save_start(t.name());
     archive::save(* this->This(), t.const_value());
     save_end(t.name());
 }
예제 #4
0
 void load_override(
             #ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
             const
             #endif
             boost::serialization::nvp<T> & t,
             int
     ){
     load_start(t.name());
     archive::load(* this->This(), t.value());
     load_end(t.name());
 }
예제 #5
0
 void load_override(
     #ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
     const
     #endif
     boost::serialization::nvp<T> & t,
     int
 ){
     this->This()->load_start(t.name());
     this->detail_common_iarchive::load_override(t.value(), 0);
     this->This()->load_end(t.name());
 }
 void save_override(
     #ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
     const
     #endif
     ::boost::serialization::nvp<T> & t,
     int
 ){
     this->This()->save_start(t.name());
     this->detail_common_oarchive::save_override(t.const_value(), 0);
     this->This()->save_end(t.name());
 }
예제 #7
0
 void load_override(const boost::serialization::nvp< std::vector<value_type, allocator_type> > data, int)
 {
     token type = input.type();
     if (type == token_array_begin)
     {
         scope_stack.push(scope(type));
         input.next();
         while (true)
         {
             type = input.type();
             if (type == token_array_end)
             {
                 if (scope_stack.top().group == token_array_begin)
                 {
                     scope_stack.pop();
                 }
                 else
                 {
                     goto error;
                 }
                 break;
             }
             else if ((type == token_eof) || (type == token_error))
             {
                 goto error;
             }
             else
             {
                 value_type item;
                 *this >> boost::serialization::make_nvp(data.name(), item);
                 data.value().push_back(item);
             }
         }
     }
예제 #8
0
	void ws_xml_iarchive::load_override(
		#ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
		const
		#endif
		boost::serialization::nvp< bool > & t, int){
		std::string str;
		base::load_override(boost::serialization::make_nvp<std::string>(t.name(), str), 0);
		t.value() = (str == "true");
	}
예제 #9
0
  void load_override(
#ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
    const
#endif
    boost::serialization::nvp< T > &t,
    int
  )
  { 
    if (m_collectionSize)
    {
      // Delegate to inner collection
      m_collection->load_override(t,0);
      
      if (!--m_collectionSize)
      {
        m_collection = nullptr;
      }
      return;
    }
    
    std::streampos lastPos = is.tellg();
    m_currentName = t.name();

//     std::cerr << m_currentName << " [" << char(is.peek()) << "] [" << int(is.tellg())<< ']' <<std::endl;

    if (!m_collectionStart)
    {
      bool startLoaded = this->This()->load_start(t.name(), true);
      if (!startLoaded)
      {
        // Retrace a bit and signal a collection end
        is.seekg(lastPos - std::streampos(m_currentName.size()) - 3);
        m_collectionEnd = true;
        return;
      }
    }
    else
    {
      m_collectionStart = false;
    }
    boost::archive::load(* this->This(), t.value());
    this->This()->load_end(t.name());
  }