Coverage Report

Created: 2026-04-01 06:23

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
8.45M
    AutoPtr () : p_ (0) { }
AutoPtr<dng_negative>::AutoPtr()
Line
Count
Source
53
107k
    AutoPtr () : p_ (0) { }
AutoPtr<dng_image>::AutoPtr()
Line
Count
Source
53
335k
    AutoPtr () : p_ (0) { }
AutoPtr<dng_memory_block>::AutoPtr()
Line
Count
Source
53
2.85M
    AutoPtr () : p_ (0) { }
AutoPtr<dng_metadata>::AutoPtr()
Line
Count
Source
53
47.7k
    AutoPtr () : p_ (0) { }
AutoPtr<dng_tiff_directory>::AutoPtr()
Line
Count
Source
53
348k
    AutoPtr () : p_ (0) { }
AutoPtr<dng_basic_tag_set>::AutoPtr()
Line
Count
Source
53
348k
    AutoPtr () : p_ (0) { }
AutoPtr<profile_tag_set>::AutoPtr()
Line
Count
Source
53
15.8k
    AutoPtr () : p_ (0) { }
AutoPtr<color_tag_set>::AutoPtr()
Line
Count
Source
53
15.8k
    AutoPtr () : p_ (0) { }
AutoPtr<dng_ifd>::AutoPtr()
Line
Count
Source
53
3.50M
    AutoPtr () : p_ (0) { }
AutoPtr<dng_exif>::AutoPtr()
Line
Count
Source
53
154k
    AutoPtr () : p_ (0) { }
AutoPtr<dng_shared>::AutoPtr()
Line
Count
Source
53
108k
    AutoPtr () : p_ (0) { }
AutoPtr<dng_linearize_plane>::AutoPtr()
Line
Count
Source
53
77.9k
    AutoPtr () : p_ (0) { }
AutoPtr<dng_linearization_info>::AutoPtr()
Line
Count
Source
53
45.8k
    AutoPtr () : p_ (0) { }
AutoPtr<dng_mosaic_info>::AutoPtr()
Line
Count
Source
53
45.8k
    AutoPtr () : p_ (0) { }
AutoPtr<dng_jpeg_image>::AutoPtr()
Line
Count
Source
53
79.4k
    AutoPtr () : p_ (0) { }
AutoPtr<dng_preview>::AutoPtr()
Line
Count
Source
53
321k
    AutoPtr () : p_ (0) { }
AutoPtr<dng_hue_sat_map>::AutoPtr()
Line
Count
Source
53
12.4k
    AutoPtr () : p_ (0) { }
AutoPtr<dng_1d_table>::AutoPtr()
Line
Count
Source
53
24.8k
    AutoPtr () : p_ (0) { }
AutoPtr<dng_spline_solver>::AutoPtr()
Line
Count
Source
53
6.69k
    AutoPtr () : p_ (0) { }
AutoPtr<dng_bad_pixel_list>::AutoPtr()
Line
Count
Source
53
4.68k
    AutoPtr () : p_ (0) { }
AutoPtr<dng_gain_map>::AutoPtr()
Line
Count
Source
53
650
    AutoPtr () : p_ (0) { }
54
  
55
    /// Construct an AutoPtr which owns the argument pointer.
56
    /// \param p pointer which constructed AutoPtr takes ownership of. p will be
57
    /// deleted on destruction or Reset unless Release is called first.
58
59
909k
    explicit AutoPtr (T *p) :  p_( p ) { }
AutoPtr<dng_preview>::AutoPtr(dng_preview*)
Line
Count
Source
59
3.44k
    explicit AutoPtr (T *p) :  p_( p ) { }
AutoPtr<dng_memory_block>::AutoPtr(dng_memory_block*)
Line
Count
Source
59
238k
    explicit AutoPtr (T *p) :  p_( p ) { }
AutoPtr<dng_metadata>::AutoPtr(dng_metadata*)
Line
Count
Source
59
15.9k
    explicit AutoPtr (T *p) :  p_( p ) { }
Unexecuted instantiation: AutoPtr<dng_warp_params>::AutoPtr(dng_warp_params*)
AutoPtr<dng_image>::AutoPtr(dng_image*)
Line
Count
Source
59
13.6k
    explicit AutoPtr (T *p) :  p_( p ) { }
AutoPtr<dng_bilinear_interpolator>::AutoPtr(dng_bilinear_interpolator*)
Line
Count
Source
59
402
    explicit AutoPtr (T *p) :  p_( p ) { }
