From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 10968 invoked by alias); 22 Feb 2017 22:40:42 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 10958 invoked by uid 89); 22 Feb 2017 22:40:41 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.4 required=5.0 tests=BAYES_00,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE,RCVD_IN_SORBS_SPAM,SPF_PASS autolearn=no version=3.3.2 spammy=Hx-languages-length:6132 X-HELO: mail-wm0-f43.google.com Received: from mail-wm0-f43.google.com (HELO mail-wm0-f43.google.com) (74.125.82.43) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 22 Feb 2017 22:40:39 +0000 Received: by mail-wm0-f43.google.com with SMTP id v77so12307489wmv.1 for ; Wed, 22 Feb 2017 14:40:39 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=mnms2hHYG6MFhT+BJUx0Yh60QB+pmvasYuilJyLU7Ms=; b=rw82ZxIJvMRDnweTps63/C3TaHLCLDQrE48fGJImCzwXECUlCYfmUZjs2rmbbAgRLH 5jzWy6I+iMvqGP9ZJIHu0Afu7mh8mHLGo03iOL5osLDhWs5fu9aqqTxN7QfLHM/PgrL2 jyUiue+ipnIukxouSRUpMEyvZ4bQdMYHAVTMOeogDQzRzm9hClpXabjOqj7WW3ngNQa3 dAEoSnLOmDzv1XBZA7tXrQHgWtbnWSyIV+bUZv1BVH0O3Olocr2yvq3d25IKkQssxAET kJZyRTp3vZGwyCebt4zzSMNtammZCI+v0b+qU36hxqFL9Z8L5C42LFzMLAFTd2j7lgSy 1rTg== X-Gm-Message-State: AMke39lj2iEA306vxCWnb3KppTzBZlJOrObgH9TFjHIVrFU6m21NMg/cAybXb689LvVOAA== X-Received: by 10.28.178.16 with SMTP id b16mr674818wmf.83.1487803237854; Wed, 22 Feb 2017 14:40:37 -0800 (PST) Received: from localhost ([2a02:c7d:8e39:c00:907d:dd4f:8d3c:1550]) by smtp.gmail.com with ESMTPSA id w16sm4227131wmd.4.2017.02.22.14.40.36 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 22 Feb 2017 14:40:37 -0800 (PST) Date: Wed, 22 Feb 2017 22:40:00 -0000 From: Yao Qi To: Pedro Alves Cc: gdb-patches@sourceware.org Subject: Re: [PATCH 2/3] Use gdb::function_view in iterate_over_symtabs & co Message-ID: <20170222224034.wppglkelerc24fek@localhost> References: <1487775033-32699-1-git-send-email-palves@redhat.com> <1487775033-32699-3-git-send-email-palves@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1487775033-32699-3-git-send-email-palves@redhat.com> User-Agent: NeoMutt/20161104 (1.7.1) X-IsSubscribed: yes X-SW-Source: 2017-02/txt/msg00613.txt.bz2 On 17-02-22 14:50:32, Pedro Alves wrote: > I wanted to pass a lambda to iterate_over_symtabs (see following > patch), so I converted it to function_view, and then the rest is > cascaded from that. > > This gets rid of a bunch of single-use callback functions and > corresponding manually managed callback capture types > (add_partial_datum, search_symbols_data, etc.) in favor of letting the > compiler generate them for us by using lambdas with a capture. In a > couple cases, it was more natural to convert the existing function > callbacks to function objects (i.e., operator(), e.g., > decode_compound_collector). > > gdb/ChangeLog: > yyyy-mm-dd Pedro Alves > > * ada-lang.c: Include "common/function-view.h". > (ada_iterate_over_symbols): Adjust to use function_view as > callback type. > (struct add_partial_datum, ada_complete_symbol_matcher): Delete. > (ada_make_symbol_completion_list): Use a lambda. > (ada_exc_search_name_matches): Delete. > (name_matches_regex): New. > (ada_add_global_exceptions): Use a lambda and name_matches_regex. > * compile/compile-c-support.c: Include "common/function-view.h". > (print_one_macro): Change prototype to accept a ui_file pointer. > (write_macro_definitions): Use a lambda. > * dwarf2read.c: Include "common/function-view.h". > (dw2_map_expand_apply, dw2_map_symtabs_matching_filename) > (dw2_expand_symtabs_matching): Adjust to use function_view as > callback type. > * language.h: Include "common/function-view.h". > (struct language_defn) : Adjust to use > function_view as callback type. > (LA_ITERATE_OVER_SYMBOLS): Remove DATA parameter. > * linespec.c: Include "common/function-view.h". > (collect_info::add_symbol): New method. > (struct symbol_and_data_callback, iterate_inline_only, struct > symbol_matcher_data, iterate_name_matcher): Delete. > (iterate_over_all_matching_symtabs): Adjust to use function_view > as callback type and lambdas. > (iterate_over_file_blocks): Adjust to use function_view as > callback type. > (decode_compound_collector): Now a class with private fields. > (decode_compound_collector::release_symbols): New method. > (collect_one_symbol): Rename to... > (decode_compound_collector::operator()): ... this and adjust. > (lookup_prefix_sym): decode_compound_collector construction bits > move to decode_compound_collector ctor. Pass the > decode_compound_collector object directly as callback. Remove > cleanups and use decode_compound_collector::release_symbols > instead. > (symtab_collector): Now a class with private fields. > (symtab_collector::release_symtabs): New method. > (add_symtabs_to_list): Rename to... > (symtab_collector::operator()): ... this and adjust. > (collect_symtabs_from_filename): symtab_collector construction > bits move to symtab_collector ctor. Pass the symtab_collector > object directly as callback. Remove cleanups and use > symtab_collector::release_symtabs instead. > (collect_symbols): Delete. > (add_matching_symbols_to_info): Use lambdas. > * macrocmd.c (print_macro_callback): Delete. > (info_macro_command): Use a lambda. > (info_macros_command): Pass print_macro_definition as callable > directly. > (print_one_macro): Remove 'ignore' parameter. > (macro_list_command): Adjust. > * macrotab.c (macro_for_each_data::fn): Now a function_view. > (macro_for_each_data::user_data): Delete field. > (foreach_macro): Adjust to call the function_view. > (macro_for_each): Adjust to use function_view as callback type. > (foreach_macro_in_scope): Adjust to call the function_view. > (macro_for_each_in_scope): Adjust to use function_view as callback > type. > * macrotab.h: Include "common/function-view.h". > (macro_callback_fn): Declare a prototype instead of a pointer. > Remove "user_data" parameter. > (macro_for_each, macro_for_each_in_scope): Adjust to use > function_view as callback type. > * psymtab.c (partial_map_expand_apply) > (psym_map_symtabs_matching_filename, recursively_search_psymtabs): > Adjust to use function_view as callback type and to return bool. > (psym_expand_symtabs_matching): Adjust to use function_view as > callback types. > * symfile-debug.c (debug_qf_map_symtabs_matching_filename): Adjust > to use function_view as callback type and to return bool. > (debug_qf_expand_symtabs_matching): Adjust to use function_view as > callback types. > * symfile.c (expand_symtabs_matching): Adjust to use function_view > as callback types. > * symfile.h: Include "common/function-view.h". > (expand_symtabs_file_matcher_ftype) > (expand_symtabs_symbol_matcher_ftype) > (expand_symtabs_exp_notify_ftype): Remove "data" parameter and > return bool. > (quick_symbol_functions::map_symtabs_matching_filename) > (quick_symbol_functions::expand_symtabs_matching): Adjust to use > function_view as callback type and return bool. > (expand_symtabs_matching): Adjust to use function_view as callback > type. > (maintenance_expand_name_matcher) > (maintenance_expand_file_matcher): Delete. > (maintenance_expand_symtabs): Use lambdas. > * symtab.c (iterate_over_some_symtabs): Adjust to use > function_view as callback types and return bool. > (iterate_over_symtabs): Likewise. Use unique_xmalloc_ptr instead > of a cleanup. > (lookup_symtab_callback): Delete. > (lookup_symtab): Use a lambda. > (iterate_over_symbols): Adjust to use function_view as callback > type. > (struct search_symbols_data, search_symbols_file_matches) > (search_symbols_name_matches): Delete. > (search_symbols): Use a pair of lambdas. > (struct add_name_data, add_macro_name, symbol_completion_matcher) > (symtab_expansion_callback): Delete. > (default_make_symbol_completion_list_break_on_1): Use lambdas. > * symtab.h: Include "common/function-view.h". > (iterate_over_some_symtabs): Adjust to use function_view as > callback type and return bool. > (iterate_over_symtabs): Adjust to use function_view as callback > type. > (symbol_found_callback_ftype): Remove 'data' parameter and return > bool. > (iterate_over_symbols): Adjust to use function_view as callback > type. Patch is good to me. -- Yao