00001 #ifndef CONSTRAINT_FUNCTOR_HH 00002 #define CONSTRAINT_FUNCTOR_HH 00003 00004 // Copyright (c) 1996-1999 The University of Cincinnati. 00005 // All rights reserved. 00006 00007 // UC MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF 00008 // THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED 00009 // TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 00010 // PARTICULAR PURPOSE, OR NON-INFRINGEMENT. UC SHALL NOT BE LIABLE 00011 // FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, 00012 // MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. 00013 00014 // By using or copying this Software, Licensee agrees to abide by the 00015 // intellectual property laws, and all other applicable laws of the 00016 // U.S., and the terms of this license. 00017 00018 00019 // You may modify, distribute, and use the software contained in this package 00020 // under the terms of the "GNU LIBRARY GENERAL PUBLIC LICENSE" version 2, 00021 // June 1991. A copy of this license agreement can be found in the file 00022 // "LGPL", distributed with this archive. 00023 00024 // Author: Dale E. Martin dmartin@cliftonlabs.com 00025 00026 //--------------------------------------------------------------------------- 00027 00028 #include "IIR.hh" 00029 00030 class constraint_functor { 00031 public: 00032 virtual bool operator()( IIR *operate_on ) const = 0; 00033 }; 00034 00035 class is_attribute_declaration_functor : public constraint_functor { 00036 virtual bool operator()( IIR *operate_on ) const { 00037 return operate_on->is_attribute_declaration(); 00038 } 00039 }; 00040 00041 class is_array_type_functor : public constraint_functor { 00042 virtual bool operator()( IIR *operate_on ) const { 00043 return operate_on->is_array_type(); 00044 } 00045 }; 00046 00047 class is_discrete_type_functor : public constraint_functor { 00048 virtual bool operator()( IIR *operate_on ) const { 00049 return operate_on->is_discrete_type(); 00050 } 00051 }; 00052 00053 class is_character_type_functor : public constraint_functor { 00054 virtual bool operator()( IIR *operate_on ) const { 00055 return operate_on->is_character_type(); 00056 } 00057 }; 00058 00059 class is_scalar_type_functor : public constraint_functor { 00060 virtual bool operator()( IIR *operate_on ) const { 00061 return operate_on->is_scalar_type(); 00062 } 00063 }; 00064 00065 class is_integer_type_functor : public constraint_functor { 00066 virtual bool operator()( IIR *operate_on ) const { 00067 return operate_on->is_integer_type(); 00068 } 00069 }; 00070 00071 class is_label_functor : public constraint_functor { 00072 virtual bool operator()( IIR *operate_on ) const { 00073 return operate_on->is_label(); 00074 } 00075 }; 00076 00077 class is_component_declaration_functor : public constraint_functor { 00078 virtual bool operator()( IIR *operate_on ) const { 00079 return operate_on->is_component_declaration(); 00080 } 00081 }; 00082 00083 class is_subprogram_functor : public constraint_functor { 00084 virtual bool operator()( IIR *operate_on ) const { 00085 return operate_on->is_subprogram(); 00086 } 00087 }; 00088 00089 class is_type_functor : public constraint_functor { 00090 virtual bool operator()( IIR *operate_on ) const { 00091 return operate_on->is_type(); 00092 } 00093 }; 00094 00095 class is_function_declaration_functor : public constraint_functor { 00096 virtual bool operator()( IIR *operate_on ) const { 00097 return operate_on->is_function_declaration(); 00098 } 00099 }; 00100 00101 class is_signal_functor : public constraint_functor { 00102 virtual bool operator()( IIR *operate_on ) const { 00103 return operate_on->is_signal(); 00104 } 00105 }; 00106 00107 class is_entity_declaration_functor : public constraint_functor { 00108 virtual bool operator()( IIR *operate_on ) const { 00109 return operate_on->is_entity_declaration(); 00110 } 00111 }; 00112 00113 class is_architecture_declaration_functor : public constraint_functor { 00114 virtual bool operator()( IIR *operate_on ) const { 00115 return operate_on->is_architecture_declaration(); 00116 } 00117 }; 00118 00119 class is_configuration_declaration_functor : public constraint_functor { 00120 virtual bool operator()( IIR *operate_on ) const { 00121 return operate_on->is_configuration_declaration(); 00122 } 00123 }; 00124 00125 class is_procedure_declaration_functor : public constraint_functor { 00126 virtual bool operator()( IIR *operate_on ) const { 00127 return operate_on->is_procedure_declaration(); 00128 } 00129 }; 00130 00131 class is_package_declaration_functor : public constraint_functor { 00132 virtual bool operator()( IIR *operate_on ) const { 00133 return operate_on->is_package_declaration(); 00134 } 00135 }; 00136 00137 class is_subtype_declaration_functor : public constraint_functor { 00138 virtual bool operator()( IIR *operate_on ) const { 00139 return operate_on->is_subtype_declaration(); 00140 } 00141 }; 00142 00143 class is_constant_functor : public constraint_functor { 00144 virtual bool operator()( IIR *operate_on ) const { 00145 return operate_on->is_constant(); 00146 } 00147 }; 00148 00149 class is_variable_functor : public constraint_functor { 00150 virtual bool operator()( IIR *operate_on ) const { 00151 return operate_on->is_variable(); 00152 } 00153 }; 00154 00155 class is_literal_functor : public constraint_functor { 00156 virtual bool operator()( IIR *operate_on ) const { 00157 return operate_on->is_literal(); 00158 } 00159 }; 00160 00161 class is_file_functor : public constraint_functor { 00162 virtual bool operator()( IIR *operate_on ) const { 00163 return operate_on->is_file(); 00164 } 00165 }; 00166 00167 class is_physical_unit_functor : public constraint_functor { 00168 virtual bool operator()( IIR *operate_on ) const { 00169 return operate_on->is_physical_unit(); 00170 } 00171 }; 00172 00173 class is_group_declaration_functor : public constraint_functor { 00174 virtual bool operator()( IIR *operate_on ) const { 00175 return operate_on->is_group_declaration(); 00176 } 00177 }; 00178 #endif
1.4.6