AutoPtr<dng_exif>::AutoPtr(dng_exif*)
Line
Count
Source
59
82.1k
    explicit AutoPtr (T *p) :  p_( p ) { }
AutoPtr<dng_negative>::AutoPtr(dng_negative*)
Line
Count
Source
59
45.8k
    explicit AutoPtr (T *p) :  p_( p ) { }
AutoPtr<dng_camera_profile>::AutoPtr(dng_camera_profile*)
Line
Count
Source
59
191k
    explicit AutoPtr (T *p) :  p_( p ) { }
AutoPtr<dng_opcode>::AutoPtr(dng_opcode*)
Line
Count
Source
59
299k
    explicit AutoPtr (T *p) :  p_( p ) { }
AutoPtr<dng_jpeg_image>::AutoPtr(dng_jpeg_image*)
Line
Count
Source
59
4.00k
    explicit AutoPtr (T *p) :  p_( p ) { }
AutoPtr<dng_color_spec>::AutoPtr(dng_color_spec*)
Line
Count
Source
59
836
    explicit AutoPtr (T *p) :  p_( p ) { }
AutoPtr<dng_simple_image>::AutoPtr(dng_simple_image*)
Line
Count
Source
59
13.9k
    explicit AutoPtr (T *p) :  p_( p ) { }
AutoPtr<dng_gain_map>::AutoPtr(dng_gain_map*)
Line
Count
Source
59
126
    explicit AutoPtr (T *p) :  p_( p ) { }
Unexecuted instantiation: AutoPtr<dng_hue_sat_map>::AutoPtr(dng_hue_sat_map*)
60
61
    /// Reset is called on destruction.
62
63
    ~AutoPtr ();
64
65
    /// Call Reset with a pointer from new. Uses T's default constructor.
66
67
    void Alloc ();
68
69
    /// Return the owned pointer of this AutoPtr, NULL if none. No change in
70
    /// ownership or other effects occur.
71
72
26.9M
    T *Get () const { return p_; }
AutoPtr<dng_image>::Get() const
Line
Count
Source
72
630k
    T *Get () const { return p_; }
AutoPtr<dng_preview>::Get() const
Line
Count
Source
72
6.89k
    T *Get () const { return p_; }
AutoPtr<dng_negative>::Get() const
Line
Count
Source
72
63.9k
    T *Get () const { return p_; }
AutoPtr<dng_memory_block>::Get() const
Line
Count
Source
72
796k
    T *Get () const { return p_; }
AutoPtr<dng_exif>::Get() const
Line
Count
Source
72
1.03M
    T *Get () const { return p_; }
AutoPtr<dng_linearization_info>::Get() const
Line
Count
Source
72
197k
    T *Get () const { return p_; }
AutoPtr<dng_mosaic_info>::Get() const
Line
Count
Source
72
98.5k
    T *Get () const { return p_; }
AutoPtr<dng_metadata>::Get() const
Line
Count
Source
72
334k
    T *Get () const { return p_; }
AutoPtr<dng_shared>::Get() const
Line
Count
Source
72
1.21M
    T *Get () const { return p_; }
AutoPtr<dng_ifd>::Get() const
Line
Count
Source
72
402k
    T *Get () const { return p_; }
AutoPtr<dng_camera_profile>::Get() const
Line
Count
Source
72
2.88M
    T *Get () const { return p_; }
AutoPtr<dng_jpeg_image>::Get() const
Line
Count
Source
72
103k
    T *Get () const { return p_; }
AutoPtr<dng_hue_sat_map>::Get() const
Line
Count
Source
72
19.1M
    T *Get () const { return p_; }
Unexecuted instantiation: AutoPtr<dng_1d_table>::Get() const
Unexecuted instantiation: AutoPtr<dng_spline_solver>::Get() const
73
74
    /// Return the owned pointer of this AutoPtr, NULL if none. The AutoPtr gives
75
    /// up ownership and takes NULL as its value.
76
77
    T *Release ();
78
79
    /// If a pointer is owned, it is deleted. Ownership is taken of passed in
80
    /// pointer.
81
    /// \param p pointer which constructed AutoPtr takes ownership of. p will be
82
    /// deleted on destruction or Reset unless Release is called first.
83
84
    void Reset (T *p);
85
86
    /// If a pointer is owned, it is deleted and the AutoPtr takes NULL as its
87
    /// value.
88
89
    void Reset ();
90
91
    /// Allows members of the owned pointer to be accessed directly. It is an
92
    /// error to call this if the AutoPtr has NULL as its value.
