Lines Matching full:signature
312 /* A signature of a method in terms of kinds,
315 struct Signature { struct
320 Signature apply(const Substitution &match) const; argument
323 /* Return the parameters of this signature.
327 std::vector<std::string> Signature::params() const in params()
342 Signature Signature::apply(const Substitution &subs) const in apply()
401 static Substitution shared_param_renamer(const Signature &sig, const Kind &kind) in shared_param_renamer()
409 static Signature un_params = { { }, { { } } };
410 static Signature un_set = { { Domain }, { { Domain } } };
411 static Signature un_map = { { Domain, Range }, { { Domain, Range } } };
412 static std::vector<Signature> un_op = { un_params, un_set, un_map };
413 static std::vector<Signature> fn_un_op = { un_set, un_map };
419 static Signature bin_params = { { }, { { }, { } } };
420 static Signature bin_set = { { Domain }, { { Domain }, { Domain } } };
421 static Signature bin_map =
423 static std::vector<Signature> bin_op = { bin_params, bin_set, bin_map };
424 static std::vector<Signature> fn_bin_op = { bin_set, bin_map };
425 static Signature bin_set_params = { { Domain }, { { Domain }, { } } };
426 static Signature bin_map_params =
428 static Signature bin_map_domain =
430 static Signature bin_map_range =
432 static Signature bin_map_domain_wrapped_domain =
435 static Signature bin_map_range_wrapped_domain =
442 static Signature bin_params_anon = { { }, { { }, { Anonymous } } };
443 static Signature bin_set_anon = { { Domain }, { { Domain }, { Anonymous } } };
444 static Signature bin_map_anon =
446 static std::vector<Signature> bin_op_anon =
451 static Signature ter_params_int_int =
453 static Signature ter_set_int_int =
455 static Signature ter_map_int_int =
457 static std::vector<Signature> ter_int_int =
463 static Signature ter_set =
465 static Signature ter_map =
468 static std::vector<Signature> fn_ter_op = { ter_set, ter_map };
473 static Signature update_set = { { Domain2 }, { { Leaf }, { Anonymous } } };
474 static Signature update_domain =
476 static Signature update_range =
482 static std::vector<Signature> min_max = { un_set, bin_set, un_map, bin_map };
486 static Signature to_set = { { Domain }, { { }, { Integer } } };
487 static Signature add_range = { { Domain, Range }, { { Domain }, { Integer } } };
490 static Signature to_set_named =
492 static Signature add_range_named =
498 static Signature set_forward = { { Range }, { { Domain }, { Domain, Range } } };
499 static Signature domain_forward =
501 static Signature range_forward =
507 static Signature set_backward =
509 static Signature domain_backward =
511 static Signature range_backward =
513 static Signature domain_wrapped_domain_backward =
520 static Signature bind_set = { { }, { { Domain }, { Domain } } };
521 static Signature bind_domain = { { Range }, { { Domain, Range }, { Domain } } };
522 static Signature bind_range = { { Domain }, { { Domain, Range }, { Range } } };
523 static Signature bind_domain_wrapped_domain =
532 static Signature each_params = { { Res }, { { }, { Res }, { } } };
533 static Signature each_set = { { Res }, { { Domain }, { Res }, { Domain } } };
534 static Signature each_map =
536 static std::vector<Signature> each = { each_params, each_set, each_map };
543 static Signature each_scc_params =
545 static Signature each_scc_set =
549 static Signature each_scc_map =
553 static std::vector<Signature> each_scc =
556 /* Signature for creating a map from a range,
559 static Signature map_from_range_and_domain =
562 /* Signature for creating a map from a domain,
565 static Signature map_from_domain_and_range =
571 static Signature anonymous_set_from_params = { { Anonymous }, { { } } };
572 static Signature anonymous_map_from_domain =
574 static std::vector<Signature> anonymous_from_domain =
577 /* Signature for creating a set from a parameter set,
580 static Signature set_from_params = { { Domain }, { { }, { Domain } } };
585 static Signature anonymous_set_from_params_bin_anon =
587 static Signature anonymous_map_from_domain_bin_anon =
589 static std::vector<Signature> anonymous_from_domain_bin_anon = {
594 /* Signature for creating a map from a domain,
597 static Signature set_to_map = { { Domain, Domain }, { { Domain } } };
602 static Signature domain = { { Domain }, { { Domain, Range } } };
603 static Signature range = { { Range }, { { Domain, Range } } };
604 static Signature transformation_domain = { { Domain }, { { Domain, Domain } } };
608 static Signature set_params = { { }, { { Domain } } };
609 static Signature map_params = { { }, { { Domain, Range } } };
613 static std::vector<Signature> fn_domain = { domain, set_params };
617 static Signature map_reverse = { { Range, Domain }, { { Domain, Range } } };
618 static Signature map_range_reverse =
623 static Signature set_product =
625 static Signature map_product =
628 static Signature domain_product =
631 static Signature range_product =
637 static Signature domain_factor_domain =
639 static Signature domain_factor_range =
641 static Signature range_factor_domain =
643 static Signature range_factor_range =
648 static Signature curry =
651 static Signature uncurry =
657 static Signature wrap = { { { Domain, Range } }, { { Domain, Range } } };
658 static Signature unwrap = { { Domain, Range }, { { { Domain, Range } } } };
663 static Signature domain_map =
665 static Signature range_map =
668 /* Signature for applying a comparison between the domain and the range
671 static Signature map_cmp =
674 /* Signature for creating a set corresponding to the domains
677 static Signature set_join =
683 static Signature anonymize_nested_domain =
685 static Signature anonymize_nested_range =
687 static Signature replace_nested_domain =
690 static Signature replace_nested_range =
692 static std::vector<Signature> flatten_domain =
694 static std::vector<Signature> flatten_range =
699 static Signature set_at_set =
701 static Signature set_at_map =
704 static std::vector<Signature> set_at = { set_at_set, set_at_map };
709 static Signature to_list_set = { { Anonymous }, { { Domain } } };
710 static Signature to_list_map = { { Domain, Anonymous }, { { Domain, Range } } };
714 static Signature ctx_params = { { }, { { Ctx } } };
715 static Signature ctx_set = { { Domain }, { { Ctx } } };
716 static Signature ctx_map = { { Domain, Range }, { { Ctx } } };
735 typedef std::map<std::string, std::vector<Signature>, larger_infix> infix_map;
774 static std::vector<Signature> range_op = { un_set, range };
779 static std::vector<Signature> bin_val = { bin_set, bin_map_range };
784 static const std::unordered_map<std::string, std::vector<Signature>>
1318 void print_method_template_arguments(const Signature &sig);
1319 void print_method_header(const Method &method, const Signature &sig);
1326 bool print_matching_method(const Method &method, const Signature &sig,
1328 bool print_matching_method(const Method &method, const Signature &sig);
1330 const std::vector<Signature> &signatures);
1341 const Signature &sig, bool deleted) = 0;
1433 /* A template type printer for printing a method with a given signature.
1435 * "sig" is the signature of the method being printed.
1438 template_cpp_arg_type_printer(const Signature &sig) : in template_cpp_arg_type_printer()
1443 const Signature &sig;
1449 * Look up the kind in the signature.
1462 /* A template type printer for printing a method with a given signature
1468 template_method_type_printer(const Signature &sig, in template_method_type_printer()
1510 /* If a method with signature "sig" requires additional template parameters
1521 const Signature &sig) in print_method_template_arguments()
1539 /* Print the header for "method" with signature "sig".
1545 const Method &method, const Signature &sig) in print_method_header()
1587 const Signature &sig, bool deleted) override;
1591 /* Print a declaration of the method "method" with signature "sig".
1595 const Method &method, const Signature &sig, bool deleted) in print_method_sig()
1603 /* Return the total number of arguments in the signature for "method",
1628 /* Return a signature for "method" that matches "instance".
1630 static Signature instance_sig(const Method &method, in instance_sig()
1663 const Signature &sig);
1664 void print_method_body(const Method &method, const Signature &sig);
1665 void print_constructor_body(const Method &method, const Signature &sig);
1667 const Signature &sig, bool deleted) override;
1671 /* Print a definition of the constructor "method" with signature "sig".
1677 const Method &method, const Signature &sig) in print_constructor_body()
1717 * with signature "sig" and argument positions shifted by "shift".
1723 const Signature &sig, int shift) in print_callback_lambda()
1748 * with signature "sig".
1752 * with respect to the arguments of the signature
1760 const Signature &sig) in print_callback_lambdas()
1775 * to have a callback argument, with signature "sig".
1786 const Method &method, const Signature &sig) in print_callback_method_body()
1813 * with signature "sig".
1820 const Method &method, const Signature &sig) in print_method_body()
1838 /* Print a definition of the method "method" with signature "sig",
1850 const Method &method, const Signature &sig, bool deleted) in print_method_sig()
1879 * if it has a signature specified by static_methods.
1890 static Signature from_list_set = { { Domain }, { { Domain }, { Anonymous } } };
1891 static Signature from_list_map =
1896 static Signature params_from_str = { { }, { { Ctx }, { Str } } };
1897 static Signature set_from_str = { { Domain }, { { Ctx }, { Str } } };
1898 static Signature map_from_str = { { Domain, Range }, { { Ctx }, { Str } } };
1899 static std::vector<Signature> from_str =
1902 /* Signature for a constructor from an integer.
1904 static Signature int_from_si = { { Anonymous }, { { Ctx }, { Integer } } };
1909 static Signature alloc_params = { { }, { { Ctx }, { Integer } } };
1910 static Signature alloc_set = { { Domain }, { { Ctx }, { Integer } } };
1911 static Signature alloc_map = { { Domain, Range }, { { Ctx }, { Integer } } };
1927 static std::vector<Signature> constructor_sig = {
1938 static const std::unordered_map<std::string, std::vector<Signature>>
2115 /* Return that part of the signature "sig" that should match
2122 static const Kind &matching_kind(const Method &method, const Signature &sig) in matching_kind()
2382 * return the update signature,
2388 * to the entire signature.
2390 static Signature specialize_anonymous_arg(const Signature &sig, in specialize_anonymous_arg()
2404 * in the signature "sig" is not Anonymous, then replace
2405 * that entry by Anonymous and return the updated signature,
2408 static Signature specialize_anonymous_args(const Signature &sig, in specialize_anonymous_args()
2430 * "sig" is the complete signature, of which "match_arg" refers
2438 * then apply the specializer to the complete (renamed) signature,
2441 * print the declaration or definition using the specialized signature.
2448 const Method &method, const Signature &sig, const Kind &match_arg) in print_matching_method()
2475 /* Is the first signature argument set to { Ctx }?
2477 static bool first_kind_is_ctx(const Signature &sig) in first_kind_is_ctx()
2483 * if it matches the signature "sig".
2486 * First determine the part of the signature that needs to match
2489 * Also check that the number of arguments of the signature
2492 * is an isl_ctx if and only if the first signature argument is Ctx.
2497 const Method &method, const Signature &sig) in print_matching_method()
2513 * for each matching signature in "signatures".
2515 * If there is no matching signature in "signatures",
2516 * then explicitly delete the method (using a signature based on
2520 const Method &method, const std::vector<Signature> &signatures) in print_matching_method()
2535 static Signature select_set = { { Anonymous }, { { Domain }, { Integer } } };
2536 static Signature select_map =
2538 static std::vector<Signature> at_select = { select_set, select_map };
2543 static Signature bin_set_int = { { Domain }, { { Domain }, { Integer } } };
2544 static Signature bin_map_int =
2546 static std::vector<Signature> at_keep = { bin_set_int, bin_map_int };
2580 * if it has a special signature in "special_methods".
2605 * if it has a special signature specified by special_member_methods.
2629 * using a signature associated to method name "name", if there is any.
2697 * Otherwise, check if the signature is overridden for this class or
2699 * Otherwise look for an appropriate signature using different variations