Coverage Report

Created: 2025-11-09 06:37

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/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
  }
AutoPtr<dng_1d_table>::Reset()
Line
Count
Source
161
274
  {
162
  
163
274
  if (p_ != 0)
164
0
    {
165
0
    delete p_;
166
0
    p_ = 0;
167
0
    }
168
  
169
274
  }
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
/*****************************************************************************/