93
94
1.22G
    T *operator-> () const { return p_; }
AutoPtr<dng_negative>::operator->() const
Line
Count
Source
94
499k
    T *operator-> () const { return p_; }
AutoPtr<dng_image>::operator->() const
Line
Count
Source
94
128k
    T *operator-> () const { return p_; }
AutoPtr<dng_preview>::operator->() const
Line
Count
Source
94
17.2k
    T *operator-> () const { return p_; }
AutoPtr<dng_memory_block>::operator->() const
Line
Count
Source
94
1.20G
    T *operator-> () const { return p_; }
AutoPtr<dng_metadata>::operator->() const
Line
Count
Source
94
78.8k
    T *operator-> () const { return p_; }
AutoPtr<dng_ifd>::operator->() const
Line
Count
Source
94
2.02M
    T *operator-> () const { return p_; }
AutoPtr<dng_tiff_directory>::operator->() const
Line
Count
Source
94
1.42k
    T *operator-> () const { return p_; }
AutoPtr<dng_exif>::operator->() const
Line
Count
Source
94
181k
    T *operator-> () const { return p_; }
AutoPtr<dng_shared>::operator->() const
Line
Count
Source
94
1.75M
    T *operator-> () const { return p_; }
Unexecuted instantiation: AutoPtr<dng_warp_params>::operator->() const
AutoPtr<dng_linearize_plane>::operator->() const
Line
Count
Source
94
99.8k
    T *operator-> () const { return p_; }
AutoPtr<dng_bilinear_interpolator>::operator->() const
Line
Count
Source
94
31.9k
    T *operator-> () const { return p_; }
AutoPtr<dng_camera_profile>::operator->() const
Line
Count
Source
94
608k
    T *operator-> () const { return p_; }
AutoPtr<dng_jpeg_image>::operator->() const
Line
Count
Source
94
7.98k
    T *operator-> () const { return p_; }
AutoPtr<dng_opcode>::operator->() const
Line
Count
Source
94
599k
    T *operator-> () const { return p_; }
AutoPtr<dng_color_spec>::operator->() const
Line
Count
Source
94
3.43k
    T *operator-> () const { return p_; }
AutoPtr<dng_simple_image>::operator->() const
Line
Count
Source
94
13.9k
    T *operator-> () const { return p_; }
AutoPtr<dng_bad_pixel_list>::operator->() const
Line
Count
Source
94
6.77M
    T *operator-> () const { return p_; }
AutoPtr<dng_1d_table>::operator->() const
Line
Count
Source
94
32
    T *operator-> () const { return p_; }
AutoPtr<dng_gain_map>::operator->() const
Line
Count
Source
94
35.1k
    T *operator-> () const { return p_; }
Unexecuted instantiation: AutoPtr<dng_hue_sat_map>::operator->() const
95
96
    /// Returns a reference to the object that the owned pointer points to. It is
97
    /// an error to call this if the AutoPtr has NULL as its value.
98
99
73.0k
    T &operator* () const { return *p_; }
AutoPtr<dng_negative>::operator*() const
Line
Count
Source
99
6.69k
    T &operator* () const { return *p_; }
AutoPtr<dng_image>::operator*() const
Line
Count
Source
99
16.7k
    T &operator* () const { return *p_; }
AutoPtr<dng_preview>::operator*() const
Line
Count
Source
99
24.6k
    T &operator* () const { return *p_; }
AutoPtr<dng_metadata>::operator*() const
Line
Count
Source
99
18.1k
    T &operator* () const { return *p_; }
AutoPtr<dng_tiff_directory>::operator*() const
Line
Count
Source
99
3.41k
    T &operator* () const { return *p_; }
Unexecuted instantiation: AutoPtr<dng_ifd>::operator*() const
AutoPtr<dng_basic_tag_set>::operator*() const
Line
Count
Source
99
3.41k
    T &operator* () const { return *p_; }
Unexecuted instantiation: AutoPtr<dng_gain_map>::operator*() const
100
    
101
    /// Swap with another auto ptr.
102
    
103
    friend inline void Swap (AutoPtr< T > &x, AutoPtr< T > &y)
104
      {
105
      T* temp = x.p_;
106
      x.p_ = y.p_;
107
      y.p_ = temp;
108
      }
109
    
110
  private:
111
  
112
    // Hidden copy constructor and assignment operator. I don't think the STL
113
    // "feature" of grabbing ownership of the pointer is a good idea.
114
  
115
    AutoPtr (AutoPtr<T> &rhs);
