Public Member Functions | Private Attributes | Friends
fglmVectorRep Class Reference

Public Member Functions

 fglmVectorRep ()
 
 fglmVectorRep (int n, number *e)
 
 fglmVectorRep (int n)
 
 ~fglmVectorRep ()
 
fglmVectorRepclone () const
 
BOOLEAN deleteObject ()
 
fglmVectorRepcopyObject ()
 
int refcount () const
 
BOOLEAN isUnique () const
 
int size () const
 
int isZero () const
 
int numNonZeroElems () const
 
void setelem (int i, number n)
 
number ejectelem (int i, number n)
 
number & getelem (int i)
 
number getconstelem (int i) const
 

Private Attributes

int ref_count
 
int N
 
number * elems
 

Friends

class fglmVector
 

Detailed Description

Definition at line 31 of file fglmvec.cc.

Constructor & Destructor Documentation

§ fglmVectorRep() [1/3]

fglmVectorRep::fglmVectorRep ( )
inline

Definition at line 38 of file fglmvec.cc.

38  :ref_count (1), N (0), elems (0)
39  {
40  }
int ref_count
Definition: fglmvec.cc:34
number * elems
Definition: fglmvec.cc:36

§ fglmVectorRep() [2/3]

fglmVectorRep::fglmVectorRep ( int  n,
number *  e 
)
inline

Definition at line 41 of file fglmvec.cc.

41  :ref_count (1), N (n), elems (e)
42  {
43  }
int ref_count
Definition: fglmvec.cc:34
number * elems
Definition: fglmvec.cc:36

§ fglmVectorRep() [3/3]

fglmVectorRep::fglmVectorRep ( int  n)
inline

Definition at line 44 of file fglmvec.cc.

44  :ref_count (1), N (n)
45  {
46  fglmASSERT (N >= 0, "illegal Vector representation");
47  if(N == 0)
48  elems = 0;
49  else
50  {
51  elems = (number *) omAlloc (N * sizeof (number));
52  for(int i = N - 1; i >= 0; i--)
53  elems[i] = nInit (0);
54  }
55  }
int ref_count
Definition: fglmvec.cc:34
#define omAlloc(size)
Definition: omAllocDecl.h:210
int i
Definition: cfEzgcd.cc:123
#define fglmASSERT(ignore1, ignore2)
Definition: fglmvec.cc:29
number * elems
Definition: fglmvec.cc:36
#define nInit(i)
Definition: numbers.h:24

§ ~fglmVectorRep()

fglmVectorRep::~fglmVectorRep ( )
inline

Definition at line 56 of file fglmvec.cc.

57  {
58  if(N > 0)
59  {
60  for(int i = N - 1; i >= 0; i--)
61  nDelete (elems + i);
62  omFreeSize ((ADDRESS) elems, N * sizeof (number));
63  }
64  }
#define omFreeSize(addr, size)
Definition: omAllocDecl.h:260
void * ADDRESS
Definition: auxiliary.h:116
int i
Definition: cfEzgcd.cc:123
#define nDelete(n)
Definition: numbers.h:16
number * elems
Definition: fglmvec.cc:36

Member Function Documentation

§ clone()

fglmVectorRep* fglmVectorRep::clone ( ) const
inline

Definition at line 66 of file fglmvec.cc.

67  {
68  if(N > 0)
69  {
70  number *elems_clone;
71  elems_clone = (number *) omAlloc (N * sizeof (number));
72  for(int i = N - 1; i >= 0; i--)
73  elems_clone[i] = nCopy (elems[i]);
74  return new fglmVectorRep (N, elems_clone);
75  }
76  else
77  return new fglmVectorRep (N, 0);
78  }
#define omAlloc(size)
Definition: omAllocDecl.h:210
int i
Definition: cfEzgcd.cc:123
number * elems
Definition: fglmvec.cc:36
#define nCopy(n)
Definition: numbers.h:15

§ copyObject()

fglmVectorRep* fglmVectorRep::copyObject ( )
inline

Definition at line 83 of file fglmvec.cc.

84  {
85  ref_count++;
86  return this;
87  }
int ref_count
Definition: fglmvec.cc:34

§ deleteObject()

BOOLEAN fglmVectorRep::deleteObject ( )
inline

Definition at line 79 of file fglmvec.cc.

