Coverage Report

Created: 2025-01-23 06:31

/src/dng_sdk/source/dng_auto_ptr.h
Line
Count
Source (jump to first uncovered line)
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.07M
    AutoPtr () : p_ (0) { }
AutoPtr<dng_negative>::AutoPtr()
Line
Count
Source
53
126k
    AutoPtr () : p_ (0) { }
AutoPtr<dng_image>::AutoPtr()
Line
Count
Source
53
329k
    AutoPtr () : p_ (0) { }
AutoPtr<dng_memory_block>::AutoPtr()
Line
Count
Source
53
2.69M
    AutoPtr () : p_ (0) { }
AutoPtr<dng_metadata>::AutoPtr()
Line
Count
Source
53
47.8k
    AutoPtr () : p_ (0) { }
AutoPtr<dng_tiff_directory>::AutoPtr()
Line
Count
Source
53
352k
    AutoPtr () : p_ (0) { }
AutoPtr<dng_basic_tag_set>::AutoPtr()
Line
Count
Source
53
352k
    AutoPtr () : p_ (0) { }
AutoPtr<profile_tag_set>::AutoPtr()
Line
Count
Source
53
16.0k
    AutoPtr () : p_ (0) { }
AutoPtr<color_tag_set>::AutoPtr()
Line
Count
Source
53
16.0k
    AutoPtr () : p_ (0) { }
AutoPtr<dng_ifd>::AutoPtr()
Line
Count
Source
53
4.20M
    AutoPtr () : p_ (0) { }
AutoPtr<dng_exif>::AutoPtr()
Line
Count
Source
53
176k
    AutoPtr () : p_ (0) { }
AutoPtr<dng_shared>::AutoPtr()
Line
Count
Source
53
131k
    AutoPtr () : p_ (0) { }
AutoPtr<dng_linearize_plane>::AutoPtr()
Line
Count
Source
53
82.1k
    AutoPtr () : p_ (0) { }
AutoPtr<dng_linearization_info>::AutoPtr()
Line
Count
Source
53
44.9k
    AutoPtr () : p_ (0) { }
AutoPtr<dng_mosaic_info>::AutoPtr()
Line
Count
Source
53
44.9k
    AutoPtr () : p_ (0) { }
AutoPtr<dng_jpeg_image>::AutoPtr()
Line
Count
Source
53
78.3k
    AutoPtr () : p_ (0) { }
AutoPtr<dng_preview>::AutoPtr()
Line
Count
Source
53
324k
    AutoPtr () : p_ (0) { }
AutoPtr<dng_hue_sat_map>::AutoPtr()
Line
Count
Source
53
13.3k
    AutoPtr () : p_ (0) { }
AutoPtr<dng_1d_table>::AutoPtr()
Line
Count
Source
53
26.6k
    AutoPtr () : p_ (0) { }
AutoPtr<dng_spline_solver>::AutoPtr()
Line
Count
Source
53
6.81k
    AutoPtr () : p_ (0) { }
AutoPtr<dng_bad_pixel_list>::AutoPtr()
Line
Count
Source
53
742
    AutoPtr () : p_ (0) { }
AutoPtr<dng_gain_map>::AutoPtr()
Line
Count
Source
53
1.01k
    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
615k
    explicit AutoPtr (T *p) :  p_( p ) { }
AutoPtr<dng_preview>::AutoPtr(dng_preview*)
Line
Count
Source
59
3.42k
    explicit AutoPtr (T *p) :  p_( p ) { }
AutoPtr<dng_memory_block>::AutoPtr(dng_memory_block*)
Line
Count
Source
59
233k
    explicit AutoPtr (T *p) :  p_( p ) { }
AutoPtr<dng_metadata>::AutoPtr(dng_metadata*)
Line
Count
Source
59
16.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
15.5k
    explicit AutoPtr (T *p) :  p_( p ) { }
AutoPtr<dng_bilinear_interpolator>::AutoPtr(dng_bilinear_interpolator*)
Line
Count
Source
59
331
    explicit AutoPtr (T *p) :  p_( p ) { }
AutoPtr<dng_exif>::AutoPtr(dng_exif*)
Line
Count
Source
59
82.4k
    explicit AutoPtr (T *p) :  p_( p ) { }