116
117
    AutoPtr<T> & operator= (AutoPtr<T> &rhs);
118
    
119
  };
120
121
/*****************************************************************************/
122
123
template<class T>
124
AutoPtr<T>::~AutoPtr ()
125
9.36M
  {
126
  
127
9.36M
  delete p_;
128
9.36M
  p_ = 0;
129
  
130
9.36M
  }
AutoPtr<dng_spline_solver>::~AutoPtr()
Line
Count
Source
125
6.69k
  {
126
  
127
6.69k
  delete p_;
128
6.69k
  p_ = 0;
129
  
130
6.69k
  }
AutoPtr<dng_negative>::~AutoPtr()
Line
Count
Source
125
153k
  {
126
  
127
153k
  delete p_;
128
153k
  p_ = 0;
129
  
130
153k
  }
AutoPtr<dng_image>::~AutoPtr()
Line
Count
Source
125
349k
  {
126
  
127
349k
  delete p_;
128
349k
  p_ = 0;
129
  
130
349k
  }
AutoPtr<dng_preview>::~AutoPtr()
Line
Count
Source
125
325k
  {
126
  
127
325k
  delete p_;
128
325k
  p_ = 0;
129
  
130
325k
  }
AutoPtr<dng_memory_block>::~AutoPtr()
Line
Count
Source
125
3.09M
  {
126
  
127
3.09M
  delete p_;
128
3.09M
  p_ = 0;
129
  
130
3.09M
  }
AutoPtr<dng_metadata>::~AutoPtr()
Line
Count
Source
125
63.6k
  {
126
  
127
63.6k
  delete p_;
128
63.6k
  p_ = 0;
129
  
130
63.6k
  }
AutoPtr<dng_tiff_directory>::~AutoPtr()
Line
Count
Source
125
348k
  {
126
  
127
348k
  delete p_;
128
348k
  p_ = 0;
129
  
130
348k
  }
AutoPtr<dng_basic_tag_set>::~AutoPtr()
Line
Count
Source
125
348k
  {
126
  
127
348k
  delete p_;
128
348k
  p_ = 0;
129
  
130
348k
  }
AutoPtr<profile_tag_set>::~AutoPtr()
Line
Count
Source
125
15.8k
  {
126
  
127
15.8k
  delete p_;
128
15.8k
  p_ = 0;
129
  
130
15.8k
  }
AutoPtr<color_tag_set>::~AutoPtr()
Line
Count
Source
125
15.8k
  {
126
  
127
15.8k
  delete p_;
128
15.8k
  p_ = 0;
129
  
130
15.8k
  }
AutoPtr<dng_ifd>::~AutoPtr()
Line
Count
Source
125
3.50M
  {
126
  
127
3.50M
  delete p_;
128
3.50M
  p_ = 0;
129
  
130
3.50M
  }
AutoPtr<dng_exif>::~AutoPtr()
Line
Count
Source
125
236k
  {
126
  
127
236k
  delete p_;
128
236k
  p_ = 0;
129
  
130
236k
  }
AutoPtr<dng_shared>::~AutoPtr()
Line
Count
Source
125
108k
  {
126
  
127
108k
  delete p_;
128
108k
  p_ = 0;
129
  
130
108k
  }
Unexecuted instantiation: AutoPtr<dng_warp_params>::~AutoPtr()
AutoPtr<dng_linearize_plane>::~AutoPtr()
Line
Count
Source
125
77.9k
  {
126
  
127
77.9k
  delete p_;
128
77.9k
  p_ = 0;
129
  
130
77.9k
  }
AutoPtr<dng_bilinear_interpolator>::~AutoPtr()
Line
Count
Source
125
402
  {
126
  
127
402
  delete p_;
128
402
  p_ = 0;
129
  
130
402
  }
AutoPtr<dng_linearization_info>::~AutoPtr()
Line
Count
Source
125
45.8k
  {
126
  
127
45.8k
  delete p_;
128
45.8k
  p_ = 0;
129
  
130
45.8k
  }
AutoPtr<dng_mosaic_info>::~AutoPtr()
Line
Count
Source
125
45.8k
  {
126
  
127
45.8k
  delete p_;
128
45.8k
  p_ = 0;
129
  
130
45.8k
  }
AutoPtr<dng_jpeg_image>::~AutoPtr()
Line
Count
Source
125
83.4k
  {
126
  
127
83.4k
  delete p_;
128
83.4k
  p_ = 0;
129
  
130
83.4k
  }
