/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 | 12.1M | AutoPtr () : p_ (0) { }AutoPtr<dng_negative>::AutoPtr() Line | Count | Source | 53 | 145k | AutoPtr () : p_ (0) { } |
AutoPtr<dng_image>::AutoPtr() Line | Count | Source | 53 | 487k | AutoPtr () : p_ (0) { } |
AutoPtr<dng_memory_block>::AutoPtr() Line | Count | Source | 53 | 4.23M | AutoPtr () : p_ (0) { } |
AutoPtr<dng_metadata>::AutoPtr() Line | Count | Source | 53 | 69.4k | AutoPtr () : p_ (0) { } |
AutoPtr<dng_tiff_directory>::AutoPtr() Line | Count | Source | 53 | 505k | AutoPtr () : p_ (0) { } |
AutoPtr<dng_basic_tag_set>::AutoPtr() Line | Count | Source | 53 | 505k | AutoPtr () : p_ (0) { } |
AutoPtr<profile_tag_set>::AutoPtr() Line | Count | Source | 53 | 22.9k | AutoPtr () : p_ (0) { } |
AutoPtr<color_tag_set>::AutoPtr() Line | Count | Source | 53 | 22.9k | AutoPtr () : p_ (0) { } |
AutoPtr<dng_ifd>::AutoPtr() Line | Count | Source | 53 | 4.84M | AutoPtr () : p_ (0) { } |
AutoPtr<dng_exif>::AutoPtr() Line | Count | Source | 53 | 216k | AutoPtr () : p_ (0) { } |
AutoPtr<dng_shared>::AutoPtr() Line | Count | Source | 53 | 150k | AutoPtr () : p_ (0) { } |
AutoPtr<dng_linearize_plane>::AutoPtr() Line | Count | Source | 53 | 118k | AutoPtr () : p_ (0) { } |
AutoPtr<dng_linearization_info>::AutoPtr() Line | Count | Source | 53 | 65.6k | AutoPtr () : p_ (0) { } |
AutoPtr<dng_mosaic_info>::AutoPtr() Line | Count | Source | 53 | 65.6k | AutoPtr () : p_ (0) { } |
AutoPtr<dng_jpeg_image>::AutoPtr() Line | Count | Source | 53 | 115k | AutoPtr () : p_ (0) { } |
AutoPtr<dng_preview>::AutoPtr() Line | Count | Source | 53 | 465k | AutoPtr () : p_ (0) { } |
AutoPtr<dng_hue_sat_map>::AutoPtr() Line | Count | Source | 53 | 24.2k | AutoPtr () : p_ (0) { } |
AutoPtr<dng_1d_table>::AutoPtr() Line | Count | Source | 53 | 48.5k | AutoPtr () : p_ (0) { } |
AutoPtr<dng_spline_solver>::AutoPtr() Line | Count | Source | 53 | 12.7k | AutoPtr () : p_ (0) { } |
AutoPtr<dng_bad_pixel_list>::AutoPtr() Line | Count | Source | 53 | 7.11k | AutoPtr () : p_ (0) { } |
AutoPtr<dng_gain_map>::AutoPtr() Line | Count | Source | 53 | 1.10k | 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 | 964k | explicit AutoPtr (T *p) : p_( p ) { }AutoPtr<dng_preview>::AutoPtr(dng_preview*) Line | Count | Source | 59 | 6.30k | explicit AutoPtr (T *p) : p_( p ) { } |
AutoPtr<dng_memory_block>::AutoPtr(dng_memory_block*) Line | Count | Source | 59 | 344k | explicit AutoPtr (T *p) : p_( p ) { } |
AutoPtr<dng_metadata>::AutoPtr(dng_metadata*) Line | Count | Source | 59 | 23.0k | 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 | 23.8k | explicit AutoPtr (T *p) : p_( p ) { } |
AutoPtr<dng_bilinear_interpolator>::AutoPtr(dng_bilinear_interpolator*) Line | Count | Source | 59 | 1.68k | explicit AutoPtr (T *p) : p_( p ) { } |
AutoPtr<dng_exif>::AutoPtr(dng_exif*) Line | Count | Source | 59 | 120k | explicit AutoPtr (T *p) : p_( p ) { } |
AutoPtr<dng_negative>::AutoPtr(dng_negative*) Line | Count | Source | 59 | 65.6k | explicit AutoPtr (T *p) : p_( p ) { } |
AutoPtr<dng_camera_profile>::AutoPtr(dng_camera_profile*) Line | Count | Source | 59 | 270k | explicit AutoPtr (T *p) : p_( p ) { } |
AutoPtr<dng_opcode>::AutoPtr(dng_opcode*) Line | Count | Source | 59 | 79.6k | explicit AutoPtr (T *p) : p_( p ) { } |
AutoPtr<dng_jpeg_image>::AutoPtr(dng_jpeg_image*) Line | Count | Source | 59 | 5.85k | explicit AutoPtr (T *p) : p_( p ) { } |
AutoPtr<dng_color_spec>::AutoPtr(dng_color_spec*) Line | Count | Source | 59 | 2.58k | explicit AutoPtr (T *p) : p_( p ) { } |
AutoPtr<dng_simple_image>::AutoPtr(dng_simple_image*) Line | Count | Source | 59 | 20.4k | explicit AutoPtr (T *p) : p_( p ) { } |
AutoPtr<dng_gain_map>::AutoPtr(dng_gain_map*) Line | Count | Source | 59 | 255 | 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 | 58.6M | T *Get () const { return p_; }AutoPtr<dng_image>::Get() const Line | Count | Source | 72 | 952k | T *Get () const { return p_; } |
AutoPtr<dng_preview>::Get() const Line | Count | Source | 72 | 12.6k | T *Get () const { return p_; } |
AutoPtr<dng_negative>::Get() const Line | Count | Source | 72 | 93.1k | T *Get () const { return p_; } |
AutoPtr<dng_memory_block>::Get() const Line | Count | Source | 72 | 1.07M | T *Get () const { return p_; } |
AutoPtr<dng_exif>::Get() const Line | Count | Source | 72 | 638k | T *Get () const { return p_; } |
AutoPtr<dng_linearization_info>::Get() const Line | Count | Source | 72 | 299k | T *Get () const { return p_; } |
AutoPtr<dng_mosaic_info>::Get() const Line | Count | Source | 72 | 149k | T *Get () const { return p_; } |
AutoPtr<dng_metadata>::Get() const Line | Count | Source | 72 | 486k | T *Get () const { return p_; } |
AutoPtr<dng_shared>::Get() const Line | Count | Source | 72 | 867k | T *Get () const { return p_; } |
AutoPtr<dng_ifd>::Get() const Line | Count | Source | 72 | 552k | T *Get () const { return p_; } |
AutoPtr<dng_camera_profile>::Get() const Line | Count | Source | 72 | 5.41M | T *Get () const { return p_; } |
AutoPtr<dng_jpeg_image>::Get() const Line | Count | Source | 72 | 158k | T *Get () const { return p_; } |
AutoPtr<dng_hue_sat_map>::Get() const Line | Count | Source | 72 | 47.9M | T *Get () const { return p_; } |
Unexecuted instantiation: AutoPtr<dng_1d_table>::Get() const AutoPtr<dng_spline_solver>::Get() const Line | Count | Source | 72 | 102 | 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.82G | T *operator-> () const { return p_; }AutoPtr<dng_negative>::operator->() const Line | Count | Source | 94 | 696k | T *operator-> () const { return p_; } |
AutoPtr<dng_image>::operator->() const Line | Count | Source | 94 | 208k | T *operator-> () const { return p_; } |
AutoPtr<dng_preview>::operator->() const Line | Count | Source | 94 | 31.5k | T *operator-> () const { return p_; } |
AutoPtr<dng_memory_block>::operator->() const Line | Count | Source | 94 | 1.80G | T *operator-> () const { return p_; } |
AutoPtr<dng_metadata>::operator->() const Line | Count | Source | 94 | 122k | T *operator-> () const { return p_; } |
AutoPtr<dng_ifd>::operator->() const Line | Count | Source | 94 | 2.68M | T *operator-> () const { return p_; } |
AutoPtr<dng_tiff_directory>::operator->() const Line | Count | Source | 94 | 2.61k | T *operator-> () const { return p_; } |
AutoPtr<dng_exif>::operator->() const Line | Count | Source | 94 | 245k | T *operator-> () const { return p_; } |
AutoPtr<dng_shared>::operator->() const Line | Count | Source | 94 | 1.59M | 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 | 63.9k | T *operator-> () const { return p_; } |
AutoPtr<dng_camera_profile>::operator->() const Line | Count | Source | 94 | 884k | T *operator-> () const { return p_; } |
AutoPtr<dng_jpeg_image>::operator->() const Line | Count | Source | 94 | 11.7k | T *operator-> () const { return p_; } |
AutoPtr<dng_opcode>::operator->() const Line | Count | Source | 94 | 159k | T *operator-> () const { return p_; } |
AutoPtr<dng_color_spec>::operator->() const Line | Count | Source | 94 | 10.4k | T *operator-> () const { return p_; } |
AutoPtr<dng_simple_image>::operator->() const Line | Count | Source | 94 | 20.4k | T *operator-> () const { return p_; } |
AutoPtr<dng_bad_pixel_list>::operator->() const Line | Count | Source | 94 | 8.31M | T *operator-> () const { return p_; } |
AutoPtr<dng_1d_table>::operator->() const Line | Count | Source | 94 | 64 | T *operator-> () const { return p_; } |
AutoPtr<dng_gain_map>::operator->() const Line | Count | Source | 94 | 13.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 | 124k | T &operator* () const { return *p_; }AutoPtr<dng_negative>::operator*() const Line | Count | Source | 99 | 12.7k | T &operator* () const { return *p_; } |
AutoPtr<dng_image>::operator*() const Line | Count | Source | 99 | 26.3k | T &operator* () const { return *p_; } |
AutoPtr<dng_preview>::operator*() const Line | Count | Source | 99 | 45.1k | T &operator* () const { return *p_; } |
AutoPtr<dng_metadata>::operator*() const Line | Count | Source | 99 | 27.4k | T &operator* () const { return *p_; } |
AutoPtr<dng_tiff_directory>::operator*() const Line | Count | Source | 99 | 6.27k | T &operator* () const { return *p_; } |
Unexecuted instantiation: AutoPtr<dng_ifd>::operator*() const AutoPtr<dng_basic_tag_set>::operator*() const Line | Count | Source | 99 | 6.27k | 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 | 13.0M | { |
126 | | |
127 | 13.0M | delete p_; |
128 | 13.0M | p_ = 0; |
129 | | |
130 | 13.0M | } AutoPtr<dng_spline_solver>::~AutoPtr() Line | Count | Source | 125 | 12.7k | { | 126 | | | 127 | 12.7k | delete p_; | 128 | 12.7k | p_ = 0; | 129 | | | 130 | 12.7k | } |
AutoPtr<dng_negative>::~AutoPtr() Line | Count | Source | 125 | 211k | { | 126 | | | 127 | 211k | delete p_; | 128 | 211k | p_ = 0; | 129 | | | 130 | 211k | } |
AutoPtr<dng_image>::~AutoPtr() Line | Count | Source | 125 | 511k | { | 126 | | | 127 | 511k | delete p_; | 128 | 511k | p_ = 0; | 129 | | | 130 | 511k | } |
AutoPtr<dng_preview>::~AutoPtr() Line | Count | Source | 125 | 471k | { | 126 | | | 127 | 471k | delete p_; | 128 | 471k | p_ = 0; | 129 | | | 130 | 471k | } |
AutoPtr<dng_memory_block>::~AutoPtr() Line | Count | Source | 125 | 4.57M | { | 126 | | | 127 | 4.57M | delete p_; | 128 | 4.57M | p_ = 0; | 129 | | | 130 | 4.57M | } |
AutoPtr<dng_metadata>::~AutoPtr() Line | Count | Source | 125 | 92.5k | { | 126 | | | 127 | 92.5k | delete p_; | 128 | 92.5k | p_ = 0; | 129 | | | 130 | 92.5k | } |
AutoPtr<dng_tiff_directory>::~AutoPtr() Line | Count | Source | 125 | 505k | { | 126 | | | 127 | 505k | delete p_; | 128 | 505k | p_ = 0; | 129 | | | 130 | 505k | } |
AutoPtr<dng_basic_tag_set>::~AutoPtr() Line | Count | Source | 125 | 505k | { | 126 | | | 127 | 505k | delete p_; | 128 | 505k | p_ = 0; | 129 | | | 130 | 505k | } |
AutoPtr<profile_tag_set>::~AutoPtr() Line | Count | Source | 125 | 22.9k | { | 126 | | | 127 | 22.9k | delete p_; | 128 | 22.9k | p_ = 0; | 129 | | | 130 | 22.9k | } |
AutoPtr<color_tag_set>::~AutoPtr() Line | Count | Source | 125 | 22.9k | { | 126 | | | 127 | 22.9k | delete p_; | 128 | 22.9k | p_ = 0; | 129 | | | 130 | 22.9k | } |
AutoPtr<dng_ifd>::~AutoPtr() Line | Count | Source | 125 | 4.84M | { | 126 | | | 127 | 4.84M | delete p_; | 128 | 4.84M | p_ = 0; | 129 | | | 130 | 4.84M | } |
AutoPtr<dng_exif>::~AutoPtr() Line | Count | Source | 125 | 336k | { | 126 | | | 127 | 336k | delete p_; | 128 | 336k | p_ = 0; | 129 | | | 130 | 336k | } |
AutoPtr<dng_shared>::~AutoPtr() Line | Count | Source | 125 | 150k | { | 126 | | | 127 | 150k | delete p_; | 128 | 150k | p_ = 0; | 129 | | | 130 | 150k | } |
Unexecuted instantiation: AutoPtr<dng_warp_params>::~AutoPtr() AutoPtr<dng_linearize_plane>::~AutoPtr() Line | Count | Source | 125 | 118k | { | 126 | | | 127 | 118k | delete p_; | 128 | 118k | p_ = 0; | 129 | | | 130 | 118k | } |
AutoPtr<dng_bilinear_interpolator>::~AutoPtr() Line | Count | Source | 125 | 1.68k | { | 126 | | | 127 | 1.68k | delete p_; | 128 | 1.68k | p_ = 0; | 129 | | | 130 | 1.68k | } |
AutoPtr<dng_linearization_info>::~AutoPtr() Line | Count | Source | 125 | 65.6k | { | 126 | | | 127 | 65.6k | delete p_; | 128 | 65.6k | p_ = 0; | 129 | | | 130 | 65.6k | } |
AutoPtr<dng_mosaic_info>::~AutoPtr() Line | Count | Source | 125 | 65.6k | { | 126 | | | 127 | 65.6k | delete p_; | 128 | 65.6k | p_ = 0; | 129 | | | 130 | 65.6k | } |
AutoPtr<dng_jpeg_image>::~AutoPtr() Line | Count | Source | 125 | 121k | { | 126 | | | 127 | 121k | delete p_; | 128 | 121k | p_ = 0; | 129 | | | 130 | 121k | } |
AutoPtr<dng_camera_profile>::~AutoPtr() Line | Count | Source | 125 | 270k | { | 126 | | | 127 | 270k | delete p_; | 128 | 270k | p_ = 0; | 129 | | | 130 | 270k | } |
AutoPtr<dng_opcode>::~AutoPtr() Line | Count | Source | 125 | 79.6k | { | 126 | | | 127 | 79.6k | delete p_; | 128 | 79.6k | p_ = 0; | 129 | | | 130 | 79.6k | } |
AutoPtr<dng_hue_sat_map>::~AutoPtr() Line | Count | Source | 125 | 24.2k | { | 126 | | | 127 | 24.2k | delete p_; | 128 | 24.2k | p_ = 0; | 129 | | | 130 | 24.2k | } |
AutoPtr<dng_1d_table>::~AutoPtr() Line | Count | Source | 125 | 48.5k | { | 126 | | | 127 | 48.5k | delete p_; | 128 | 48.5k | p_ = 0; | 129 | | | 130 | 48.5k | } |
AutoPtr<dng_color_spec>::~AutoPtr() Line | Count | Source | 125 | 2.58k | { | 126 | | | 127 | 2.58k | delete p_; | 128 | 2.58k | p_ = 0; | 129 | | | 130 | 2.58k | } |
AutoPtr<dng_simple_image>::~AutoPtr() Line | Count | Source | 125 | 20.4k | { | 126 | | | 127 | 20.4k | delete p_; | 128 | 20.4k | p_ = 0; | 129 | | | 130 | 20.4k | } |
AutoPtr<dng_bad_pixel_list>::~AutoPtr() Line | Count | Source | 125 | 7.11k | { | 126 | | | 127 | 7.11k | delete p_; | 128 | 7.11k | p_ = 0; | 129 | | | 130 | 7.11k | } |
AutoPtr<dng_gain_map>::~AutoPtr() Line | Count | Source | 125 | 1.35k | { | 126 | | | 127 | 1.35k | delete p_; | 128 | 1.35k | p_ = 0; | 129 | | | 130 | 1.35k | } |
|
131 | | |
132 | | /*****************************************************************************/ |
133 | | |
134 | | template<class T> |
135 | | T *AutoPtr<T>::Release () |
136 | 548k | { |
137 | 548k | T *result = p_; |
138 | 548k | p_ = 0; |
139 | 548k | return result; |
140 | 548k | } AutoPtr<dng_image>::Release() Line | Count | Source | 136 | 50.1k | { | 137 | 50.1k | T *result = p_; | 138 | 50.1k | p_ = 0; | 139 | 50.1k | return result; | 140 | 50.1k | } |
AutoPtr<dng_memory_block>::Release() Line | Count | Source | 136 | 98.6k | { | 137 | 98.6k | T *result = p_; | 138 | 98.6k | p_ = 0; | 139 | 98.6k | return result; | 140 | 98.6k | } |
Unexecuted instantiation: AutoPtr<dng_warp_params>::Release() AutoPtr<dng_negative>::Release() Line | Count | Source | 136 | 65.6k | { | 137 | 65.6k | T *result = p_; | 138 | 65.6k | p_ = 0; | 139 | 65.6k | return result; | 140 | 65.6k | } |
AutoPtr<dng_camera_profile>::Release() Line | Count | Source | 136 | 170k | { | 137 | 170k | T *result = p_; | 138 | 170k | p_ = 0; | 139 | 170k | return result; | 140 | 170k | } |
AutoPtr<dng_exif>::Release() Line | Count | Source | 136 | 50.6k | { | 137 | 50.6k | T *result = p_; | 138 | 50.6k | p_ = 0; | 139 | 50.6k | return result; | 140 | 50.6k | } |
AutoPtr<dng_jpeg_image>::Release() Line | Count | Source | 136 | 6.18k | { | 137 | 6.18k | T *result = p_; | 138 | 6.18k | p_ = 0; | 139 | 6.18k | return result; | 140 | 6.18k | } |
AutoPtr<dng_opcode>::Release() Line | Count | Source | 136 | 79.6k | { | 137 | 79.6k | T *result = p_; | 138 | 79.6k | p_ = 0; | 139 | 79.6k | return result; | 140 | 79.6k | } |
AutoPtr<dng_preview>::Release() Line | Count | Source | 136 | 6.30k | { | 137 | 6.30k | T *result = p_; | 138 | 6.30k | p_ = 0; | 139 | 6.30k | return result; | 140 | 6.30k | } |
AutoPtr<dng_simple_image>::Release() Line | Count | Source | 136 | 20.4k | { | 137 | 20.4k | T *result = p_; | 138 | 20.4k | p_ = 0; | 139 | 20.4k | return result; | 140 | 20.4k | } |
Unexecuted instantiation: AutoPtr<dng_bad_pixel_list>::Release() AutoPtr<dng_gain_map>::Release() Line | Count | Source | 136 | 111 | { | 137 | 111 | T *result = p_; | 138 | 111 | p_ = 0; | 139 | 111 | return result; | 140 | 111 | } |
Unexecuted instantiation: AutoPtr<dng_hue_sat_map>::Release() |
141 | | |
142 | | /*****************************************************************************/ |
143 | | |
144 | | template<class T> |
145 | | void AutoPtr<T>::Reset (T *p) |
146 | 1.76M | { |
147 | | |
148 | 1.76M | if (p_ != p) |
149 | 1.76M | { |
150 | 1.76M | if (p_ != 0) |
151 | 55.6k | delete p_; |
152 | 1.76M | p_ = p; |
153 | 1.76M | } |
154 | | |
155 | 1.76M | } AutoPtr<dng_negative>::Reset(dng_negative*) Line | Count | Source | 146 | 60.7k | { | 147 | | | 148 | 60.7k | if (p_ != p) | 149 | 60.7k | { | 150 | 60.7k | if (p_ != 0) | 151 | 0 | delete p_; | 152 | 60.7k | p_ = p; | 153 | 60.7k | } | 154 | | | 155 | 60.7k | } |
AutoPtr<dng_image>::Reset(dng_image*) Line | Count | Source | 146 | 160k | { | 147 | | | 148 | 160k | if (p_ != p) | 149 | 160k | { | 150 | 160k | if (p_ != 0) | 151 | 5.00k | delete p_; | 152 | 160k | p_ = p; | 153 | 160k | } | 154 | | | 155 | 160k | } |
AutoPtr<dng_memory_block>::Reset(dng_memory_block*) Line | Count | Source | 146 | 590k | { | 147 | | | 148 | 590k | if (p_ != p) | 149 | 589k | { | 150 | 589k | if (p_ != 0) | 151 | 0 | delete p_; | 152 | 589k | p_ = p; | 153 | 589k | } | 154 | | | 155 | 590k | } |
AutoPtr<dng_metadata>::Reset(dng_metadata*) Line | Count | Source | 146 | 4.40k | { | 147 | | | 148 | 4.40k | if (p_ != p) | 149 | 4.40k | { | 150 | 4.40k | if (p_ != 0) | 151 | 0 | delete p_; | 152 | 4.40k | p_ = p; | 153 | 4.40k | } | 154 | | | 155 | 4.40k | } |
AutoPtr<dng_tiff_directory>::Reset(dng_tiff_directory*) 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_basic_tag_set>::Reset(dng_basic_tag_set*) 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<profile_tag_set>::Reset(profile_tag_set*) Line | Count | Source | 146 | 17.5k | { | 147 | | | 148 | 17.5k | if (p_ != p) | 149 | 17.5k | { | 150 | 17.5k | if (p_ != 0) | 151 | 0 | delete p_; | 152 | 17.5k | p_ = p; | 153 | 17.5k | } | 154 | | | 155 | 17.5k | } |
AutoPtr<color_tag_set>::Reset(color_tag_set*) Line | Count | Source | 146 | 17.5k | { | 147 | | | 148 | 17.5k | if (p_ != p) | 149 | 17.5k | { | 150 | 17.5k | if (p_ != 0) | 151 | 0 | delete p_; | 152 | 17.5k | p_ = p; | 153 | 17.5k | } | 154 | | | 155 | 17.5k | } |
AutoPtr<dng_ifd>::Reset(dng_ifd*) Line | Count | Source | 146 | 385k | { | 147 | | | 148 | 385k | if (p_ != p) | 149 | 385k | { | 150 | 385k | if (p_ != 0) | 151 | 0 | delete p_; | 152 | 385k | p_ = p; | 153 | 385k | } | 154 | | | 155 | 385k | } |
AutoPtr<dng_exif>::Reset(dng_exif*) Line | Count | Source | 146 | 229k | { | 147 | | | 148 | 229k | if (p_ != p) | 149 | 229k | { | 150 | 229k | if (p_ != 0) | 151 | 50.6k | delete p_; | 152 | 229k | p_ = p; | 153 | 229k | } | 154 | | | 155 | 229k | } |
AutoPtr<dng_shared>::Reset(dng_shared*) Line | Count | Source | 146 | 149k | { | 147 | | | 148 | 149k | if (p_ != p) | 149 | 149k | { | 150 | 149k | if (p_ != 0) | 151 | 0 | delete p_; | 152 | 149k | p_ = p; | 153 | 149k | } | 154 | | | 155 | 149k | } |
AutoPtr<dng_linearize_plane>::Reset(dng_linearize_plane*) Line | Count | Source | 146 | 35.4k | { | 147 | | | 148 | 35.4k | if (p_ != p) | 149 | 35.4k | { | 150 | 35.4k | if (p_ != 0) | 151 | 0 | delete p_; | 152 | 35.4k | p_ = p; | 153 | 35.4k | } | 154 | | | 155 | 35.4k | } |
AutoPtr<dng_jpeg_image>::Reset(dng_jpeg_image*) Line | Count | Source | 146 | 6.60k | { | 147 | | | 148 | 6.60k | if (p_ != p) | 149 | 6.60k | { | 150 | 6.60k | if (p_ != 0) | 151 | 0 | delete p_; | 152 | 6.60k | p_ = p; | 153 | 6.60k | } | 154 | | | 155 | 6.60k | } |
AutoPtr<dng_linearization_info>::Reset(dng_linearization_info*) Line | Count | Source | 146 | 61.2k | { | 147 | | | 148 | 61.2k | if (p_ != p) | 149 | 61.2k | { | 150 | 61.2k | if (p_ != 0) | 151 | 0 | delete p_; | 152 | 61.2k | p_ = p; | 153 | 61.2k | } | 154 | | | 155 | 61.2k | } |
AutoPtr<dng_mosaic_info>::Reset(dng_mosaic_info*) Line | Count | Source | 146 | 21.4k | { | 147 | | | 148 | 21.4k | if (p_ != p) | 149 | 21.4k | { | 150 | 21.4k | if (p_ != 0) | 151 | 0 | delete p_; | 152 | 21.4k | p_ = p; | 153 | 21.4k | } | 154 | | | 155 | 21.4k | } |
AutoPtr<dng_preview>::Reset(dng_preview*) Line | Count | Source | 146 | 6.30k | { | 147 | | | 148 | 6.30k | if (p_ != p) | 149 | 6.30k | { | 150 | 6.30k | if (p_ != 0) | 151 | 0 | delete p_; | 152 | 6.30k | p_ = p; | 153 | 6.30k | } | 154 | | | 155 | 6.30k | } |
AutoPtr<dng_hue_sat_map>::Reset(dng_hue_sat_map*) Line | Count | Source | 146 | 2.53k | { | 147 | | | 148 | 2.53k | if (p_ != p) | 149 | 0 | { | 150 | 0 | if (p_ != 0) | 151 | 0 | delete p_; | 152 | 0 | p_ = p; | 153 | 0 | } | 154 | | | 155 | 2.53k | } |
AutoPtr<dng_spline_solver>::Reset(dng_spline_solver*) Line | Count | Source | 146 | 51 | { | 147 | | | 148 | 51 | if (p_ != p) | 149 | 51 | { | 150 | 51 | if (p_ != 0) | 151 | 0 | delete p_; | 152 | 51 | p_ = p; | 153 | 51 | } | 154 | | | 155 | 51 | } |
AutoPtr<dng_bad_pixel_list>::Reset(dng_bad_pixel_list*) Line | Count | Source | 146 | 6.86k | { | 147 | | | 148 | 6.86k | if (p_ != p) | 149 | 6.86k | { | 150 | 6.86k | if (p_ != 0) | 151 | 0 | delete p_; | 152 | 6.86k | p_ = p; | 153 | 6.86k | } | 154 | | | 155 | 6.86k | } |
AutoPtr<dng_1d_table>::Reset(dng_1d_table*) Line | Count | Source | 146 | 64 | { | 147 | | | 148 | 64 | if (p_ != p) | 149 | 64 | { | 150 | 64 | if (p_ != 0) | 151 | 0 | delete p_; | 152 | 64 | p_ = p; | 153 | 64 | } | 154 | | | 155 | 64 | } |
AutoPtr<dng_gain_map>::Reset(dng_gain_map*) Line | Count | Source | 146 | 111 | { | 147 | | | 148 | 111 | if (p_ != p) | 149 | 111 | { | 150 | 111 | if (p_ != 0) | 151 | 0 | delete p_; | 152 | 111 | p_ = p; | 153 | 111 | } | 154 | | | 155 | 111 | } |
|
156 | | |
157 | | /*****************************************************************************/ |
158 | | |
159 | | template<class T> |
160 | | void AutoPtr<T>::Reset () |
161 | 192k | { |
162 | | |
163 | 192k | if (p_ != 0) |
164 | 108k | { |
165 | 108k | delete p_; |
166 | 108k | p_ = 0; |
167 | 108k | } |
168 | | |
169 | 192k | } AutoPtr<dng_memory_block>::Reset() Line | Count | Source | 161 | 39.4k | { | 162 | | | 163 | 39.4k | if (p_ != 0) | 164 | 21.8k | { | 165 | 21.8k | delete p_; | 166 | 21.8k | p_ = 0; | 167 | 21.8k | } | 168 | | | 169 | 39.4k | } |
AutoPtr<dng_linearization_info>::Reset() Line | Count | Source | 161 | 29.8k | { | 162 | | | 163 | 29.8k | if (p_ != 0) | 164 | 28.0k | { | 165 | 28.0k | delete p_; | 166 | 28.0k | p_ = 0; | 167 | 28.0k | } | 168 | | | 169 | 29.8k | } |
AutoPtr<dng_mosaic_info>::Reset() Line | Count | Source | 161 | 26.8k | { | 162 | | | 163 | 26.8k | if (p_ != 0) | 164 | 17.9k | { | 165 | 17.9k | delete p_; | 166 | 17.9k | p_ = 0; | 167 | 17.9k | } | 168 | | | 169 | 26.8k | } |
AutoPtr<dng_jpeg_image>::Reset() Line | Count | Source | 161 | 30.3k | { | 162 | | | 163 | 30.3k | if (p_ != 0) | 164 | 167 | { | 165 | 167 | delete p_; | 166 | 167 | p_ = 0; | 167 | 167 | } | 168 | | | 169 | 30.3k | } |
AutoPtr<dng_image>::Reset() Line | Count | Source | 161 | 66.1k | { | 162 | | | 163 | 66.1k | if (p_ != 0) | 164 | 40.2k | { | 165 | 40.2k | delete p_; | 166 | 40.2k | p_ = 0; | 167 | 40.2k | } | 168 | | | 169 | 66.1k | } |
|
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 | 72.3k | AutoArray () { }AutoArray<dng_fingerprint>::AutoArray() Line | Count | Source | 195 | 66.1k | AutoArray () { } |
AutoArray<AutoPtr<dng_memory_block> >::AutoArray() Line | Count | Source | 195 | 6.27k | 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.85k | : vector_(new dng_std_vector<T>(count)) |
203 | 5.85k | { |
204 | 5.85k | } |
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 | 25.1k | { |
213 | 25.1k | vector_.reset(new dng_std_vector<T>(count)); |
214 | 25.1k | } AutoArray<dng_fingerprint>::Reset(unsigned long) Line | Count | Source | 212 | 18.9k | { | 213 | 18.9k | vector_.reset(new dng_std_vector<T>(count)); | 214 | 18.9k | } |
AutoArray<AutoPtr<dng_memory_block> >::Reset(unsigned long) Line | Count | Source | 212 | 6.25k | { | 213 | 6.25k | vector_.reset(new dng_std_vector<T>(count)); | 214 | 6.25k | } |
|
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 | 605k | { |
222 | 605k | return (*vector_) [i]; |
223 | 605k | } AutoArray<dng_fingerprint>::operator[](long) Line | Count | Source | 221 | 588k | { | 222 | 588k | return (*vector_) [i]; | 223 | 588k | } |
AutoArray<AutoPtr<dng_memory_block> >::operator[](long) Line | Count | Source | 221 | 17.3k | { | 222 | 17.3k | return (*vector_) [i]; | 223 | 17.3k | } |
|
224 | | const T &operator[] (ptrdiff_t i) const |
225 | 68.6k | { |
226 | 68.6k | return (*vector_) [i]; |
227 | 68.6k | } |
228 | | |
229 | | /// Return a pointer to the beginning of the array. |
230 | | |
231 | | T *Get () |
232 | 5.85k | { |
233 | 5.85k | if (vector_) |
234 | 5.85k | return vector_->data(); |
235 | 0 | else |
236 | 0 | return nullptr; |
237 | 5.85k | } |
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 | | /*****************************************************************************/ |