AutoPtr<dng_negative>::AutoPtr(dng_negative*)
Line
Count
Source
59
44.9k
    explicit AutoPtr (T *p) :  p_( p ) { }
AutoPtr<dng_camera_profile>::AutoPtr(dng_camera_profile*)
Line
Count
Source
59
148k
    explicit AutoPtr (T *p) :  p_( p ) { }
AutoPtr<dng_opcode>::AutoPtr(dng_opcode*)
Line
Count
Source
59
50.5k
    explicit AutoPtr (T *p) :  p_( p ) { }
AutoPtr<dng_jpeg_image>::AutoPtr(dng_jpeg_image*)
Line
Count
Source
59
4.24k
    explicit AutoPtr (T *p) :  p_( p ) { }
AutoPtr<dng_color_spec>::AutoPtr(dng_color_spec*)
Line
Count
Source
59
1.68k
    explicit AutoPtr (T *p) :  p_( p ) { }
AutoPtr<dng_simple_image>::AutoPtr(dng_simple_image*)
Line
Count
Source
59
14.0k
    explicit AutoPtr (T *p) :  p_( p ) { }
AutoPtr<dng_gain_map>::AutoPtr(dng_gain_map*)
Line
Count
Source
59
187
    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
108M
    T *Get () const { return p_; }
AutoPtr<dng_image>::Get() const
Line
Count
Source
72
641k
    T *Get () const { return p_; }
AutoPtr<dng_preview>::Get() const
Line
Count
Source
72
6.85k
    T *Get () const { return p_; }
AutoPtr<dng_negative>::Get() const
Line
Count
Source
72
63.7k
    T *Get () const { return p_; }
AutoPtr<dng_memory_block>::Get() const
Line
Count
Source
72
726k
    T *Get () const { return p_; }
AutoPtr<dng_exif>::Get() const
Line
Count
Source
72
570k
    T *Get () const { return p_; }
AutoPtr<dng_linearization_info>::Get() const
Line
Count
Source
72
203k
    T *Get () const { return p_; }
AutoPtr<dng_mosaic_info>::Get() const
Line
Count
Source
72
100k
    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
784k
    T *Get () const { return p_; }
AutoPtr<dng_ifd>::Get() const
Line
Count
Source
72
495k
    T *Get () const { return p_; }
AutoPtr<dng_camera_profile>::Get() const
Line
Count
Source
72
2.83M
    T *Get () const { return p_; }
AutoPtr<dng_jpeg_image>::Get() const
Line
Count
Source
72
104k
    T *Get () const { return p_; }
AutoPtr<dng_hue_sat_map>::Get() const
Line
Count
Source
72
101M
    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.28G
    T *operator-> () const { return p_; }
AutoPtr<dng_negative>::operator->() const
Line
Count
Source
94
476k
    T *operator-> () const { return p_; }
AutoPtr<dng_image>::operator->() const
Line
Count
Source
94
129k
    T *operator-> () const { return p_; }
AutoPtr<dng_preview>::operator->() const
Line
Count
Source
94
17.1k
    T *operator-> () const { return p_; }
AutoPtr<dng_memory_block>::operator->() const
Line
Count
Source
94
1.28G
    T *operator-> () const { return p_; }
AutoPtr<dng_metadata>::operator->() const
Line
Count
Source
94
82.5k
    T *operator-> () const { return p_; }
AutoPtr<dng_ifd>::operator->() const
Line
Count
Source
94
2.59M
    T *operator-> () const { return p_; }
AutoPtr<dng_tiff_directory>::operator->() const
Line
Count
Source
94
1.17k
    T *operator-> () const { return p_; }
AutoPtr<dng_exif>::operator->() const
Line
Count
Source
94
193k
    T *operator-> () const { return p_; }
AutoPtr<dng_shared>::operator->() const
Line
Count
Source
94
1.18M
    T *operator-> () const { return p_; }
Unexecuted instantiation: AutoPtr<dng_warp_params>::operator->() const
AutoPtr<dng_linearize_plane>::operator->() const
Line
Count
Source
94
119k
    T *operator-> () const { return p_; }
AutoPtr<dng_bilinear_interpolator>::operator->() const
Line
Count
Source
94
15.8k
    T *operator-> () const { return p_; }