AutoPtr<dng_camera_profile>::~AutoPtr()
Line
Count
Source
125
191k
  {
126
  
127
191k
  delete p_;
128
191k
  p_ = 0;
129
  
130
191k
  }
AutoPtr<dng_opcode>::~AutoPtr()
Line
Count
Source
125
299k
  {
126
  
127
299k
  delete p_;
128
299k
  p_ = 0;
129
  
130
299k
  }
AutoPtr<dng_hue_sat_map>::~AutoPtr()
Line
Count
Source
125
12.4k
  {
126
  
127
12.4k
  delete p_;
128
12.4k
  p_ = 0;
129
  
130
12.4k
  }
AutoPtr<dng_1d_table>::~AutoPtr()
Line
Count
Source
125
24.8k
  {
126
  
127
24.8k
  delete p_;
128
24.8k
  p_ = 0;
129
  
130
24.8k
  }
AutoPtr<dng_color_spec>::~AutoPtr()
Line
Count
Source
125
836
  {
126
  
127
836
  delete p_;
128
836
  p_ = 0;
129
  
130
836
  }
AutoPtr<dng_simple_image>::~AutoPtr()
Line
Count
Source
125
13.9k
  {
126
  
127
13.9k
  delete p_;
128
13.9k
  p_ = 0;
129
  
130
13.9k
  }
AutoPtr<dng_bad_pixel_list>::~AutoPtr()
Line
Count
Source
125
4.68k
  {
126
  
127
4.68k
  delete p_;
128
4.68k
  p_ = 0;
129
  
130
4.68k
  }
AutoPtr<dng_gain_map>::~AutoPtr()
Line
Count
Source
125
776
  {
126
  
127
776
  delete p_;
128
776
  p_ = 0;
129
  
130
776
  }
131
132
/*****************************************************************************/
133
134
template<class T>
135
T *AutoPtr<T>::Release ()
136
617k
  {
137
617k
  T *result = p_;
138
617k
  p_ = 0;
139
617k
  return result;
140
617k
  }
AutoPtr<dng_image>::Release()
Line
Count
Source
136
30.8k
  {
137
30.8k
  T *result = p_;
138
30.8k
  p_ = 0;
139
30.8k
  return result;
140
30.8k
  }
AutoPtr<dng_memory_block>::Release()
Line
Count
Source
136
66.4k
  {
137
66.4k
  T *result = p_;
138
66.4k
  p_ = 0;
139
66.4k
  return result;
140
66.4k
  }
Unexecuted instantiation: AutoPtr<dng_warp_params>::Release()
AutoPtr<dng_negative>::Release()
Line
Count
Source
136
45.8k
  {
137
45.8k
  T *result = p_;
138
45.8k
  p_ = 0;
139
45.8k
  return result;
140
45.8k
  }
AutoPtr<dng_camera_profile>::Release()
Line
Count
Source
136
118k
  {
137
118k
  T *result = p_;
138
118k
  p_ = 0;
139
118k
  return result;
140
118k
  }
AutoPtr<dng_exif>::Release()
Line
Count
Source
136
33.9k
  {
137
33.9k
  T *result = p_;
138
33.9k
  p_ = 0;
139
33.9k
  return result;
140
33.9k
  }
AutoPtr<dng_jpeg_image>::Release()
Line
Count
Source
136
4.28k
  {
137
4.28k
  T *result = p_;
138
4.28k
  p_ = 0;
139
4.28k
  return result;
140
4.28k
  }
AutoPtr<dng_opcode>::Release()
Line
Count
Source
136
299k
  {
137
299k
  T *result = p_;
138
299k
  p_ = 0;
139
299k
  return result;
140
299k
  }
AutoPtr<dng_preview>::Release()
Line
Count
Source
136
3.44k
  {
137
3.44k
  T *result = p_;
138
3.44k
  p_ = 0;
139
3.44k
  return result;
140
3.44k
  }
AutoPtr<dng_simple_image>::Release()
Line
Count
Source
136
13.9k
  {
137
13.9k
  T *result = p_;
138
13.9k
  p_ = 0;
139
13.9k
  return result;
140
13.9k
  }
Unexecuted instantiation: AutoPtr<dng_bad_pixel_list>::Release()
AutoPtr<dng_gain_map>::Release()
Line
Count
Source
136
50
  {
137
50
  T *result = p_;
138
50
  p_ = 0;
139
50
  return result;
140
50
  }
