/src/dng_sdk/source/dng_auto_ptr.h
Line | Count | Source |
1 | | /*****************************************************************************/ |
2 | | // Copyright 2006 Adobe Systems Incorporated |
3 | | // All Rights Reserved. |
4 | | // |
5 | | // NOTICE: Adobe permits you to use, modify, and distribute this file in |
6 | | // accordance with the terms of the Adobe license agreement accompanying it. |
7 | | /*****************************************************************************/ |
8 | | |
9 | | /* $Id: //mondo/dng_sdk_1_4/dng_sdk/source/dng_auto_ptr.h#2 $ */ |
10 | | /* $DateTime: 2012/07/11 10:36:56 $ */ |
11 | | /* $Change: 838485 $ */ |
12 | | /* $Author: tknoll $ */ |
13 | | |
14 | | /** \file |
15 | | * Class to implement std::auto_ptr like functionality even on platforms which do not |
16 | | * have a full Standard C++ library. |
17 | | */ |
18 | | |
19 | | /*****************************************************************************/ |
20 | | |
21 | | #ifndef __dng_auto_ptr__ |
22 | | #define __dng_auto_ptr__ |
23 | | |
24 | | #include "dng_memory.h" |
25 | | |
26 | | #include <memory> |
27 | | #include <stddef.h> |
28 | | #include <stdlib.h> |
29 | | |
30 | | /*****************************************************************************/ |
31 | | |
32 | | // The following template has similar functionality to the STL auto_ptr, without |
33 | | // requiring all the weight of STL. |
34 | | |
35 | | /*****************************************************************************/ |
36 | | |
37 | | /// \brief A class intended to be used in stack scope to hold a pointer from new. The |
38 | | /// held pointer will be deleted automatically if the scope is left without calling |
39 | | /// Release on the AutoPtr first. |
40 | | |
41 | | template<class T> |
42 | | class AutoPtr |
43 | | { |
44 | | |
45 | | private: |
46 | | |
47 | | T *p_; |
48 | | |
49 | | public: |
50 | | |
51 | | /// Construct an AutoPtr with no referent. |
52 | | |
53 | 9.93M | AutoPtr () : p_ (0) { }AutoPtr<dng_negative>::AutoPtr() Line | Count | Source | 53 | 86.5k | AutoPtr () : p_ (0) { } |
AutoPtr<dng_image>::AutoPtr() Line | Count | Source | 53 | 454k | AutoPtr () : p_ (0) { } |
AutoPtr<dng_memory_block>::AutoPtr() Line | Count | Source | 53 | 4.25M | AutoPtr () : p_ (0) { } |
AutoPtr<dng_metadata>::AutoPtr() Line | Count | Source | 53 | 66.5k | AutoPtr () : p_ (0) { } |
AutoPtr<dng_tiff_directory>::AutoPtr() Line | Count | Source | 53 | 478k | AutoPtr () : p_ (0) { } |
AutoPtr<dng_basic_tag_set>::AutoPtr() Line | Count | Source | 53 | 478k | AutoPtr () : p_ (0) { } |
AutoPtr<profile_tag_set>::AutoPtr() Line | Count | Source | 53 | 21.7k | AutoPtr () : p_ (0) { } |
AutoPtr<color_tag_set>::AutoPtr() Line | Count | Source | 53 | 21.7k | AutoPtr () : p_ (0) { } |
AutoPtr<dng_ifd>::AutoPtr() Line | Count | Source | 53 | 2.94M | AutoPtr () : p_ (0) { } |
AutoPtr<dng_exif>::AutoPtr() Line | Count | Source | 53 | 152k | AutoPtr () : p_ (0) { } |
AutoPtr<dng_shared>::AutoPtr() Line | Count | Source | 53 | 91.3k | AutoPtr () : p_ (0) { } |
AutoPtr<dng_linearize_plane>::AutoPtr() Line | Count | Source | 53 | 113k | AutoPtr () : p_ (0) { } |
AutoPtr<dng_linearization_info>::AutoPtr() Line | Count | Source | 53 | 60.6k | AutoPtr () : p_ (0) { } |
AutoPtr<dng_mosaic_info>::AutoPtr() Line | Count | Source | 53 | 60.6k | AutoPtr () : p_ (0) { } |
AutoPtr<dng_jpeg_image>::AutoPtr() Line | Count | Source | 53 | 108k | AutoPtr () : p_ (0) { } |
AutoPtr<dng_preview>::AutoPtr() Line | Count | Source | 53 | 441k | AutoPtr () : p_ (0) { } |
AutoPtr<dng_hue_sat_map>::AutoPtr() Line | Count | Source | 53 | 25.7k | AutoPtr () : p_ (0) { } |
AutoPtr<dng_1d_table>::AutoPtr() Line | Count | Source | 53 | 51.4k | AutoPtr () : p_ (0) { } |
AutoPtr<dng_spline_solver>::AutoPtr() Line | Count | Source | 53 | 13.4k | AutoPtr () : p_ (0) { } |
AutoPtr<dng_bad_pixel_list>::AutoPtr() Line | Count | Source | 53 | 6.51k | AutoPtr () : p_ (0) { } |
AutoPtr<dng_gain_map>::AutoPtr() Line | Count | Source | 53 | 997 | AutoPtr () : p_ (0) { } |
|
54 | | |
55 | | /// Construct an AutoPtr which owns the argument pointer. |
56 | | /// \param p pointer which constructed AutoPtr takes ownership of. p will be |
57 | | /// deleted on destruction or Reset unless Release is called first. |
58 | | |
59 | 905k | explicit AutoPtr (T *p) : p_( p ) { }AutoPtr<dng_preview>::AutoPtr(dng_preview*) Line | Count | Source | 59 | 6.70k | explicit AutoPtr (T *p) : p_( p ) { } |
AutoPtr<dng_memory_block>::AutoPtr(dng_memory_block*) Line | Count | Source | 59 | 329k | explicit AutoPtr (T *p) : p_( p ) { } |
AutoPtr<dng_metadata>::AutoPtr(dng_metadata*) Line | Count | Source | 59 | 21.8k | explicit AutoPtr (T *p) : p_( p ) { } |
Unexecuted instantiation: AutoPtr<dng_warp_params>::AutoPtr(dng_warp_params*) AutoPtr<dng_image>::AutoPtr(dng_image*) Line | Count | Source | 59 | 24.1k | explicit AutoPtr (T *p) : p_( p ) { } |
AutoPtr<dng_bilinear_interpolator>::AutoPtr(dng_bilinear_interpolator*) Line | Count | Source | 59 | 1.75k | explicit AutoPtr (T *p) : p_( p ) { } |
AutoPtr<dng_exif>::AutoPtr(dng_exif*) Line | Count | Source | 59 | 113k | explicit AutoPtr (T *p) : p_( p ) { } |
AutoPtr<dng_negative>::AutoPtr(dng_negative*) Line | Count | Source | 59 | 60.6k | explicit AutoPtr (T *p) : p_( p ) { } |
AutoPtr<dng_camera_profile>::AutoPtr(dng_camera_profile*) Line | Count | Source | 59 | 205k | explicit AutoPtr (T *p) : p_( p ) { } |
AutoPtr<dng_opcode>::AutoPtr(dng_opcode*) Line | Count | Source | 59 | 113k | explicit AutoPtr (T *p) : p_( p ) { } |
AutoPtr<dng_jpeg_image>::AutoPtr(dng_jpeg_image*) Line | Count | Source | 59 | 5.65k | explicit AutoPtr (T *p) : p_( p ) { } |
AutoPtr<dng_color_spec>::AutoPtr(dng_color_spec*) Line | Count | Source | 59 | 2.84k | explicit AutoPtr (T *p) : p_( p ) { } |
AutoPtr<dng_simple_image>::AutoPtr(dng_simple_image*) Line | Count | Source | 59 | 19.5k | explicit AutoPtr (T *p) : p_( p ) { } |
AutoPtr<dng_gain_map>::AutoPtr(dng_gain_map*) Line | Count | Source | 59 | 246 | explicit AutoPtr (T *p) : p_( p ) { } |
Unexecuted instantiation: AutoPtr<dng_hue_sat_map>::AutoPtr(dng_hue_sat_map*) |
60 | | |
61 | | /// Reset is called on destruction. |
62 | | |
63 | | ~AutoPtr (); |
64 | | |
65 | | /// Call Reset with a pointer from new. Uses T's default constructor. |
66 | | |
67 | | void Alloc (); |
68 | | |
69 | | /// Return the owned pointer of this AutoPtr, NULL if none. No change in |
70 | | /// ownership or other effects occur. |
71 | | |
72 | 56.2M | T *Get () const { return p_; }AutoPtr<dng_image>::Get() const Line | Count | Source | 72 | 913k | T *Get () const { return p_; } |
AutoPtr<dng_preview>::Get() const Line | Count | Source | 72 | 13.4k | T *Get () const { return p_; } |
AutoPtr<dng_negative>::Get() const Line | Count | Source | 72 | 87.1k | T *Get () const { return p_; } |
AutoPtr<dng_memory_block>::Get() const Line | Count | Source | 72 | 1.06M | T *Get () const { return p_; } |
AutoPtr<dng_exif>::Get() const Line | Count | Source | 72 | 511k | T *Get () const { return p_; } |
AutoPtr<dng_linearization_info>::Get() const Line | Count | Source | 72 | 285k | T *Get () const { return p_; } |
AutoPtr<dng_mosaic_info>::Get() const Line | Count | Source | 72 | 142k | T *Get () const { return p_; } |
AutoPtr<dng_metadata>::Get() const Line | Count | Source | 72 | 465k | T *Get () const { return p_; } |
AutoPtr<dng_shared>::Get() const Line | Count | Source | 72 | 724k | T *Get () const { return p_; } |
AutoPtr<dng_ifd>::Get() const Line | Count | Source | 72 | 451k | T *Get () const { return p_; } |
AutoPtr<dng_camera_profile>::Get() const Line | Count | Source | 72 | 5.13M | T *Get () const { return p_; } |
AutoPtr<dng_jpeg_image>::Get() const Line | Count | Source | 72 | 152k | T *Get () const { return p_; } |
AutoPtr<dng_hue_sat_map>::Get() const Line | Count | Source | 72 | 46.2M | T *Get () const { return p_; } |
Unexecuted instantiation: AutoPtr<dng_1d_table>::Get() const AutoPtr<dng_spline_solver>::Get() const Line | Count | Source | 72 | 104 | T *Get () const { return p_; } |
|
73 | | |
74 | | /// Return the owned pointer of this AutoPtr, NULL if none. The AutoPtr gives |
75 | | /// up ownership and takes NULL as its value. |
76 | | |
77 | | T *Release (); |
78 | | |
79 | | /// If a pointer is owned, it is deleted. Ownership is taken of passed in |
80 | | /// pointer. |
81 | | /// \param p pointer which constructed AutoPtr takes ownership of. p will be |
82 | | /// deleted on destruction or Reset unless Release is called first. |
83 | | |
84 | | void Reset (T *p); |
85 | | |
86 | | /// If a pointer is owned, it is deleted and the AutoPtr takes NULL as its |
87 | | /// value. |
88 | | |
89 | | void Reset (); |
90 | | |
91 | | /// Allows members of the owned pointer to be accessed directly. It is an |
92 | | /// error to call this if the AutoPtr has NULL as its value. |
93 | | |
94 | 1.77G | T *operator-> () const { return p_; }AutoPtr<dng_negative>::operator->() const Line | Count | Source | 94 | 648k | T *operator-> () const { return p_; } |
AutoPtr<dng_image>::operator->() const Line | Count | Source | 94 | 207k | T *operator-> () const { return p_; } |
AutoPtr<dng_preview>::operator->() const Line | Count | Source | 94 | 33.5k | T *operator-> () const { return p_; } |
AutoPtr<dng_memory_block>::operator->() const Line | Count | Source | 94 | 1.75G | T *operator-> () const { return p_; } |
AutoPtr<dng_metadata>::operator->() const Line | Count | Source | 94 | 120k | T *operator-> () const { return p_; } |
AutoPtr<dng_ifd>::operator->() const Line | Count | Source | 94 | 2.34M | T *operator-> () const { return p_; } |
AutoPtr<dng_tiff_directory>::operator->() const Line | Count | Source | 94 | 2.89k | T *operator-> () const { return p_; } |
AutoPtr<dng_exif>::operator->() const Line | Count | Source | 94 | 199k | T *operator-> () const { return p_; } |
AutoPtr<dng_shared>::operator->() const Line | Count | Source | 94 | 1.19M | T *operator-> () const { return p_; } |
Unexecuted instantiation: AutoPtr<dng_warp_params>::operator->() const AutoPtr<dng_linearize_plane>::operator->() const Line | Count | Source | 94 | 153k | T *operator-> () const { return p_; } |
AutoPtr<dng_bilinear_interpolator>::operator->() const Line | Count | Source | 94 | 66.1k | T *operator-> () const { return p_; } |
AutoPtr<dng_camera_profile>::operator->() const Line | Count | Source | 94 | 795k | T *operator-> () const { return p_; } |
AutoPtr<dng_jpeg_image>::operator->() const Line | Count | Source | 94 | 11.2k | T *operator-> () const { return p_; } |
AutoPtr<dng_opcode>::operator->() const Line | Count | Source | 94 | 227k | T *operator-> () const { return p_; } |
AutoPtr<dng_color_spec>::operator->() const Line | Count | Source | 94 | 11.5k | T *operator-> () const { return p_; } |
AutoPtr<dng_simple_image>::operator->() const Line | Count | Source | 94 | 19.5k | T *operator-> () const { return p_; } |
AutoPtr<dng_bad_pixel_list>::operator->() const Line | Count | Source | 94 | 8.37M | T *operator-> () const { return p_; } |
AutoPtr<dng_1d_table>::operator->() const Line | Count | Source | 94 | 54 | T *operator-> () const { return p_; } |
AutoPtr<dng_gain_map>::operator->() const Line | Count | Source | 94 | 14.3k | T *operator-> () const { return p_; } |
Unexecuted instantiation: AutoPtr<dng_hue_sat_map>::operator->() const |
95 | | |
96 | | /// Returns a reference to the object that the owned pointer points to. It is |
97 | | /// an error to call this if the AutoPtr has NULL as its value. |
98 | | |
99 | 127k | T &operator* () const { return *p_; }AutoPtr<dng_negative>::operator*() const Line | Count | Source | 99 | 13.4k | T &operator* () const { return *p_; } |
AutoPtr<dng_image>::operator*() const Line | Count | Source | 99 | 26.2k | T &operator* () const { return *p_; } |
AutoPtr<dng_preview>::operator*() const Line | Count | Source | 99 | 48.1k | T &operator* () const { return *p_; } |
AutoPtr<dng_metadata>::operator*() const Line | Count | Source | 99 | 26.5k | T &operator* () const { return *p_; } |
AutoPtr<dng_tiff_directory>::operator*() const Line | Count | Source | 99 | 6.67k | T &operator* () const { return *p_; } |
Unexecuted instantiation: AutoPtr<dng_ifd>::operator*() const AutoPtr<dng_basic_tag_set>::operator*() const Line | Count | Source | 99 | 6.67k | T &operator* () const { return *p_; } |
Unexecuted instantiation: AutoPtr<dng_gain_map>::operator*() const |
100 | | |
101 | | /// Swap with another auto ptr. |
102 | | |
103 | | friend inline void Swap (AutoPtr< T > &x, AutoPtr< T > &y) |
104 | | { |
105 | | T* temp = x.p_; |
106 | | x.p_ = y.p_; |
107 | | y.p_ = temp; |
108 | | } |
109 | | |
110 | | private: |
111 | | |
112 | | // Hidden copy constructor and assignment operator. I don't think the STL |
113 | | // "feature" of grabbing ownership of the pointer is a good idea. |
114 | | |
115 | | AutoPtr (AutoPtr<T> &rhs); |
116 | | |
117 | | AutoPtr<T> & operator= (AutoPtr<T> &rhs); |
118 | | |
119 | | }; |
120 | | |
121 | | /*****************************************************************************/ |
122 | | |
123 | | template<class T> |
124 | | AutoPtr<T>::~AutoPtr () |
125 | 10.8M | { |
126 | | |
127 | 10.8M | delete p_; |
128 | 10.8M | p_ = 0; |
129 | | |
130 | 10.8M | } AutoPtr<dng_spline_solver>::~AutoPtr() Line | Count | Source | 125 | 13.4k | { | 126 | | | 127 | 13.4k | delete p_; | 128 | 13.4k | p_ = 0; | 129 | | | 130 | 13.4k | } |
AutoPtr<dng_negative>::~AutoPtr() Line | Count | Source | 125 | 147k | { | 126 | | | 127 | 147k | delete p_; | 128 | 147k | p_ = 0; | 129 | | | 130 | 147k | } |
AutoPtr<dng_image>::~AutoPtr() Line | Count | Source | 125 | 478k | { | 126 | | | 127 | 478k | delete p_; | 128 | 478k | p_ = 0; | 129 | | | 130 | 478k | } |
AutoPtr<dng_preview>::~AutoPtr() Line | Count | Source | 125 | 447k | { | 126 | | | 127 | 447k | delete p_; | 128 | 447k | p_ = 0; | 129 | | | 130 | 447k | } |
AutoPtr<dng_memory_block>::~AutoPtr() Line | Count | Source | 125 | 4.58M | { | 126 | | | 127 | 4.58M | delete p_; | 128 | 4.58M | p_ = 0; | 129 | | | 130 | 4.58M | } |
AutoPtr<dng_metadata>::~AutoPtr() Line | Count | Source | 125 | 88.3k | { | 126 | | | 127 | 88.3k | delete p_; | 128 | 88.3k | p_ = 0; | 129 | | | 130 | 88.3k | } |
AutoPtr<dng_tiff_directory>::~AutoPtr() Line | Count | Source | 125 | 478k | { | 126 | | | 127 | 478k | delete p_; | 128 | 478k | p_ = 0; | 129 | | | 130 | 478k | } |
AutoPtr<dng_basic_tag_set>::~AutoPtr() Line | Count | Source | 125 | 478k | { | 126 | | | 127 | 478k | delete p_; | 128 | 478k | p_ = 0; | 129 | | | 130 | 478k | } |
AutoPtr<profile_tag_set>::~AutoPtr() Line | Count | Source | 125 | 21.7k | { | 126 | | | 127 | 21.7k | delete p_; | 128 | 21.7k | p_ = 0; | 129 | | | 130 | 21.7k | } |
AutoPtr<color_tag_set>::~AutoPtr() Line | Count | Source | 125 | 21.7k | { | 126 | | | 127 | 21.7k | delete p_; | 128 | 21.7k | p_ = 0; | 129 | | | 130 | 21.7k | } |
AutoPtr<dng_ifd>::~AutoPtr() Line | Count | Source | 125 | 2.94M | { | 126 | | | 127 | 2.94M | delete p_; | 128 | 2.94M | p_ = 0; | 129 | | | 130 | 2.94M | } |
AutoPtr<dng_exif>::~AutoPtr() Line | Count | Source | 125 | 265k | { | 126 | | | 127 | 265k | delete p_; | 128 | 265k | p_ = 0; | 129 | | | 130 | 265k | } |
AutoPtr<dng_shared>::~AutoPtr() Line | Count | Source | 125 | 91.3k | { | 126 | | | 127 | 91.3k | delete p_; | 128 | 91.3k | p_ = 0; | 129 | | | 130 | 91.3k | } |
Unexecuted instantiation: AutoPtr<dng_warp_params>::~AutoPtr() AutoPtr<dng_linearize_plane>::~AutoPtr() Line | Count | Source | 125 | 113k | { | 126 | | | 127 | 113k | delete p_; | 128 | 113k | p_ = 0; | 129 | | | 130 | 113k | } |
AutoPtr<dng_bilinear_interpolator>::~AutoPtr() Line | Count | Source | 125 | 1.75k | { | 126 | | | 127 | 1.75k | delete p_; | 128 | 1.75k | p_ = 0; | 129 | | | 130 | 1.75k | } |
AutoPtr<dng_linearization_info>::~AutoPtr() Line | Count | Source | 125 | 60.6k | { | 126 | | | 127 | 60.6k | delete p_; | 128 | 60.6k | p_ = 0; | 129 | | | 130 | 60.6k | } |
AutoPtr<dng_mosaic_info>::~AutoPtr() Line | Count | Source | 125 | 60.6k | { | 126 | | | 127 | 60.6k | delete p_; | 128 | 60.6k | p_ = 0; | 129 | | | 130 | 60.6k | } |
AutoPtr<dng_jpeg_image>::~AutoPtr() Line | Count | Source | 125 | 113k | { | 126 | | | 127 | 113k | delete p_; | 128 | 113k | p_ = 0; | 129 | | | 130 | 113k | } |
AutoPtr<dng_camera_profile>::~AutoPtr() Line | Count | Source | 125 | 205k | { | 126 | | | 127 | 205k | delete p_; | 128 | 205k | p_ = 0; | 129 | | | 130 | 205k | } |
AutoPtr<dng_opcode>::~AutoPtr() Line | Count | Source | 125 | 113k | { | 126 | | | 127 | 113k | delete p_; | 128 | 113k | p_ = 0; | 129 | | | 130 | 113k | } |
AutoPtr<dng_hue_sat_map>::~AutoPtr() Line | Count | Source | 125 | 25.7k | { | 126 | | | 127 | 25.7k | delete p_; | 128 | 25.7k | p_ = 0; | 129 | | | 130 | 25.7k | } |
AutoPtr<dng_1d_table>::~AutoPtr() Line | Count | Source | 125 | 51.4k | { | 126 | | | 127 | 51.4k | delete p_; | 128 | 51.4k | p_ = 0; | 129 | | | 130 | 51.4k | } |
AutoPtr<dng_color_spec>::~AutoPtr() Line | Count | Source | 125 | 2.84k | { | 126 | | | 127 | 2.84k | delete p_; | 128 | 2.84k | p_ = 0; | 129 | | | 130 | 2.84k | } |
AutoPtr<dng_simple_image>::~AutoPtr() Line | Count | Source | 125 | 19.5k | { | 126 | | | 127 | 19.5k | delete p_; | 128 | 19.5k | p_ = 0; | 129 | | | 130 | 19.5k | } |
AutoPtr<dng_bad_pixel_list>::~AutoPtr() Line | Count | Source | 125 | 6.51k | { | 126 | | | 127 | 6.51k | delete p_; | 128 | 6.51k | p_ = 0; | 129 | | | 130 | 6.51k | } |
AutoPtr<dng_gain_map>::~AutoPtr() Line | Count | Source | 125 | 1.24k | { | 126 | | | 127 | 1.24k | delete p_; | 128 | 1.24k | p_ = 0; | 129 | | | 130 | 1.24k | } |
|
131 | | |
132 | | /*****************************************************************************/ |
133 | | |
134 | | template<class T> |
135 | | T *AutoPtr<T>::Release () |
136 | 559k | { |
137 | 559k | T *result = p_; |
138 | 559k | p_ = 0; |
139 | 559k | return result; |
140 | 559k | } AutoPtr<dng_image>::Release() Line | Count | Source | 136 | 49.4k | { | 137 | 49.4k | T *result = p_; | 138 | 49.4k | p_ = 0; | 139 | 49.4k | return result; | 140 | 49.4k | } |
AutoPtr<dng_memory_block>::Release() Line | Count | Source | 136 | 95.1k | { | 137 | 95.1k | T *result = p_; | 138 | 95.1k | p_ = 0; | 139 | 95.1k | return result; | 140 | 95.1k | } |
Unexecuted instantiation: AutoPtr<dng_warp_params>::Release() AutoPtr<dng_negative>::Release() Line | Count | Source | 136 | 60.6k | { | 137 | 60.6k | T *result = p_; | 138 | 60.6k | p_ = 0; | 139 | 60.6k | return result; | 140 | 60.6k | } |
AutoPtr<dng_camera_profile>::Release() Line | Count | Source | 136 | 160k | { | 137 | 160k | T *result = p_; | 138 | 160k | p_ = 0; | 139 | 160k | return result; | 140 | 160k | } |
AutoPtr<dng_exif>::Release() Line | Count | Source | 136 | 47.8k | { | 137 | 47.8k | T *result = p_; | 138 | 47.8k | p_ = 0; | 139 | 47.8k | return result; | 140 | 47.8k | } |
AutoPtr<dng_jpeg_image>::Release() Line | Count | Source | 136 | 6.00k | { | 137 | 6.00k | T *result = p_; | 138 | 6.00k | p_ = 0; | 139 | 6.00k | return result; | 140 | 6.00k | } |
AutoPtr<dng_opcode>::Release() Line | Count | Source | 136 | 113k | { | 137 | 113k | T *result = p_; | 138 | 113k | p_ = 0; | 139 | 113k | return result; | 140 | 113k | } |
AutoPtr<dng_preview>::Release() Line | Count | Source | 136 | 6.70k | { | 137 | 6.70k | T *result = p_; | 138 | 6.70k | p_ = 0; | 139 | 6.70k | return result; | 140 | 6.70k | } |
AutoPtr<dng_simple_image>::Release() Line | Count | Source | 136 | 19.5k | { | 137 | 19.5k | T *result = p_; | 138 | 19.5k | p_ = 0; | 139 | 19.5k | return result; | 140 | 19.5k | } |
Unexecuted instantiation: AutoPtr<dng_bad_pixel_list>::Release() AutoPtr<dng_gain_map>::Release() Line | Count | Source | 136 | 94 | { | 137 | 94 | T *result = p_; | 138 | 94 | p_ = 0; | 139 | 94 | return result; | 140 | 94 | } |
Unexecuted instantiation: AutoPtr<dng_hue_sat_map>::Release() |
141 | | |
142 | | /*****************************************************************************/ |
143 | | |
144 | | template<class T> |
145 | | void AutoPtr<T>::Reset (T *p) |
146 | 1.52M | { |
147 | | |
148 | 1.52M | if (p_ != p) |
149 | 1.52M | { |
150 | 1.52M | if (p_ != 0) |
151 | 52.5k | delete p_; |
152 | 1.52M | p_ = p; |
153 | 1.52M | } |
154 | | |
155 | 1.52M | } AutoPtr<dng_negative>::Reset(dng_negative*) Line | Count | Source | 146 | 55.8k | { | 147 | | | 148 | 55.8k | if (p_ != p) | 149 | 55.8k | { | 150 | 55.8k | if (p_ != 0) | 151 | 0 | delete p_; | 152 | 55.8k | p_ = p; | 153 | 55.8k | } | 154 | | | 155 | 55.8k | } |
AutoPtr<dng_image>::Reset(dng_image*) Line | Count | Source | 146 | 155k | { | 147 | | | 148 | 155k | if (p_ != p) | 149 | 155k | { | 150 | 155k | if (p_ != 0) | 151 | 4.65k | delete p_; | 152 | 155k | p_ = p; | 153 | 155k | } | 154 | | | 155 | 155k | } |
AutoPtr<dng_memory_block>::Reset(dng_memory_block*) Line | Count | Source | 146 | 579k | { | 147 | | | 148 | 579k | if (p_ != p) | 149 | 579k | { | 150 | 579k | if (p_ != 0) | 151 | 0 | delete p_; | 152 | 579k | p_ = p; | 153 | 579k | } | 154 | | | 155 | 579k | } |
AutoPtr<dng_metadata>::Reset(dng_metadata*) Line | Count | Source | 146 | 4.72k | { | 147 | | | 148 | 4.72k | if (p_ != p) | 149 | 4.72k | { | 150 | 4.72k | if (p_ != 0) | 151 | 0 | delete p_; | 152 | 4.72k | p_ = p; | 153 | 4.72k | } | 154 | | | 155 | 4.72k | } |
AutoPtr<dng_tiff_directory>::Reset(dng_tiff_directory*) Line | Count | Source | 146 | 6.67k | { | 147 | | | 148 | 6.67k | if (p_ != p) | 149 | 6.67k | { | 150 | 6.67k | if (p_ != 0) | 151 | 0 | delete p_; | 152 | 6.67k | p_ = p; | 153 | 6.67k | } | 154 | | | 155 | 6.67k | } |
AutoPtr<dng_basic_tag_set>::Reset(dng_basic_tag_set*) Line | Count | Source | 146 | 6.67k | { | 147 | | | 148 | 6.67k | if (p_ != p) | 149 | 6.67k | { | 150 | 6.67k | if (p_ != 0) | 151 | 0 | delete p_; | 152 | 6.67k | p_ = p; | 153 | 6.67k | } | 154 | | | 155 | 6.67k | } |
AutoPtr<profile_tag_set>::Reset(profile_tag_set*) Line | Count | Source | 146 | 16.2k | { | 147 | | | 148 | 16.2k | if (p_ != p) | 149 | 16.2k | { | 150 | 16.2k | if (p_ != 0) | 151 | 0 | delete p_; | 152 | 16.2k | p_ = p; | 153 | 16.2k | } | 154 | | | 155 | 16.2k | } |
AutoPtr<color_tag_set>::Reset(color_tag_set*) Line | Count | Source | 146 | 16.2k | { | 147 | | | 148 | 16.2k | if (p_ != p) | 149 | 16.2k | { | 150 | 16.2k | if (p_ != 0) | 151 | 0 | delete p_; | 152 | 16.2k | p_ = p; | 153 | 16.2k | } | 154 | | | 155 | 16.2k | } |
AutoPtr<dng_ifd>::Reset(dng_ifd*) Line | Count | Source | 146 | 294k | { | 147 | | | 148 | 294k | if (p_ != p) | 149 | 294k | { | 150 | 294k | if (p_ != 0) | 151 | 0 | delete p_; | 152 | 294k | p_ = p; | 153 | 294k | } | 154 | | | 155 | 294k | } |
AutoPtr<dng_exif>::Reset(dng_exif*) Line | Count | Source | 146 | 167k | { | 147 | | | 148 | 167k | if (p_ != p) | 149 | 167k | { | 150 | 167k | if (p_ != 0) | 151 | 47.8k | delete p_; | 152 | 167k | p_ = p; | 153 | 167k | } | 154 | | | 155 | 167k | } |
AutoPtr<dng_shared>::Reset(dng_shared*) Line | Count | Source | 146 | 91.1k | { | 147 | | | 148 | 91.1k | if (p_ != p) | 149 | 91.1k | { | 150 | 91.1k | if (p_ != 0) | 151 | 0 | delete p_; | 152 | 91.1k | p_ = p; | 153 | 91.1k | } | 154 | | | 155 | 91.1k | } |
AutoPtr<dng_linearize_plane>::Reset(dng_linearize_plane*) Line | Count | Source | 146 | 34.4k | { | 147 | | | 148 | 34.4k | if (p_ != p) | 149 | 34.4k | { | 150 | 34.4k | if (p_ != 0) | 151 | 0 | delete p_; | 152 | 34.4k | p_ = p; | 153 | 34.4k | } | 154 | | | 155 | 34.4k | } |
AutoPtr<dng_jpeg_image>::Reset(dng_jpeg_image*) Line | Count | Source | 146 | 6.42k | { | 147 | | | 148 | 6.42k | if (p_ != p) | 149 | 6.42k | { | 150 | 6.42k | if (p_ != 0) | 151 | 0 | delete p_; | 152 | 6.42k | p_ = p; | 153 | 6.42k | } | 154 | | | 155 | 6.42k | } |
AutoPtr<dng_linearization_info>::Reset(dng_linearization_info*) Line | Count | Source | 146 | 58.3k | { | 147 | | | 148 | 58.3k | if (p_ != p) | 149 | 58.3k | { | 150 | 58.3k | if (p_ != 0) | 151 | 0 | delete p_; | 152 | 58.3k | p_ = p; | 153 | 58.3k | } | 154 | | | 155 | 58.3k | } |
AutoPtr<dng_mosaic_info>::Reset(dng_mosaic_info*) Line | Count | Source | 146 | 19.9k | { | 147 | | | 148 | 19.9k | if (p_ != p) | 149 | 19.9k | { | 150 | 19.9k | if (p_ != 0) | 151 | 0 | delete p_; | 152 | 19.9k | p_ = p; | 153 | 19.9k | } | 154 | | | 155 | 19.9k | } |
AutoPtr<dng_preview>::Reset(dng_preview*) Line | Count | Source | 146 | 6.70k | { | 147 | | | 148 | 6.70k | if (p_ != p) | 149 | 6.70k | { | 150 | 6.70k | if (p_ != 0) | 151 | 0 | delete p_; | 152 | 6.70k | p_ = p; | 153 | 6.70k | } | 154 | | | 155 | 6.70k | } |
AutoPtr<dng_hue_sat_map>::Reset(dng_hue_sat_map*) Line | Count | Source | 146 | 2.80k | { | 147 | | | 148 | 2.80k | if (p_ != p) | 149 | 0 | { | 150 | 0 | if (p_ != 0) | 151 | 0 | delete p_; | 152 | 0 | p_ = p; | 153 | 0 | } | 154 | | | 155 | 2.80k | } |
AutoPtr<dng_spline_solver>::Reset(dng_spline_solver*) Line | Count | Source | 146 | 52 | { | 147 | | | 148 | 52 | if (p_ != p) | 149 | 52 | { | 150 | 52 | if (p_ != 0) | 151 | 0 | delete p_; | 152 | 52 | p_ = p; | 153 | 52 | } | 154 | | | 155 | 52 | } |
AutoPtr<dng_bad_pixel_list>::Reset(dng_bad_pixel_list*) Line | Count | Source | 146 | 6.27k | { | 147 | | | 148 | 6.27k | if (p_ != p) | 149 | 6.27k | { | 150 | 6.27k | if (p_ != 0) | 151 | 0 | delete p_; | 152 | 6.27k | p_ = p; | 153 | 6.27k | } | 154 | | | 155 | 6.27k | } |
AutoPtr<dng_1d_table>::Reset(dng_1d_table*) Line | Count | Source | 146 | 54 | { | 147 | | | 148 | 54 | if (p_ != p) | 149 | 54 | { | 150 | 54 | if (p_ != 0) | 151 | 0 | delete p_; | 152 | 54 | p_ = p; | 153 | 54 | } | 154 | | | 155 | 54 | } |
AutoPtr<dng_gain_map>::Reset(dng_gain_map*) Line | Count | Source | 146 | 94 | { | 147 | | | 148 | 94 | if (p_ != p) | 149 | 94 | { | 150 | 94 | if (p_ != 0) | 151 | 0 | delete p_; | 152 | 94 | p_ = p; | 153 | 94 | } | 154 | | | 155 | 94 | } |
|
156 | | |
157 | | /*****************************************************************************/ |
158 | | |
159 | | template<class T> |
160 | | void AutoPtr<T>::Reset () |
161 | 186k | { |
162 | | |
163 | 186k | if (p_ != 0) |
164 | 103k | { |
165 | 103k | delete p_; |
166 | 103k | p_ = 0; |
167 | 103k | } |
168 | | |
169 | 186k | } AutoPtr<dng_memory_block>::Reset() Line | Count | Source | 161 | 38.6k | { | 162 | | | 163 | 38.6k | if (p_ != 0) | 164 | 21.3k | { | 165 | 21.3k | delete p_; | 166 | 21.3k | p_ = 0; | 167 | 21.3k | } | 168 | | | 169 | 38.6k | } |
AutoPtr<dng_linearization_info>::Reset() Line | Count | Source | 161 | 28.8k | { | 162 | | | 163 | 28.8k | if (p_ != 0) | 164 | 26.7k | { | 165 | 26.7k | delete p_; | 166 | 26.7k | p_ = 0; | 167 | 26.7k | } | 168 | | | 169 | 28.8k | } |
AutoPtr<dng_mosaic_info>::Reset() Line | Count | Source | 161 | 25.8k | { | 162 | | | 163 | 25.8k | if (p_ != 0) | 164 | 16.6k | { | 165 | 16.6k | delete p_; | 166 | 16.6k | p_ = 0; | 167 | 16.6k | } | 168 | | | 169 | 25.8k | } |
AutoPtr<dng_jpeg_image>::Reset() Line | Count | Source | 161 | 29.2k | { | 162 | | | 163 | 29.2k | if (p_ != 0) | 164 | 187 | { | 165 | 187 | delete p_; | 166 | 187 | p_ = 0; | 167 | 187 | } | 168 | | | 169 | 29.2k | } |
AutoPtr<dng_image>::Reset() Line | Count | Source | 161 | 63.9k | { | 162 | | | 163 | 63.9k | if (p_ != 0) | 164 | 38.9k | { | 165 | 38.9k | delete p_; | 166 | 38.9k | p_ = 0; | 167 | 38.9k | } | 168 | | | 169 | 63.9k | } |
|
170 | | |
171 | | /*****************************************************************************/ |
172 | | |
173 | | template<class T> |
174 | | void AutoPtr<T>::Alloc () |
175 | | { |
176 | | this->Reset (new T); |
177 | | } |
178 | | |
179 | | /*****************************************************************************/ |
180 | | |
181 | | /// \brief A class that provides a variable-length array that automatically |
182 | | /// deletes the underlying memory on scope exit. |
183 | | /// |
184 | | /// T is not required to be movable. The class is implemented using |
185 | | /// dng_std_vector but purposely does not use any member functions that require |
186 | | /// T to be movable. |
187 | | |
188 | | template<typename T> |
189 | | class AutoArray |
190 | | { |
191 | | |
192 | | public: |
193 | | /// Construct an AutoArray that refers to a null pointer. |
194 | | |
195 | 68.9k | AutoArray () { }AutoArray<dng_fingerprint>::AutoArray() Line | Count | Source | 195 | 62.8k | AutoArray () { } |
AutoArray<AutoPtr<dng_memory_block> >::AutoArray() Line | Count | Source | 195 | 6.07k | AutoArray () { } |
|
196 | | |
197 | | /// Construct an AutoArray containing 'count' elements, which are |
198 | | /// default-constructed. If an out-of-memory condition occurs, a |
199 | | /// dng_exception with error code dng_error_memory is thrown. |
200 | | |
201 | | explicit AutoArray (size_t count) |
202 | 5.64k | : vector_(new dng_std_vector<T>(count)) |
203 | 5.64k | { |
204 | 5.64k | } |
205 | | |
206 | | /// Changes the size of the AutoArray to 'count' elements. The new |
207 | | /// elements are default-constructed. The previously existing elements |
208 | | /// of the array are destroyed. If an out-of-memory condition occurs, a |
209 | | /// dng_exception with error code dng_error_memory is thrown. |
210 | | |
211 | | void Reset (size_t count) |
212 | 24.1k | { |
213 | 24.1k | vector_.reset(new dng_std_vector<T>(count)); |
214 | 24.1k | } AutoArray<dng_fingerprint>::Reset(unsigned long) Line | Count | Source | 212 | 18.1k | { | 213 | 18.1k | vector_.reset(new dng_std_vector<T>(count)); | 214 | 18.1k | } |
AutoArray<AutoPtr<dng_memory_block> >::Reset(unsigned long) Line | Count | Source | 212 | 6.05k | { | 213 | 6.05k | vector_.reset(new dng_std_vector<T>(count)); | 214 | 6.05k | } |
|
215 | | |
216 | | /// Allows indexing into the AutoArray. The index 'i' must be |
217 | | /// non-negative and smaller than size of the array (the value that was |
218 | | /// passed to the constructor or to Reset()). |
219 | | |
220 | | T &operator[] (ptrdiff_t i) |
221 | 609k | { |
222 | 609k | return (*vector_) [i]; |
223 | 609k | } AutoArray<dng_fingerprint>::operator[](long) Line | Count | Source | 221 | 592k | { | 222 | 592k | return (*vector_) [i]; | 223 | 592k | } |
AutoArray<AutoPtr<dng_memory_block> >::operator[](long) Line | Count | Source | 221 | 17.0k | { | 222 | 17.0k | return (*vector_) [i]; | 223 | 17.0k | } |
|
224 | | const T &operator[] (ptrdiff_t i) const |
225 | 67.5k | { |
226 | 67.5k | return (*vector_) [i]; |
227 | 67.5k | } |
228 | | |
229 | | /// Return a pointer to the beginning of the array. |
230 | | |
231 | | T *Get () |
232 | 5.64k | { |
233 | 5.64k | if (vector_) |
234 | 5.64k | return vector_->data(); |
235 | 0 | else |
236 | 0 | return nullptr; |
237 | 5.64k | } |
238 | | const T *Get () const |
239 | | { |
240 | | if (vector_) |
241 | | return vector_->data(); |
242 | | else |
243 | | return nullptr; |
244 | | } |
245 | | |
246 | | private: |
247 | | |
248 | | // Hidden copy constructor and assignment operator. |
249 | | |
250 | | AutoArray (const AutoArray &); |
251 | | |
252 | | const AutoArray & operator= (const AutoArray &); |
253 | | |
254 | | private: |
255 | | |
256 | | std::unique_ptr<dng_std_vector<T> > vector_; |
257 | | |
258 | | }; |
259 | | |
260 | | /*****************************************************************************/ |
261 | | |
262 | | #endif |
263 | | |
264 | | /*****************************************************************************/ |