AutoPtr<dng_camera_profile>::operator->() const
Line
Count
Source
94
319k
    T *operator-> () const { return p_; }
AutoPtr<dng_jpeg_image>::operator->() const
Line
Count
Source
94
8.49k
    T *operator-> () const { return p_; }
AutoPtr<dng_opcode>::operator->() const
Line
Count
Source
94
101k
    T *operator-> () const { return p_; }
AutoPtr<dng_color_spec>::operator->() const
Line
Count
Source
94
6.79k
    T *operator-> () const { return p_; }
AutoPtr<dng_simple_image>::operator->() const
Line
Count
Source
94
14.0k
    T *operator-> () const { return p_; }
AutoPtr<dng_bad_pixel_list>::operator->() const
Line
Count
Source
94
186k
    T *operator-> () const { return p_; }
Unexecuted instantiation: AutoPtr<dng_1d_table>::operator->() const
AutoPtr<dng_gain_map>::operator->() const
Line
Count
Source
94
152k
    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
74.8k
    T &operator* () const { return *p_; }
AutoPtr<dng_negative>::operator*() const
Line
Count
Source
99
6.81k
    T &operator* () const { return *p_; }
AutoPtr<dng_image>::operator*() const
Line
Count
Source
99
18.1k
    T &operator* () const { return *p_; }
AutoPtr<dng_preview>::operator*() const
Line
Count
Source
99
24.3k
    T &operator* () const { return *p_; }
AutoPtr<dng_metadata>::operator*() const
Line
Count
Source
99
18.7k
    T &operator* () const { return *p_; }
AutoPtr<dng_tiff_directory>::operator*() const
Line
Count
Source
99
3.39k
    T &operator* () const { return *p_; }
Unexecuted instantiation: AutoPtr<dng_ifd>::operator*() const
AutoPtr<dng_basic_tag_set>::operator*() const
Line
Count
Source
99
3.39k
    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.69M
  {
126
  
127
9.69M
  delete p_;
128
9.69M
  p_ = 0;
129
  
130
9.69M
  }
AutoPtr<dng_spline_solver>::~AutoPtr()
Line
Count
Source
125
6.81k
  {
126
  
127
6.81k
  delete p_;
128
6.81k
  p_ = 0;
129
  
130
6.81k
  }
AutoPtr<dng_negative>::~AutoPtr()
Line
Count
Source
125
171k
  {
126
  
127
171k
  delete p_;
128
171k
  p_ = 0;
129
  
130
171k
  }
AutoPtr<dng_image>::~AutoPtr()
Line
Count
Source
125
345k
  {
126
  
127
345k
  delete p_;
128
345k
  p_ = 0;
129
  
130
345k
  }
AutoPtr<dng_preview>::~AutoPtr()
Line
Count
Source
125
328k
  {
126
  
127
328k
  delete p_;
128
328k
  p_ = 0;
129
  
130
328k
  }
AutoPtr<dng_memory_block>::~AutoPtr()
Line
Count
Source
125
2.93M
  {
126
  
127
2.93M
  delete p_;
128
2.93M
  p_ = 0;
129
  
130
2.93M
  }
AutoPtr<dng_metadata>::~AutoPtr()
Line
Count
Source
125
63.9k
  {
126
  
127
63.9k
  delete p_;
128
63.9k
  p_ = 0;
129
  
130
63.9k
  }
AutoPtr<dng_tiff_directory>::~AutoPtr()
Line
Count
Source
125
352k
  {
126
  
127
352k
  delete p_;
128
352k
  p_ = 0;
129
  
130
352k
  }
AutoPtr<dng_basic_tag_set>::~AutoPtr()
Line
Count
Source
125
352k
  {
126
  
127
352k
  delete p_;
128
352k
  p_ = 0;
129
  
130
352k
  }
AutoPtr<profile_tag_set>::~AutoPtr()
Line
Count
Source
125
16.0k
  {
126
  
127
16.0k
  delete p_;
128
16.0k
  p_ = 0;
129
  
130
16.0k
  }
AutoPtr<color_tag_set>::~AutoPtr()
Line
Count
Source
125
16.0k
  {
126
  
127
16.0k
  delete p_;
128
16.0k
  p_ = 0;
129
  
130
16.0k
  }