Unexecuted instantiation: AutoPtr<dng_hue_sat_map>::Release()
141
142
/*****************************************************************************/
143
144
template<class T>
145
void AutoPtr<T>::Reset (T *p)
146
1.20M
  {
147
  
148
1.20M
  if (p_ != p)
149
1.20M
    {
150
1.20M
    if (p_ != 0)
151
37.2k
      delete p_;
152
1.20M
    p_ = p;
153
1.20M
    }
154
  
155
1.20M
  }
AutoPtr<dng_negative>::Reset(dng_negative*)
Line
Count
Source
146
44.6k
  {
147
  
148
44.6k
  if (p_ != p)
149
44.6k
    {
150
44.6k
    if (p_ != 0)
151
0
      delete p_;
152
44.6k
    p_ = p;
153
44.6k
    }
154
  
155
44.6k
  }
AutoPtr<dng_image>::Reset(dng_image*)
Line
Count
Source
146
102k
  {
147
  
148
102k
  if (p_ != p)
149
102k
    {
150
102k
    if (p_ != 0)
151
3.39k
      delete p_;
152
102k
    p_ = p;
153
102k
    }
154
  
155
102k
  }
AutoPtr<dng_memory_block>::Reset(dng_memory_block*)
Line
Count
Source
146
375k
  {
147
  
148
375k
  if (p_ != p)
149
375k
    {
150
375k
    if (p_ != 0)
151
0
      delete p_;
152
375k
    p_ = p;
153
375k
    }
154
  
155
375k
  }
AutoPtr<dng_metadata>::Reset(dng_metadata*)
Line
Count
Source
146
2.21k
  {
147
  
148
2.21k
  if (p_ != p)
149
2.21k
    {
150
2.21k
    if (p_ != 0)
151
0
      delete p_;
152
2.21k
    p_ = p;
153
2.21k
    }
154
  
155
2.21k
  }
AutoPtr<dng_tiff_directory>::Reset(dng_tiff_directory*)
Line
Count
Source
146
3.41k
  {
147
  
148
3.41k
  if (p_ != p)
149
3.41k
    {
150
3.41k
    if (p_ != 0)
151
0
      delete p_;
152
3.41k
    p_ = p;
153
3.41k
    }
154
  
155
3.41k
  }
AutoPtr<dng_basic_tag_set>::Reset(dng_basic_tag_set*)
Line
Count
Source
146
3.41k
  {
147
  
148
3.41k
  if (p_ != p)
149
3.41k
    {
150
3.41k
    if (p_ != 0)
151
0
      delete p_;
152
3.41k
    p_ = p;
153
3.41k
    }
154
  
155
3.41k
  }
AutoPtr<profile_tag_set>::Reset(profile_tag_set*)
Line
Count
Source
146
12.3k
  {
147
  
148
12.3k
  if (p_ != p)
149
12.3k
    {
150
12.3k
    if (p_ != 0)
151
0
      delete p_;
152
12.3k
    p_ = p;
153
12.3k
    }
154
  
155
12.3k
  }
AutoPtr<color_tag_set>::Reset(color_tag_set*)
Line
Count
Source
146
12.3k
  {
147
  
148
12.3k
  if (p_ != p)
149
12.3k
    {
150
12.3k
    if (p_ != 0)
151
0
      delete p_;
152
12.3k
    p_ = p;
153
12.3k
    }
154
  
155
12.3k
  }
AutoPtr<dng_ifd>::Reset(dng_ifd*)
Line
Count
Source
146
288k
  {
147
  
148
288k
  if (p_ != p)
149
288k
    {
150
288k
    if (p_ != 0)
151
0
      delete p_;
152
288k
    p_ = p;
153
288k
    }
154
  
155
288k
  }
AutoPtr<dng_exif>::Reset(dng_exif*)
Line
Count
Source
146
161k
  {
147
  
148
161k
  if (p_ != p)
149
161k
    {
150
161k
    if (p_ != 0)
151
33.9k
      delete p_;
152
161k
    p_ = p;
153
161k
    }
154
  
155
161k
  }
AutoPtr<dng_shared>::Reset(dng_shared*)
Line
Count
Source
146
107k
  {
147
  
148
107k
  if (p_ != p)
149
107k
    {
150
107k
    if (p_ != 0)
151
0
      delete p_;
152
107k
    p_ = p;
153
107k
    }
154
  
155
107k
  }
AutoPtr<dng_linearize_plane>::Reset(dng_linearize_plane*)
Line
Count
Source
146
23.9k
  {
147
  
148
23.9k
  if (p_ != p)
149
23.9k
    {
150
23.9k
    if (p_ != 0)
151
0
      delete p_;
152
23.9k
    p_ = p;
153
23.9k
    }
154
  
155
23.9k
  }
