Polaris: SymbolAccess.h Source File

SymbolAccess.h

Go to the documentation of this file.
00001 ///
00002 /// file SymbolAccess.h
00003 ///
00004 #ifndef _SYMBOLACCESS_H
00005 #define _SYMBOLACCESS_H
00006 ///
00007 #ifdef POLARIS_GNU_PRAGMAS
00008 #pragma interface
00009 #endif
00010 ///
00011 class ProgramUnit;
00012 class InlineObject;
00013 class Symbol;
00014 class Statement;
00015 
00016 #include "ClassNames.h"
00017 #include "AbstractAccess.h"
00018 
00019 
00020 class SymbolAccess : public Listable {
00021 
00022 friend class SymbolAccessRef;
00023 friend class SymbolAccessMap;
00024 
00025  protected:
00026     List<AbstractAccess> _read;
00027     List<AbstractAccess> _write;
00028     List<AbstractAccess> _readwrite;
00029 
00030     void _copy_access_lists( List<AbstractAccess> read,
00031                  List<AbstractAccess> write,
00032                  List<AbstractAccess> readwrite );
00033 
00034  public:
00035     SymbolAccess( );
00036     SymbolAccess( const List<AbstractAccess> read, 
00037           const List<AbstractAccess> write, 
00038           const List<AbstractAccess> readwrite );
00039     SymbolAccess( const SymbolAccess & other );
00040     ~SymbolAccess( );
00041 
00042     virtual Listable *listable_clone() const;
00043 
00044     virtual SymbolAccess *clone() const;
00045 
00046     void relink_eptrs( ProgramUnit & p );
00047 
00048     void add_read     ( const AbstractAccess * r );
00049     void add_write    ( const AbstractAccess * w );
00050     void add_readwrite( const AbstractAccess * rw );
00051 
00052     void add_read     ( const RefList<AbstractAccess> & r );
00053     void add_write    ( const RefList<AbstractAccess> & w );
00054     void add_readwrite( const RefList<AbstractAccess> & rw );
00055 
00056     Iterator<AbstractAccess> iter_read( );
00057     Iterator<AbstractAccess> iter_write( );
00058     Iterator<AbstractAccess> iter_readwrite( );
00059 
00060     Mutator<AbstractAccess> muter_read( );
00061     Mutator<AbstractAccess> muter_write( );
00062     Mutator<AbstractAccess> muter_readwrite( );
00063 
00064     void ins( const SymbolAccess & rhs );
00065 
00066     SymbolAccess * remap_interface_vars( InlineObject * inline_object, const Symbol & sym,
00067                     ProgramUnit & pgm, Statement & stmt, 
00068                     int exec_pred=-1) const;
00069 
00070     void write( ostream & o, Symbol & sym, Statement & stmt ) const;
00071 
00072     ///< This one is to satisfy Listable
00073     virtual void    print(ostream & o) const;
00074 
00075     friend ostream & operator << (ostream & o, const SymbolAccess & sa);
00076 };
00077 
00078 #endif
 © 1995-2005 University of Illinois, Urbana-Champaign. All rights reserved.  Fri Mar 25 23:06:14 2005