My Project  UNKNOWN_GIT_VERSION
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:125
#define fglmASSERT(ignore1, ignore2)
Definition: fglmvec.cc:29
number * elems
Definition: fglmvec.cc:36
#define nInit(i)
Definition: numbers.h:25

◆ ~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:133
int i
Definition: cfEzgcd.cc:125
#define nDelete(n)
Definition: numbers.h:17
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:125
number * elems
Definition: fglmvec.cc:36
#define nCopy(n)
Definition: numbers.h:16

◆ 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 128 of file fglmvec.cc.

129  {
130  fglmASSERT (isUnique (), "should only be called if unique!");
131  number temp = elems[i - 1];
132  elems[i - 1] = n;
133  return temp;
134  }
BOOLEAN isUnique() const
Definition: fglmvec.cc:92
int i
Definition: cfEzgcd.cc:125
#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 140 of file fglmvec.cc.

141  {
142  fglmASSERT (0 < i && i <= N, "getconstelem: wrong index");
143  return elems[i - 1];
144  }
int i
Definition: cfEzgcd.cc:125
#define fglmASSERT(ignore1, ignore2)
Definition: fglmvec.cc:29
number * elems
Definition: fglmvec.cc:36

◆ getelem()

number& fglmVectorRep::getelem ( int  i)
inline

Definition at line 135 of file fglmvec.cc.

136  {
137  fglmASSERT (0 < i && i <= N, "getelem: wrong index");
138  return elems[i - 1];
139  }
int i
Definition: cfEzgcd.cc:125
#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  {
106  if(!nIsZero (getconstelem (k)))
107  return 0;
108  }
109  return 1;
110  }
int k
Definition: cfEzgcd.cc:92
#define nIsZero(n)
Definition: numbers.h:20
number getconstelem(int i) const
Definition: fglmvec.cc:140

◆ numNonZeroElems()

int fglmVectorRep::numNonZeroElems ( ) const
inline

Definition at line 111 of file fglmvec.cc.

112  {
113  int num = 0;
114  int k;
115  for(k = N; k > 0; k--)
116  {
117  if(!nIsZero (getconstelem (k)))
118  num++;
119  }
120  return num;
121  }
CanonicalForm num(const CanonicalForm &f)
int k
Definition: cfEzgcd.cc:92
#define nIsZero(n)
Definition: numbers.h:20
number getconstelem(int i) const
Definition: fglmvec.cc:140

◆ 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 122 of file fglmvec.cc.

123  {
124  fglmASSERT (0 < i && i <= N, "setelem: wrong index");
125  nDelete (elems + i - 1);
126  elems[i - 1] = n;
127  }
int i
Definition: cfEzgcd.cc:125
#define nDelete(n)
Definition: numbers.h:17
#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 145 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: