casa  $Rev:20696$
Classes | Public Types | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes
casac::variant Class Reference

#include <variant.h>

List of all members.

Classes

class  error
class  overflow

Public Types

enum  TYPE {
  RECORD,
  BOOL,
  INT,
  DOUBLE,
  COMPLEX,
  STRING,
  BOOLVEC,
  INTVEC,
  DOUBLEVEC,
  COMPLEXVEC,
  STRINGVEC
}

Public Member Functions

variantclone () const
int compare (const variant *) const
 variant ()
 variant (const variant &)
 variant (bool arg)
 variant (int arg)
 variant (double arg)
 variant (std::complex< double > arg)
 variant (const char *arg)
 variant (const std::string &arg)
 variant (const std::vector< bool > &arg)
 variant (const std::vector< bool > &arg, const std::vector< int > &theshape)
 variant (std::vector< bool > *arg)
 variant (std::vector< bool > *arg, std::vector< int > &theshape)
 variant (const std::vector< int > &arg)
 variant (const std::vector< int > &arg, const std::vector< int > &theshape)
 variant (std::vector< int > *arg)
 variant (std::vector< int > *arg, std::vector< int > &theshape)
 variant (const std::vector< double > &arg)
 variant (const std::vector< double > &arg, const std::vector< int > &theshape)
 variant (std::vector< double > *arg)
 variant (std::vector< double > *arg, std::vector< int > &theshape)
 variant (const std::vector< std::complex< double > > &arg)
 variant (const std::vector< std::complex< double > > &arg, const std::vector< int > &theshape)
 variant (std::vector< std::complex< double > > *arg)
 variant (std::vector< std::complex< double > > *arg, std::vector< int > &theshape)
 variant (const std::vector< std::string > &arg, const std::vector< int > &theshape)
 variant (const std::vector< std::string > &arg)
 variant (std::vector< std::string > *arg)
 variant (std::vector< std::string > *arg, std::vector< int > &theshape)
 variant (record &arg)
 variant (record *arg)
 ~variant ()
bool toBool () const
int toInt () const
double toDouble () const
std::complex< double > toComplex () const
std::string toString (bool no_brackets=false) const
std::vector< bool > toBoolVec () const
std::vector< int > toIntVec () const
std::vector< double > toDoubleVec () const
std::vector< std::complex
< double > > 
toComplexVec () const
std::vector< std::string > toStringVec () const
bool & asBool ()
 Yet to be implemented.
int & asInt ()
double & asDouble ()
std::complex< double > & asComplex ()
std::string & asString ()
std::vector< int > & asIntVec (int size=-1)
std::vector< bool > & asBoolVec (int size=-1)
std::vector< double > & asDoubleVec (int size=-1)
std::vector< std::complex
< double > > & 
asComplexVec (int size=-1)
std::vector< std::string > & asStringVec (int size=-1)
casac::recordasRecord ()
void as (TYPE t, int size=-1)
const bool getBool () const throw (error)
 Const.
const int getInt () const throw (error)
const double getDouble () const throw (error)
const std::complex< double > & getComplex () const throw (error)
const std::string & getString () const throw (error)
const std::vector< int > & getIntVec () const throw (error)
const std::vector< bool > & getBoolVec () const throw (error)
const std::vector< double > & getDoubleVec () const throw (error)
const std::vector
< std::complex< double > > & 
getComplexVec () const throw (error)
const std::vector< std::string > & getStringVec () const throw (error)
const recordgetRecord () const throw (error)
const std::vector< int > & shape () const
const std::vector< int > & arrayshape () const
bool & getBoolMod () throw (error)
 Modify.