AutoPtr<dng_ifd>::~AutoPtr()
Line
Count
Source
125
4.20M
  {
126
  
127
4.20M
  delete p_;
128
4.20M
  p_ = 0;
129
  
130
4.20M
  }
AutoPtr<dng_exif>::~AutoPtr()
Line
Count
Source
125
258k
  {
126
  
127
258k
  delete p_;
128
258k
  p_ = 0;
129
  
130
258k
  }
AutoPtr<dng_shared>::~AutoPtr()
Line
Count
Source
125
131k
  {
126
  
127
131k
  delete p_;
128
131k
  p_ = 0;
129
  
130
131k
  }
Unexecuted instantiation: AutoPtr<dng_warp_params>::~AutoPtr()
AutoPtr<dng_linearize_plane>::~AutoPtr()
Line
Count
Source
125
82.1k
  {
126
  
127
82.1k
  delete p_;
128
82.1k
  p_ = 0;
129
  
130
82.1k
  }
AutoPtr<dng_bilinear_interpolator>::~AutoPtr()
Line
Count
Source
125
331
  {
126
  
127
331
  delete p_;
128
331
  p_ = 0;
129
  
130
331
  }
AutoPtr<dng_linearization_info>::~AutoPtr()
Line
Count
Source
125
44.9k
  {
126
  
127
44.9k
  delete p_;
128
44.9k
  p_ = 0;
129
  
130
44.9k
  }
AutoPtr<dng_mosaic_info>::~AutoPtr()
Line
Count
Source
125
44.9k
  {
126
  
127
44.9k
  delete p_;
128
44.9k
  p_ = 0;
129
  
130
44.9k
  }
AutoPtr<dng_jpeg_image>::~AutoPtr()
Line
Count
Source
125
82.6k
  {
126
  
127
82.6k
  delete p_;
128
82.6k
  p_ = 0;
129
  
130
82.6k
  }
AutoPtr<dng_camera_profile>::~AutoPtr()
Line
Count
Source
125
148k
  {
126
  
127
148k
  delete p_;
128
148k
  p_ = 0;
129
  
130
148k
  }
AutoPtr<dng_opcode>::~AutoPtr()
Line
Count
Source
125
50.5k
  {
126
  
127
50.5k
  delete p_;
128
50.5k
  p_ = 0;
129
  
130
50.5k
  }
AutoPtr<dng_hue_sat_map>::~AutoPtr()
Line
Count
Source
125
13.3k
  {
126
  
127
13.3k
  delete p_;
128
13.3k
  p_ = 0;
129
  
130
13.3k
  }
AutoPtr<dng_1d_table>::~AutoPtr()
Line
Count
Source
125
26.6k
  {
126
  
127
26.6k
  delete p_;
128
26.6k
  p_ = 0;
129
  
130
26.6k
  }
AutoPtr<dng_color_spec>::~AutoPtr()
Line
Count
Source
125
1.68k
  {
126
  
127
1.68k
  delete p_;
128
1.68k
  p_ = 0;
129
  
130
1.68k
  }
AutoPtr<dng_simple_image>::~AutoPtr()
Line
Count
Source
125
14.0k
  {
126
  
127
14.0k
  delete p_;
128
14.0k
  p_ = 0;
129
  
130
14.0k
  }
AutoPtr<dng_bad_pixel_list>::~AutoPtr()
Line
Count
Source
125
742
  {
126
  
127
742
  delete p_;
128
742
  p_ = 0;
129
  
130
742
  }
AutoPtr<dng_gain_map>::~AutoPtr()
Line
Count
Source
125
1.20k
  {
126
  
127
1.20k
  delete p_;
128
1.20k
  p_ = 0;
129
  
130
1.20k
  }
131
132
/*****************************************************************************/
133
134
template<class T>
135
T *AutoPtr<T>::Release ()
136
314k
  {
137
314k
  T *result = p_;
138
314k
  p_ = 0;
139
314k
  return result;
140
314k
  }
AutoPtr<dng_image>::Release()
Line
Count
Source
136
33.4k
  {
137
33.4k
  T *result = p_;
138
33.4k
  p_ = 0;
139
33.4k
  return result;
140
33.4k
  }