AutoPtr<dng_jpeg_image>::Reset(dng_jpeg_image*)
Line
Count
Source
146
4.65k
  {
147
  
148
4.65k
  if (p_ != p)
149
4.65k
    {
150
4.65k
    if (p_ != 0)
151
0
      delete p_;
152
4.65k
    p_ = p;
153
4.65k
    }
154
  
155
4.65k
  }
AutoPtr<dng_linearization_info>::Reset(dng_linearization_info*)
Line
Count
Source
146
39.9k
  {
147
  
148
39.9k
  if (p_ != p)
149
39.9k
    {
150
39.9k
    if (p_ != 0)
151
0
      delete p_;
152
39.9k
    p_ = p;
153
39.9k
    }
154
  
155
39.9k
  }
AutoPtr<dng_mosaic_info>::Reset(dng_mosaic_info*)
Line
Count
Source
146
14.7k
  {
147
  
148
14.7k
  if (p_ != p)
149
14.7k
    {
150
14.7k
    if (p_ != 0)
151
0
      delete p_;
152
14.7k
    p_ = p;
153
14.7k
    }
154
  
155
14.7k
  }
AutoPtr<dng_preview>::Reset(dng_preview*)
Line
Count
Source
146
3.44k
  {
147
  
148
3.44k
  if (p_ != p)
149
3.44k
    {
150
3.44k
    if (p_ != 0)
151
0
      delete p_;
152
3.44k
    p_ = p;
153
3.44k
    }
154
  
155
3.44k
  }
AutoPtr<dng_hue_sat_map>::Reset(dng_hue_sat_map*)
Line
Count
Source
146
816
  {
147
  
148
816
  if (p_ != p)
149
0
    {
150
0
    if (p_ != 0)
151
0
      delete p_;
152
0
    p_ = p;
153
0
    }
154
  
155
816
  }
Unexecuted instantiation: AutoPtr<dng_spline_solver>::Reset(dng_spline_solver*)
AutoPtr<dng_bad_pixel_list>::Reset(dng_bad_pixel_list*)
Line
Count
Source
146
4.52k
  {
147
  
148
4.52k
  if (p_ != p)
149
4.52k
    {
150
4.52k
    if (p_ != 0)
151
0
      delete p_;
152
4.52k
    p_ = p;
153
4.52k
    }
154
  
155
4.52k
  }
AutoPtr<dng_1d_table>::Reset(dng_1d_table*)
Line
Count
Source
146
32
  {
147
  
148
32
  if (p_ != p)
149
32
    {
150
32
    if (p_ != 0)
151
0
      delete p_;
152
32
    p_ = p;
153
32
    }
154
  
155
32
  }
AutoPtr<dng_gain_map>::Reset(dng_gain_map*)
Line
Count
Source
146
50
  {
147
  
148
50
  if (p_ != p)
149
50
    {
150
50
    if (p_ != 0)
151
0
      delete p_;
152
50
    p_ = p;
153
50
    }
154
  
155
50
  }
156
157
/*****************************************************************************/
158
159
template<class T>
160
void AutoPtr<T>::Reset ()
161
126k
  {
162
  
163
126k
  if (p_ != 0)
164
73.2k
    {
165
73.2k
    delete p_;
166
73.2k
    p_ = 0;
167
73.2k
    }
168
  
169
126k
  }
AutoPtr<dng_memory_block>::Reset()
Line
Count
Source
161
28.8k
  {
162
  
163
28.8k
  if (p_ != 0)
164
15.6k
    {
165
15.6k
    delete p_;
166
15.6k
    p_ = 0;
167
15.6k
    }
168
  
169
28.8k
  }
AutoPtr<dng_linearization_info>::Reset()
Line
Count
Source
161
18.9k
  {
162
  
163
18.9k
  if (p_ != 0)
164
18.9k
    {
165
18.9k
    delete p_;
166
18.9k
    p_ = 0;
167
18.9k
    }
168
  
169
18.9k
  }
AutoPtr<dng_mosaic_info>::Reset()
Line
Count
Source
161
16.5k
  {
162
  
163
16.5k
  if (p_ != 0)
164
12.3k
    {
165
12.3k
    delete p_;
166
12.3k
    p_ = 0;
167
12.3k
    }
168
  
169
16.5k
  }
AutoPtr<dng_jpeg_image>::Reset()
Line
Count
Source
161
19.2k
  {
162
  
163
19.2k
  if (p_ != 0)
164
157
    {
165
157
    delete p_;
166
157
    p_ = 0;
167
157
    }
168
  
169
19.2k
  }