int & getIntMod () throw (error)
double & getDoubleMod () throw (error)
std::complex< double > & getComplexMod () throw (error)
std::string & getStringMod () throw (error)
std::vector< int > & getIntVecMod () throw (error)
std::vector< bool > & getBoolVecMod () throw (error)
std::vector< double > & getDoubleVecMod () throw (error)
std::vector< std::complex
< double > > & 
getComplexVecMod () throw (error)
std::vector< std::string > & getStringVecMod () throw (error)
recordgetRecordMod () throw (error)
std::vector< int > & shape ()
std::vector< int > & arrayshape ()
const std::string & typeString () const
TYPE type () const
void push (bool, bool conform=true)
void push (int, bool conform=true)
void push (double, bool conform=true)
void push (std::complex< double >, bool conform=true)
void push (const std::string &, bool conform=true)
void place (bool, unsigned int index, bool conform=true)
void place (int, unsigned int index, bool conform=true)
void place (double, unsigned int index, bool conform=true)
void place (std::complex< double >, unsigned int index, bool conform=true)
void place (const std::string &, unsigned int index, bool conform=true)
int size () const
void resize (int size)

Static Public Member Functions

static TYPE compatible_type (TYPE one, TYPE two)

Private Member Functions

int shape_size () const
 what size does the shape imply
int vec_size () const
std::string create_message (const std::string s) const

Private Attributes