AutoPtr<dng_memory_block>::Release()
Line
Count
Source
136
67.3k
  {
137
67.3k
  T *result = p_;
138
67.3k
  p_ = 0;
139
67.3k
  return result;
140
67.3k
  }
Unexecuted instantiation: AutoPtr<dng_warp_params>::Release()
AutoPtr<dng_negative>::Release()
Line
Count
Source
136
44.9k
  {
137
44.9k
  T *result = p_;
138
44.9k
  p_ = 0;
139
44.9k
  return result;
140
44.9k
  }
AutoPtr<dng_camera_profile>::Release()
Line
Count
Source
136
62.6k
  {
137
62.6k
  T *result = p_;
138
62.6k
  p_ = 0;
139
62.6k
  return result;
140
62.6k
  }
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.60k
  {
137
4.60k
  T *result = p_;
138
4.60k
  p_ = 0;
139
4.60k
  return result;
140
4.60k
  }
AutoPtr<dng_opcode>::Release()
Line
Count
Source
136
50.5k
  {
137
50.5k
  T *result = p_;
138
50.5k
  p_ = 0;
139
50.5k
  return result;
140
50.5k
  }
AutoPtr<dng_preview>::Release()
Line
Count
Source
136
3.42k
  {
137
3.42k
  T *result = p_;
138
3.42k
  p_ = 0;
139
3.42k
  return result;
140
3.42k
  }
AutoPtr<dng_simple_image>::Release()
Line
Count
Source
136
14.0k
  {
137
14.0k
  T *result = p_;
138
14.0k
  p_ = 0;
139
14.0k
  return result;
140
14.0k
  }
Unexecuted instantiation: AutoPtr<dng_bad_pixel_list>::Release()
AutoPtr<dng_gain_map>::Release()
Line
Count
Source
136
15
  {
137
15
  T *result = p_;
138
15
  p_ = 0;
139
15
  return result;
140
15
  }
Unexecuted instantiation: AutoPtr<dng_hue_sat_map>::Release()
141
142
/*****************************************************************************/
143
144
template<class T>
145
void AutoPtr<T>::Reset (T *p)
146
1.35M
  {
147
  
148
1.35M
  if (p_ != p)
149
1.35M
    {
150
1.35M
    if (p_ != 0)
151
38.0k
      delete p_;
152
1.35M
    p_ = p;
153
1.35M
    }
154
  
155
1.35M
  }
AutoPtr<dng_negative>::Reset(dng_negative*)
Line
Count
Source
146
40.0k
  {
147
  
148
40.0k
  if (p_ != p)
149
40.0k
    {
150
40.0k
    if (p_ != 0)
151
0
      delete p_;
152
40.0k
    p_ = p;
153
40.0k
    }
154
  
155
40.0k
  }
AutoPtr<dng_image>::Reset(dng_image*)
Line
Count
Source
146
106k
  {
147
  
148
106k
  if (p_ != p)
149
106k
    {
150
106k
    if (p_ != 0)
151
4.10k
      delete p_;
152
106k
    p_ = p;
153
106k
    }
154
  
155
106k
  }
AutoPtr<dng_memory_block>::Reset(dng_memory_block*)
Line
Count
Source
146
387k
  {
147
  
148
387k
  if (p_ != p)
149
387k
    {
150
387k
    if (p_ != 0)
151
0
      delete p_;
152
387k
    p_ = p;
153
387k
    }
154
  
155
387k
  }
AutoPtr<dng_metadata>::Reset(dng_metadata*)
Line
Count
Source
146
2.65k
  {
147
  
148
2.65k
  if (p_ != p)
149
2.65k
    {
150
2.65k
    if (p_ != 0)
151
0
      delete p_;
152
2.65k
    p_ = p;
153
2.65k
    }
154
  
155
2.65k
  }
AutoPtr<dng_tiff_directory>::Reset(dng_tiff_directory*)
Line
Count
Source
146
3.39k
  {
147
  
148
3.39k
  if (p_ != p)
149
3.39k
    {
150
3.39k
    if (p_ != 0)
151
0
      delete p_;
152
3.39k
    p_ = p;
153
3.39k
    }
154
  
155
3.39k
  }
