linbox  1
Public Types
RingAbstract Class Reference

Abstract ring base class.Found in the file {linbox/ring/abstract.h}. Abstract base class used to implement the ring archetype to minimize code bloat. All public member functions of this class are purely virtual and must be implemented by all derived classes. More...

#include <abstract.h>

Inheritance diagram for RingAbstract:
FieldAbstract RingEnvelope< Ring >

List of all members.

Public Types

typedef FieldAbstract::Element Element
 element type.
typedef FieldAbstract::RandIter RandIter
 Random iterator generator type.
- Public Types inherited from FieldAbstract
- Public Member Functions inherited from FieldAbstract
virtual ~FieldAbstract (void)
virtual FieldAbstractclone () const =0
virtual FieldAbstractoperator= (const FieldAbstract &F)=0
virtual Elementinit (Element &x, const integer &y) const =0
virtual integerconvert (integer &x, const Element &y) const =0
virtual Elementassign (Element &x, const Element &y) const =0
virtual integercardinality (integer &c) const =0
virtual integercharacteristic (integer &c) const =0
virtual bool areEqual (const Element &x, const Element &y) const =0
virtual Elementadd (Element &x, const Element &y, const Element &z) const =0
virtual Elementsub (Element &x, const Element &y, const Element &z) const =0
virtual Elementmul (Element &x, const Element &y, const Element &z) const =0
virtual Elementdiv (Element &x, const Element &y, const Element &z) const =0
virtual Elementneg (Element &x, const Element &y) const =0
virtual Elementinv (Element &x, const Element &y) const =0
virtual Elementaxpy (Element &r, const Element &a, const Element &x, const Element &y) const =0
virtual bool isZero (const Element &x) const =0
virtual bool isOne (const Element &x) const =0
virtual Elementaddin (Element &x, const Element &y) const =0
virtual Elementsubin (Element &x, const Element &y) const =0
virtual Elementmulin (Element &x, const Element &y) const =0
virtual Elementdivin (Element &x, const Element &y) const =0
virtual Elementnegin (Element &x) const =0
virtual Elementinvin (Element &x) const =0
virtual Elementaxpyin (Element &r, const Element &a, const Element &x) const =0
virtual std::ostream & write (std::ostream &os) const =0
virtual std::istream & read (std::istream &is)=0
virtual std::ostream & write (std::ostream &os, const Element &x) const =0
virtual std::istream & read (std::istream &is, Element &x) const =0

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)
virtual bool isUnit (const Element &x) const =0
virtual bool isZeroDivisor (const Element &x) const =0

Additional Inherited Members

- Protected Member Functions inherited from FieldAbstract
 FieldAbstract ()

Detailed Description

Abstract ring base class.

Found in the file {linbox/ring/abstract.h}. Abstract base class used to implement the ring archetype to minimize code bloat. All public member functions of this class are purely virtual and must be implemented by all derived classes.

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.


Constructor & Destructor Documentation

virtual ~RingAbstract ( void  )
inlinevirtual

Destructor. Required because of virtual member functions. Virtual.


Member Function Documentation

virtual bool isUnit ( const Element x) const
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.

Returns:
pointer to new object in dynamic memory. Invertibility test. Test if ring element is invertible. This function assumes the ring element has already been constructed and initialized. Purely virtual.
boolean true if invertible, false if not.
Parameters:
xring element.

Implemented in RingEnvelope< Ring >.

virtual bool isZeroDivisor ( const Element x) const
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.

Returns:
boolean true if divides zero, false if not.
Parameters:
xring element.

Implemented in RingEnvelope< Ring >.


The documentation for this class was generated from the following file: