note description: "Name constants used in Eiffel query language" legal: "See notice at end of class." status: "See notice at end of class." author: "$Author$" date: "$Date$" revision: "$Revision$" EIS: "name=Predefined metrics configuration", "src=https://svn.eiffel.com/eiffelstudio/trunk/Src/Delivery/studio/metrics/predefined_metrics.xml", "tag=Metrics" class QL_NAMES feature -- Scope item ql_target: STRING = "target" ql_group: STRING = "group" ql_class: STRING = "class" ql_feature: STRING = "feature" ql_invariant: STRING = "invariant" ql_quantity: STRING = "quantity" ql_line: STRING = "line" ql_local: STRING = "local" ql_assertion: STRING = "assertion" ql_argument: STRING = "argument" ql_generic: STRING = "generic" feature -- Units ql_target_unit: STRING = "target" ql_group_unit: STRING = "group" ql_class_unit: STRING = "class" ql_feature_unit: STRING = "feature" ql_compilation_unit: STRING = "compilation" ql_local_unit: STRING = "local" ql_argument_unit: STRING = "argument" ql_ratio_unit: STRING = "ratio" ql_line_unit: STRING = "line" ql_assertion_unit: STRING = "assertion" ql_no_unit: STRING = "no unit" ql_generic_unit: STRING = "generic" feature -- Titles ql_name: STRING = "name" ql_path: STRING = "path" feature -- Criterion names ql_cri_true: STRING = "true" ql_cri_false: STRING = "false" ql_cri_and: STRING = "and" ql_cri_or: STRING = "or" ql_cri_not: STRING = "not" ql_cri_eq: STRING = "eq" ql_cri_ne: STRING = "ne" ql_cri_num: STRING = "num" ql_cri_is_compiled: STRING = "is_compiled" ql_cri_name_is: STRING = "name_is" ql_cri_is_assembly: STRING = "is_assembly" ql_cri_is_library: STRING = "is_library" ql_cri_is_cluster: STRING = "is_cluster" ql_cri_is_override: STRING = "is_override" ql_cri_is_valid: STRING = "is_valid" ql_cri_is_used_in_library: STRING = "is_used_in_library" ql_cri_is_class_set: STRING = "is_class_set" ql_cri_has_invariant: STRING = "has_immediate_invariant" ql_cri_ancestor_is: STRING = "ancestor_is" ql_cri_proper_ancestor_is: STRING = "proper_ancestor_is" ql_cri_parent_is: STRING = "parent_is" ql_cri_indirect_parent_is: STRING = "indirect_parent_is" ql_cri_descendant_is: STRING = "descendant_is" ql_cri_proper_descendant_is: STRING = "proper_descendant_is" ql_cri_heir_is: STRING = "heir_is" ql_cri_indirect_heir_is: STRING = "indirect_heir_is" ql_cri_client_is: STRING = "client_is" ql_cri_supplier_is: STRING = "supplier_is" ql_cri_is_deferred: STRING = "is_deferred" ql_cri_is_expanded: STRING = "is_expanded" ql_cri_is_external: STRING = "is_external" ql_cri_is_frozen: STRING = "is_frozen" ql_cri_is_generic: STRING = "is_generic" ql_cri_is_obsolete: STRING = "is_obsolete" ql_cri_is_precompiled: STRING = "is_precompiled" ql_cri_has_top_indexing: STRING = "has_top_indexing" ql_cri_has_bottom_indexing: STRING = "has_bottom_indexing" ql_cri_has_indexing: STRING = "has_indexing" ql_cri_is_enum: STRING = "is_enum" ql_cri_is_effective: STRING = "is_effective" ql_cri_path_in: STRING = "path_in" ql_cri_path_is: STRING = "path_is" ql_cri_text_contain: STRING = "text_is" ql_cri_top_indexing_has_tag: STRING = "top_indexing_has_tag" ql_cri_bottom_indexing_has_tag: STRING = "bottom_indexing_has_tag" ql_cri_indexing_has_tag: STRING = "indexing_has_tag" ql_cri_top_indexing_contain: STRING = "top_indexing_contain" ql_cri_bottom_indexing_contain: STRING = "bottom_indexing_contain" ql_cri_indexing_contain: STRING = "indexing_contain" ql_cri_is_always_compiled: STRING = "is_always_compiled" ql_cri_is_partial: STRING = "is_partial" ql_cri_is_read_only: STRING = "is_read_only" ql_cri_is_overridden: STRING = "is_overridden" ql_cri_is_overrider: STRING = "is_overrider" ql_cri_is_visible: STRING = "is_visible" ql_cri_is_from_any: STRING = "is_from_any" ql_cri_has_argument: STRING = "has_argument" ql_cri_has_assertion: STRING = "has_assertion" ql_cri_has_assigner: STRING = "has_assigner" ql_cri_has_comment: STRING = "has_comment" ql_cri_has_local: STRING = "has_local" ql_cri_has_postcondition: STRING = "has_postcondition" ql_cri_has_class_postcondition: STRING = "has_class_postcondition" ql_cri_has_precondition: STRING = "has_precondition" ql_cri_has_rescue: STRING = "has_rescue" ql_cri_is_attribute: STRING = "is_attribute" ql_cri_is_caller: STRING = "is_caller_of" ql_cri_is_constant: STRING = "is_constant" ql_cri_is_function: STRING = "is_function" ql_cri_is_immediate: STRING = "is_immediate" ql_cri_is_implementor: STRING = "is_implementor_of" ql_cri_is_infix: STRING = "is_infix" ql_cri_is_once: STRING = "is_once" ql_cri_is_class: STRING = "is_class" ql_cri_is_ghost: STRING = "is_ghost" ql_cri_is_origin: STRING = "is_origin" ql_cri_is_prefix: STRING = "is_prefix" ql_cri_is_procedure: STRING = "is_procedure" ql_cri_is_unique: STRING = "is_unique" ql_cri_is_feature: STRING = "is_feature" ql_cri_is_invariant: STRING = "is_invariant" ql_cri_is_creator: STRING = "is_creator" ql_cri_is_exported: STRING = "is_exported" ql_cri_is_hidden: STRING = "is_hidden" ql_cri_implementors_of: STRING = "is_implementors_of" ql_cri_is_exported_to: STRING = "is_exported_to" ql_cri_callee_is: STRING = "callee_is" ql_cri_caller_is: STRING = "caller_is" ql_cri_assignee_is: STRING = "assignee_is" ql_cri_assigner_is: STRING = "assigner_is" ql_cri_createe_is: STRING = "createe_is" ql_cri_creator_is: STRING = "creator_is" ql_cri_is_invariant_feature: STRING = "is_invariant_feature" ql_cri_is_query: STRING = "is_query" ql_cri_is_command: STRING = "is_command" ql_cri_return_type_is: STRING = "return_type_is" ql_cri_has_constraint: STRING = "has_constraint" ql_cri_has_creation_constraint: STRING = "has_creation_constraint" ql_cri_is_reference: STRING = "is_reference" ql_cri_is_used: STRING = "is_used" ql_cri_has_expression: STRING = "has_expression" ql_cri_has_tag: STRING = "has_tag" ql_cri_is_require: STRING = "is_require" ql_cri_is_require_else: STRING = "is_require_else" ql_cri_is_ensure: STRING = "is_ensure" ql_cri_is_ensure_then: STRING = "is_ensure_then" ql_cri_is_precondition: STRING = "is_precondition" ql_cri_is_postcondition: STRING = "is_postcondition" ql_cri_is_blank: STRING = "is_blank" ql_cri_is_comment: STRING = "is_comment" ql_cri_contain_ast: STRING = "contain_ast" ql_cri_value_of_metric_is: STRING = "value_of_metric_is" ql_cri_is_implementation_comment: STRING = "is_implementation_comment" ql_cri_is_satisfied_by: STRING = "is_satisfied_by" feature -- Metric names ql_metric_target: STRING = "Number of targets" ql_metric_group: STRING = "Number of groups" ql_metric_class: STRING = "Number of classes" ql_metric_feature: STRING = "Number of features" ql_metric_local: STRING = "Number of locals" ql_metric_argument: STRING = "Number of arguments" ql_metric_line: STRING = "Number of lines" ql_metric_compilation: STRING = "Number of compilation" ql_metric_assertion: STRING = "Number of assertions" ql_metric_sum: STRING = "Sum" ql_metric_average: STRING = "Average" ql_metric_count: STRING = "Number of items" ql_metric_generic: STRING = "Number of generics" feature -- Assertion type names ql_require_assertion: STRING = "require" ql_require_else_assertion: STRING = "require else" ql_ensure_assertion: STRING = "ensure" ql_ensure_then_assertion: STRING = "ensure then" ql_invariant_assertion: STRING = "invariant" feature -- Path marker ql_target_path_opener: STRING_32 = "" ql_target_path_closer: STRING_32 = "" ql_group_path_opener: STRING_32 = "" ql_group_path_closer: STRING_32 = "" ql_class_path_opener: STRING_32 = "{" ql_class_path_closer: STRING_32 = "}" ql_feature_path_opener: STRING_32 = "" ql_feature_path_closer: STRING_32 = "" ql_generic_path_opener: STRING_32 = "[" ql_generic_path_closer: STRING_32 = "]" ql_argument_path_opener: STRING_32 = "argument " ql_argument_path_closer: STRING_32 = "" ql_local_path_opener: STRING_32 = "local " ql_local_path_closer: STRING_32 = "" ql_assertion_path_opener: STRING_32 = "assertion " ql_assertion_path_closer: STRING_32 = "" ql_line_path_opener: STRING_32 = "line " ql_line_path_closer: STRING_32 = "" ql_quantity_path_opener: STRING_32 = "quantity " ql_quantity_path_closer: STRING_32 = "" feature -- Feature caller types ql_normal_feature_caller: STRING = "normal caller" ql_assigner_feature_caller: STRING = "assign caller" ql_creator_feature_caller: STRING = "creator caller" ql_normal_feature_callee: STRING = "normal callee" ql_assigner_feature_callee: STRING = "assign callee" ql_creator_feature_callee: STRING = "creator callee" feature -- Class relationship ql_class_ancestor_relation: STRING = "ancestor" ql_class_proper_ancestor_relation: STRING = "proper ancestor" ql_class_descendant_relation: STRING = "descendant" ql_class_proper_descendant_relation: STRING = "proper descendant" ql_class_parent_relation: STRING = "parent" ql_class_indirect_parent_relation: STRING = "indirect parent" ql_class_heir_relation: STRING = "heir" ql_class_indirect_heir_relation: STRING = "indirect heir" ql_class_client_relation: STRING = "client" ql_class_indirect_client_relation: STRING = "indirect client" ql_class_supplier_relation: STRING = "supplier" ql_class_indirect_supplier_relation: STRING = "indirect supplier"; feature -- AST node index none_id: INTEGER = 0 typed_char: INTEGER = 1 agent_routine_creation: INTEGER = 2 tilda_routine_creation: INTEGER = 3 inline_agent_creation: INTEGER = 4 create_creation: INTEGER = 5 bang_creation: INTEGER = 6 create_creation_expr: INTEGER = 7 bang_creation_expr: INTEGER = 8 keyword: INTEGER = 9 symbol: INTEGER = 10 custom_attribute: INTEGER = 11 id: INTEGER = 12 integer: INTEGER = 13 static_access: INTEGER = 14 feature_clause: INTEGER = 15 unique_as: INTEGER = 16 tuple: INTEGER = 17 real: INTEGER = 18 bool: INTEGER = 19 bit_const: INTEGER = 20 array: INTEGER = 21 char: INTEGER = 22 string: INTEGER = 23 verbatim_string: INTEGER = 24 body: INTEGER = 25 result_as: INTEGER = 26 current_as: INTEGER = 27 access_feat: INTEGER = 28 access_inv: INTEGER = 29 access_id: INTEGER = 30 access_assert: INTEGER = 31 precursor_as: INTEGER = 32 nested_expr: INTEGER = 33 nested: INTEGER = 34 creation_expr: INTEGER = 35 type_expr: INTEGER = 36 routine: INTEGER = 37 constant: INTEGER = 38 eiffel_list: INTEGER = 39 indexing_clause: INTEGER = 40 operand: INTEGER = 41 tagged: INTEGER = 42 variant_as: INTEGER = 43 un_strip: INTEGER = 44 paran: INTEGER = 45 expr_call: INTEGER = 46 expr_address: INTEGER = 47 address_result: INTEGER = 48 address_current: INTEGER = 49 address: INTEGER = 50 routine_creation: INTEGER = 51 unary: INTEGER = 52 un_free: INTEGER = 53 un_minus: INTEGER = 54 un_not: INTEGER = 55 un_old: INTEGER = 56 un_plus: INTEGER = 57 binary: INTEGER = 58 bin_and_then: INTEGER = 59 bin_free: INTEGER = 60 bin_implies: INTEGER = 61 bin_or: INTEGER = 62 bin_or_else: INTEGER = 63 bin_xor: INTEGER = 64 bin_ge: INTEGER = 65 bin_gt: INTEGER = 66 bin_le: INTEGER = 67 bin_lt: INTEGER = 68 bin_div: INTEGER = 69 bin_minus: INTEGER = 70 bin_mod: INTEGER = 71 bin_plus: INTEGER = 72 bin_power: INTEGER = 73 bin_slash: INTEGER = 74 bin_star: INTEGER = 75 bin_and: INTEGER = 76 bin_eq: INTEGER = 77 bin_ne: INTEGER = 78 bracket: INTEGER = 79 external_lang: INTEGER = 80 feature_as: INTEGER = 81 infix_prefix: INTEGER = 82 feat_name_id: INTEGER = 83 feature_name_alias: INTEGER = 84 feature_list: INTEGER = 85 all_as: INTEGER = 86 assign_as: INTEGER = 87 assigner_call: INTEGER = 88 reverse: INTEGER = 89 check_as: INTEGER = 90 creation_as: INTEGER = 91 debug_as: INTEGER = 92 if_as: INTEGER = 93 inspect_as: INTEGER = 94 instr_call: INTEGER = 95 loop_as: INTEGER = 96 retry_as: INTEGER = 97 external_as: INTEGER = 98 deferred_as: INTEGER = 99 do_as: INTEGER = 100 once_as: INTEGER = 101 type_dec: INTEGER = 102 class_as: INTEGER = 103 parent: INTEGER = 104 like_id: INTEGER = 105 like_cur: INTEGER = 106 formal: INTEGER = 107 formal_dec: INTEGER = 108 class_type: INTEGER = 109 named_tuple_type: INTEGER = 110 none_type: INTEGER = 111 bits: INTEGER = 112 bits_symbol: INTEGER = 113 rename_as: INTEGER = 114 invariant_as: INTEGER = 115 interval: INTEGER = 116 index: INTEGER = 117 export_item: INTEGER = 118 elseif_as: INTEGER = 119 create_as: INTEGER = 120 client: INTEGER = 121 case: INTEGER = 122 ensure_as: INTEGER = 123 ensure_then: INTEGER = 124 require_as: INTEGER = 125 require_else: INTEGER = 126 convert_feat: INTEGER = 127 void_as: INTEGER = 128 type_list: INTEGER = 129 type_dec_list: INTEGER = 130 convert_feat_list: INTEGER = 131 class_list: INTEGER = 132 parent_list: INTEGER = 133 local_dec_list: INTEGER = 134 formal_argu_dec_list: INTEGER = 135 debug_key_list: INTEGER = 136 delayed_actual_list: INTEGER = 137 parameter_list: INTEGER = 138 rename_clause: INTEGER = 139 export_clause: INTEGER = 140 undefine_clause: INTEGER = 141 redefine_clause: INTEGER = 142 select_clause: INTEGER = 143 formal_generic_list: INTEGER = 144 constraining_type: INTEGER = 145 object_test: INTEGER = 146 bin_tilde: INTEGER = 147 bin_not_tilde: INTEGER = 148 feature -- AST node match ast_index_table: HASH_TABLE [ARRAY [INTEGER], STRING] -- Table for AST node indexing -- Key is name of an AST node type, value is index of that AST node type. once create Result.make (150) Result.force (<<none_id>>, "none_id") Result.force (<<typed_char>>, "typed_char") Result.force (<<agent_routine_creation>>, "agent_routine_creation") Result.force (<<tilda_routine_creation>>, "tilda_routine_creation") Result.force (<<inline_agent_creation>>, "inline_agent_creation") Result.force (<<create_creation>>, "create_creation") Result.force (<<bang_creation>>, "bang_creation") Result.force (<<create_creation_expr>>, "create_creation_expr") Result.force (<<bang_creation_expr>>, "bang_creation_expr") Result.force (<<keyword>>, "keyword") Result.force (<<symbol>>, "symbol") Result.force (<<custom_attribute>>, "custom_attribute") Result.force (<<id>>, "id") Result.force (<<integer>>, "integer") Result.force (<<static_access>>, "static_access") Result.force (<<feature_clause>>, "feature_clause") Result.force (<<unique_as>>, "unique") Result.force (<<tuple>>, "tuple") Result.force (<<real>>, "real") Result.force (<<bool>>, "bool") Result.force (<<bit_const>>, "bit_const") Result.force (<<array>>, "array") Result.force (<<char>>, "char") Result.force (<<string>>, "string") Result.force (<<verbatim_string>>, "verbatim_string") Result.force (<<body>>, "body") Result.force (<<result_as>>, "result") Result.force (<<current_as>>, "current") Result.force (<<access_feat>>, "access_feat") Result.force (<<access_inv>>, "access_inv") Result.force (<<access_id>>, "access_id") Result.force (<<access_assert>>, "access_assert") Result.force (<<precursor_as>>, "precursor") Result.force (<<nested_expr>>, "nested_expr") Result.force (<<nested>>, "nested") Result.force (<<creation_expr>>, "creation_expr") Result.force (<<type_expr>>, "type_expr") Result.force (<<routine>>, "routine") Result.force (<<constant>>, "constant") Result.force (<<eiffel_list>>, "eiffel_list") Result.force (<<indexing_clause>>, "indexing_clause") Result.force (<<operand>>, "operand") Result.force (<<tagged>>, "tagged") Result.force (<<variant_as>>, "variant") Result.force (<<un_strip>>, "un_strip") Result.force (<<paran>>, "paran") Result.force (<<expr_call>>, "expr_call") Result.force (<<expr_address>>, "expr_address") Result.force (<<address_result>>, "address_result") Result.force (<<address_current>>, "address_current") Result.force (<<address>>, "address") Result.force (<<routine_creation>>, "routine_creation") Result.force (<<unary>>, "unary") Result.force (<<un_free>>, "un_free") Result.force (<<un_minus>>, "un_minus") Result.force (<<un_not>>, "un_not") Result.force (<<un_old>>, "un_old") Result.force (<<un_plus>>, "un_plus") Result.force (<<binary>>, "binary") Result.force (<<bin_and_then>>, "bin_and_then") Result.force (<<bin_free>>, "bin_free") Result.force (<<bin_implies>>, "bin_implies") Result.force (<<bin_or>>, "bin_or") Result.force (<<bin_or_else>>, "bin_or_else") Result.force (<<bin_xor>>, "bin_xor") Result.force (<<bin_ge>>, "bin_ge") Result.force (<<bin_gt>>, "bin_gt") Result.force (<<bin_le>>, "bin_le") Result.force (<<bin_lt>>, "bin_lt") Result.force (<<bin_div>>, "bin_div") Result.force (<<bin_minus>>, "bin_minus") Result.force (<<bin_mod>>, "bin_mod") Result.force (<<bin_plus>>, "bin_plus") Result.force (<<bin_power>>, "bin_power") Result.force (<<bin_slash>>, "bin_slash") Result.force (<<bin_star>>, "bin_star") Result.force (<<bin_and>>, "bin_and") Result.force (<<bin_eq>>, "bin_eq") Result.force (<<bin_ne>>, "bin_ne") Result.force (<<bin_tilde>>, "bin_tilde") Result.force (<<bin_not_tilde>>, "bin_not_tilde") Result.force (<<bracket>>, "bracket") Result.force (<<object_test>>, "object_test") Result.force (<<external_lang>>, "external_lang") Result.force (<<feature_as>>, "feature") Result.force (<<infix_prefix>>, "infix_prefix") Result.force (<<feat_name_id>>, "feat_name_id") Result.force (<<feature_name_alias>>, "feature_name_alias") Result.force (<<feature_list>>, "feature_list") Result.force (<<all_as>>, "all") Result.force (<<assign_as>>, "assign") Result.force (<<assigner_call>>, "assigner_call") Result.force (<<reverse>>, "reverse") Result.force (<<check_as>>, "check") Result.force (<<creation_as>>, "creation") Result.force (<<debug_as>>, "debug") Result.force (<<if_as>>, "if") Result.force (<<inspect_as>>, "inspect") Result.force (<<instr_call>>, "instr_call") Result.force (<<loop_as>>, "loop") Result.force (<<retry_as>>, "retry") Result.force (<<external_as>>, "external") Result.force (<<deferred_as>>, "deferred") Result.force (<<do_as>>, "do") Result.force (<<once_as>>, "once") Result.force (<<type_dec>>, "type_dec") Result.force (<<class_as>>, "class") Result.force (<<parent>>, "parent") Result.force (<<like_id>>, "like_id") Result.force (<<like_cur>>, "like_cur") Result.force (<<formal>>, "formal") Result.force (<<formal_dec>>, "formal_dec") Result.force (<<class_type>>, "class_type") Result.force (<<named_tuple_type>>, "named_tuple_type") Result.force (<<none_type>>, "none_type") Result.force (<<bits>>, "bits") Result.force (<<bits_symbol>>, "bits_symbol") Result.force (<<rename_as>>, "rename") Result.force (<<invariant_as>>, "invariant") Result.force (<<interval>>, "interval") Result.force (<<index>>, "index") Result.force (<<export_item>>, "export_item") Result.force (<<elseif_as>>, "elseif") Result.force (<<create_as>>, "create") Result.force (<<client>>, "client") Result.force (<<case>>, "case") Result.force (<<ensure_as>>, "ensure") Result.force (<<ensure_then>>, "ensure_then") Result.force (<<require_as>>, "require") Result.force (<<require_else>>, "require_else") Result.force (<<convert_feat>>, "convert_feat") Result.force (<<void_as>>, "void") Result.force (<<type_list>>, "type_list") Result.force (<<type_dec_list>>, "type_dec_list") Result.force (<<convert_feat_list>>, "convert_feat_list") Result.force (<<class_list>>, "class_list") Result.force (<<parent_list>>, "parent_list") Result.force (<<local_dec_list>>, "local_dec_list") Result.force (<<formal_argu_dec_list>>, "formal_argu_dec_list") Result.force (<<debug_key_list>>, "debug_key_list") Result.force (<<delayed_actual_list>>, "delayed_actual_list") Result.force (<<parameter_list>>, "parameter_list") Result.force (<<rename_clause>>, "rename_clause") Result.force (<<export_clause>>, "export_clause") Result.force (<<undefine_clause>>, "undefine_clause") Result.force (<<redefine_clause>>, "redefine_clause") Result.force (<<select_clause>>, "select_clause") Result.force (<<formal_generic_list>>, "formal_generic_list") Result.force (<<assign_as, assigner_call, reverse, check_as, debug_as, if_as, inspect_as, instr_call, loop_as, retry_as>>, "instruction") Result.force (<<integer, unique_as, real>>, "number") Result.force (<<typed_char, integer, unique_as, bool, bit_const, char ,string, verbatim_string, constant, bits>>, "constant") Result.force (<<if_as, inspect_as>>, "conditional") Result.force (<<create_creation_expr, bang_creation_expr, nested_expr, creation_expr, type_expr, expr_call, expr_address, bool, char, result_as, void_as, string, verbatim_string, current_as, integer, real, bit_const, typed_char, agent_routine_creation, tilda_routine_creation, inline_agent_creation, static_access, tuple, array, expr_call, address_result, address_current, address, routine_creation>>, "expression") ensure result_attached: Result /= Void end feature -- Access ql_no_tag: STRING_32 = "no tag"; note copyright: "Copyright (c) 1984-2020, Eiffel Software" license: "GPL version 2 (see http://www.eiffel.com/licensing/gpl.txt)" licensing_options: "http://www.eiffel.com/licensing" copying: "[ This file is part of Eiffel Software's Eiffel Development Environment. Eiffel Software's Eiffel Development Environment is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2 of the License (available at the URL listed under "license" above). Eiffel Software's Eiffel Development Environment is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Eiffel Software's Eiffel Development Environment; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA ]" source: "[ Eiffel Software 5949 Hollister Ave., Goleta, CA 93117 USA Telephone 805-685-1006, Fax 805-685-6869 Website http://www.eiffel.com Customer support http://support.eiffel.com ]" end