80  {
81  return --ref_count == 0;
82  }
int ref_count
Definition: fglmvec.cc:34

§ ejectelem()

number fglmVectorRep::ejectelem ( int  i,
number  n 
)
inline

Definition at line 124 of file fglmvec.cc.

125  {
126  fglmASSERT (isUnique (), "should only be called if unique!");
127  number temp = elems[i - 1];
128  elems[i - 1] = n;
129  return temp;
130  }
BOOLEAN isUnique() const
Definition: fglmvec.cc:92
int i
Definition: cfEzgcd.cc:123
#define fglmASSERT(ignore1, ignore2)
Definition: fglmvec.cc:29
number * elems
Definition: fglmvec.cc:36

§ getconstelem()

number fglmVectorRep::getconstelem ( int  i) const
inline

Definition at line 136 of file fglmvec.cc.

137  {
138  fglmASSERT (0 < i && i <= N, "getconstelem: wrong index");
139  return elems[i - 1];
140  }
int i
Definition: cfEzgcd.cc:123
#define fglmASSERT(ignore1, ignore2)
Definition: fglmvec.cc:29
number * elems
Definition: fglmvec.cc:36

§ getelem()

number& fglmVectorRep::getelem ( int  i)
inline

Definition at line 131 of file fglmvec.cc.

132  {
133  fglmASSERT (0 < i && i <= N, "getelem: wrong index");
134  return elems[i - 1];
135  }
int i
Definition: cfEzgcd.cc:123
#define fglmASSERT(ignore1, ignore2)
Definition: fglmvec.cc:29
number * elems
Definition: fglmvec.cc:36

§ isUnique()

BOOLEAN fglmVectorRep::isUnique ( ) const
inline

Definition at line 92 of file fglmvec.cc.

93  {
94  return ref_count == 1;
95  }
int ref_count
Definition: fglmvec.cc:34

§ isZero()

int fglmVectorRep::isZero ( ) const
inline

Definition at line 101 of file fglmvec.cc.

102  {
103  int k;
104  for(k = N; k > 0; k--)
105  if(!nIsZero (getconstelem (k)))
106  return 0;
107  return 1;
108  }
int k
Definition: cfEzgcd.cc:93
#define nIsZero(n)
Definition: numbers.h:19
number getconstelem(int i) const
Definition: fglmvec.cc:136

§ numNonZeroElems()

int fglmVectorRep::numNonZeroElems ( ) const
inline

Definition at line 109 of file fglmvec.cc.

110  {
111  int num = 0;
112  int k;
113  for(k = N; k > 0; k--)
114  if(!nIsZero (getconstelem (k)))
115  num++;
116  return num;
117  }
CanonicalForm num(const CanonicalForm &f)
int k
Definition: cfEzgcd.cc:93
#define nIsZero(n)
Definition: numbers.h:19
number getconstelem(int i) const
Definition: fglmvec.cc:136

§ refcount()

int fglmVectorRep::refcount ( ) const
inline

Definition at line 88 of file fglmvec.cc.

89  {
90  return ref_count;
91  }
int ref_count
Definition: fglmvec.cc:34

§ setelem()

void fglmVectorRep::setelem ( int  i,
number  n 
)
inline

Definition at line 118 of file fglmvec.cc.

119  {
120  fglmASSERT (0 < i && i <= N, "setelem: wrong index");
121  nDelete (elems + i - 1);
122  elems[i - 1] = n;
123  }
int i
Definition: cfEzgcd.cc:123
#define nDelete(n)
Definition: numbers.h:16
#define fglmASSERT(ignore1, ignore2)
Definition: fglmvec.cc:29
number * elems
Definition: fglmvec.cc:36

§ size()

int fglmVectorRep::size ( ) const
inline

Definition at line 97 of file fglmvec.cc.

98  {
99  return N;
100  }

Friends And Related Function Documentation

§ fglmVector

friend class fglmVector
friend

Definition at line 141 of file fglmvec.cc.

Field Documentation

§ elems

number* fglmVectorRep::elems
private

Definition at line 36 of file fglmvec.cc.

§ N

int fglmVectorRep::N
private

Definition at line 35 of file fglmvec.cc.

§ ref_count

int fglmVectorRep::ref_count
private

Definition at line 34 of file fglmvec.cc.


The documentation for this class was generated from the following file: