Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
TArrayF.cxx
Go to the documentation of this file.
1// @(#)root/cont:$Id$
2// Author: Rene Brun 06/03/95
3
4/*************************************************************************
5 * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *
6 * All rights reserved. *
7 * *
8 * For the licensing terms see $ROOTSYS/LICENSE. *
9 * For the list of contributors see $ROOTSYS/README/CREDITS. *
10 *************************************************************************/
11
12/** \class TArrayF
13\ingroup Containers
14Array of floats (32 bits per element).
15*/
16
17#include "TArrayF.h"
18#include "TBuffer.h"
19
20
21
22////////////////////////////////////////////////////////////////////////////////
23/// Default TArrayF ctor.
24
26{
27 fArray = nullptr;
28}
29
30////////////////////////////////////////////////////////////////////////////////
31/// Create TArrayF object and set array size to n floats.
32
34{
35 fArray = nullptr;
36 if (n > 0) Set(n);
37}
38
39////////////////////////////////////////////////////////////////////////////////
40/// Create TArrayF object and initialize it with values of array.
41
43{
44 fArray = nullptr;
45 Set(n, array);
46}
47
48////////////////////////////////////////////////////////////////////////////////
49/// Copy constructor.
50
51TArrayF::TArrayF(const TArrayF &array) : TArray(array)
52{
53 fArray = nullptr;
54 Set(array.fN, array.fArray);
55}
56
57////////////////////////////////////////////////////////////////////////////////
58/// TArrayF assignment operator.
59
61{
62 if (this != &rhs)
63 Set(rhs.fN, rhs.fArray);
64 return *this;
65}
66
67////////////////////////////////////////////////////////////////////////////////
68/// Delete TArrayF object.
69
71{
72 delete [] fArray;
73 fArray = nullptr;
74}
75
76////////////////////////////////////////////////////////////////////////////////
77/// Adopt array arr into TArrayF, i.e. don't copy arr but use it directly
78/// in TArrayF. User may not delete arr, TArrayF dtor will do it.
79
81{
82 if (fArray)
83 delete [] fArray;
84
85 fN = n;
86 fArray = arr;
87}
88
89////////////////////////////////////////////////////////////////////////////////
90/// Add float c at position i. Check for out of bounds.
91
93{
94 if (!BoundsOk("TArrayF::AddAt", i)) return;
95 fArray[i] = c;
96}
97
98////////////////////////////////////////////////////////////////////////////////
99/// Set size of this array to n floats.
100/// A new array is created, the old contents copied to the new array,
101/// then the old array is deleted.
102/// This function should not be called if the array was declared via Adopt.
103
105{
106 if (n < 0) return;
107 if (n != fN) {
108 Float_t *temp = fArray;
109 if (n != 0) {
110 fArray = new Float_t[n];
111 if (n < fN) {
112 memcpy(fArray, temp, n*sizeof(Float_t));
113 } else if (temp) {
114 memcpy(fArray, temp, fN*sizeof(Float_t));
115 memset(&fArray[fN], 0, (n-fN)*sizeof(Float_t));
116 } else {
117 memset(fArray, 0, n*sizeof(Float_t));
118 }
119 } else {
120 fArray = nullptr;
121 }
122 if (fN) delete [] temp;
123 fN = n;
124 }
125}
126
127////////////////////////////////////////////////////////////////////////////////
128/// Set size of this array to n floats and set the contents.
129/// This function should not be called if the array was declared via Adopt.
130
131void TArrayF::Set(Int_t n, const Float_t *array)
132{
133 if (fArray && fN != n) {
134 delete [] fArray;
135 fArray = nullptr;
136 }
137 fN = n;
138 if ((fN == 0) || !array)
139 return;
140 if (!fArray) fArray = new Float_t[fN];
141 memmove(fArray, array, n*sizeof(Float_t));
142}
143
144////////////////////////////////////////////////////////////////////////////////
145/// Stream a TArrayF object.
146
148{
149 if (b.IsReading()) {
150 Int_t n;
151 b >> n;
152 Set(n);
153 b.ReadFastArray(fArray,n);
154 } else {
155 b << fN;
156 b.WriteFastArray(fArray, fN);
157 }
158}
159
#define b(i)
Definition RSha256.hxx:100
#define c(i)
Definition RSha256.hxx:101
float Float_t
Float 4 bytes (float)
Definition RtypesCore.h:71
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
Array of floats (32 bits per element).
Definition TArrayF.h:27
Float_t * fArray
Definition TArrayF.h:30
TArrayF & operator=(const TArrayF &rhs)
TArrayF assignment operator.
Definition TArrayF.cxx:60
virtual ~TArrayF()
Delete TArrayF object.
Definition TArrayF.cxx:70
void Adopt(Int_t n, Float_t *array)
Adopt array arr into TArrayF, i.e.
Definition TArrayF.cxx:80
void AddAt(Float_t c, Int_t i)
Add float c at position i. Check for out of bounds.
Definition TArrayF.cxx:92
TArrayF()
Default TArrayF ctor.
Definition TArrayF.cxx:25
void Set(Int_t n) override
Set size of this array to n floats.
Definition TArrayF.cxx:104
void Streamer(TBuffer &) override
Stream a TArrayF object.
Definition TArrayF.cxx:147
Abstract array base class.
Definition TArray.h:31
Int_t fN
Definition TArray.h:38
Bool_t BoundsOk(const char *where, Int_t at) const
Definition TArray.h:77
Buffer base class used for serializing objects.
Definition TBuffer.h:43
const Int_t n
Definition legend1.C:16