Coverage Report

Created: 2025-11-24 06:57

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
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
  }
AutoPtr<dng_1d_table>::Reset()
Line
Count
Source
161
246
  {
162
  
163
246
  if (p_ != 0)
164
0
    {
165
0
    delete p_;
166
0
    p_ = 0;
167
0
    }
168
  
169
246
  }
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
/*****************************************************************************/