AutoPtr<dng_image>::Reset()
Line
Count
Source
161
42.3k
  {
162
  
163
42.3k
  if (p_ != 0)
164
26.0k
    {
165
26.0k
    delete p_;
166
26.0k
    p_ = 0;
167
26.0k
    }
168
  
169
42.3k
  }
AutoPtr<dng_1d_table>::Reset()
Line
Count
Source
161
128
  {
162
  
163
128
  if (p_ != 0)
164
0
    {
165
0
    delete p_;
166
0
    p_ = 0;
167
0
    }
168
  
169
128
  }
170
171
/*****************************************************************************/
172
173
template<class T>
174
void AutoPtr<T>::Alloc ()
175
  {
176
  this->Reset (new T);
177
  }
178
179
/*****************************************************************************/
180
181
/// \brief A class that provides a variable-length array that automatically
182
/// deletes the underlying memory on scope exit.
183
///
184
/// T is not required to be movable. The class is implemented using
185
/// dng_std_vector but purposely does not use any member functions that require
186
/// T to be movable.
187
188
template<typename T>
189
class AutoArray
190
  {
191
192
  public:
193
    /// Construct an AutoArray that refers to a null pointer.
194
195
47.6k
    AutoArray () { }
AutoArray<dng_fingerprint>::AutoArray()
Line
Count
Source
195
43.3k
    AutoArray () { }
AutoArray<AutoPtr<dng_memory_block> >::AutoArray()
Line
Count
Source
195
4.37k
    AutoArray () { }
196
    
197
    /// Construct an AutoArray containing 'count' elements, which are
198
    /// default-constructed. If an out-of-memory condition occurs, a
199
    /// dng_exception with error code dng_error_memory is thrown.
200
201
    explicit AutoArray (size_t count)
202
3.98k
      : vector_(new dng_std_vector<T>(count))
203
3.98k
      {
204
3.98k
      }
205
206
    /// Changes the size of the AutoArray to 'count' elements. The new
207
    /// elements are default-constructed. The previously existing elements
208
    /// of the array are destroyed. If an out-of-memory condition occurs, a
209
    /// dng_exception with error code dng_error_memory is thrown.
210
211
    void Reset (size_t count)
212
16.5k
      {
213
16.5k
      vector_.reset(new dng_std_vector<T>(count));
214
16.5k
      }
AutoArray<dng_fingerprint>::Reset(unsigned long)
Line
Count
Source
212
12.1k
      {
213
12.1k
      vector_.reset(new dng_std_vector<T>(count));
214
12.1k
      }
AutoArray<AutoPtr<dng_memory_block> >::Reset(unsigned long)
Line
Count
Source
212
4.36k
      {
213
4.36k
      vector_.reset(new dng_std_vector<T>(count));
214
4.36k
      }
215
216
    /// Allows indexing into the AutoArray. The index 'i' must be
217
    /// non-negative and smaller than size of the array (the value that was
218
    /// passed to the constructor or to Reset()).
219
220
    T &operator[] (ptrdiff_t i)
221
348k
      {
222
348k
      return (*vector_) [i];
223
348k
      }
AutoArray<dng_fingerprint>::operator[](long)
Line
Count
Source
221
337k
      {
222
337k
      return (*vector_) [i];
223
337k
      }
AutoArray<AutoPtr<dng_memory_block> >::operator[](long)
Line
Count
Source
221
10.7k
      {
222
10.7k
      return (*vector_) [i];
223
10.7k
      }
224
    const T &operator[] (ptrdiff_t i) const
225
42.3k
      {
226
42.3k
      return (*vector_) [i];
227
42.3k
      }
228
229
    /// Return a pointer to the beginning of the array.
230
231
    T *Get ()
232
3.98k
      {
233
3.98k
      if (vector_)
234
3.98k
        return vector_->data();
235
0
      else
236
0
        return nullptr;
237
3.98k
      }
238
    const T *Get () const
239
      {
240
      if (vector_)
241
        return vector_->data();
242
      else
243
        return nullptr;
244
      }
245
246
  private:
247
248
    // Hidden copy constructor and assignment operator.
249
250
    AutoArray (const AutoArray &);
251
252
    const AutoArray & operator= (const AutoArray &);
253
254
  private:
255
256
    std::unique_ptr<dng_std_vector<T> > vector_;
257
258
  };
259
260
/*****************************************************************************/
261
262
#endif
263
264
/*****************************************************************************/