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 }
ParseUtil & operator=(const ParseUtil &)
Definition: parseutil.cc:122
int val
Definition: parseutil.cc:31
bool isInt() const
Definition: parseutil.cc:71
PUtilBase * copy() const
Definition: parseutil.cc:52
factory's class for variables
Definition: variable.h:32
int getintval() const
Definition: parseutil.cc:54
~PUtilVar()
Definition: parseutil.cc:67
CanonicalForm getval() const
Definition: parseutil.cc:69
factory's main class
Definition: canonicalform.h:75
virtual bool isVar() const =0
assertions for Factory
PUtilBase * copy() const
Definition: parseutil.cc:36
int getintval()
Definition: parseutil.cc:157
bool isInt() const
Definition: parseutil.cc:39
PUtilVar(const Variable &v)
Definition: parseutil.cc:66
bool isCF() const
Definition: parseutil.cc:40
PUtilInt()
Definition: parseutil.cc:33
long intval() const
conversion functions
PUtilCF()
Definition: parseutil.cc:49
static PUtilBase * create(const CanonicalForm &cf)
Definition: parseutil.cc:81
virtual CanonicalForm getval() const =0
PUtilCF(const CanonicalForm &cf)
Definition: parseutil.cc:50
bool isCF() const
Definition: parseutil.cc:72
bool isVar() const
Definition: parseutil.cc:41
PUtilVar()
Definition: parseutil.cc:65
virtual int getintval() const =0
bool isCF() const
Definition: parseutil.cc:56
PUtilBase * value
Definition: parseutil.h:17
FILE * f
Definition: checklibs.c:7
int i
Definition: cfEzgcd.cc:123
factory switches.
CanonicalForm getval() const
Definition: parseutil.cc:37
virtual bool isInt() const =0
virtual PUtilBase * copy() const =0
~PUtilInt()
Definition: parseutil.cc:35
static PUtilBase * create(const Variable &v)
Definition: parseutil.cc:82
CanonicalForm val
Definition: parseutil.cc:47
int getintval() const
Definition: parseutil.cc:70
const Variable & v
< [in] a sqrfree bivariate poly
Definition: facBivar.h:37
CanonicalForm cf
Definition: cfModGcd.cc:4024
static PUtilBase * create()
Definition: parseutil.cc:79
int getintval() const
Definition: parseutil.cc:38
PUtilInt(int i)
Definition: parseutil.cc:34
virtual ~PUtilBase()
Definition: parseutil.cc:19
static PUtilBase * create(const char *str)
Definition: parseutil.cc:83
Variable val
Definition: parseutil.cc:63
CanonicalForm getval() const
Definition: parseutil.cc:53
bool isInt() const
Definition: parseutil.cc:55
CanonicalForm getval()
Definition: parseutil.cc:152
~PUtilCF()
Definition: parseutil.cc:51
PUtilBase * copy() const
Definition: parseutil.cc:68
virtual bool isCF() const =0
bool isVar() const
Definition: parseutil.cc:73
bool isVar() const
Definition: parseutil.cc:57
static PUtilBase * create(int val)
Definition: parseutil.cc:80