/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 | 8.45M | AutoPtr () : p_ (0) { }AutoPtr<dng_negative>::AutoPtr() Line | Count | Source | 53 | 107k | AutoPtr () : p_ (0) { } |
AutoPtr<dng_image>::AutoPtr() Line | Count | Source | 53 | 335k | AutoPtr () : p_ (0) { } |
AutoPtr<dng_memory_block>::AutoPtr() Line | Count | Source | 53 | 2.85M | AutoPtr () : p_ (0) { } |
AutoPtr<dng_metadata>::AutoPtr() Line | Count | Source | 53 | 47.7k | AutoPtr () : p_ (0) { } |
AutoPtr<dng_tiff_directory>::AutoPtr() Line | Count | Source | 53 | 348k | AutoPtr () : p_ (0) { } |
AutoPtr<dng_basic_tag_set>::AutoPtr() Line | Count | Source | 53 | 348k | AutoPtr () : p_ (0) { } |
AutoPtr<profile_tag_set>::AutoPtr() Line | Count | Source | 53 | 15.8k | AutoPtr () : p_ (0) { } |
AutoPtr<color_tag_set>::AutoPtr() Line | Count | Source | 53 | 15.8k | AutoPtr () : p_ (0) { } |
AutoPtr<dng_ifd>::AutoPtr() Line | Count | Source | 53 | 3.50M | AutoPtr () : p_ (0) { } |
AutoPtr<dng_exif>::AutoPtr() Line | Count | Source | 53 | 154k | AutoPtr () : p_ (0) { } |
AutoPtr<dng_shared>::AutoPtr() Line | Count | Source | 53 | 108k | AutoPtr () : p_ (0) { } |
AutoPtr<dng_linearize_plane>::AutoPtr() Line | Count | Source | 53 | 77.9k | AutoPtr () : p_ (0) { } |
AutoPtr<dng_linearization_info>::AutoPtr() Line | Count | Source | 53 | 45.8k | AutoPtr () : p_ (0) { } |
AutoPtr<dng_mosaic_info>::AutoPtr() Line | Count | Source | 53 | 45.8k | AutoPtr () : p_ (0) { } |
AutoPtr<dng_jpeg_image>::AutoPtr() Line | Count | Source | 53 | 79.4k | AutoPtr () : p_ (0) { } |
AutoPtr<dng_preview>::AutoPtr() Line | Count | Source | 53 | 321k | AutoPtr () : p_ (0) { } |
AutoPtr<dng_hue_sat_map>::AutoPtr() Line | Count | Source | 53 | 12.4k | AutoPtr () : p_ (0) { } |
AutoPtr<dng_1d_table>::AutoPtr() Line | Count | Source | 53 | 24.8k | AutoPtr () : p_ (0) { } |
AutoPtr<dng_spline_solver>::AutoPtr() Line | Count | Source | 53 | 6.69k | AutoPtr () : p_ (0) { } |
AutoPtr<dng_bad_pixel_list>::AutoPtr() Line | Count | Source | 53 | 4.68k | AutoPtr () : p_ (0) { } |
AutoPtr<dng_gain_map>::AutoPtr() Line | Count | Source | 53 | 650 | 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 | 909k | explicit AutoPtr (T *p) : p_( p ) { }AutoPtr<dng_preview>::AutoPtr(dng_preview*) Line | Count | Source | 59 | 3.44k | explicit AutoPtr (T *p) : p_( p ) { } |
AutoPtr<dng_memory_block>::AutoPtr(dng_memory_block*) Line | Count | Source | 59 | 238k | explicit AutoPtr (T *p) : p_( p ) { } |
AutoPtr<dng_metadata>::AutoPtr(dng_metadata*) Line | Count | Source | 59 | 15.9k | 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 | 13.6k | explicit AutoPtr (T *p) : p_( p ) { } |
AutoPtr<dng_bilinear_interpolator>::AutoPtr(dng_bilinear_interpolator*) Line | Count | Source | 59 | 402 | explicit AutoPtr (T *p) : p_( p ) { } |
AutoPtr<dng_exif>::AutoPtr(dng_exif*) Line | Count | Source | 59 | 82.1k | explicit AutoPtr (T *p) : p_( p ) { } |
AutoPtr<dng_negative>::AutoPtr(dng_negative*) Line | Count | Source | 59 | 45.8k | explicit AutoPtr (T *p) : p_( p ) { } |
AutoPtr<dng_camera_profile>::AutoPtr(dng_camera_profile*) Line | Count | Source | 59 | 191k | explicit AutoPtr (T *p) : p_( p ) { } |
AutoPtr<dng_opcode>::AutoPtr(dng_opcode*) Line | Count | Source | 59 | 299k | explicit AutoPtr (T *p) : p_( p ) { } |
AutoPtr<dng_jpeg_image>::AutoPtr(dng_jpeg_image*) Line | Count | Source | 59 | 4.00k | explicit AutoPtr (T *p) : p_( p ) { } |
AutoPtr<dng_color_spec>::AutoPtr(dng_color_spec*) Line | Count | Source | 59 | 836 | explicit AutoPtr (T *p) : p_( p ) { } |
AutoPtr<dng_simple_image>::AutoPtr(dng_simple_image*) Line | Count | Source | 59 | 13.9k | explicit AutoPtr (T *p) : p_( p ) { } |
AutoPtr<dng_gain_map>::AutoPtr(dng_gain_map*) Line | Count | Source | 59 | 126 | 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 | 26.9M | T *Get () const { return p_; }AutoPtr<dng_image>::Get() const Line | Count | Source | 72 | 630k | T *Get () const { return p_; } |
AutoPtr<dng_preview>::Get() const Line | Count | Source | 72 | 6.89k | T *Get () const { return p_; } |
AutoPtr<dng_negative>::Get() const Line | Count | Source | 72 | 63.9k | T *Get () const { return p_; } |
AutoPtr<dng_memory_block>::Get() const Line | Count | Source | 72 | 796k | T *Get () const { return p_; } |
AutoPtr<dng_exif>::Get() const Line | Count | Source | 72 | 1.03M | T *Get () const { return p_; } |
AutoPtr<dng_linearization_info>::Get() const Line | Count | Source | 72 | 197k | T *Get () const { return p_; } |
AutoPtr<dng_mosaic_info>::Get() const Line | Count | Source | 72 | 98.5k | T *Get () const { return p_; } |
AutoPtr<dng_metadata>::Get() const Line | Count | Source | 72 | 334k | T *Get () const { return p_; } |
AutoPtr<dng_shared>::Get() const Line | Count | Source | 72 | 1.21M | T *Get () const { return p_; } |
AutoPtr<dng_ifd>::Get() const Line | Count | Source | 72 | 402k | T *Get () const { return p_; } |
AutoPtr<dng_camera_profile>::Get() const Line | Count | Source | 72 | 2.88M | T *Get () const { return p_; } |
AutoPtr<dng_jpeg_image>::Get() const Line | Count | Source | 72 | 103k | T *Get () const { return p_; } |
AutoPtr<dng_hue_sat_map>::Get() const Line | Count | Source | 72 | 19.1M | T *Get () const { return p_; } |
Unexecuted instantiation: AutoPtr<dng_1d_table>::Get() const Unexecuted instantiation: AutoPtr<dng_spline_solver>::Get() const |
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.22G | T *operator-> () const { return p_; }AutoPtr<dng_negative>::operator->() const Line | Count | Source | 94 | 499k | T *operator-> () const { return p_; } |
AutoPtr<dng_image>::operator->() const Line | Count | Source | 94 | 128k | T *operator-> () const { return p_; } |
AutoPtr<dng_preview>::operator->() const Line | Count | Source | 94 | 17.2k | T *operator-> () const { return p_; } |
AutoPtr<dng_memory_block>::operator->() const Line | Count | Source | 94 | 1.20G | T *operator-> () const { return p_; } |
AutoPtr<dng_metadata>::operator->() const Line | Count | Source | 94 | 78.8k | T *operator-> () const { return p_; } |
AutoPtr<dng_ifd>::operator->() const Line | Count | Source | 94 | 2.02M | T *operator-> () const { return p_; } |
AutoPtr<dng_tiff_directory>::operator->() const Line | Count | Source | 94 | 1.42k | T *operator-> () const { return p_; } |
AutoPtr<dng_exif>::operator->() const Line | Count | Source | 94 | 181k | T *operator-> () const { return p_; } |
AutoPtr<dng_shared>::operator->() const Line | Count | Source | 94 | 1.75M | T *operator-> () const { return p_; } |
Unexecuted instantiation: AutoPtr<dng_warp_params>::operator->() const AutoPtr<dng_linearize_plane>::operator->() const Line | Count | Source | 94 | 99.8k | T *operator-> () const { return p_; } |
AutoPtr<dng_bilinear_interpolator>::operator->() const Line | Count | Source | 94 | 31.9k | T *operator-> () const { return p_; } |
AutoPtr<dng_camera_profile>::operator->() const Line | Count | Source | 94 | 608k | T *operator-> () const { return p_; } |
AutoPtr<dng_jpeg_image>::operator->() const Line | Count | Source | 94 | 7.98k | T *operator-> () const { return p_; } |
AutoPtr<dng_opcode>::operator->() const Line | Count | Source | 94 | 599k | T *operator-> () const { return p_; } |
AutoPtr<dng_color_spec>::operator->() const Line | Count | Source | 94 | 3.43k | T *operator-> () const { return p_; } |
AutoPtr<dng_simple_image>::operator->() const Line | Count | Source | 94 | 13.9k | T *operator-> () const { return p_; } |
AutoPtr<dng_bad_pixel_list>::operator->() const Line | Count | Source | 94 | 6.77M | T *operator-> () const { return p_; } |
AutoPtr<dng_1d_table>::operator->() const Line | Count | Source | 94 | 32 | T *operator-> () const { return p_; } |
AutoPtr<dng_gain_map>::operator->() const Line | Count | Source | 94 | 35.1k | 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 | 73.0k | T &operator* () const { return *p_; }AutoPtr<dng_negative>::operator*() const Line | Count | Source | 99 | 6.69k | T &operator* () const { return *p_; } |
AutoPtr<dng_image>::operator*() const Line | Count | Source | 99 | 16.7k | T &operator* () const { return *p_; } |
AutoPtr<dng_preview>::operator*() const Line | Count | Source | 99 | 24.6k | T &operator* () const { return *p_; } |
AutoPtr<dng_metadata>::operator*() const Line | Count | Source | 99 | 18.1k | T &operator* () const { return *p_; } |
AutoPtr<dng_tiff_directory>::operator*() const Line | Count | Source | 99 | 3.41k | T &operator* () const { return *p_; } |
Unexecuted instantiation: AutoPtr<dng_ifd>::operator*() const AutoPtr<dng_basic_tag_set>::operator*() const Line | Count | Source | 99 | 3.41k | 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 | 9.36M | { |
126 | | |
127 | 9.36M | delete p_; |
128 | 9.36M | p_ = 0; |
129 | | |
130 | 9.36M | } AutoPtr<dng_spline_solver>::~AutoPtr() Line | Count | Source | 125 | 6.69k | { | 126 | | | 127 | 6.69k | delete p_; | 128 | 6.69k | p_ = 0; | 129 | | | 130 | 6.69k | } |
AutoPtr<dng_negative>::~AutoPtr() Line | Count | Source | 125 | 153k | { | 126 | | | 127 | 153k | delete p_; | 128 | 153k | p_ = 0; | 129 | | | 130 | 153k | } |
AutoPtr<dng_image>::~AutoPtr() Line | Count | Source | 125 | 349k | { | 126 | | | 127 | 349k | delete p_; | 128 | 349k | p_ = 0; | 129 | | | 130 | 349k | } |
AutoPtr<dng_preview>::~AutoPtr() Line | Count | Source | 125 | 325k | { | 126 | | | 127 | 325k | delete p_; | 128 | 325k | p_ = 0; | 129 | | | 130 | 325k | } |
AutoPtr<dng_memory_block>::~AutoPtr() Line | Count | Source | 125 | 3.09M | { | 126 | | | 127 | 3.09M | delete p_; | 128 | 3.09M | p_ = 0; | 129 | | | 130 | 3.09M | } |
AutoPtr<dng_metadata>::~AutoPtr() Line | Count | Source | 125 | 63.6k | { | 126 | | | 127 | 63.6k | delete p_; | 128 | 63.6k | p_ = 0; | 129 | | | 130 | 63.6k | } |
AutoPtr<dng_tiff_directory>::~AutoPtr() Line | Count | Source | 125 | 348k | { | 126 | | | 127 | 348k | delete p_; | 128 | 348k | p_ = 0; | 129 | | | 130 | 348k | } |
AutoPtr<dng_basic_tag_set>::~AutoPtr() Line | Count | Source | 125 | 348k | { | 126 | | | 127 | 348k | delete p_; | 128 | 348k | p_ = 0; | 129 | | | 130 | 348k | } |
AutoPtr<profile_tag_set>::~AutoPtr() Line | Count | Source | 125 | 15.8k | { | 126 | | | 127 | 15.8k | delete p_; | 128 | 15.8k | p_ = 0; | 129 | | | 130 | 15.8k | } |
AutoPtr<color_tag_set>::~AutoPtr() Line | Count | Source | 125 | 15.8k | { | 126 | | | 127 | 15.8k | delete p_; | 128 | 15.8k | p_ = 0; | 129 | | | 130 | 15.8k | } |
AutoPtr<dng_ifd>::~AutoPtr() Line | Count | Source | 125 | 3.50M | { | 126 | | | 127 | 3.50M | delete p_; | 128 | 3.50M | p_ = 0; | 129 | | | 130 | 3.50M | } |
AutoPtr<dng_exif>::~AutoPtr() Line | Count | Source | 125 | 236k | { | 126 | | | 127 | 236k | delete p_; | 128 | 236k | p_ = 0; | 129 | | | 130 | 236k | } |
AutoPtr<dng_shared>::~AutoPtr() Line | Count | Source | 125 | 108k | { | 126 | | | 127 | 108k | delete p_; | 128 | 108k | p_ = 0; | 129 | | | 130 | 108k | } |
Unexecuted instantiation: AutoPtr<dng_warp_params>::~AutoPtr() AutoPtr<dng_linearize_plane>::~AutoPtr() Line | Count | Source | 125 | 77.9k | { | 126 | | | 127 | 77.9k | delete p_; | 128 | 77.9k | p_ = 0; | 129 | | | 130 | 77.9k | } |
AutoPtr<dng_bilinear_interpolator>::~AutoPtr() Line | Count | Source | 125 | 402 | { | 126 | | | 127 | 402 | delete p_; | 128 | 402 | p_ = 0; | 129 | | | 130 | 402 | } |
AutoPtr<dng_linearization_info>::~AutoPtr() Line | Count | Source | 125 | 45.8k | { | 126 | | | 127 | 45.8k | delete p_; | 128 | 45.8k | p_ = 0; | 129 | | | 130 | 45.8k | } |
AutoPtr<dng_mosaic_info>::~AutoPtr() Line | Count | Source | 125 | 45.8k | { | 126 | | | 127 | 45.8k | delete p_; | 128 | 45.8k | p_ = 0; | 129 | | | 130 | 45.8k | } |
AutoPtr<dng_jpeg_image>::~AutoPtr() Line | Count | Source | 125 | 83.4k | { | 126 | | | 127 | 83.4k | delete p_; | 128 | 83.4k | p_ = 0; | 129 | | | 130 | 83.4k | } |
AutoPtr<dng_camera_profile>::~AutoPtr() Line | Count | Source | 125 | 191k | { | 126 | | | 127 | 191k | delete p_; | 128 | 191k | p_ = 0; | 129 | | | 130 | 191k | } |
AutoPtr<dng_opcode>::~AutoPtr() Line | Count | Source | 125 | 299k | { | 126 | | | 127 | 299k | delete p_; | 128 | 299k | p_ = 0; | 129 | | | 130 | 299k | } |
AutoPtr<dng_hue_sat_map>::~AutoPtr() Line | Count | Source | 125 | 12.4k | { | 126 | | | 127 | 12.4k | delete p_; | 128 | 12.4k | p_ = 0; | 129 | | | 130 | 12.4k | } |
AutoPtr<dng_1d_table>::~AutoPtr() Line | Count | Source | 125 | 24.8k | { | 126 | | | 127 | 24.8k | delete p_; | 128 | 24.8k | p_ = 0; | 129 | | | 130 | 24.8k | } |
AutoPtr<dng_color_spec>::~AutoPtr() Line | Count | Source | 125 | 836 | { | 126 | | | 127 | 836 | delete p_; | 128 | 836 | p_ = 0; | 129 | | | 130 | 836 | } |
AutoPtr<dng_simple_image>::~AutoPtr() Line | Count | Source | 125 | 13.9k | { | 126 | | | 127 | 13.9k | delete p_; | 128 | 13.9k | p_ = 0; | 129 | | | 130 | 13.9k | } |
AutoPtr<dng_bad_pixel_list>::~AutoPtr() Line | Count | Source | 125 | 4.68k | { | 126 | | | 127 | 4.68k | delete p_; | 128 | 4.68k | p_ = 0; | 129 | | | 130 | 4.68k | } |
AutoPtr<dng_gain_map>::~AutoPtr() Line | Count | Source | 125 | 776 | { | 126 | | | 127 | 776 | delete p_; | 128 | 776 | p_ = 0; | 129 | | | 130 | 776 | } |
|
131 | | |
132 | | /*****************************************************************************/ |
133 | | |
134 | | template<class T> |
135 | | T *AutoPtr<T>::Release () |
136 | 617k | { |
137 | 617k | T *result = p_; |
138 | 617k | p_ = 0; |
139 | 617k | return result; |
140 | 617k | } AutoPtr<dng_image>::Release() Line | Count | Source | 136 | 30.8k | { | 137 | 30.8k | T *result = p_; | 138 | 30.8k | p_ = 0; | 139 | 30.8k | return result; | 140 | 30.8k | } |
AutoPtr<dng_memory_block>::Release() Line | Count | Source | 136 | 66.4k | { | 137 | 66.4k | T *result = p_; | 138 | 66.4k | p_ = 0; | 139 | 66.4k | return result; | 140 | 66.4k | } |
Unexecuted instantiation: AutoPtr<dng_warp_params>::Release() AutoPtr<dng_negative>::Release() Line | Count | Source | 136 | 45.8k | { | 137 | 45.8k | T *result = p_; | 138 | 45.8k | p_ = 0; | 139 | 45.8k | return result; | 140 | 45.8k | } |
AutoPtr<dng_camera_profile>::Release() Line | Count | Source | 136 | 118k | { | 137 | 118k | T *result = p_; | 138 | 118k | p_ = 0; | 139 | 118k | return result; | 140 | 118k | } |
AutoPtr<dng_exif>::Release() Line | Count | Source | 136 | 33.9k | { | 137 | 33.9k | T *result = p_; | 138 | 33.9k | p_ = 0; | 139 | 33.9k | return result; | 140 | 33.9k | } |
AutoPtr<dng_jpeg_image>::Release() Line | Count | Source | 136 | 4.28k | { | 137 | 4.28k | T *result = p_; | 138 | 4.28k | p_ = 0; | 139 | 4.28k | return result; | 140 | 4.28k | } |
AutoPtr<dng_opcode>::Release() Line | Count | Source | 136 | 299k | { | 137 | 299k | T *result = p_; | 138 | 299k | p_ = 0; | 139 | 299k | return result; | 140 | 299k | } |
AutoPtr<dng_preview>::Release() Line | Count | Source | 136 | 3.44k | { | 137 | 3.44k | T *result = p_; | 138 | 3.44k | p_ = 0; | 139 | 3.44k | return result; | 140 | 3.44k | } |
AutoPtr<dng_simple_image>::Release() Line | Count | Source | 136 | 13.9k | { | 137 | 13.9k | T *result = p_; | 138 | 13.9k | p_ = 0; | 139 | 13.9k | return result; | 140 | 13.9k | } |
Unexecuted instantiation: AutoPtr<dng_bad_pixel_list>::Release() AutoPtr<dng_gain_map>::Release() Line | Count | Source | 136 | 50 | { | 137 | 50 | T *result = p_; | 138 | 50 | p_ = 0; | 139 | 50 | return result; | 140 | 50 | } |
Unexecuted instantiation: AutoPtr<dng_hue_sat_map>::Release() |
141 | | |
142 | | /*****************************************************************************/ |
143 | | |
144 | | template<class T> |
145 | | void AutoPtr<T>::Reset (T *p) |
146 | 1.20M | { |
147 | | |
148 | 1.20M | if (p_ != p) |
149 | 1.20M | { |
150 | 1.20M | if (p_ != 0) |
151 | 37.2k | delete p_; |
152 | 1.20M | p_ = p; |
153 | 1.20M | } |
154 | | |
155 | 1.20M | } AutoPtr<dng_negative>::Reset(dng_negative*) Line | Count | Source | 146 | 44.6k | { | 147 | | | 148 | 44.6k | if (p_ != p) | 149 | 44.6k | { | 150 | 44.6k | if (p_ != 0) | 151 | 0 | delete p_; | 152 | 44.6k | p_ = p; | 153 | 44.6k | } | 154 | | | 155 | 44.6k | } |
AutoPtr<dng_image>::Reset(dng_image*) Line | Count | Source | 146 | 102k | { | 147 | | | 148 | 102k | if (p_ != p) | 149 | 102k | { | 150 | 102k | if (p_ != 0) | 151 | 3.39k | delete p_; | 152 | 102k | p_ = p; | 153 | 102k | } | 154 | | | 155 | 102k | } |
AutoPtr<dng_memory_block>::Reset(dng_memory_block*) Line | Count | Source | 146 | 375k | { | 147 | | | 148 | 375k | if (p_ != p) | 149 | 375k | { | 150 | 375k | if (p_ != 0) | 151 | 0 | delete p_; | 152 | 375k | p_ = p; | 153 | 375k | } | 154 | | | 155 | 375k | } |
AutoPtr<dng_metadata>::Reset(dng_metadata*) Line | Count | Source | 146 | 2.21k | { | 147 | | | 148 | 2.21k | if (p_ != p) | 149 | 2.21k | { | 150 | 2.21k | if (p_ != 0) | 151 | 0 | delete p_; | 152 | 2.21k | p_ = p; | 153 | 2.21k | } | 154 | | | 155 | 2.21k | } |
AutoPtr<dng_tiff_directory>::Reset(dng_tiff_directory*) Line | Count | Source | 146 | 3.41k | { | 147 | | | 148 | 3.41k | if (p_ != p) | 149 | 3.41k | { | 150 | 3.41k | if (p_ != 0) | 151 | 0 | delete p_; | 152 | 3.41k | p_ = p; | 153 | 3.41k | } | 154 | | | 155 | 3.41k | } |
AutoPtr<dng_basic_tag_set>::Reset(dng_basic_tag_set*) Line | Count | Source | 146 | 3.41k | { | 147 | | | 148 | 3.41k | if (p_ != p) | 149 | 3.41k | { | 150 | 3.41k | if (p_ != 0) | 151 | 0 | delete p_; | 152 | 3.41k | p_ = p; | 153 | 3.41k | } | 154 | | | 155 | 3.41k | } |
AutoPtr<profile_tag_set>::Reset(profile_tag_set*) Line | Count | Source | 146 | 12.3k | { | 147 | | | 148 | 12.3k | if (p_ != p) | 149 | 12.3k | { | 150 | 12.3k | if (p_ != 0) | 151 | 0 | delete p_; | 152 | 12.3k | p_ = p; | 153 | 12.3k | } | 154 | | | 155 | 12.3k | } |
AutoPtr<color_tag_set>::Reset(color_tag_set*) Line | Count | Source | 146 | 12.3k | { | 147 | | | 148 | 12.3k | if (p_ != p) | 149 | 12.3k | { | 150 | 12.3k | if (p_ != 0) | 151 | 0 | delete p_; | 152 | 12.3k | p_ = p; | 153 | 12.3k | } | 154 | | | 155 | 12.3k | } |
AutoPtr<dng_ifd>::Reset(dng_ifd*) Line | Count | Source | 146 | 288k | { | 147 | | | 148 | 288k | if (p_ != p) | 149 | 288k | { | 150 | 288k | if (p_ != 0) | 151 | 0 | delete p_; | 152 | 288k | p_ = p; | 153 | 288k | } | 154 | | | 155 | 288k | } |
AutoPtr<dng_exif>::Reset(dng_exif*) Line | Count | Source | 146 | 161k | { | 147 | | | 148 | 161k | if (p_ != p) | 149 | 161k | { | 150 | 161k | if (p_ != 0) | 151 | 33.9k | delete p_; | 152 | 161k | p_ = p; | 153 | 161k | } | 154 | | | 155 | 161k | } |
AutoPtr<dng_shared>::Reset(dng_shared*) Line | Count | Source | 146 | 107k | { | 147 | | | 148 | 107k | if (p_ != p) | 149 | 107k | { | 150 | 107k | if (p_ != 0) | 151 | 0 | delete p_; | 152 | 107k | p_ = p; | 153 | 107k | } | 154 | | | 155 | 107k | } |
AutoPtr<dng_linearize_plane>::Reset(dng_linearize_plane*) Line | Count | Source | 146 | 23.9k | { | 147 | | | 148 | 23.9k | if (p_ != p) | 149 | 23.9k | { | 150 | 23.9k | if (p_ != 0) | 151 | 0 | delete p_; | 152 | 23.9k | p_ = p; | 153 | 23.9k | } | 154 | | | 155 | 23.9k | } |
AutoPtr<dng_jpeg_image>::Reset(dng_jpeg_image*) Line | Count | Source | 146 | 4.65k | { | 147 | | | 148 | 4.65k | if (p_ != p) | 149 | 4.65k | { | 150 | 4.65k | if (p_ != 0) | 151 | 0 | delete p_; | 152 | 4.65k | p_ = p; | 153 | 4.65k | } | 154 | | | 155 | 4.65k | } |
AutoPtr<dng_linearization_info>::Reset(dng_linearization_info*) Line | Count | Source | 146 | 39.9k | { | 147 | | | 148 | 39.9k | if (p_ != p) | 149 | 39.9k | { | 150 | 39.9k | if (p_ != 0) | 151 | 0 | delete p_; | 152 | 39.9k | p_ = p; | 153 | 39.9k | } | 154 | | | 155 | 39.9k | } |
AutoPtr<dng_mosaic_info>::Reset(dng_mosaic_info*) Line | Count | Source | 146 | 14.7k | { | 147 | | | 148 | 14.7k | if (p_ != p) | 149 | 14.7k | { | 150 | 14.7k | if (p_ != 0) | 151 | 0 | delete p_; | 152 | 14.7k | p_ = p; | 153 | 14.7k | } | 154 | | | 155 | 14.7k | } |
AutoPtr<dng_preview>::Reset(dng_preview*) Line | Count | Source | 146 | 3.44k | { | 147 | | | 148 | 3.44k | if (p_ != p) | 149 | 3.44k | { | 150 | 3.44k | if (p_ != 0) | 151 | 0 | delete p_; | 152 | 3.44k | p_ = p; | 153 | 3.44k | } | 154 | | | 155 | 3.44k | } |
AutoPtr<dng_hue_sat_map>::Reset(dng_hue_sat_map*) Line | Count | Source | 146 | 816 | { | 147 | | | 148 | 816 | if (p_ != p) | 149 | 0 | { | 150 | 0 | if (p_ != 0) | 151 | 0 | delete p_; | 152 | 0 | p_ = p; | 153 | 0 | } | 154 | | | 155 | 816 | } |
Unexecuted instantiation: AutoPtr<dng_spline_solver>::Reset(dng_spline_solver*) AutoPtr<dng_bad_pixel_list>::Reset(dng_bad_pixel_list*) Line | Count | Source | 146 | 4.52k | { | 147 | | | 148 | 4.52k | if (p_ != p) | 149 | 4.52k | { | 150 | 4.52k | if (p_ != 0) | 151 | 0 | delete p_; | 152 | 4.52k | p_ = p; | 153 | 4.52k | } | 154 | | | 155 | 4.52k | } |
AutoPtr<dng_1d_table>::Reset(dng_1d_table*) Line | Count | Source | 146 | 32 | { | 147 | | | 148 | 32 | if (p_ != p) | 149 | 32 | { | 150 | 32 | if (p_ != 0) | 151 | 0 | delete p_; | 152 | 32 | p_ = p; | 153 | 32 | } | 154 | | | 155 | 32 | } |
AutoPtr<dng_gain_map>::Reset(dng_gain_map*) Line | Count | Source | 146 | 50 | { | 147 | | | 148 | 50 | if (p_ != p) | 149 | 50 | { | 150 | 50 | if (p_ != 0) | 151 | 0 | delete p_; | 152 | 50 | p_ = p; | 153 | 50 | } | 154 | | | 155 | 50 | } |
|
156 | | |
157 | | /*****************************************************************************/ |
158 | | |
159 | | template<class T> |
160 | | void AutoPtr<T>::Reset () |
161 | 126k | { |
162 | | |
163 | 126k | if (p_ != 0) |
164 | 73.2k | { |
165 | 73.2k | delete p_; |
166 | 73.2k | p_ = 0; |
167 | 73.2k | } |
168 | | |
169 | 126k | } AutoPtr<dng_memory_block>::Reset() Line | Count | Source | 161 | 28.8k | { | 162 | | | 163 | 28.8k | if (p_ != 0) | 164 | 15.6k | { | 165 | 15.6k | delete p_; | 166 | 15.6k | p_ = 0; | 167 | 15.6k | } | 168 | | | 169 | 28.8k | } |
AutoPtr<dng_linearization_info>::Reset() Line | Count | Source | 161 | 18.9k | { | 162 | | | 163 | 18.9k | if (p_ != 0) | 164 | 18.9k | { | 165 | 18.9k | delete p_; | 166 | 18.9k | p_ = 0; | 167 | 18.9k | } | 168 | | | 169 | 18.9k | } |
AutoPtr<dng_mosaic_info>::Reset() Line | Count | Source | 161 | 16.5k | { | 162 | | | 163 | 16.5k | if (p_ != 0) | 164 | 12.3k | { | 165 | 12.3k | delete p_; | 166 | 12.3k | p_ = 0; | 167 | 12.3k | } | 168 | | | 169 | 16.5k | } |
AutoPtr<dng_jpeg_image>::Reset() Line | Count | Source | 161 | 19.2k | { | 162 | | | 163 | 19.2k | if (p_ != 0) | 164 | 157 | { | 165 | 157 | delete p_; | 166 | 157 | p_ = 0; | 167 | 157 | } | 168 | | | 169 | 19.2k | } |
AutoPtr<dng_image>::Reset() Line | Count | Source | 161 | 42.3k | { | 162 | | | 163 | 42.3k | if (p_ != 0) | 164 | 26.0k | { | 165 | 26.0k | delete p_; | 166 | 26.0k | p_ = 0; | 167 | 26.0k | } | 168 | | | 169 | 42.3k | } |
|
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 | 47.6k | AutoArray () { }AutoArray<dng_fingerprint>::AutoArray() Line | Count | Source | 195 | 43.3k | AutoArray () { } |
AutoArray<AutoPtr<dng_memory_block> >::AutoArray() Line | Count | Source | 195 | 4.37k | 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 | 3.98k | : vector_(new dng_std_vector<T>(count)) |
203 | 3.98k | { |
204 | 3.98k | } |
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 | 16.5k | { |
213 | 16.5k | vector_.reset(new dng_std_vector<T>(count)); |
214 | 16.5k | } AutoArray<dng_fingerprint>::Reset(unsigned long) Line | Count | Source | 212 | 12.1k | { | 213 | 12.1k | vector_.reset(new dng_std_vector<T>(count)); | 214 | 12.1k | } |
AutoArray<AutoPtr<dng_memory_block> >::Reset(unsigned long) Line | Count | Source | 212 | 4.36k | { | 213 | 4.36k | vector_.reset(new dng_std_vector<T>(count)); | 214 | 4.36k | } |
|
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 | 348k | { |
222 | 348k | return (*vector_) [i]; |
223 | 348k | } AutoArray<dng_fingerprint>::operator[](long) Line | Count | Source | 221 | 337k | { | 222 | 337k | return (*vector_) [i]; | 223 | 337k | } |
AutoArray<AutoPtr<dng_memory_block> >::operator[](long) Line | Count | Source | 221 | 10.7k | { | 222 | 10.7k | return (*vector_) [i]; | 223 | 10.7k | } |
|
224 | | const T &operator[] (ptrdiff_t i) const |
225 | 42.3k | { |
226 | 42.3k | return (*vector_) [i]; |
227 | 42.3k | } |
228 | | |
229 | | /// Return a pointer to the beginning of the array. |
230 | | |
231 | | T *Get () |
232 | 3.98k | { |
233 | 3.98k | if (vector_) |
234 | 3.98k | return vector_->data(); |
235 | 0 | else |
236 | 0 | return nullptr; |
237 | 3.98k | } |
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 | | /*****************************************************************************/ |