00001 #ifndef CACHED_FUNCTION_AST_ATTRIBUTES_H_INCLUDED_ 00002 #define CACHED_FUNCTION_AST_ATTRIBUTES_H_INCLUDED_ 00003 00004 #include "rose.h" 00005 00006 #include "segment_graph.h" 00007 00008 namespace risc { 00009 00010 namespace sg { 00011 00018 class CachedFunctionAstAttributes: public AstAttribute { 00019 00020 public: 00021 00022 enum FunctionIntegration {Inlining, Connecting}; 00023 00024 // TODO for the new rose release 00025 //virtual AstAttribute::OwnershipPolicy getOwnershipPolicy() const ROSE_OVERRIDE 00026 //{ 00027 // return CONTAINER_OWNERSHIP; 00028 //} 00029 00030 CachedFunctionAstAttributes(VertexDescriptor starting_vertex, 00031 FunctionIntegration function_integration); 00032 00039 bool has_boundary(); 00040 00046 bool starting_segment_is_leaving_segment(); 00047 00048 00049 FunctionIntegration function_integration_; 00050 00051 VertexDescriptor starting_vertex_; 00052 SegmentGraph::SegmentSet leaving_segments_; 00053 }; 00054 00055 } // end of namespace sg 00056 00057 } // end of namespace risc 00058 00059 #endif /* CACHED_FUNCTION_AST_ATTRIBUTES_H_INCLUDED_ */ 00060 00061 /* ex: set softtabstop=2 tabstop=2 shiftwidth=2 expandtab: */