00001 #ifndef FUNCTION_ANNOTATION_ATTRIBUTES_H_INCLUDED_ 00002 #define FUNCTION_ANNOTATION_ATTRIBUTES_H_INCLUDED_ 00003 00004 #include "rose.h" 00005 00006 #include "function_annotation.h" 00007 00008 namespace risc { 00009 00010 namespace sg { 00011 00012 class FunctionAnnotationAttributes: public AstAttribute { 00013 00014 public: 00015 00016 FunctionAnnotationAttributes(FunctionAnnotationAttributes *func_attributes); 00017 00018 FunctionAnnotationAttributes(FunctionAnnotation *annotation); 00019 00020 // for the new rose release 00021 virtual AstAttribute::OwnershipPolicy getOwnershipPolicy() const ROSE_OVERRIDE 00022 { 00023 return CONTAINER_OWNERSHIP; 00024 } 00025 00026 FunctionAnnotationAttributes( 00027 std::string function_name, 00028 bool is_conflict_free, 00029 WAIT_CONSTRUCT wait_type, 00030 AnnotatedTime *annotated_time); 00031 00032 bool has_boundary(); 00033 00034 std::string function_name_; 00035 bool is_conflict_free_; 00036 00037 WAIT_CONSTRUCT wait_type_; 00038 AnnotatedTime *annotated_time_; 00039 00040 bool operator==(const FunctionAnnotationAttributes &other); 00041 00042 bool operator!=(const FunctionAnnotationAttributes &other); 00043 }; 00044 00045 } // end of namespace sg 00046 00047 } // end of namespace risc 00048 00049 #endif /* FUNCTION_ANNOTATION_ATTRIBUTES_H_INCLUDED_ */ 00050 00051 /* ex: set softtabstop=2 tabstop=2 shiftwidth=2 expandtab: */