My Project  debian-1:4.1.1-p2+ds-4
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 30 of file fglmvec.cc.

Constructor & Destructor Documentation

◆ fglmVectorRep() [1/3]

fglmVectorRep::fglmVectorRep ( )
inline

Definition at line 37 of file fglmvec.cc.

37  :
38  fglmVectorRep ():ref_count (1), N (0), elems (0)
39  {

◆ fglmVectorRep() [2/3]

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

Definition at line 40 of file fglmvec.cc.

41  :ref_count (1), N (n), elems (e)
42  {

◆ fglmVectorRep() [3/3]

fglmVectorRep::fglmVectorRep ( int  n)
inline

Definition at line 43 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  }

◆ ~fglmVectorRep()

fglmVectorRep::~fglmVectorRep ( )
inline

Definition at line 55 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  }

Member Function Documentation

◆ clone()

fglmVectorRep* fglmVectorRep::clone ( ) const
inline

Definition at line 65 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);

◆ copyObject()

fglmVectorRep* fglmVectorRep::copyObject ( )
inline

Definition at line 82 of file fglmvec.cc.

84  {
85  ref_count++;
86  return this;

◆ deleteObject()

BOOLEAN fglmVectorRep::deleteObject ( )
inline

Definition at line 78 of file fglmvec.cc.

80  {
81  return --ref_count == 0;

◆ ejectelem()

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

Definition at line 127 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;

◆ getconstelem()

number fglmVectorRep::getconstelem ( int  i) const
inline

Definition at line 139 of file fglmvec.cc.

141  {
142  fglmASSERT (0 < i && i <= N, "getconstelem: wrong index");
143  return elems[i - 1];

◆ getelem()

number& fglmVectorRep::getelem ( int  i)
inline

Definition at line 134 of file fglmvec.cc.

136  {
137  fglmASSERT (0 < i && i <= N, "getelem: wrong index");
138  return elems[i - 1];

◆ isUnique()

BOOLEAN fglmVectorRep::isUnique ( ) const
inline

Definition at line 91 of file fglmvec.cc.

93  {
94  return ref_count == 1;

◆ isZero()

int fglmVectorRep::isZero ( ) const
inline

Definition at line 100 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;

◆ numNonZeroElems()

int fglmVectorRep::numNonZeroElems ( ) const
inline

Definition at line 110 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;

◆ refcount()

int fglmVectorRep::refcount ( ) const
inline

Definition at line 87 of file fglmvec.cc.

89  {
90  return ref_count;

◆ setelem()

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

Definition at line 121 of file fglmvec.cc.

123  {
124  fglmASSERT (0 < i && i <= N, "setelem: wrong index");
125  nDelete (elems + i - 1);
126  elems[i - 1] = n;

◆ size()

int fglmVectorRep::size ( ) const
inline

Definition at line 96 of file fglmvec.cc.

98  {
99  return N;

Friends And Related Function Documentation

◆ fglmVector

friend class fglmVector
friend

Definition at line 144 of file fglmvec.cc.

Field Documentation

◆ elems

number* fglmVectorRep::elems
private

Definition at line 35 of file fglmvec.cc.

◆ N

int fglmVectorRep::N
private

Definition at line 34 of file fglmvec.cc.

◆ ref_count

int fglmVectorRep::ref_count
private

Definition at line 33 of file fglmvec.cc.


The documentation for this class was generated from the following file:
k
int k
Definition: cfEzgcd.cc:92
fglmASSERT
#define fglmASSERT(ignore1, ignore2)
Definition: fglmvec.cc:28
ADDRESS
void * ADDRESS
Definition: auxiliary.h:133
num
CanonicalForm num(const CanonicalForm &f)
Definition: canonicalform.h:330
fglmVectorRep::getconstelem
number getconstelem(int i) const
Definition: fglmvec.cc:139
fglmVectorRep::ref_count
int ref_count
Definition: fglmvec.cc:33
i
int i
Definition: cfEzgcd.cc:125
omFreeSize
#define omFreeSize(addr, size)
Definition: omAllocDecl.h:258
fglmVectorRep::elems
number * elems
Definition: fglmvec.cc:35
omAlloc
#define omAlloc(size)
Definition: omAllocDecl.h:208
fglmVectorRep::isUnique
BOOLEAN isUnique() const
Definition: fglmvec.cc:91
nIsZero
#define nIsZero(n)
Definition: numbers.h:19
nDelete
#define nDelete(n)
Definition: numbers.h:16
nInit
#define nInit(i)
Definition: numbers.h:24
nCopy
#define nCopy(n)
Definition: numbers.h:15
fglmVectorRep::fglmVectorRep
fglmVectorRep()
Definition: fglmvec.cc:37
fglmVectorRep::N
int N
Definition: fglmvec.cc:34