My Project  debian-1:4.1.1-p2+ds-4build3
parseutil.cc
Go to the documentation of this file.
1 /* emacs edit mode for this file is -*- C++ -*- */
2 
3 
4 #include "config.h"
5 
6 
7 #include <string.h>
8 #include <stdlib.h>
9 
10 #include "cf_assert.h"
11 
12 #include "cf_defs.h"
13 #include "parseutil.h"
14 
15 class PUtilBase
16 {
17 public:
18  PUtilBase() {};
19  virtual ~PUtilBase() {}
20  virtual PUtilBase * copy() const = 0;
21  virtual CanonicalForm getval() const = 0;
22  virtual int getintval() const = 0;
23  virtual bool isInt() const = 0;
24  virtual bool isCF() const = 0;
25  virtual bool isVar() const = 0;
26 };
27 
28 class PUtilInt : public PUtilBase
29 {
30 private:
31  int val;
32 public:
33  PUtilInt() { val = 0; }
34  PUtilInt( int i ) { val = i; }
35  ~PUtilInt() {}
36  PUtilBase * copy() const { return new PUtilInt( val ); }
37  CanonicalForm getval() const { return CanonicalForm( val ); }
38  int getintval() const { return val; }
39  bool isInt() const { return true; }
40  bool isCF() const { return false; }
41  bool isVar() const { return false; }
42 };
43 
44 class PUtilCF : public PUtilBase
45 {
46 private:
48 public:
49  PUtilCF() { val = 0; }
50  PUtilCF( const CanonicalForm & cf ) { val = cf; }
51  ~PUtilCF() {}
52  PUtilBase * copy() const { return new PUtilCF( val ); }
53  CanonicalForm getval() const { return val; }
54  int getintval() const { return val.intval(); }
55  bool isInt() const { return false; }
56  bool isCF() const { return true; }
57  bool isVar() const { return false; }
58 };
59 
60 class PUtilVar : public PUtilBase
61 {
62 private:
64 public:
65  PUtilVar() { val = Variable(); }
66  PUtilVar( const Variable & v ) { val = v; }
67  ~PUtilVar() {}
68  PUtilBase * copy() const { return new PUtilVar( val ); }
69  CanonicalForm getval() const { return CanonicalForm( val ); }
70  int getintval() const { return 0; }
71  bool isInt() const { return false; }
72  bool isCF() const { return false; }
73  bool isVar() const { return true; }
74 };
75 
77 {
78 public:
79  static PUtilBase * create( ) { return new PUtilInt( 0 ); }
80  static PUtilBase * create( int val ) { return new PUtilInt( val ); }
81  static PUtilBase * create( const CanonicalForm & cf ) { return new PUtilCF( cf ); }
82  static PUtilBase * create( const Variable & v ) { return new PUtilVar( v ); }
83  static PUtilBase * create( const char * str )
84  {
85  if ( strlen( str ) < 9 )
86  return new PUtilInt( atoi( str ) );
87  else
88  return new PUtilCF( CanonicalForm( str ) );
89  }
90 };
91 
93 {
95 }
96 
98 {
99  value = pu.value->copy();
100 }
101 
103 {
105 }
106 
108 {
110 }
111 
112 ParseUtil::ParseUtil( char * str )
113 {
114  value = PUtilFactory::create( str );
115 }
116 
118 {
119  delete value;
120 }
121 
123 {
124  if ( this != &pu ) {
125  delete value;
126  value = pu.value->copy();
127  }
128  return *this;
129 }
130 
132 {
133  delete value;
135  return *this;
136 }
137 
139 {
140  delete value;
142  return *this;
143 }
144 
146 {
147  delete value;
149  return *this;
150 }
151 
153 {
154  return value->getval();
155 }
156 
158 {
159  return value->getintval();
160 }
PUtilInt::val
int val
Definition: parseutil.cc:31
PUtilVar::PUtilVar
PUtilVar()
Definition: parseutil.cc:65
PUtilVar::isCF
bool isCF() const
Definition: parseutil.cc:72
f
FILE * f
Definition: checklibs.c:9
ParseUtil::operator=
ParseUtil & operator=(const ParseUtil &)
Definition: parseutil.cc:122
PUtilBase
Definition: parseutil.cc:16
PUtilVar
Definition: parseutil.cc:61
PUtilCF::isInt
bool isInt() const
Definition: parseutil.cc:55
PUtilBase::isInt
virtual bool isInt() const =0
PUtilBase::~PUtilBase
virtual ~PUtilBase()
Definition: parseutil.cc:19
PUtilVar::getintval
int getintval() const
Definition: parseutil.cc:70
PUtilCF::getintval
int getintval() const
Definition: parseutil.cc:54
PUtilFactory::create
static PUtilBase * create(const CanonicalForm &cf)
Definition: parseutil.cc:81
cf
CanonicalForm cf
Definition: cfModGcd.cc:4024
PUtilCF::PUtilCF
PUtilCF()
Definition: parseutil.cc:49
PUtilFactory::create
static PUtilBase * create(const char *str)
Definition: parseutil.cc:83
PUtilFactory::create
static PUtilBase * create()
Definition: parseutil.cc:79
PUtilBase::getval
virtual CanonicalForm getval() const =0
CanonicalForm
factory's main class
Definition: canonicalform.h:83
CanonicalForm::intval
long intval() const
conversion functions
Definition: canonicalform.cc:197
PUtilFactory
Definition: parseutil.cc:77
PUtilCF::~PUtilCF
~PUtilCF()
Definition: parseutil.cc:51
PUtilInt::getintval
int getintval() const
Definition: parseutil.cc:38
PUtilVar::PUtilVar
PUtilVar(const Variable &v)
Definition: parseutil.cc:66
PUtilInt::PUtilInt
PUtilInt(int i)
Definition: parseutil.cc:34
PUtilCF
Definition: parseutil.cc:45
i
int i
Definition: cfEzgcd.cc:125
PUtilBase::PUtilBase
PUtilBase()
Definition: parseutil.cc:18
PUtilInt
Definition: parseutil.cc:29
PUtilBase::getintval
virtual int getintval() const =0
cf_defs.h
PUtilInt::isVar
bool isVar() const
Definition: parseutil.cc:41
PUtilInt::~PUtilInt
~PUtilInt()
Definition: parseutil.cc:35
PUtilInt::getval
CanonicalForm getval() const
Definition: parseutil.cc:37
PUtilBase::copy
virtual PUtilBase * copy() const =0
PUtilFactory::create
static PUtilBase * create(int val)
Definition: parseutil.cc:80
PUtilVar::getval
CanonicalForm getval() const
Definition: parseutil.cc:69
PUtilInt::isCF
bool isCF() const
Definition: parseutil.cc:40
ParseUtil::getintval
int getintval()
Definition: parseutil.cc:157
PUtilInt::isInt
bool isInt() const
Definition: parseutil.cc:39
ParseUtil::~ParseUtil
~ParseUtil()
Definition: parseutil.cc:117
ParseUtil::value
PUtilBase * value
Definition: parseutil.h:17
Variable
factory's class for variables
Definition: factory.h:118
PUtilCF::isVar
bool isVar() const
Definition: parseutil.cc:57
PUtilCF::copy
PUtilBase * copy() const
Definition: parseutil.cc:52
PUtilInt::copy
PUtilBase * copy() const
Definition: parseutil.cc:36
PUtilCF::PUtilCF
PUtilCF(const CanonicalForm &cf)
Definition: parseutil.cc:50
PUtilCF::val
CanonicalForm val
Definition: parseutil.cc:47
PUtilVar::val
Variable val
Definition: parseutil.cc:63
PUtilVar::isVar
bool isVar() const
Definition: parseutil.cc:73
PUtilBase::isVar
virtual bool isVar() const =0
cf_assert.h
PUtilCF::getval
CanonicalForm getval() const
Definition: parseutil.cc:53
PUtilFactory::create
static PUtilBase * create(const Variable &v)
Definition: parseutil.cc:82
v
const Variable & v
< [in] a sqrfree bivariate poly
Definition: facBivar.h:37
PUtilVar::isInt
bool isInt() const
Definition: parseutil.cc:71
ParseUtil
Definition: parseutil.h:15
PUtilVar::copy
PUtilBase * copy() const
Definition: parseutil.cc:68
ParseUtil::getval
CanonicalForm getval()
Definition: parseutil.cc:152
PUtilVar::~PUtilVar
~PUtilVar()
Definition: parseutil.cc:67
PUtilInt::PUtilInt
PUtilInt()
Definition: parseutil.cc:33
ParseUtil::ParseUtil
ParseUtil()
Definition: parseutil.cc:92
parseutil.h
PUtilBase::isCF
virtual bool isCF() const =0
PUtilCF::isCF
bool isCF() const
Definition: parseutil.cc:56