epoc32/include/stdapis/boost/archive/detail/basic_iserializer.hpp
author William Roberts <williamr@symbian.org>
Wed, 31 Mar 2010 12:27:01 +0100
branchSymbian2
changeset 3 e1b950c65cb4
permissions -rw-r--r--
Attempt to represent the S^2->S^3 header reorganisation as a series of "hg rename" operations
williamr@2
     1
#ifndef BOOST_ARCHIVE_DETAIL_BASIC_ISERIALIZER_HPP
williamr@2
     2
#define BOOST_ARCHIVE_DETAIL_BASIC_ISERIALIZER_HPP
williamr@2
     3
williamr@2
     4
// MS compatible compilers support #pragma once
williamr@2
     5
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
williamr@2
     6
# pragma once
williamr@2
     7
#endif
williamr@2
     8
williamr@2
     9
/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
williamr@2
    10
// basic_iserializer.hpp: extenstion of type_info required for serialization.
williamr@2
    11
williamr@2
    12
// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . 
williamr@2
    13
// Use, modification and distribution is subject to the Boost Software
williamr@2
    14
// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
williamr@2
    15
// http://www.boost.org/LICENSE_1_0.txt)
williamr@2
    16
williamr@2
    17
//  See http://www.boost.org for updates, documentation, and revision history.
williamr@2
    18
williamr@2
    19
#include <cassert>
williamr@2
    20
#include <cstdlib> // NULL
williamr@2
    21
#include <boost/config.hpp>
williamr@2
    22
williamr@2
    23
#include <boost/archive/detail/auto_link_archive.hpp>
williamr@2
    24
#include <boost/archive/detail/basic_serializer.hpp>
williamr@2
    25
williamr@2
    26
#include <boost/archive/detail/abi_prefix.hpp> // must be the last header
williamr@2
    27
williamr@2
    28
namespace boost {
williamr@2
    29
williamr@2
    30
namespace serialization {
williamr@2
    31
    class extended_type_info;
williamr@2
    32
} // namespace serialization
williamr@2
    33
williamr@2
    34
// forward declarations
williamr@2
    35
namespace archive {
williamr@2
    36
namespace detail {
williamr@2
    37
williamr@2
    38
class BOOST_ARCHIVE_DECL(BOOST_PP_EMPTY()) basic_iarchive;
williamr@2
    39
class BOOST_ARCHIVE_DECL(BOOST_PP_EMPTY()) basic_pointer_iserializer;
williamr@2
    40
williamr@2
    41
class BOOST_ARCHIVE_DECL(BOOST_PP_EMPTY()) basic_iserializer : 
williamr@2
    42
    public basic_serializer
williamr@2
    43
{
williamr@2
    44
private:
williamr@2
    45
    basic_pointer_iserializer *bpis;
williamr@2
    46
protected:
williamr@2
    47
    explicit basic_iserializer(
williamr@2
    48
        const boost::serialization::extended_type_info & type_
williamr@2
    49
    );
williamr@2
    50
    // account for bogus gcc warning
williamr@2
    51
    #if defined(__GNUC__)
williamr@2
    52
    virtual
williamr@2
    53
    #endif
williamr@2
    54
    ~basic_iserializer();
williamr@2
    55
public:
williamr@2
    56
    bool serialized_as_pointer() const {
williamr@2
    57
        return bpis != NULL;
williamr@2
    58
    }
williamr@2
    59
    void set_bpis(basic_pointer_iserializer *bpis_){
williamr@2
    60
        bpis = bpis_;
williamr@2
    61
    }
williamr@2
    62
    const basic_pointer_iserializer * get_bpis_ptr() const {
williamr@2
    63
        return bpis;
williamr@2
    64
    }
williamr@2
    65
    virtual void load_object_data(
williamr@2
    66
        basic_iarchive & ar, 
williamr@2
    67
        void *x,
williamr@2
    68
        const unsigned int file_version
williamr@2
    69
    ) const = 0;
williamr@2
    70
    // returns true if class_info should be saved
williamr@2
    71
    virtual bool class_info() const = 0 ;
williamr@2
    72
    // returns true if objects should be tracked
williamr@2
    73
    virtual bool tracking(const unsigned int) const = 0 ;
williamr@2
    74
    // returns class version
williamr@2
    75
    virtual unsigned int version() const = 0 ;
williamr@2
    76
    // returns true if this class is polymorphic
williamr@2
    77
    virtual bool is_polymorphic() const = 0;
williamr@2
    78
    virtual void destroy(/*const*/ void *address) const = 0 ;
williamr@2
    79
};
williamr@2
    80
williamr@2
    81
} // namespae detail
williamr@2
    82
} // namespace archive
williamr@2
    83
} // namespace boost
williamr@2
    84
williamr@2
    85
#include <boost/archive/detail/abi_suffix.hpp> // pops abi_suffix.hpp pragmas
williamr@2
    86
williamr@2
    87
#endif // BOOST_ARCHIVE_DETAIL_BASIC_ISERIALIZER_HPP