indexing description: "Eiffel language compiler library. Help file: " legal: "See notice at end of class." status: "See notice at end of class." Note: "Automatically generated by the EiffelCOM Wizard." deferred class CEIFFEL_COMPILER_COCLASS inherit IEIFFEL_COMPILER_INTERFACE ECOM_STUB feature -- Access ieiffel_compiler_events_cookie_generator: ECOM_COOKIE_GENERATOR -- IEiffelCompilerEvents cookie generator. ieiffel_compiler_events_call_back_interface_table: HASH_TABLE [IEIFFEL_COMPILER_EVENTS_IMPL_PROXY, INTEGER] -- IEiffelCompilerEvents table. feature -- Status Report has_ieiffel_compiler_events_call_back (a_cookie: INTEGER): BOOLEAN is -- Has call-back? do if ieiffel_compiler_events_call_back_interface_table /= Void then Result := ieiffel_compiler_events_call_back_interface_table.has (a_cookie) end end feature -- Basic Operations add_ieiffel_compiler_events_call_back (a_call_back: IEIFFEL_COMPILER_EVENTS_IMPL_PROXY): INTEGER is -- Add IEiffelCompilerEvents call back. require non_void_call_back: a_call_back /= Void do if ieiffel_compiler_events_cookie_generator = Void then create ieiffel_compiler_events_cookie_generator end if ieiffel_compiler_events_call_back_interface_table = Void then create ieiffel_compiler_events_call_back_interface_table.make (10) end Result := ieiffel_compiler_events_cookie_generator.next_key check no_key: not ieiffel_compiler_events_call_back_interface_table.has (Result) end ieiffel_compiler_events_call_back_interface_table.force (a_call_back, Result) ensure non_void_table: ieiffel_compiler_events_call_back_interface_table /= Void added: ieiffel_compiler_events_call_back_interface_table.has (Result) end remove_ieiffel_compiler_events_call_back (a_cookie: INTEGER) is -- Remove IEiffelCompilerEvents call back. require non_void_cookie_generator: ieiffel_compiler_events_cookie_generator /= Void non_void_table: ieiffel_compiler_events_call_back_interface_table /= Void has: has_ieiffel_compiler_events_call_back (a_cookie) do ieiffel_compiler_events_cookie_generator.add_key_to_pool (a_cookie) ieiffel_compiler_events_call_back_interface_table.remove (a_cookie) ensure not_has: not has_ieiffel_compiler_events_call_back (a_cookie) added_to_pool: ieiffel_compiler_events_cookie_generator.available_key_pool.has (a_cookie) end event_begin_compile is -- Beginning compilation. local retried: BOOLEAN do -- set `stop_compilation' to false so compilation will succeeded stop_compilation := False if not retried then if ieiffel_compiler_events_call_back_interface_table /= Void then from ieiffel_compiler_events_call_back_interface_table.start until ieiffel_compiler_events_call_back_interface_table.after loop ieiffel_compiler_events_call_back_interface_table.item_for_iteration.begin_compile ieiffel_compiler_events_call_back_interface_table.forth end end end rescue stop_compilation := True retried := True retry end event_begin_degree (ul_degree: INTEGER) is -- Start of new degree phase in compilation. -- `ul_degree' [in]. local retried: BOOLEAN do if not retried then if ieiffel_compiler_events_call_back_interface_table /= Void and last_degree /= ul_degree then from ieiffel_compiler_events_call_back_interface_table.start until ieiffel_compiler_events_call_back_interface_table.after loop ieiffel_compiler_events_call_back_interface_table.item_for_iteration.begin_degree (ul_degree) ieiffel_compiler_events_call_back_interface_table.forth end last_degree := ul_degree end end rescue stop_compilation := True retried := True retry end event_end_compile (vb_sucessful: BOOLEAN) is -- Finished compilation. -- `vb_sucessful' [in]. local retried: BOOLEAN do if not retried then if ieiffel_compiler_events_call_back_interface_table /= Void then from ieiffel_compiler_events_call_back_interface_table.start until ieiffel_compiler_events_call_back_interface_table.after loop ieiffel_compiler_events_call_back_interface_table.item_for_iteration.end_compile (vb_sucessful) ieiffel_compiler_events_call_back_interface_table.forth end end last_degree := 0 end rescue stop_compilation := True retried := True retry end event_should_continue (pvb_continue: BOOLEAN_REF) is -- Should compilation continue. -- `pvb_continue' [in, out]. local retried: BOOLEAN do if not retried then if ieiffel_compiler_events_call_back_interface_table /= Void then from ieiffel_compiler_events_call_back_interface_table.start until ieiffel_compiler_events_call_back_interface_table.after or stop_compilation loop ieiffel_compiler_events_call_back_interface_table.item_for_iteration.should_continue (pvb_continue) if not stop_compilation then stop_compilation := not pvb_continue.item end ieiffel_compiler_events_call_back_interface_table.forth end end end pvb_continue.set_item (not stop_compilation) rescue stop_compilation := True retried := True retry end event_output_string (bstr_output: STRING) is -- Output string. -- `bstr_output' [in]. local retried: BOOLEAN do if not retried then if ieiffel_compiler_events_call_back_interface_table /= Void then from ieiffel_compiler_events_call_back_interface_table.start until ieiffel_compiler_events_call_back_interface_table.after loop ieiffel_compiler_events_call_back_interface_table.item_for_iteration.output_string (bstr_output) ieiffel_compiler_events_call_back_interface_table.forth end end end rescue stop_compilation := True retried := True retry end event_output_error (bstr_full_error: STRING; bstr_short_error: STRING; bstr_code: STRING; bstr_file_name: STRING; ul_line: INTEGER; ul_col: INTEGER) is -- Last error. -- `bstr_full_error' [in]. -- `bstr_short_error' [in]. -- `bstr_code' [in]. -- `bstr_file_name' [in]. -- `ul_line' [in]. -- `ul_col' [in]. local retried: BOOLEAN do if not retried then if ieiffel_compiler_events_call_back_interface_table /= Void then from ieiffel_compiler_events_call_back_interface_table.start until ieiffel_compiler_events_call_back_interface_table.after loop ieiffel_compiler_events_call_back_interface_table.item_for_iteration.output_error (bstr_full_error, bstr_short_error, bstr_code, bstr_file_name, ul_line, ul_col) ieiffel_compiler_events_call_back_interface_table.forth end end end rescue stop_compilation := True retried := True retry end event_output_warning (bstr_full_warning: STRING; bstr_short_warning: STRING; bstr_code: STRING; bstr_file_name: STRING; ul_line: INTEGER; ul_col: INTEGER) is -- Last warning. -- `bstr_full_warning' [in]. -- `bstr_short_warning' [in]. -- `bstr_code' [in]. -- `bstr_file_name' [in]. -- `ul_line' [in]. -- `ul_col' [in]. local retried: BOOLEAN do if not retried then if ieiffel_compiler_events_call_back_interface_table /= Void then from ieiffel_compiler_events_call_back_interface_table.start until ieiffel_compiler_events_call_back_interface_table.after loop ieiffel_compiler_events_call_back_interface_table.item_for_iteration.output_warning (bstr_full_warning, bstr_short_warning, bstr_code, bstr_file_name, ul_line, ul_col) ieiffel_compiler_events_call_back_interface_table.forth end end end rescue stop_compilation := True retried := True retry end stop_compilation: BOOLEAN -- should compilation be stopped? last_degree: INTEGER; -- last degree processed indexing copyright: "Copyright (c) 1984-2006, 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 356 Storke Road, Goleta, CA 93117 USA Telephone 805-685-1006, Fax 805-685-6869 Website http://www.eiffel.com Customer support http://support.eiffel.com ]" end -- CEIFFEL_COMPILER_COCLASS