linbox
|
Abstract ring base class. More...
#include <abstract.h>
Public Member Functions | |
Object Management | |
There are no public constructors for this class. It should only be used in tandem with FieldArchetype. | |
virtual FieldAbstract * | clone () const =0 |
Virtual copy constructor. More... | |
virtual Element & | init (Element &x, const integer &y) const =0 |
Initialization of field element from an integer. More... | |
virtual integer & | convert (integer &x, const Element &y) const =0 |
Conversion of field element to an integer. More... | |
virtual integer & | cardinality (integer &c) const =0 |
Cardinality. More... | |
virtual integer & | characteristic (integer &c) const =0 |
Characteristic. More... | |
Object Management | |
There are no public constructors for this class. It should only be used in tandem with FieldArchetype. | |
class | RingArchetype |
FieldArchetype is friend. | |
virtual | ~RingAbstract (void) |
Destructor. More... | |
virtual bool | isUnit (const Element &x) const =0 |
Virtual copy constructor. More... | |
virtual bool | isZeroDivisor (const Element &x) const =0 |
Divisibility of zero test. More... | |
Abstract ring base class.
Found in the file
If a template is instantiated on the ring archetype, we can change the ring it is using by changing the derived class of this class. This allows us to change the ring used in a template without having to reinstantiate it. This minimizes code bloat, but it also introduces indirection through the use of pointers and virtual functions which is inefficient.
|
inlinevirtual |
Destructor.
Required because of virtual member functions. Virtual.
|
pure virtual |
Virtual copy constructor.
Required because constructors cannot be virtual. Passes construction on to derived classes. Purely virtual. This function is not part of the common object interface.
x | ring element. |
Implemented in RingEnvelope< Ring >.
|
pure virtual |
Divisibility of zero test.
Test if ring element is a zero divisor. This function assumes the ring element has already been constructed and initialized. Purely virtual.
x | ring element. |
Implemented in RingEnvelope< Ring >.
|
pure virtualinherited |
Virtual copy constructor.
Required because constructors cannot be virtual. Passes construction on to derived classes. Purely virtual. This function is not part of the common object interface.
Implemented in RingEnvelope< Ring >, FieldEnvelope< Field >, and FieldEnvelope< Ring >.
Initialization of field element from an integer.
Behaves like C++ allocator construct. This function assumes the output field element x has already been constructed, but that it is not already initialized. Purely virtual.
x | field element to contain output (reference returned). |
y | integer. |
Implemented in FieldEnvelope< Field >, FieldEnvelope< Ring >, and RingEnvelope< Ring >.
Conversion of field element to an integer.
This function assumes the output field element x has already been constructed, but that it is not already initialized. Purely virtual.
x | reference to interger to contain output (reference returned). |
y | constant field element. |
Implemented in FieldEnvelope< Field >, FieldEnvelope< Ring >, and RingEnvelope< Ring >.
Cardinality.
Return integer representing cardinality of the domain. Returns a non-negative integer for all domains with finite cardinality, and returns -1 to signify a domain of infinite cardinality. Purely virtual.
Implemented in FieldEnvelope< Field >, FieldEnvelope< Ring >, and RingEnvelope< Ring >.
Characteristic.
Return integer representing characteristic of the domain. Returns a positive integer to all domains with finite characteristic, and returns 0 to signify a domain of infinite characteristic. Purely virtual.
Implemented in FieldEnvelope< Field >, FieldEnvelope< Ring >, and RingEnvelope< Ring >.