AutoPtr<dng_basic_tag_set>::Reset(dng_basic_tag_set*)
Line
Count
Source
146
3.39k
  {
147
  
148
3.39k
  if (p_ != p)
149
3.39k
    {
150
3.39k
    if (p_ != 0)
151
0
      delete p_;
152
3.39k
    p_ = p;
153
3.39k
    }
154
  
155
3.39k
  }
AutoPtr<profile_tag_set>::Reset(profile_tag_set*)
Line
Count
Source
146
12.8k
  {
147
  
148
12.8k
  if (p_ != p)
149
12.8k
    {
150
12.8k
    if (p_ != 0)
151
0
      delete p_;
152
12.8k
    p_ = p;
153
12.8k
    }
154
  
155
12.8k
  }
AutoPtr<color_tag_set>::Reset(color_tag_set*)
Line
Count
Source
146
12.8k
  {
147
  
148
12.8k
  if (p_ != p)
149
12.8k
    {
150
12.8k
    if (p_ != 0)
151
0
      delete p_;
152
12.8k
    p_ = p;
153
12.8k
    }
154
  
155
12.8k
  }
AutoPtr<dng_ifd>::Reset(dng_ifd*)
Line
Count
Source
146
384k
  {
147
  
148
384k
  if (p_ != p)
149
384k
    {
150
384k
    if (p_ != 0)
151
0
      delete p_;
152
384k
    p_ = p;
153
384k
    }
154
  
155
384k
  }
AutoPtr<dng_exif>::Reset(dng_exif*)
Line
Count
Source
146
184k
  {
147
  
148
184k
  if (p_ != p)
149
184k
    {
150
184k
    if (p_ != 0)
151
33.9k
      delete p_;
152
184k
    p_ = p;
153
184k
    }
154
  
155
184k
  }
AutoPtr<dng_shared>::Reset(dng_shared*)
Line
Count
Source
146
129k
  {
147
  
148
129k
  if (p_ != p)
149
129k
    {
150
129k
    if (p_ != 0)
151
0
      delete p_;
152
129k
    p_ = p;
153
129k
    }
154
  
155
129k
  }
AutoPtr<dng_linearize_plane>::Reset(dng_linearize_plane*)
Line
Count
Source
146
24.7k
  {
147
  
148
24.7k
  if (p_ != p)
149
24.7k
    {
150
24.7k
    if (p_ != 0)
151
0
      delete p_;
152
24.7k
    p_ = p;
153
24.7k
    }
154
  
155
24.7k
  }
AutoPtr<dng_jpeg_image>::Reset(dng_jpeg_image*)
Line
Count
Source
146
4.99k
  {
147
  
148
4.99k
  if (p_ != p)
149
4.99k
    {
150
4.99k
    if (p_ != 0)
151
0
      delete p_;
152
4.99k
    p_ = p;
153
4.99k
    }
154
  
155
4.99k
  }
AutoPtr<dng_linearization_info>::Reset(dng_linearization_info*)
Line
Count
Source
146
40.7k
  {
147
  
148
40.7k
  if (p_ != p)
149
40.7k
    {
150
40.7k
    if (p_ != 0)
151
0
      delete p_;
152
40.7k
    p_ = p;
153
40.7k
    }
154
  
155
40.7k
  }
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.42k
  {
147
  
148
3.42k
  if (p_ != p)
149
3.42k
    {
150
3.42k
    if (p_ != 0)
151
0
      delete p_;
152
3.42k
    p_ = p;
153
3.42k
    }
154
  
155
3.42k
  }
AutoPtr<dng_hue_sat_map>::Reset(dng_hue_sat_map*)
Line
Count
Source
146
1.67k
  {
147
  
148
1.67k
  if (p_ != p)
149
0
    {
150
0
    if (p_ != 0)
151
0
      delete p_;
152
0
    p_ = p;
153
0
    }
154
  
155
1.67k
  }
Unexecuted instantiation: AutoPtr<dng_spline_solver>::Reset(dng_spline_solver*)
AutoPtr<dng_bad_pixel_list>::Reset(dng_bad_pixel_list*)
Line
Count
Source
146
588
  {
147
  
148
588
  if (p_ != p)
149
588
    {
150
588
    if (p_ != 0)
151
0
      delete p_;
152
588
    p_ = p;
153
588
    }
154
  
155
588
  }