TYPE typev
union {
   bool   b
   std::vector< bool > *   bv
   int   i
   std::vector< int > *   iv
   double   d
   std::vector< double > *   dv
   std::complex< double > *   c
   std::vector< std::complex
< double > > *   cv
   std::string *   s
   std::vector< std::string > *   sv
   record *   recordv
val
std::vector< int > shape_

Static Private Attributes

static unsigned int record_id_count
 4294967295

Detailed Description

Definition at line 12 of file variant.h.


Member Enumeration Documentation

Enumerator:
RECORD 
BOOL 
INT 
DOUBLE 
COMPLEX 
STRING 
BOOLVEC 
INTVEC 
DOUBLEVEC 
COMPLEXVEC 
STRINGVEC 

Definition at line 16 of file variant.h.


Constructor & Destructor Documentation

casac::variant::variant ( )

Referenced by clone().

casac::variant::variant ( const variant )
casac::variant::variant ( bool  arg) [inline]

Definition at line 39 of file variant.h.

References casa::arg(), and val.

casac::variant::variant ( int  arg) [inline]

Definition at line 40 of file variant.h.

References casa::arg(), and val.

casac::variant::variant ( double  arg) [inline]

Definition at line 41 of file variant.h.

References casa::arg(), and val.

casac::variant::variant ( std::complex< double >  arg) [inline]

Definition at line 42 of file variant.h.

References casa::arg(), and val.

casac::variant::variant ( const char *  arg) [inline]

Definition at line 43 of file variant.h.

References val.

casac::variant::variant ( const std::string &  arg) [inline]

Definition at line 45 of file variant.h.

References val.

casac::variant::variant ( const std::vector< bool > &  arg) [inline]

Definition at line 48 of file variant.h.

References casa::arg(), and val.

casac::variant::variant ( const std::vector< bool > &  arg,
const std::vector< int > &  theshape 
) [inline]

Definition at line 50 of file variant.h.

References casa::arg(), and val.

casac::variant::variant ( std::vector< bool > *  arg) [inline]

Definition at line 52 of file variant.h.

References casa::arg(), and val.

casac::variant::variant ( std::vector< bool > *  arg,
std::vector< int > &  theshape 
) [inline]

Definition at line 54 of file variant.h.

References casa::arg(), and val.

casac::variant::variant ( const std::vector< int > &  arg) [inline]

Definition at line 57 of file variant.h.

References casa::arg(), and val.

casac::variant::variant ( const std::vector< int > &  arg,
const std::vector< int > &  theshape 
) [inline]

Definition at line 59 of file variant.h.

References casa::arg(), and val.

casac::variant::variant ( std::vector< int > *  arg) [inline]

Definition at line 61 of file variant.h.

References casa::arg(), and val.

casac::variant::variant ( std::vector< int > *  arg,
std::vector< int > &  theshape 
) [inline]

Definition at line 63 of file variant.h.

References casa::arg(), and val.

casac::variant::variant ( const std::vector< double > &  arg) [inline]

Definition at line 66 of file variant.h.

References casa::arg(), and val.

casac::variant::variant ( const std::vector< double > &  arg,
const std::vector< int > &  theshape 
) [inline]

Definition at line 68 of file variant.h.

References casa::arg(), and val.

casac::variant::variant ( std::vector< double > *  arg) [inline]

Definition at line 70 of file variant.h.

References casa::arg(), and val.

casac::variant::variant ( std::vector< double > *  arg,
std::vector< int > &  theshape 
) [inline]

Definition at line 72 of file variant.h.

References casa::arg(), and val.

casac::variant::variant ( const std::vector< std::complex< double > > &  arg) [inline]

Definition at line 75 of file variant.h.

References casa::arg(), and val.

casac::variant::variant ( const std::vector< std::complex< double > > &  arg,
const std::vector< int > &  theshape 
) [inline]

Definition at line 77 of file variant.h.

References casa::arg(), and val.

casac::variant::variant ( std::vector< std::complex< double > > *  arg) [inline]

Definition at line 79 of file variant.h.

References casa::arg(), and val.

casac::variant::variant ( std::vector< std::complex< double > > *  arg,
std::vector< int > &  theshape 
) [inline]

Definition at line 81 of file variant.h.

References casa::arg(), and val.

casac::variant::variant ( const std::vector< std::string > &  arg,
const std::vector< int > &  theshape 
) [inline]

Definition at line 84 of file variant.h.

References casa::arg(), and val.

casac::variant::variant ( const std::vector< std::string > &  arg) [inline]

Definition at line 86 of file variant.h.

References casa::arg(), and val.

casac::variant::variant ( std::vector< std::string > *  arg) [inline]

Definition at line 88 of file variant.h.

References casa::arg(), and val.

casac::variant::variant ( std::vector< std::string > *  arg,
std::vector< int > &  theshape 
) [inline]

Definition at line 90 of file variant.h.

References casa::arg(), and val.

casac::variant::variant ( record arg)
casac::variant::variant ( record arg)
casac::variant::~variant ( )

Member Function Documentation

const std::vector<int>& casac::variant::arrayshape ( ) const [inline]

Definition at line 141 of file variant.h.

References shape().

std::vector<int>& casac::variant::arrayshape ( ) [inline]

Definition at line 157 of file variant.h.

References shape().

void casac::variant::as ( TYPE  t,
int  size = -1 
)
bool& casac::variant::asBool ( )

Yet to be implemented.

Modify ---------------------------------------------------

std::vector<bool>& casac::variant::asBoolVec ( int  size = -1)
std::complex<double>& casac::variant::asComplex ( )
std::vector<std::complex<double> >& casac::variant::asComplexVec ( int  size = -1)
double& casac::variant::asDouble ( )
std::vector<double>& casac::variant::asDoubleVec ( int  size = -1)
int& casac::variant::asInt ( )
std::vector<int>& casac::variant::asIntVec ( int  size = -1)
casac::record& casac::variant::asRecord ( )
std::string& casac::variant::asString ( )
std::vector<std::string>& casac::variant::asStringVec ( int  size = -1)
variant* casac::variant::clone ( ) const [inline]

Definition at line 33 of file variant.h.

References variant().

int casac::variant::compare ( const variant ) const
static TYPE casac::variant::compatible_type ( TYPE  one,
TYPE  two 
) [static]
std::string casac::variant::create_message ( const std::string  s) const [private]
const bool casac::variant::getBool ( ) const throw (error)

Const.

---------------------------------------------------

bool& casac::variant::getBoolMod ( ) throw (error)

Modify.

---------------------------------------------------

const std::vector<bool>& casac::variant::getBoolVec ( ) const throw (error)
std::vector<bool>& casac::variant::getBoolVecMod ( ) throw (error)
const std::complex<double>& casac::variant::getComplex ( ) const throw (error)
std::complex<double>& casac::variant::getComplexMod ( ) throw (error)
const std::vector<std::complex<double> >& casac::variant::getComplexVec ( ) const throw (error)
std::vector<std::complex<double> >& casac::variant::getComplexVecMod ( ) throw (error)
const double casac::variant::getDouble ( ) const throw (error)
double& casac::variant::getDoubleMod ( ) throw (error)
const std::vector<double>& casac::variant::getDoubleVec ( ) const throw (error)
std::vector<double>& casac::variant::getDoubleVecMod ( ) throw (error)
const int casac::variant::getInt ( ) const throw (error)
int& casac::variant::getIntMod ( ) throw (error)
const std::vector<int>& casac::variant::getIntVec ( ) const throw (error)
std::vector<int>& casac::variant::getIntVecMod ( ) throw (error)
const record& casac::variant::getRecord ( ) const throw (error)
record& casac::variant::getRecordMod ( ) throw (error)
const std::string& casac::variant::getString ( ) const throw (error)
std::string& casac::variant::getStringMod ( ) throw (error)
const std::vector<std::string>& casac::variant::getStringVec ( ) const throw (error)
std::vector<std::string>& casac::variant::getStringVecMod ( ) throw (error)
void casac::variant::place ( bool  ,
unsigned int  index,
bool  conform = true 
)
void casac::variant::place ( int  ,
unsigned int  index,
bool  conform = true 
)
void casac::variant::place ( double  ,
unsigned int  index,
bool  conform = true 
)
void casac::variant::place ( std::complex< double >  ,
unsigned int  index,
bool  conform = true 
)
void casac::variant::place ( const std::string &  ,
unsigned int  index,
bool  conform = true 
)
void casac::variant::push ( bool  ,
bool  conform = true 
)
void casac::variant::push ( int  ,
bool  conform = true 
)
void casac::variant::push ( double  ,
bool  conform = true 
)
void casac::variant::push ( std::complex< double >  ,
bool  conform = true 
)
void casac::variant::push ( const std::string &  ,
bool  conform = true 
)
void casac::variant::resize ( int  size)
const std::vector<int>& casac::variant::shape ( ) const

Referenced by arrayshape().

std::vector<int>& casac::variant::shape ( )
int casac::variant::shape_size ( ) const [private]

what size does the shape imply

int casac::variant::size ( ) const [inline]

Definition at line 174 of file variant.h.

References BOOLVEC, typev, and vec_size().

bool casac::variant::toBool ( ) const
std::vector<bool> casac::variant::toBoolVec ( ) const
std::complex<double> casac::variant::toComplex ( ) const
std::vector<std::complex<double> > casac::variant::toComplexVec ( ) const
double casac::variant::toDouble ( ) const
std::vector<double> casac::variant::toDoubleVec ( ) const
int casac::variant::toInt ( ) const
std::vector<int> casac::variant::toIntVec ( ) const
std::string casac::variant::toString ( bool  no_brackets = false) const
std::vector<std::string> casac::variant::toStringVec ( ) const
TYPE casac::variant::type ( ) const [inline]

Definition at line 160 of file variant.h.

References typev.

const std::string& casac::variant::typeString ( ) const
int casac::variant::vec_size ( ) const [private]

Referenced by size().


Member Data Documentation

Definition at line 188 of file variant.h.

std::vector<bool>* casac::variant::bv

Definition at line 189 of file variant.h.

std::complex<double>* casac::variant::c

Definition at line 194 of file variant.h.

std::vector<std::complex<double> >* casac::variant::cv

Definition at line 195 of file variant.h.

Definition at line 192 of file variant.h.

std::vector<double>* casac::variant::dv

Definition at line 193 of file variant.h.

Definition at line 190 of file variant.h.

std::vector<int>* casac::variant::iv

Definition at line 191 of file variant.h.

unsigned int casac::variant::record_id_count [static, private]

4294967295

Definition at line 183 of file variant.h.

Definition at line 198 of file variant.h.

std::string* casac::variant::s

Definition at line 196 of file variant.h.

std::vector<int> casac::variant::shape_ [private]

Definition at line 200 of file variant.h.

std::vector<std::string>* casac::variant::sv

Definition at line 197 of file variant.h.

Definition at line 186 of file variant.h.

Referenced by size(), and type().

union { ... } casac::variant::val [private]

Referenced by variant().


The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines