Source code for testing.projects.cpp_func_overloads

"""
The ``cpp_func_overloads`` test project.
"""

from testing.hierarchies import clike, directory, file, function, namespace, parameters


[docs]def default_class_hierarchy_dict(): """Return the default class hierarchy dictionary.""" return { namespace("overload"): { clike("class", "CustomType"): {}, } }
[docs]def default_file_hierarchy_dict(): """Return the default file hierarchy dictionary.""" return { directory("include"): { directory("overload"): { file("overload.hpp"): { function("int", "blargh"): parameters("int"), namespace("overload"): { # No args function("void", "blargh"): parameters(), # "pure" int overloads function("int", "blargh"): parameters("int"), function("int", "blargh"): parameters("int", "int"), function("int", "blargh"): parameters("int", "int", "int"), function("int", "blargh"): parameters("int", "int", "int", "int"), # "pure" float overloads function("float", "blargh"): parameters("float"), function("float", "blargh"): parameters("float", "float"), function("float", "blargh"): parameters("float", "float", "float"), function("float", "blargh"): parameters("float", "float", "float", "float"), # "pure" std::string overloads function("std::string", "blargh"): parameters("const std::string&"), function("std::string", "blargh"): parameters( "const std::string&", "const std::string&" ), function("std::string", "blargh"): parameters( "const std::string&", "const std::string&", "const std::string&" ), function("std::string", "blargh"): parameters( "const std::string&", "const std::string&", "const std::string&", "const std::string&" ), # absurd mixtures function("std::size_t", "blargh"): parameters("std::size_t", "const std::string&"), function("std::size_t", "blargh"): parameters( "std::size_t", "const float&", "double", "const std::string&" ), # vector overloads function("void", "blargh"): parameters("std::vector<std::string>&"), function("void", "blargh"): parameters("std::vector<std::vector<int>>&"), # pointer style (spaces matter...) function("void", "blargh"): parameters( "const float *", "const float *", "float *", "std::size_t" ), # templates function("C::type", "blargh", template=["class C"]): parameters("typename C::type"), # NOTE: vvv not really a thing, but its for template specialization. # AKA broken function("int", "blargh", template=["overload::SuperStruct"]): parameters("int"), function( "int", "blargh", template=["overload::nested::SuperStruct"]): parameters("int"), # SFINAE is really pretty yeah? function( "std::enable_if<std::is_convertible<typename C::type, T>::value, T>::type", "blargh", template=["class C", "typename T"] ): parameters("typename C::type"), function( "std::enable_if<!std::is_convertible<typename C::type, T>::value, T>::type", "blargh", template=["class C", "typename T"] ): parameters("typename C::type") } }, file("operators.hpp"): { namespace("overload"): { clike("class", "CustomType"): {}, function( "Out&", "operator<<", template=["typename Out", "typename T"] ): parameters("Out&", "const T&"), function( "std::ostream&", "operator<<", template=["std::ostream", "CustomType"] ): parameters("std::ostream&", "const CustomType&"), function("bool", "operator=="): parameters( "const CustomType&", "const CustomType&"), function("bool", "operator!="): parameters( "const CustomType&", "const CustomType&"), function("bool", "operator<"): parameters( "const CustomType&", "const CustomType&"), function("bool", "operator>"): parameters( "const CustomType&", "const CustomType&"), function("bool", "operator<="): parameters( "const CustomType&", "const CustomType&"), function("bool", "operator>="): parameters( "const CustomType&", "const CustomType&") } } } } }