My Project
debian-1:4.1.1-p2+ds-4build3
factory
templates
ftmpl_array.cc
Go to the documentation of this file.
1
/* emacs edit mode for this file is -*- C++ -*- */
2
3
#include "
factory/templates/ftmpl_array.h
"
4
5
template
<
class
T>
6
Array<T>::Array
() : data(0), _min(0), _max(-1), _size(0)
7
{
8
}
9
10
template
<
class
T>
11
Array<T>::Array
(
const
Array<T>
& a )
12
{
13
if
( a.
_size
> 0 ) {
14
_min = a.
_min
;
15
_max = a.
_max
;
16
_size = a.
_size
;
17
data =
new
T
[_size];
18
for
(
int
i
= 0;
i
< _size;
i
++ )
19
data[
i
] = a.
data
[
i
];
20
}
21
else
{
22
data = 0;
23
_min = _size = 0;
24
_max = -1;
25
}
26
}
27
28
template
<
class
T>
29
Array<T>::Array
(
int
i
)
30
{
31
_min = 0;
32
_max =
i
-1;
33
_size =
i
;
34
if
(
i
== 0 )
35
data = 0;
36
else
37
data =
new
T
[_size];
38
}
39
40
template
<
class
T>
41
Array<T>::Array
(
int
min
,
int
max
)
42
{
43
if
(
max
<
min
) {
44
_min = _size = 0;
45
_max = -1;
46
data = 0;
47
}
48
else
{
49
_min =
min
;
50
_max =
max
;
51
_size = _max - _min + 1;
52
data =
new
T
[_size];
53
}
54
}
55
56
template
<
class
T>
57
Array<T>::~Array
()
58
{
59
delete
[] data;
60
}
61
62
template
<
class
T>
63
Array<T>
&
Array<T>::operator=
(
const
Array<T>
& a )
64
{
65
if
(
this
!= &a ) {
66
delete
[] data;
67
_min = a.
_min
;
68
_max = a.
_max
;
69
_size = a.
_size
;
70
if
( a.
_size
> 0 ) {
71
_size = a.
_size
;
72
data =
new
T
[_size];
73
for
(
int
i
= 0;
i
< _size;
i
++ )
74
data[
i
] = a.
data
[
i
];
75
}
76
else
{
77
data = 0;
78
_size = 0;
79
}
80
}
81
return
*
this
;
82
}
83
84
template
<
class
T>
85
T
&
Array<T>::operator[]
(
int
i
)
const
86
{
87
ASSERT
(
i
>= _min &&
i
<= _max,
"warning: array size mismatch."
);
88
return
data[
i
-_min];
89
}
90
91
template
<
class
T>
92
int
Array<T>::size
()
const
93
{
94
return
_size;
95
}
96
97
template
<
class
T>
98
int
Array<T>::min
()
const
99
{
100
return
_min;
101
}
102
103
template
<
class
T>
104
int
Array<T>::max
()
const
105
{
106
return
_max;
107
}
108
109
/*
110
template <class T>
111
Array<T>& Array<T>::operator*= ( const T & t )
112
{
113
for ( int i = 0; i < _size; i++ )
114
data[i] *= t;
115
return *this;
116
}
117
118
template <class T>
119
Array<T>& Array<T>::operator+= ( const T & t )
120
{
121
for ( int i = 0; i < _size; i++ )
122
data[i] += t;
123
return *this;
124
}
125
126
template <class T>
127
Array<T>& Array<T>::operator+= ( const Array<T> & a )
128
{
129
ASSERT ( _size == a._size, "warning: array size mismatch." );
130
for ( int i = 0; i < _size; i++ )
131
data[i] += a.data[i];
132
return *this;
133
}
134
*/
135
136
#ifndef NOSTREAMIO
137
template
<
class
T>
138
void
Array<T>::print
(
OSTREAM
& os )
const
139
{
140
if
( _size == 0 )
141
os <<
"( )"
;
142
else
{
143
os <<
"( "
<< data[0];
144
for
(
int
i
= 1;
i
< _size;
i
++ )
145
os <<
", "
<< data[
i
];
146
os <<
" )"
;
147
}
148
}
149
150
template
<
class
T>
151
OSTREAM
&
operator<<
(
OSTREAM
& os,
const
Array<T>
& a )
152
{
153
a.
print
( os );
154
return
os;
155
}
156
#endif
/* NOSTREAMIO */
Array::_max
int _max
Definition:
ftmpl_array.h:21
Array::data
T * data
Definition:
ftmpl_array.h:19
Array::operator=
Array< T > & operator=(const Array< T > &)
Definition:
ftmpl_array.cc:63
operator<<
OSTREAM & operator<<(OSTREAM &os, const Array< T > &a)
Definition:
ftmpl_array.cc:151
Array::print
void print(OSTREAM &) const
Definition:
ftmpl_array.cc:138
Array::min
int min() const
Definition:
ftmpl_array.cc:98
i
int i
Definition:
cfEzgcd.cc:125
Array
Definition:
ftmpl_array.h:17
ASSERT
#define ASSERT(expression, message)
Definition:
cf_assert.h:99
Array::max
int max() const
Definition:
ftmpl_array.cc:104
Array::size
int size() const
Definition:
ftmpl_array.cc:92
Array::Array
Array()
Definition:
ftmpl_array.cc:6
T
static jList * T
Definition:
janet.cc:31
Array::operator[]
T & operator[](int i) const
Definition:
ftmpl_array.cc:85
max
static int max(int a, int b)
Definition:
fast_mult.cc:264
Array::_size
int _size
Definition:
ftmpl_array.h:22
ftmpl_array.h
min
static int min(int a, int b)
Definition:
fast_mult.cc:268
Array::~Array
~Array()
Definition:
ftmpl_array.cc:57
OSTREAM
#define OSTREAM
Definition:
canonicalform.h:16
Array::_min
int _min
Definition:
ftmpl_array.h:20
Generated on Mon Aug 17 2020 08:20:08 for My Project by
doxygen 1.8.18
for
Singular debian-1:4.1.1-p2+ds-4build3