Unexecuted instantiation: AutoPtr<dng_1d_table>::Reset(dng_1d_table*)
AutoPtr<dng_gain_map>::Reset(dng_gain_map*)
Line
Count
Source
146
15
  {
147
  
148
15
  if (p_ != p)
149
15
    {
150
15
    if (p_ != 0)
151
0
      delete p_;
152
15
    p_ = p;
153
15
    }
154
  
155
15
  }
156
157
/*****************************************************************************/
158
159
template<class T>
160
void AutoPtr<T>::Reset ()
161
130k
  {
162
  
163
130k
  if (p_ != 0)
164
72.7k
    {
165
72.7k
    delete p_;
166
72.7k
    p_ = 0;
167
72.7k
    }
168
  
169
130k
  }
AutoPtr<dng_memory_block>::Reset()
Line
Count
Source
161
26.2k
  {
162
  
163
26.2k
  if (p_ != 0)
164
13.6k
    {
165
13.6k
    delete p_;
166
13.6k
    p_ = 0;
167
13.6k
    }
168
  
169
26.2k
  }
AutoPtr<dng_linearization_info>::Reset()
Line
Count
Source
161
20.5k
  {
162
  
163
20.5k
  if (p_ != 0)
164
19.7k
    {
165
19.7k
    delete p_;
166
19.7k
    p_ = 0;
167
19.7k
    }
168
  
169
20.5k
  }
AutoPtr<dng_mosaic_info>::Reset()
Line
Count
Source
161
17.8k
  {
162
  
163
17.8k
  if (p_ != 0)
164
12.2k
    {
165
12.2k
    delete p_;
166
12.2k
    p_ = 0;
167
12.2k
    }
168
  
169
17.8k
  }
AutoPtr<dng_jpeg_image>::Reset()
Line
Count
Source
161
20.8k
  {
162
  
163
20.8k
  if (p_ != 0)
164
140
    {
165
140
    delete p_;
166
140
    p_ = 0;
167
140
    }
168
  
169
20.8k
  }
AutoPtr<dng_image>::Reset()
Line
Count
Source
161
44.7k
  {
162
  
163
44.7k
  if (p_ != 0)
164
26.9k
    {
165
26.9k
    delete p_;
166
26.9k
    p_ = 0;
167
26.9k
    }
168
  
169
44.7k
  }
Unexecuted instantiation: AutoPtr<dng_1d_table>::Reset()
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
48.4k
    AutoArray () { }
AutoArray<dng_fingerprint>::AutoArray()
Line
Count
Source
195
43.7k
    AutoArray () { }
AutoArray<AutoPtr<dng_memory_block> >::AutoArray()
Line
Count
Source
195
4.63k
    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
4.24k
      : vector_(new dng_std_vector<T>(count))
203
4.24k
      {
204
4.24k
      }
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.8k
      {
213
16.8k
      vector_.reset(new dng_std_vector<T>(count));
214
16.8k
      }
AutoArray<dng_fingerprint>::Reset(unsigned long)
Line
Count
Source
212
12.2k
      {
213
12.2k
      vector_.reset(new dng_std_vector<T>(count));
214
12.2k
      }
AutoArray<AutoPtr<dng_memory_block> >::Reset(unsigned long)
Line
Count
Source
212
4.62k
      {
213
4.62k
      vector_.reset(new dng_std_vector<T>(count));
214
4.62k
      }
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
491k
      {
222
491k
      return (*vector_) [i];
223
491k
      }
AutoArray<dng_fingerprint>::operator[](long)
Line
Count
Source
221
480k
      {
222
480k
      return (*vector_) [i];
223
480k
      }
AutoArray<AutoPtr<dng_memory_block> >::operator[](long)
Line
Count
Source
221
11.0k
      {
222
11.0k
      return (*vector_) [i];
223
11.0k
      }
224
    const T &operator[] (ptrdiff_t i) const
225
44.0k
      {
226
44.0k
      return (*vector_) [i];
227
44.0k
      }
228
229
    /// Return a pointer to the beginning of the array.
230
231
    T *Get ()
232
4.24k
      {
233
4.24k
      if (vector_)
234
4.24k
        return vector_->data();
235
0
      else
236
0
        return nullptr;
237
4.24k
      }
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
/*****************************************************************************/