Polaris: ArrayDims.h Source File

ArrayDims.h

Go to the documentation of this file.
00001 ///
00002 ///
00003 /// ArrayDims.h
00004 ///
00005 #ifndef ARRAY_DIMS_H
00006 #define ARRAY_DIMS_H
00007 ///
00008 /// \class ArrayDims 
00009 /// \brief a list of ArrayBounds
00010 /// \defgroup Polaris
00011 /// \ingroup Polaris
00012 ///  C++ VDL
00013 /// \see ArrayDims.h
00014 /// \see ArrayDims.h
00015 /// \see ArrayDims.cc
00016 ///
00017 /// \endcode
00018 /// \section Description Description
00019 /// ArrayDims is a list of ArrayBounds with a few other functions.
00020 /// It has the ability to initialize itself from a binstr.
00021 ///
00022 /// \endcode
00023 /// \section Implementation Implementation Notes
00024 /// For an explanation of _first_pass, etc., see the Implementation
00025 /// Notes section of Symbol/Symbol.h.
00026 ///
00027 #ifdef POLARIS_GNU_PRAGMAS
00028 #pragma interface
00029 #endif
00030 ///
00031 #include "ClassNames.h"
00032 #include "ArrayBounds.h"
00033 #include "BinRep.h"
00034 #include "Collection/List.h"
00035 ///
00036 class ExprTable;
00037 
00038 class ArrayDims : public List<ArrayBounds>{
00039     friend ostream & operator << (ostream & o, const ArrayDims & dims);
00040 
00041  public:
00042     ArrayDims();
00043     ~ArrayDims() {
00044     #ifdef CLASS_INSTANCE_REGISTRY
00045     unregister_instance(ARRAY_DIMS, this);
00046     #endif
00047  };   ///< Nothing to do
00048     ArrayDims(const BinRep & binstr, ExprTable & exprs);
00049     ArrayDims(const ArrayDims & dims);
00050 
00051     ArrayDims & operator = (const ArrayDims & dims);
00052 
00053     void            convert(const BinRep & binstr, ExprTable & exprs);
00054 
00055     void print_all_colons(ostream & o) const; ///< e.g. (:,:,:)
00056     void print_last_star (ostream & o) const; ///< e.g. (100,100,*)
00057     
00058     virtual void    print(ostream & o) const;
00059     ///< print onto stream
00060 
00061     virtual ArrayDims *clone() const;
00062     virtual Listable *listable_clone() const;
00063 
00064     int             structures_OK() const;
00065     ///< Check the structure of the data for errors or inconsistency
00066     ///< Return 0 and print error message if problems found, otherwise
00067     ///< return 1 without message.
00068 };
00069 
00070 #endif
 © 1995-2005 University of Illinois, Urbana-Champaign. All rights reserved.  Fri Mar 25 23:05:37 2005