Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: downloads/boost_1_34_1/boost/ptr_container/ptr_vector.hpp @ 29

Last change on this file since 29 was 29, checked in by landauf, 16 years ago

updated boost from 1_33_1 to 1_34_1

File size: 2.4 KB
Line 
1//
2// Boost.Pointer Container
3//
4//  Copyright Thorsten Ottosen 2003-2005. Use, modification and
5//  distribution is subject to the Boost Software License, Version
6//  1.0. (See accompanying file LICENSE_1_0.txt or copy at
7//  http://www.boost.org/LICENSE_1_0.txt)
8//
9// For more information, see http://www.boost.org/libs/ptr_container/
10//
11
12#ifndef BOOST_PTR_CONTAINER_PTR_VECTOR_HPP
13#define BOOST_PTR_CONTAINER_PTR_VECTOR_HPP
14
15#if defined(_MSC_VER) && (_MSC_VER >= 1200)
16# pragma once
17#endif
18
19#include <vector>
20#include <boost/ptr_container/ptr_sequence_adapter.hpp>
21
22namespace boost
23{
24
25    template
26    < 
27        class T, 
28        class CloneAllocator = heap_clone_allocator,
29        class Allocator      = std::allocator<void*>
30    >
31    class ptr_vector : public 
32        ptr_sequence_adapter< T, 
33                              std::vector<void*,Allocator>, 
34                              CloneAllocator >
35    { 
36        typedef ptr_sequence_adapter< T, 
37                                      std::vector<void*,Allocator>, 
38                                      CloneAllocator > 
39            base_class;
40
41        typedef ptr_vector<T,CloneAllocator,Allocator> this_type;
42       
43    public:
44
45        BOOST_PTR_CONTAINER_DEFINE_NON_INHERITED_MEMBERS( ptr_vector, 
46                                                          base_class,
47                                                          this_type );
48
49        ptr_vector( size_type n,
50                    const allocator_type& alloc = allocator_type() )
51          : base_class(alloc)
52        {
53            this->c_private().reserve( n );
54        }
55
56    public: // serialization
57
58        template< class Archive >
59        void load( Archive& ar, unsigned )
60        {
61            size_type n;
62            ar & n;
63           
64            this->reserve( n );
65            this->load_helper( ar, n );
66        }
67 
68        BOOST_SERIALIZATION_SPLIT_MEMBER()
69       
70    };
71
72    //////////////////////////////////////////////////////////////////////////////
73    // clonability
74
75    template< typename T, typename CA, typename A >
76    inline ptr_vector<T,CA,A>* new_clone( const ptr_vector<T,CA,A>& r )
77    {
78        return r.clone().release();
79    }
80
81    /////////////////////////////////////////////////////////////////////////
82    // swap
83
84    template< typename T, typename CA, typename A >
85    inline void swap( ptr_vector<T,CA,A>& l, ptr_vector<T,CA,A>& r )
86    {
87        l.swap(r);
88    }
89   
90}
91
92#endif
Note: See TracBrowser for help on using the repository browser.