diff --git a/include/mrdocs/Corpus.hpp b/include/mrdocs/Corpus.hpp index d50ee6e35..c74537137 100644 --- a/include/mrdocs/Corpus.hpp +++ b/include/mrdocs/Corpus.hpp @@ -221,7 +221,7 @@ class MRDOCS_VISIBLE { if (!opts.skipInherited) { - auto MS = allMembers(I); + auto&& MS = allMembers(I); visitIDs(MS, std::forward(f), std::forward(args)...); @@ -257,7 +257,7 @@ class MRDOCS_VISIBLE } else /* ordered */ { - auto members0 = allMembers(I); + auto&& members0 = allMembers(I); static_assert(range_of); std::vector members; members.reserve(std::ranges::distance(members0)); diff --git a/include/mrdocs/Metadata/Info/Overloads.hpp b/include/mrdocs/Metadata/Info/Overloads.hpp index d88e3f79b..172e06972 100644 --- a/include/mrdocs/Metadata/Info/Overloads.hpp +++ b/include/mrdocs/Metadata/Info/Overloads.hpp @@ -34,6 +34,8 @@ struct OverloadsInfo final /// Info about the return type of this function. Polymorphic ReturnType = std::nullopt; + StorageClassKind StorageClass = StorageClassKind::None; + //-------------------------------------------- explicit OverloadsInfo(SymbolID const& ID) noexcept diff --git a/include/mrdocs/Metadata/Info/Record.hpp b/include/mrdocs/Metadata/Info/Record.hpp index db83088d9..972e5ab7e 100644 --- a/include/mrdocs/Metadata/Info/Record.hpp +++ b/include/mrdocs/Metadata/Info/Record.hpp @@ -200,7 +200,6 @@ tag_invoke( v = dom::LazyObject(I, domCorpus); } - inline auto allMembers(RecordInterface const& T) @@ -275,6 +274,13 @@ tag_invoke( v = toString(kind); } +struct MemberInfo +{ + AccessKind EffectiveAccess; + InfoKind Kind; + SymbolID id; +}; + /** Metadata for struct, class, or union. */ struct RecordInfo final @@ -301,11 +307,15 @@ struct RecordInfo final */ std::vector Bases; - /** List of derived classes + /** List of derived classes. */ std::vector Derived; - /** Lists of members. + /** List of members. + */ + std::vector Members; + + /** Record Interface (NOT part of the Corpus.) */ RecordInterface Interface; @@ -345,6 +355,7 @@ inline auto allMembers(RecordInfo const& T) { + //return std::views::transform(T.Members, &MemberInfo::id); return allMembers(T.Interface); } @@ -374,6 +385,7 @@ tag_invoke( io.map("isTypedef", I.IsTypeDef); io.map("bases", dom::LazyArray(I.Bases, domCorpus)); io.map("derived", dom::LazyArray(I.Derived, domCorpus)); + //io.map("members", dom::LazyArray(I.Members, domCorpus)); io.map("interface", I.Interface); io.map("template", I.Template); io.map("friends", dom::LazyArray(I.Friends, domCorpus)); diff --git a/src/lib/AST/ASTVisitor.cpp b/src/lib/AST/ASTVisitor.cpp index a33826061..d285934fd 100644 --- a/src/lib/AST/ASTVisitor.cpp +++ b/src/lib/AST/ASTVisitor.cpp @@ -1770,19 +1770,9 @@ addMember( RecordInfo& I, Info const& Member) { - switch (Member.Access) + if (!std::ranges::contains(I.Members, Member.id, &MemberInfo::id)) { - case AccessKind::Public: - addMember(I.Interface.Public, Member); - break; - case AccessKind::Private: - addMember(I.Interface.Private, Member); - break; - case AccessKind::Protected: - addMember(I.Interface.Protected, Member); - break; - default: - MRDOCS_UNREACHABLE(); + I.Members.emplace_back(Member.Access, Member.Kind, Member.id); } } diff --git a/src/lib/CorpusImpl.cpp b/src/lib/CorpusImpl.cpp index 258c4c8e6..29f68da15 100644 --- a/src/lib/CorpusImpl.cpp +++ b/src/lib/CorpusImpl.cpp @@ -20,6 +20,7 @@ #include "lib/Metadata/Finalizers/JavadocFinalizer.hpp" #include "lib/Metadata/Finalizers/NamespacesFinalizer.hpp" #include "lib/Metadata/Finalizers/OverloadsFinalizer.hpp" +#include "lib/Metadata/Finalizers/RecordsFinalizer.hpp" #include "lib/Metadata/Finalizers/SortMembersFinalizer.hpp" #include "lib/Support/Chrono.hpp" #include "lib/Support/Report.hpp" @@ -1025,6 +1026,13 @@ CorpusImpl::finalize() finalizer.build(); } + // Finalizing record interfaces + { + report::debug(" - Finalizing records"); + RecordsFinalizer finalizer(*this); + finalizer.build(); + } + // Add auto relates for member functions { report::debug(" - Finalizing auto-relates"); diff --git a/src/lib/Metadata/Finalizers/BaseMembersFinalizer.cpp b/src/lib/Metadata/Finalizers/BaseMembersFinalizer.cpp index 40b944618..06c70d94a 100644 --- a/src/lib/Metadata/Finalizers/BaseMembersFinalizer.cpp +++ b/src/lib/Metadata/Finalizers/BaseMembersFinalizer.cpp @@ -15,20 +15,19 @@ namespace clang::mrdocs { -void -BaseMembersFinalizer:: -inheritBaseMembers(RecordInfo& I, RecordInfo const& B, AccessKind const A) +namespace { +bool +shouldCopy(Config const& config, Info const& M) { - inheritBaseMembers(I.id, I.Interface, B.Interface, A); + if (config->inheritBaseMembers == PublicSettings::BaseMemberInheritance::CopyDependencies) + { + return M.Extraction == ExtractionMode::Dependency; + } + return config->inheritBaseMembers == PublicSettings::BaseMemberInheritance::CopyAll; } -void -BaseMembersFinalizer:: -inheritBaseMembers( - SymbolID const& derivedId, - RecordInterface& derived, - RecordInterface const& base, - AccessKind const A) +AccessKind +effectiveAccess(AccessKind const declaredAccess, AccessKind const A) { if (A == AccessKind::Public) { @@ -37,8 +36,7 @@ inheritBaseMembers( // members of the derived class and all protected members of the base // class are accessible as protected members of the derived class. // Private members of the base are never accessible unless friended. - inheritBaseMembers(derivedId, derived.Public, base.Public); - inheritBaseMembers(derivedId, derived.Protected, base.Protected); + return declaredAccess; } else if (A == AccessKind::Protected) { @@ -46,62 +44,35 @@ inheritBaseMembers( // base, all public and protected members of the base class are // accessible as protected members of the derived class (private members // of the base are never accessible unless friended). - inheritBaseMembers(derivedId, derived.Protected, base.Public); - inheritBaseMembers(derivedId, derived.Protected, base.Protected); + return AccessKind::Protected; } - else if (A == AccessKind::Private && corpus_.config->extractPrivate) + else if (A == AccessKind::Private) { // When a class uses private member access specifier to derive from a // base, all public and protected members of the base class are // accessible as private members of the derived class (private members // of the base are never accessible unless friended). - inheritBaseMembers(derivedId, derived.Private, base.Public); - inheritBaseMembers(derivedId, derived.Private, base.Protected); + return AccessKind::Private; } -} -void -BaseMembersFinalizer:: -inheritBaseMembers( - SymbolID const& derivedId, - RecordTranche& derived, - RecordTranche const& base) -{ - inheritBaseMembers(derivedId, derived.NamespaceAliases, base.NamespaceAliases); - inheritBaseMembers(derivedId, derived.Typedefs, base.Typedefs); - inheritBaseMembers(derivedId, derived.Records, base.Records); - inheritBaseMembers(derivedId, derived.Enums, base.Enums); - inheritBaseMembers(derivedId, derived.Functions, base.Functions); - inheritBaseMembers(derivedId, derived.StaticFunctions, base.StaticFunctions); - inheritBaseMembers(derivedId, derived.Variables, base.Variables); - inheritBaseMembers(derivedId, derived.StaticVariables, base.StaticVariables); - inheritBaseMembers(derivedId, derived.Concepts, base.Concepts); - inheritBaseMembers(derivedId, derived.Guides, base.Guides); -} - -namespace { -bool -shouldCopy(Config const& config, Info const& M) -{ - if (config->inheritBaseMembers == PublicSettings::BaseMemberInheritance::CopyDependencies) - { - return M.Extraction == ExtractionMode::Dependency; - } - return config->inheritBaseMembers == PublicSettings::BaseMemberInheritance::CopyAll; + return AccessKind::None; } } -void +void BaseMembersFinalizer:: -inheritBaseMembers( - SymbolID const& derivedId, - std::vector& derived, - std::vector const& base) +inheritBaseMembers(RecordInfo& I, RecordInfo const& B, AccessKind const A) { - for (SymbolID const& otherID: base) + SymbolID const& derivedId = I.id; + std::vector& derived = I.Members; + std::vector const& base = B.Members; + + for (auto const& other: base) { + SymbolID const& otherID = other.id; + // Find the info from the base class - MRDOCS_CHECK_OR_CONTINUE(!contains(derived, otherID)); + MRDOCS_CHECK_OR_CONTINUE(!std::ranges::contains(derived, otherID, &MemberInfo::id)); Info* otherInfoPtr = corpus_.find(otherID); MRDOCS_CHECK_OR_CONTINUE(otherInfoPtr); Info& otherInfo = *otherInfoPtr; @@ -134,7 +105,7 @@ inheritBaseMembers( // For other kinds of members, it's a shadow if the names // are the same return info.Name == otherInfo.Name; - }); + }, &MemberInfo::id); MRDOCS_CHECK_OR_CONTINUE(shadowIt == derived.end()); // Not a shadow, so inherit the base member @@ -148,7 +119,7 @@ inheritBaseMembers( // extraction mode to be regular, but that is controversial. if (otherInfo.Extraction != ExtractionMode::Dependency) { - derived.push_back(otherID); + derived.emplace_back(effectiveAccess(other.EffectiveAccess, A), other.Kind, otherID); } } else @@ -163,7 +134,7 @@ inheritBaseMembers( otherCopy->id = SymbolID::createFromString( std::format("{}-{}", toBase16Str(otherCopy->Parent), toBase16Str(otherInfo.id))); - derived.push_back(otherCopy->id); + derived.emplace_back(effectiveAccess(other.EffectiveAccess, A), other.Kind, otherCopy->id); // Get the extraction mode from the derived class if (otherCopy->Extraction == ExtractionMode::Dependency) { @@ -250,10 +221,22 @@ operator()(RecordInfo& I) operator()(*baseRecord); inheritBaseMembers(I, *baseRecord, baseI.Access); } - finalizeRecords(I.Interface.Public.Records); - finalizeRecords(I.Interface.Protected.Records); - finalizeRecords(I.Interface.Private.Records); finalized_.emplace(I.id); + + auto RecordMembers = + I.Members | + std::views::filter([this](MemberInfo const& member) { + return member.Kind == InfoKind::Record; + }) | + std::ranges::views::transform(&MemberInfo::id); + for (SymbolID const& memberId: RecordMembers) + { + Info* infoPtr = corpus_.find(memberId); + MRDOCS_CHECK_OR_CONTINUE(infoPtr); + auto* record = infoPtr->asRecordPtr(); + MRDOCS_CHECK_OR_CONTINUE(record); + operator()(*record); + } } } // clang::mrdocs diff --git a/src/lib/Metadata/Finalizers/BaseMembersFinalizer.hpp b/src/lib/Metadata/Finalizers/BaseMembersFinalizer.hpp index 1b6659352..97670bc3a 100644 --- a/src/lib/Metadata/Finalizers/BaseMembersFinalizer.hpp +++ b/src/lib/Metadata/Finalizers/BaseMembersFinalizer.hpp @@ -32,25 +32,6 @@ class BaseMembersFinalizer void inheritBaseMembers(RecordInfo& I, RecordInfo const& B, AccessKind A); - void - inheritBaseMembers( - SymbolID const& derivedId, - RecordInterface& derived, - RecordInterface const& base, - AccessKind A); - - void - inheritBaseMembers( - SymbolID const& derivedId, - RecordTranche& derived, - RecordTranche const& base); - - void - inheritBaseMembers( - SymbolID const& derivedId, - std::vector& derived, - std::vector const& base); - void finalizeRecords(std::vector const& ids); diff --git a/src/lib/Metadata/Finalizers/NamespacesFinalizer.cpp b/src/lib/Metadata/Finalizers/NamespacesFinalizer.cpp index 424f4cebf..99ceba970 100644 --- a/src/lib/Metadata/Finalizers/NamespacesFinalizer.cpp +++ b/src/lib/Metadata/Finalizers/NamespacesFinalizer.cpp @@ -49,7 +49,7 @@ operator()(NamespaceInfo& I) MRDOCS_CHECK_OR(!I.javadoc, FinalizerResult::None); // 3) Remove empty undocumented namespaces - auto memberIds = allMembers(I); + auto&& memberIds = allMembers(I); if (std::ranges::empty(memberIds)) { if (!corpus_.config->extractEmptyNamespaces) diff --git a/src/lib/Metadata/Finalizers/OverloadsFinalizer.cpp b/src/lib/Metadata/Finalizers/OverloadsFinalizer.cpp index eca1d1096..bda22cb28 100644 --- a/src/lib/Metadata/Finalizers/OverloadsFinalizer.cpp +++ b/src/lib/Metadata/Finalizers/OverloadsFinalizer.cpp @@ -32,38 +32,24 @@ findBaseClassPermutation( auto const baseRecord = baseInfo->asRecordPtr(); MRDOCS_CHECK_OR_CONTINUE(baseRecord); - // Iterate over all function tranches - RecordTranche* tranchesPtrs[] = { - &baseRecord->Interface.Public, - &baseRecord->Interface.Protected, - &baseRecord->Interface.Private, - }; - for (RecordTranche* tranchePtr: tranchesPtrs) + // Find an overload set that's a permutation of the same + // name functions + for (auto const& baseMember: baseRecord->Members) { - std::vector* trancheFunctionPtrs[] = { - &tranchePtr->Functions, - &tranchePtr->StaticFunctions - }; - for (std::vector* trancheFunctionsPtr: - trancheFunctionPtrs) - { - // Find an overload set that's a permutation of the same - // name functions - for (SymbolID const& baseID: *trancheFunctionsPtr) - { - Info* baseFuncMember = corpus.find(baseID); - MRDOCS_CHECK_OR_CONTINUE(baseFuncMember); - MRDOCS_CHECK_OR_CONTINUE(baseFuncMember->isOverloads()); - auto* overloads = baseFuncMember->asOverloadsPtr(); - MRDOCS_CHECK_OR_CONTINUE(overloads); - // Does this overload set have the same functions - MRDOCS_CHECK_OR_CONTINUE( - std::ranges::is_permutation( - overloads->Members, - sameNameFunctionIds)); - return overloads->id; - } - } + MRDOCS_CHECK_OR_CONTINUE(baseMember.Kind == InfoKind::Function); + + SymbolID const& baseID = baseMember.id; + Info* baseFuncMember = corpus.find(baseID); + MRDOCS_CHECK_OR_CONTINUE(baseFuncMember); + MRDOCS_CHECK_OR_CONTINUE(baseFuncMember->isOverloads()); + auto* overloads = baseFuncMember->asOverloadsPtr(); + MRDOCS_CHECK_OR_CONTINUE(overloads); + // Does this overload set have the same functions + MRDOCS_CHECK_OR_CONTINUE( + std::ranges::is_permutation( + overloads->Members, + sameNameFunctionIds)); + return overloads->id; } } return SymbolID::invalid; @@ -115,7 +101,7 @@ findIntroducedNamespacePermutation( void OverloadsFinalizer:: -foldOverloads(SymbolID const& contextId, std::vector& functionIds, bool isStatic) +foldOverloads(SymbolID const& contextId, std::vector& functionIds, AccessKind access, bool isStatic) { Info* contextInfo = corpus_.find(contextId); MRDOCS_CHECK_OR(contextInfo); @@ -232,11 +218,144 @@ foldOverloads(SymbolID const& contextId, std::vector& functionIds, boo } } +// FIXME: dedup with above +void +OverloadsFinalizer:: +foldOverloads(SymbolID const& contextId, std::vector& members) +{ + Info* contextInfo = corpus_.find(contextId); + MRDOCS_CHECK_OR(contextInfo); + + for (auto memberIt = members.begin(); + memberIt != members.end(); + ++memberIt) + { + MRDOCS_CHECK_OR_CONTINUE(memberIt->Kind == InfoKind::Function); + + // Get the FunctionInfo for the current id + auto infoPtr = corpus_.find(memberIt->id); + MRDOCS_CHECK_OR_CONTINUE(infoPtr); + auto* function = infoPtr->asFunctionPtr(); + MRDOCS_CHECK_OR_CONTINUE(function); + + AccessKind const access = function->Access; + bool const isStatic = (function->StorageClass == StorageClassKind::Static); + + // Check if the FunctionInfo is unique + std::ranges::subrange otherMembers( + std::next(memberIt), + members.end()); + auto isSameNameFunction = [&](MemberInfo const& other) { + MRDOCS_CHECK_OR(other.EffectiveAccess == access, false); + MRDOCS_CHECK_OR(other.Kind == InfoKind::Function, false); + SymbolID const& otherID = other.id; + auto const otherFunctionPtr = corpus_.find(otherID); + MRDOCS_CHECK_OR(otherFunctionPtr, false); + FunctionInfo const& otherInfo = otherFunctionPtr->asFunction(); + return function->Name == otherInfo.Name && (isStatic == (otherInfo.StorageClass == StorageClassKind::Static)) ; + }; + auto sameNameIt = std::ranges:: + find_if(otherMembers, isSameNameFunction); + bool const isUniqueFunction = sameNameIt == otherMembers.end(); + MRDOCS_CHECK_OR_CONTINUE(!isUniqueFunction); + + // Create a list of FunctionInfo overloads + auto sameNameMembersView = + std::ranges::subrange(memberIt, members.end()) | + std::views::filter(isSameNameFunction) | + std::views::transform(&MemberInfo::id); + SmallVector sameNameMembers( + sameNameMembersView.begin(), + sameNameMembersView.end()); + + // Check if any of the base classes has an overload set + // with the exact same function ids. If that's the case, + // the function will create a reference. + if (contextInfo->isRecord()) + { + SymbolID equivalentOverloadsID = findBaseClassPermutation( + contextId, + corpus_, + sameNameMembers); + if (equivalentOverloadsID) + { + MRDOCS_ASSERT(corpus_.find(equivalentOverloadsID)); + // This base overload set becomes the + // representation in the record + memberIt->id = equivalentOverloadsID; + auto const offset = memberIt - members.begin(); + // Erase the other function ids with + // the same name + for (SymbolID sameNameId: sameNameMembers) + { + std::erase_if(members, [&](MemberInfo const& member) { return member.id == sameNameId; }); + } + memberIt = members.begin() + offset; + continue; + } + } + + // Check if the namespace of the name introduced in the + // using declaration has an overload set with the + // exact same function ids. If that's the case, + // the function will create a reference. + if (contextInfo->isUsing()) + { + SymbolID introducedOverloadsID = findIntroducedNamespacePermutation( + contextId, + corpus_, + sameNameMembers); + if (introducedOverloadsID) + { + MRDOCS_ASSERT(corpus_.find(introducedOverloadsID)); + // This base overload set becomes the + // representation in the record + memberIt->id = introducedOverloadsID; + auto const offset = memberIt - members.begin(); + // Erase the other function ids with + // the same name + for (SymbolID sameNameId: sameNameMembers) + { + std::erase_if(members, [&](MemberInfo const& member) { return member.id == sameNameId; }); + } + memberIt = members.begin() + offset; + continue; + } + } + + // FunctionInfo is not unique and there's no equivalent + // overload set in base classes, so we merge it with the + // other FunctionInfos into a new OverloadsInfo + OverloadsInfo O(contextId, function->Name, access, isStatic); + addMember(O, *function); + memberIt->id = O.id; + auto const itOffset = memberIt - members.begin(); + for (auto otherIt = memberIt + 1; otherIt != members.end(); ++otherIt) + { + MRDOCS_CHECK_OR_CONTINUE(otherIt->EffectiveAccess == access); + MRDOCS_CHECK_OR_CONTINUE(otherIt->Kind == InfoKind::Function); + + Info* otherInfoPtr = corpus_.find(otherIt->id); + MRDOCS_CHECK_OR_CONTINUE(otherInfoPtr); + auto* otherFunction = otherInfoPtr->asFunctionPtr(); + MRDOCS_CHECK_OR_CONTINUE(otherFunction); + MRDOCS_CHECK_OR_CONTINUE(isStatic == (otherFunction->StorageClass == StorageClassKind::Static)); + if (function->Name == otherFunction->Name) + { + addMember(O, *otherFunction); + otherIt = std::prev(members.erase(otherIt)); + } + } + memberIt = members.begin() + itOffset; + MRDOCS_ASSERT(corpus_.info_.emplace(std::make_unique(std::move(O))).second); + } +} + namespace { -template +template R> constexpr auto -toDerivedView(std::vector const& ids, CorpusImpl& c) +toDerivedView(R&& ids, CorpusImpl& c) { return ids | std::views::transform([&c](SymbolID const& id) { @@ -264,7 +383,7 @@ operator()(NamespaceInfo& I) MRDOCS_CHECK_OR(!finalized_.contains(I.id)); finalized_.emplace(I.id); - foldOverloads(I.id, I.Members.Functions, true); + foldOverloads(I.id, I.Members.Functions, AccessKind::None, true); for (RecordInfo& RI: toDerivedView(I.Members.Records, corpus_)) { operator()(RI); @@ -301,19 +420,11 @@ operator()(RecordInfo& I) MRDOCS_CHECK_OR(baseRecord); operator()(*baseRecord); } - foldOverloads(I.id, I.Interface.Public.Functions, false); - foldOverloads(I.id, I.Interface.Protected.Functions, false); - foldOverloads(I.id, I.Interface.Private.Functions, false); - foldOverloads(I.id, I.Interface.Public.StaticFunctions, true); - foldOverloads(I.id, I.Interface.Protected.StaticFunctions, true); - foldOverloads(I.id, I.Interface.Private.StaticFunctions, true); - for (RecordInfo& RI: toDerivedView(I.Interface.Public.Records, corpus_)) { - operator()(RI); - } - for (RecordInfo& RI: toDerivedView(I.Interface.Protected.Records, corpus_)) { - operator()(RI); - } - for (RecordInfo& RI: toDerivedView(I.Interface.Private.Records, corpus_)) { + + foldOverloads(I.id, I.Members); + + auto&& memberIds = std::ranges::views::transform(I.Members, &MemberInfo::id); + for (RecordInfo& RI: toDerivedView(memberIds, corpus_)) { operator()(RI); } } @@ -340,7 +451,7 @@ operator()(UsingInfo& I) } break; } - foldOverloads(I.id, I.ShadowDeclarations, true); + foldOverloads(I.id, I.ShadowDeclarations, AccessKind::None, true); } } // clang::mrdocs diff --git a/src/lib/Metadata/Finalizers/OverloadsFinalizer.hpp b/src/lib/Metadata/Finalizers/OverloadsFinalizer.hpp index 189417538..575354fee 100644 --- a/src/lib/Metadata/Finalizers/OverloadsFinalizer.hpp +++ b/src/lib/Metadata/Finalizers/OverloadsFinalizer.hpp @@ -33,8 +33,14 @@ class OverloadsFinalizer foldOverloads( SymbolID const& contextId, std::vector& functionIds, + AccessKind access, bool isStatic); + void + foldOverloads( + SymbolID const& contextId, + std::vector& members); + public: OverloadsFinalizer(CorpusImpl& corpus) : corpus_(corpus) diff --git a/src/lib/Metadata/Finalizers/RecordsFinalizer.cpp b/src/lib/Metadata/Finalizers/RecordsFinalizer.cpp new file mode 100644 index 000000000..b56974ec4 --- /dev/null +++ b/src/lib/Metadata/Finalizers/RecordsFinalizer.cpp @@ -0,0 +1,190 @@ +// +// Licensed under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +// Copyright (c) 2025 Alan de Freitas (alandefreitas@gmail.com) +// +// Official repository: https://github.com/cppalliance/mrdocs +// + +#include "RecordsFinalizer.hpp" +#include +#include + +namespace clang::mrdocs { + +namespace { + +void +addMember(std::vector& container, Info const& Member) +{ + if (!contains(container, Member.id)) + { + container.push_back(Member.id); + } +} + +void +addMember(RecordTranche& T, Info const& Member) +{ + if (auto const* U = Member.asNamespaceAliasPtr()) + { + addMember(T.NamespaceAliases, *U); + return; + } + if (auto const* U = Member.asTypedefPtr()) + { + addMember(T.Typedefs, *U); + return; + } + if (auto const* U = Member.asRecordPtr()) + { + addMember(T.Records, *U); + return; + } + if (auto const* U = Member.asEnumPtr()) + { + addMember(T.Enums, *U); + return; + } + if (auto const* U = Member.asFunctionPtr()) + { + if (U->StorageClass != StorageClassKind::Static) + { + addMember(T.Functions, *U); + } + else + { + addMember(T.StaticFunctions, *U); + } + return; + } + if (auto const* U = Member.asVariablePtr()) + { + if (U->StorageClass != StorageClassKind::Static) + { + addMember(T.Variables, *U); + } + else + { + addMember(T.StaticVariables, *U); + } + return; + } + if (auto const* U = Member.asConceptPtr()) + { + addMember(T.Concepts, *U); + return; + } + if (auto const* U = Member.asGuidePtr()) + { + addMember(T.Guides, *U); + return; + } + if (auto const* U = Member.asUsingPtr()) + { + addMember(T.Usings, *U); + return; + } + if (auto const* U = Member.asOverloadsPtr()) + { + if (U->StorageClass != StorageClassKind::Static) + { + addMember(T.Functions, *U); + } + else + { + addMember(T.StaticFunctions, *U); + } + return; + } + report::error("Cannot push {} of type {} into tranche", + Member.Name, + mrdocs::toString(Member.Kind).c_str()); +} + +} + +void +RecordsFinalizer:: +generateRecordInterface(RecordInfo& I) +{ + for (auto const& m: I.Members) + { + Info* infoPtr = corpus_.find(m.id); + MRDOCS_CHECK_OR_CONTINUE(infoPtr); + + Info const& Member = *infoPtr; + switch (Member.Access) + { + case AccessKind::Public: + addMember(I.Interface.Public, Member); + break; + case AccessKind::Private: + addMember(I.Interface.Private, Member); + break; + case AccessKind::Protected: + addMember(I.Interface.Protected, Member); + break; + default: + MRDOCS_UNREACHABLE(); + } + } +} + +void +RecordsFinalizer:: +finalizeRecords(std::vector const& ids) +{ + for (SymbolID const& id: ids) + { + Info* infoPtr = corpus_.find(id); + MRDOCS_CHECK_OR_CONTINUE(infoPtr); + auto* record = infoPtr->asRecordPtr(); + MRDOCS_CHECK_OR_CONTINUE(record); + operator()(*record); + } +} + +void +RecordsFinalizer:: +finalizeNamespaces(std::vector const& ids) +{ + for (SymbolID const& id: ids) + { + Info* infoPtr = corpus_.find(id); + MRDOCS_CHECK_OR_CONTINUE(infoPtr); + auto* ns = infoPtr->asNamespacePtr(); + MRDOCS_CHECK_OR_CONTINUE(ns); + operator()(*ns); + } +} + +void +RecordsFinalizer:: +operator()(NamespaceInfo& I) +{ + report::trace( + "Generating record interfaces for namespace '{}'", + corpus_.Corpus::qualifiedName(I)); + finalizeRecords(I.Members.Records); + finalizeNamespaces(I.Members.Namespaces); +} + +void +RecordsFinalizer:: +operator()(RecordInfo& I) +{ + report::trace( + "Generating record interface for record '{}'", + corpus_.Corpus::qualifiedName(I)); + MRDOCS_CHECK_OR(!finalized_.contains(I.id)); + generateRecordInterface(I); + finalizeRecords(I.Interface.Public.Records); + finalizeRecords(I.Interface.Protected.Records); + finalizeRecords(I.Interface.Private.Records); + finalized_.emplace(I.id); +} + +} // clang::mrdocs diff --git a/src/lib/Metadata/Finalizers/RecordsFinalizer.hpp b/src/lib/Metadata/Finalizers/RecordsFinalizer.hpp new file mode 100644 index 000000000..95e352fbb --- /dev/null +++ b/src/lib/Metadata/Finalizers/RecordsFinalizer.hpp @@ -0,0 +1,63 @@ +// +// Licensed under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +// Copyright (c) 2025 Alan de Freitas (alandefreitas@gmail.com) +// +// Official repository: https://github.com/cppalliance/mrdocs +// + +#ifndef MRDOCS_LIB_METADATA_FINALIZER_RECORDSFINALIZER_HPP +#define MRDOCS_LIB_METADATA_FINALIZER_RECORDSFINALIZER_HPP + +#include "lib/Metadata/InfoSet.hpp" +#include "lib/CorpusImpl.hpp" + +namespace clang::mrdocs { + +/** Finalizes the records in corpus. + + Generates record interfaces. +*/ +class RecordsFinalizer +{ + CorpusImpl& corpus_; + std::unordered_set finalized_; + + void + generateRecordInterface(RecordInfo& I); + + void + finalizeRecords(std::vector const& ids); + + void + finalizeNamespaces(std::vector const& ids); + +public: + RecordsFinalizer( + CorpusImpl& corpus) + : corpus_(corpus) + {} + + void + build() + { + Info* info = corpus_.find(SymbolID::global); + MRDOCS_CHECK_OR(info); + operator()(info->asNamespace()); + } + + void + operator()(NamespaceInfo& I); + + void + operator()(RecordInfo& I); + + void + operator()(Info&) {} +}; + +} // clang::mrdocs + +#endif diff --git a/src/lib/Metadata/Finalizers/SortMembersFinalizer.cpp b/src/lib/Metadata/Finalizers/SortMembersFinalizer.cpp index 3045ab1bd..632a2c257 100644 --- a/src/lib/Metadata/Finalizers/SortMembersFinalizer.cpp +++ b/src/lib/Metadata/Finalizers/SortMembersFinalizer.cpp @@ -267,51 +267,33 @@ sortMembers(std::vector& ids) void SortMembersFinalizer:: -sortMembers(NamespaceTranche& T) +sortMembers(std::vector& members) { - sortMembers(T.Namespaces); - sortMembers(T.NamespaceAliases); - sortMembers(T.Typedefs); - sortMembers(T.Records); - sortMembers(T.Enums); - sortMembers(T.Functions); - sortMembers(T.Variables); - sortMembers(T.Concepts); - sortMembers(T.Guides); - sortMembers(T.Usings); + SymbolIDCompareFn const pred{corpus_}; + std::ranges::sort(members, pred, &MemberInfo::id); } void SortMembersFinalizer:: -sortMembers(RecordTranche& T) +sortMembers(NamespaceTranche& T) { + sortMembers(T.Namespaces); sortMembers(T.NamespaceAliases); sortMembers(T.Typedefs); sortMembers(T.Records); sortMembers(T.Enums); sortMembers(T.Functions); - sortMembers(T.StaticFunctions); sortMembers(T.Variables); - sortMembers(T.StaticVariables); sortMembers(T.Concepts); sortMembers(T.Guides); sortMembers(T.Usings); } -void -SortMembersFinalizer:: -sortMembers(RecordInterface& I) -{ - sortMembers(I.Public); - sortMembers(I.Protected); - sortMembers(I.Private); -} - namespace { -template +template R> constexpr auto -toDerivedView(std::vector const& ids, CorpusImpl& c) +toDerivedView(R&& ids, CorpusImpl& c) { return ids | std::views::transform([&c](SymbolID const& id) { @@ -361,43 +343,20 @@ operator()(RecordInfo& I) // Sort members of all tranches if sorting is enabled for records if (corpus_.config->sortMembers) { - sortMembers(I.Interface); + sortMembers(I.Members); } // Recursively sort members of child records and overloads - for (RecordInfo& RI: toDerivedView(I.Interface.Public.Records, corpus_)) - { - operator()(RI); - } - for (RecordInfo& RI: toDerivedView(I.Interface.Protected.Records, corpus_)) - { - operator()(RI); - } - for (RecordInfo& RI: toDerivedView(I.Interface.Private.Records, corpus_)) - { - operator()(RI); - } - for (OverloadsInfo& RI: toDerivedView(I.Interface.Public.Functions, corpus_)) - { - operator()(RI); - } - for (OverloadsInfo& RI: toDerivedView(I.Interface.Protected.Functions, corpus_)) - { - operator()(RI); - } - for (OverloadsInfo& RI: toDerivedView(I.Interface.Private.Functions, corpus_)) - { - operator()(RI); - } - for (OverloadsInfo& RI: toDerivedView(I.Interface.Public.StaticFunctions, corpus_)) + auto&& memberIds = allMembers(I); + for (RecordInfo& RI: toDerivedView(memberIds, corpus_)) { operator()(RI); } - for (OverloadsInfo& RI: toDerivedView(I.Interface.Protected.StaticFunctions, corpus_)) + for (OverloadsInfo& RI: toDerivedView(memberIds, corpus_)) { operator()(RI); } - for (OverloadsInfo& RI: toDerivedView(I.Interface.Private.StaticFunctions, corpus_)) + for (OverloadsInfo& RI: toDerivedView(memberIds, corpus_)) { operator()(RI); } diff --git a/src/lib/Metadata/Finalizers/SortMembersFinalizer.hpp b/src/lib/Metadata/Finalizers/SortMembersFinalizer.hpp index be01754d7..62836b9ad 100644 --- a/src/lib/Metadata/Finalizers/SortMembersFinalizer.hpp +++ b/src/lib/Metadata/Finalizers/SortMembersFinalizer.hpp @@ -32,10 +32,7 @@ class SortMembersFinalizer sortMembers(std::vector& ids); void - sortMembers(RecordInterface& I); - - void - sortMembers(RecordTranche& I); + sortMembers(std::vector& members); void sortMembers(NamespaceTranche& I); diff --git a/src/lib/Metadata/Info/Overloads.cpp b/src/lib/Metadata/Info/Overloads.cpp index fb27ba057..4eb57ce10 100644 --- a/src/lib/Metadata/Info/Overloads.cpp +++ b/src/lib/Metadata/Info/Overloads.cpp @@ -26,6 +26,7 @@ OverloadsInfo::OverloadsInfo(SymbolID const &Parent, std::string_view Name, : InfoCommonBase(SymbolID::createFromString(std::format( "{}-{}-{}-{}", toBase16(Parent), Name, toString(access), isStatic))) { this->Parent = Parent; + if (isStatic) this->StorageClass = StorageClassKind::Static; } void diff --git a/test-files/golden-tests/config/auto-function-metadata/brief-from-function-class.adoc b/test-files/golden-tests/config/auto-function-metadata/brief-from-function-class.adoc index 37c4a3747..1be136b12 100644 --- a/test-files/golden-tests/config/auto-function-metadata/brief-from-function-class.adoc +++ b/test-files/golden-tests/config/auto-function-metadata/brief-from-function-class.adoc @@ -102,35 +102,35 @@ link:#X-2constructor-06[X](link:#X[X]&& other) = default; [.small]#link:#X-2constructor-06[_» more..._]# -Construct from `int` +Construct from `A` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- -link:#X-2constructor-07[X](int value); +link:#X-2constructor-0b[X](link:#A[A] const& value); ---- -[.small]#link:#X-2constructor-07[_» more..._]# +[.small]#link:#X-2constructor-0b[_» more..._]# Construct from `A` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- -link:#X-2constructor-0b[X](link:#A[A] const& value); +link:#X-2constructor-00[X](link:#A[A]&& value); ---- -[.small]#link:#X-2constructor-0b[_» more..._]# +[.small]#link:#X-2constructor-00[_» more..._]# -Construct from `A` +Construct from `int` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- -link:#X-2constructor-00[X](link:#A[A]&& value); +link:#X-2constructor-07[X](int value); ---- -[.small]#link:#X-2constructor-00[_» more..._]# +[.small]#link:#X-2constructor-07[_» more..._]# [#X-2constructor-0e8] == link:#X[X]::X @@ -197,10 +197,10 @@ X(link:#X[X]&& other) = default; | The object to move construct from |=== -[#X-2constructor-07] +[#X-2constructor-0b] == link:#X[X]::X -Construct from `int` +Construct from `A` === Synopsis @@ -208,7 +208,7 @@ Declared in `<brief‐from‐function‐class.cpp>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- -X(int value); +X(link:#A[A] const& value); ---- === Parameters @@ -218,10 +218,10 @@ X(int value); | Name | Description | *value* -| The value to construct from +| The object to copy construct from |=== -[#X-2constructor-0b] +[#X-2constructor-00] == link:#X[X]::X Construct from `A` @@ -232,7 +232,7 @@ Declared in `<brief‐from‐function‐class.cpp>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- -X(link:#A[A] const& value); +X(link:#A[A]&& value); ---- === Parameters @@ -242,13 +242,13 @@ X(link:#A[A] const& value); | Name | Description | *value* -| The object to copy construct from +| The object to move construct from |=== -[#X-2constructor-00] +[#X-2constructor-07] == link:#X[X]::X -Construct from `A` +Construct from `int` === Synopsis @@ -256,7 +256,7 @@ Declared in `<brief‐from‐function‐class.cpp>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- -X(link:#A[A]&& value); +X(int value); ---- === Parameters @@ -266,7 +266,7 @@ X(link:#A[A]&& value); | Name | Description | *value* -| The object to move construct from +| The value to construct from |=== [#X-2destructor] diff --git a/test-files/golden-tests/config/auto-function-metadata/brief-from-function-class.html b/test-files/golden-tests/config/auto-function-metadata/brief-from-function-class.html index c805d70c3..dc362e323 100644 --- a/test-files/golden-tests/config/auto-function-metadata/brief-from-function-class.html +++ b/test-files/golden-tests/config/auto-function-metadata/brief-from-function-class.html @@ -120,13 +120,6 @@

Synopses

» more... -Construct from int -
-X(int value);
-
-
-
» more... - Construct from A
 X(A const& value);
@@ -141,6 +134,13 @@ 

Synopses

» more... +Construct from int +
+X(int value);
+
+
+
» more... + @@ -240,9 +240,9 @@

Parameters

-

X::X

+

X::X

-Construct from int +Construct from A
@@ -251,7 +251,7 @@

Synopsis

Declared in <brief-from-function-class.cpp>
-X(int value);
+X(A const& value);
 
 
 
@@ -268,7 +268,7 @@

Parameters

value -The value to construct from +The object to copy construct from @@ -276,7 +276,7 @@

Parameters

-

X::X

+

X::X

Construct from A @@ -287,7 +287,7 @@

Synopsis

Declared in <brief-from-function-class.cpp>
-X(A const& value);
+X(A&& value);
 
 
 
@@ -304,7 +304,7 @@

Parameters

value -The object to copy construct from +The object to move construct from @@ -312,9 +312,9 @@

Parameters

-

X::X

+

X::X

-Construct from A +Construct from int
@@ -323,7 +323,7 @@

Synopsis

Declared in <brief-from-function-class.cpp>
-X(A&& value);
+X(int value);
 
 
 
@@ -340,7 +340,7 @@

Parameters

value -The object to move construct from +The value to construct from diff --git a/test-files/golden-tests/config/auto-function-metadata/brief-from-function-class.xml b/test-files/golden-tests/config/auto-function-metadata/brief-from-function-class.xml index b5be0885a..36278331b 100644 --- a/test-files/golden-tests/config/auto-function-metadata/brief-from-function-class.xml +++ b/test-files/golden-tests/config/auto-function-metadata/brief-from-function-class.xml @@ -66,21 +66,6 @@ - - - - - - - - Construct from - int - - - The value to construct from - - - @@ -115,6 +100,21 @@ + + + + + + + + Construct from + int + + + The value to construct from + + + diff --git a/test-files/golden-tests/config/auto-function-metadata/param-from-function-class.adoc b/test-files/golden-tests/config/auto-function-metadata/param-from-function-class.adoc index 9d407284c..09a4a6c29 100644 --- a/test-files/golden-tests/config/auto-function-metadata/param-from-function-class.adoc +++ b/test-files/golden-tests/config/auto-function-metadata/param-from-function-class.adoc @@ -85,35 +85,35 @@ link:#X-2constructor-06[X](link:#X[X]&& other); [.small]#link:#X-2constructor-06[_» more..._]# -Construct from `int` +Construct from `A` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- -link:#X-2constructor-07[X](int value); +link:#X-2constructor-0b[X](link:#A[A] const& value); ---- -[.small]#link:#X-2constructor-07[_» more..._]# +[.small]#link:#X-2constructor-0b[_» more..._]# Construct from `A` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- -link:#X-2constructor-0b[X](link:#A[A] const& value); +link:#X-2constructor-00[X](link:#A[A]&& value); ---- -[.small]#link:#X-2constructor-0b[_» more..._]# +[.small]#link:#X-2constructor-00[_» more..._]# -Construct from `A` +Construct from `int` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- -link:#X-2constructor-00[X](link:#A[A]&& value); +link:#X-2constructor-07[X](int value); ---- -[.small]#link:#X-2constructor-00[_» more..._]# +[.small]#link:#X-2constructor-07[_» more..._]# [#X-2constructor-0e] == link:#X[X]::X @@ -163,10 +163,10 @@ X(link:#X[X]&& other); | The object to move construct from |=== -[#X-2constructor-07] +[#X-2constructor-0b] == link:#X[X]::X -Construct from `int` +Construct from `A` === Synopsis @@ -174,7 +174,7 @@ Declared in `<param‐from‐function‐class.cpp>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- -X(int value); +X(link:#A[A] const& value); ---- === Parameters @@ -184,10 +184,10 @@ X(int value); | Name | Description | *value* -| The value to construct from +| The object to copy construct from |=== -[#X-2constructor-0b] +[#X-2constructor-00] == link:#X[X]::X Construct from `A` @@ -198,7 +198,7 @@ Declared in `<param‐from‐function‐class.cpp>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- -X(link:#A[A] const& value); +X(link:#A[A]&& value); ---- === Parameters @@ -208,13 +208,13 @@ X(link:#A[A] const& value); | Name | Description | *value* -| The object to copy construct from +| The object to move construct from |=== -[#X-2constructor-00] +[#X-2constructor-07] == link:#X[X]::X -Construct from `A` +Construct from `int` === Synopsis @@ -222,7 +222,7 @@ Declared in `<param‐from‐function‐class.cpp>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- -X(link:#A[A]&& value); +X(int value); ---- === Parameters @@ -232,7 +232,7 @@ X(link:#A[A]&& value); | Name | Description | *value* -| The object to move construct from +| The value to construct from |=== [#X-operator_assign-0a] @@ -272,10 +272,10 @@ Assignment operator [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- link:#X[X]& -link:#X-operator_assign-07f[operator=](int value); +link:#X-operator_assign-0d[operator=](link:#A[A] const& value); ---- -[.small]#link:#X-operator_assign-07f[_» more..._]# +[.small]#link:#X-operator_assign-0d[_» more..._]# Assignment operator @@ -283,10 +283,10 @@ Assignment operator [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- link:#X[X]& -link:#X-operator_assign-0d[operator=](link:#A[A] const& value); +link:#X-operator_assign-07e[operator=](link:#A[A]&& value); ---- -[.small]#link:#X-operator_assign-0d[_» more..._]# +[.small]#link:#X-operator_assign-07e[_» more..._]# Assignment operator @@ -294,10 +294,10 @@ Assignment operator [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- link:#X[X]& -link:#X-operator_assign-07e[operator=](link:#A[A]&& value); +link:#X-operator_assign-07f[operator=](int value); ---- -[.small]#link:#X-operator_assign-07e[_» more..._]# +[.small]#link:#X-operator_assign-07f[_» more..._]# [#X-operator_assign-06] == link:#X[X]::operator= @@ -357,7 +357,7 @@ Reference to the current object | The object to move assign from |=== -[#X-operator_assign-07f] +[#X-operator_assign-0d] == link:#X[X]::operator= Assignment operator @@ -369,7 +369,7 @@ Declared in `<param‐from‐function‐class.cpp>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- link:#X[X]& -operator=(int value); +operator=(link:#A[A] const& value); ---- === Return Value @@ -383,10 +383,10 @@ Reference to the current object | Name | Description | *value* -| The value to assign from +| The object to copy assign from |=== -[#X-operator_assign-0d] +[#X-operator_assign-07e] == link:#X[X]::operator= Assignment operator @@ -398,7 +398,7 @@ Declared in `<param‐from‐function‐class.cpp>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- link:#X[X]& -operator=(link:#A[A] const& value); +operator=(link:#A[A]&& value); ---- === Return Value @@ -412,10 +412,10 @@ Reference to the current object | Name | Description | *value* -| The object to copy assign from +| The object to move assign from |=== -[#X-operator_assign-07e] +[#X-operator_assign-07f] == link:#X[X]::operator= Assignment operator @@ -427,7 +427,7 @@ Declared in `<param‐from‐function‐class.cpp>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- link:#X[X]& -operator=(link:#A[A]&& value); +operator=(int value); ---- === Return Value @@ -441,7 +441,7 @@ Reference to the current object | Name | Description | *value* -| The object to move assign from +| The value to assign from |=== diff --git a/test-files/golden-tests/config/auto-function-metadata/param-from-function-class.html b/test-files/golden-tests/config/auto-function-metadata/param-from-function-class.html index bdcfd1f52..d8d17cf7d 100644 --- a/test-files/golden-tests/config/auto-function-metadata/param-from-function-class.html +++ b/test-files/golden-tests/config/auto-function-metadata/param-from-function-class.html @@ -108,13 +108,6 @@

Synopses

» more... -Construct from int -
-X(int value);
-
-
-
» more... - Construct from A
 X(A const& value);
@@ -129,6 +122,13 @@ 

Synopses

» more... +Construct from int +
+X(int value);
+
+
+
» more... +
@@ -206,9 +206,9 @@

Parameters

-

X::X

+

X::X

-Construct from int +Construct from A
@@ -217,7 +217,7 @@

Synopsis

Declared in <param-from-function-class.cpp>
-X(int value);
+X(A const& value);
 
 
 
@@ -234,7 +234,7 @@

Parameters

value -The value to construct from +The object to copy construct from @@ -242,7 +242,7 @@

Parameters

-

X::X

+

X::X

Construct from A @@ -253,7 +253,7 @@

Synopsis

Declared in <param-from-function-class.cpp>
-X(A const& value);
+X(A&& value);
 
 
 
@@ -270,7 +270,7 @@

Parameters

value -The object to copy construct from +The object to move construct from @@ -278,9 +278,9 @@

Parameters

-

X::X

+

X::X

-Construct from A +Construct from int
@@ -289,7 +289,7 @@

Synopsis

Declared in <param-from-function-class.cpp>
-X(A&& value);
+X(int value);
 
 
 
@@ -306,7 +306,7 @@

Parameters

value -The object to move construct from +The value to construct from @@ -343,26 +343,26 @@

Synopses

Assignment operator
 X&
-operator=(int value);
+operator=(A const& value);
 
 
-
» more... +» more... Assignment operator
 X&
-operator=(A const& value);
+operator=(A&& value);
 
 
-
» more... +» more... Assignment operator
 X&
-operator=(A&& value);
+operator=(int value);
 
 
-
» more... +» more...
@@ -451,7 +451,7 @@

Parameters

-

X::operator=

+

X::operator=

Assignment operator @@ -463,7 +463,7 @@

Synopsis

Declared in <param-from-function-class.cpp>
 X&
-operator=(int value);
+operator=(A const& value);
 
 
 
@@ -484,7 +484,7 @@

Parameters

value -The value to assign from +The object to copy assign from @@ -492,7 +492,7 @@

Parameters

-

X::operator=

+

X::operator=

Assignment operator @@ -504,7 +504,7 @@

Synopsis

Declared in <param-from-function-class.cpp>
 X&
-operator=(A const& value);
+operator=(A&& value);
 
 
 
@@ -525,7 +525,7 @@

Parameters

value -The object to copy assign from +The object to move assign from @@ -533,7 +533,7 @@

Parameters

-

X::operator=

+

X::operator=

Assignment operator @@ -545,7 +545,7 @@

Synopsis

Declared in <param-from-function-class.cpp>
 X&
-operator=(A&& value);
+operator=(int value);
 
 
 
@@ -566,7 +566,7 @@

Parameters

value -The object to move assign from +The value to assign from diff --git a/test-files/golden-tests/config/auto-function-metadata/param-from-function-class.xml b/test-files/golden-tests/config/auto-function-metadata/param-from-function-class.xml index 09bd6cf95..77fe32511 100644 --- a/test-files/golden-tests/config/auto-function-metadata/param-from-function-class.xml +++ b/test-files/golden-tests/config/auto-function-metadata/param-from-function-class.xml @@ -49,21 +49,6 @@ - - - - - - - - Construct from - int - - - The value to construct from - - - @@ -98,6 +83,21 @@ + + + + + + + + Construct from + int + + + The value to construct from + + + @@ -148,8 +148,8 @@ - - + + @@ -157,7 +157,9 @@ - + + + @@ -167,12 +169,12 @@ Reference to the current object - The value to assign from + The object to copy assign from - - + + @@ -180,8 +182,8 @@ - - + + @@ -192,12 +194,12 @@ Reference to the current object - The object to copy assign from + The object to move assign from - - + + @@ -205,9 +207,7 @@ - - - + @@ -217,7 +217,7 @@ Reference to the current object - The object to move assign from + The value to assign from diff --git a/test-files/golden-tests/config/inherit-base-members/copy-dependencies.adoc b/test-files/golden-tests/config/inherit-base-members/copy-dependencies.adoc index c09ad5f58..41806eeb8 100644 --- a/test-files/golden-tests/config/inherit-base-members/copy-dependencies.adoc +++ b/test-files/golden-tests/config/inherit-base-members/copy-dependencies.adoc @@ -61,8 +61,6 @@ class base | This function should shadow the excluded_base function. | link:#base-derived_shadowed[`derived_shadowed`] | This function should be shadowed by derived classes. -| link:#base_base-do_base_base_inherited[`do_base_base_inherited`] -| This function should be indirectly inherited by derived classes. |=== === Protected Member Functions @@ -71,6 +69,8 @@ class base |=== | Name | Description +| link:#base_base-do_base_base_inherited[`do_base_base_inherited`] +| This function should be indirectly inherited by derived classes. | link:#base-do_base_inherited[`do_base_inherited`] | This function should be inherited by derived classes. | link:#base-do_base_shadowed[`do_base_shadowed`] @@ -225,6 +225,14 @@ class base_base; | Description | link:#base_base-base_base_inherited[`base_base_inherited`] | This function should be indirectly inherited by derived classes. +|=== + +=== Protected Member Functions + +[cols=2] +|=== +| Name +| Description | link:#base_base-do_base_base_inherited[`do_base_base_inherited`] | This function should be indirectly inherited by derived classes. |=== @@ -319,10 +327,6 @@ class derived | This function should shadow the excluded_base function. | link:#derived-derived_shadowed[`derived_shadowed`] | This function should shadow the base class function. -| link:#base_base-do_base_base_inherited[`do_base_base_inherited`] -| This function should be indirectly inherited by derived classes. -| link:#derived-do_derived_shadowed[`do_derived_shadowed`] -| This function should shadow the base class function. | link:#derived-excluded_inherited[`excluded_inherited`] | This function should be inherited by derived classes. |=== @@ -333,12 +337,14 @@ class derived |=== | Name | Description +| link:#base_base-do_base_base_inherited[`do_base_base_inherited`] +| This function should be indirectly inherited by derived classes. | link:#base-do_base_inherited[`do_base_inherited`] | This function should be inherited by derived classes. | link:#base-do_base_shadowed[`do_base_shadowed`] | This function should shadow the excluded_base function. -| link:#base-do_derived_shadowed[`do_derived_shadowed`] -| This function should be shadowed by derived classes. +| link:#derived-do_derived_shadowed[`do_derived_shadowed`] +| This function should shadow the base class function. | link:#derived-do_excluded_inherited[`do_excluded_inherited`] | This function should be inherited by derived classes. | link:#derived-do_shadowed[`do_shadowed`] @@ -364,10 +370,10 @@ derived_shadowed(); A class that derives from base and excluded_base -[#derived-do_derived_shadowed] -== link:#derived[derived]::do_derived_shadowed +[#derived-excluded_inherited] +== link:#derived[derived]::excluded_inherited -This function should shadow the base class function. +This function should be inherited by derived classes. === Synopsis @@ -375,18 +381,14 @@ Declared in `<copy‐dependencies.cpp>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- -link:#derived[derived]& -do_derived_shadowed(); +excluded_base& +excluded_inherited(); ---- -=== Return Value - -A class that derives from base and excluded_base - -[#derived-excluded_inherited] -== link:#derived[derived]::excluded_inherited +[#derived-do_derived_shadowed] +== link:#derived[derived]::do_derived_shadowed -This function should be inherited by derived classes. +This function should shadow the base class function. === Synopsis @@ -394,10 +396,14 @@ Declared in `<copy‐dependencies.cpp>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- -excluded_base& -excluded_inherited(); +link:#derived[derived]& +do_derived_shadowed(); ---- +=== Return Value + +A class that derives from base and excluded_base + [#derived-do_excluded_inherited] == link:#derived[derived]::do_excluded_inherited @@ -450,10 +456,36 @@ class private_derived |=== | Name | Description +| link:#base_base-base_base_inherited[`base_base_inherited`] +| This function should be indirectly inherited by derived classes. +| link:#base-base_inherited[`base_inherited`] +| This function should be inherited by derived classes. +| link:#base-base_shadowed[`base_shadowed`] +| This function should shadow the excluded_base function. | link:#private_derived-derived_shadowed[`derived_shadowed`] | This function should shadow the base class function. +| link:#private_derived-excluded_inherited[`excluded_inherited`] +| This function should be inherited by derived classes. +|=== + +=== Protected Member Functions + +[cols=2] +|=== +| Name +| Description +| link:#base_base-do_base_base_inherited[`do_base_base_inherited`] +| This function should be indirectly inherited by derived classes. +| link:#base-do_base_inherited[`do_base_inherited`] +| This function should be inherited by derived classes. +| link:#base-do_base_shadowed[`do_base_shadowed`] +| This function should shadow the excluded_base function. | link:#private_derived-do_derived_shadowed[`do_derived_shadowed`] | This function should shadow the base class function. +| link:#private_derived-do_excluded_inherited[`do_excluded_inherited`] +| This function should be inherited by derived classes. +| link:#private_derived-do_shadowed[`do_shadowed`] +| This function should be shadowed by derived classes. |=== [#private_derived-derived_shadowed] @@ -475,6 +507,21 @@ derived_shadowed(); A class that uses private inheritance only +[#private_derived-excluded_inherited] +== link:#private_derived[private_derived]::excluded_inherited + +This function should be inherited by derived classes. + +=== Synopsis + +Declared in `<copy‐dependencies.cpp>` + +[source,cpp,subs="verbatim,replacements,macros,-callouts"] +---- +excluded_base& +excluded_inherited(); +---- + [#private_derived-do_derived_shadowed] == link:#private_derived[private_derived]::do_derived_shadowed @@ -494,6 +541,36 @@ do_derived_shadowed(); A class that uses private inheritance only +[#private_derived-do_excluded_inherited] +== link:#private_derived[private_derived]::do_excluded_inherited + +This function should be inherited by derived classes. + +=== Synopsis + +Declared in `<copy‐dependencies.cpp>` + +[source,cpp,subs="verbatim,replacements,macros,-callouts"] +---- +excluded_base& +do_excluded_inherited(); +---- + +[#private_derived-do_shadowed] +== link:#private_derived[private_derived]::do_shadowed + +This function should be shadowed by derived classes. + +=== Synopsis + +Declared in `<copy‐dependencies.cpp>` + +[source,cpp,subs="verbatim,replacements,macros,-callouts"] +---- +excluded_base& +do_shadowed(); +---- + [#protected_derived] == protected_derived @@ -528,10 +605,16 @@ class protected_derived |=== | Name | Description +| link:#base_base-base_base_inherited[`base_base_inherited`] +| This function should be indirectly inherited by derived classes. +| link:#base-base_inherited[`base_inherited`] +| This function should be inherited by derived classes. +| link:#base-base_shadowed[`base_shadowed`] +| This function should shadow the excluded_base function. | link:#protected_derived-derived_shadowed[`derived_shadowed`] | This function should shadow the base class function. -| link:#protected_derived-do_derived_shadowed[`do_derived_shadowed`] -| This function should shadow the base class function. +| link:#protected_derived-excluded_inherited[`excluded_inherited`] +| This function should be inherited by derived classes. |=== === Protected Member Functions @@ -540,28 +623,18 @@ class protected_derived |=== | Name | Description -| link:#base_base-base_base_inherited[`base_base_inherited`] -| This function should be indirectly inherited by derived classes. -| link:#base-base_inherited[`base_inherited`] -| This function should be inherited by derived classes. -| link:#base-base_shadowed[`base_shadowed`] -| This function should shadow the excluded_base function. -| link:#base-derived_shadowed[`derived_shadowed`] -| This function should be shadowed by derived classes. | link:#base_base-do_base_base_inherited[`do_base_base_inherited`] | This function should be indirectly inherited by derived classes. | link:#base-do_base_inherited[`do_base_inherited`] | This function should be inherited by derived classes. | link:#base-do_base_shadowed[`do_base_shadowed`] | This function should shadow the excluded_base function. -| link:#base-do_derived_shadowed[`do_derived_shadowed`] -| This function should be shadowed by derived classes. +| link:#protected_derived-do_derived_shadowed[`do_derived_shadowed`] +| This function should shadow the base class function. | link:#protected_derived-do_excluded_inherited[`do_excluded_inherited`] | This function should be inherited by derived classes. | link:#protected_derived-do_shadowed[`do_shadowed`] | This function should be shadowed by derived classes. -| link:#protected_derived-excluded_inherited[`excluded_inherited`] -| This function should be inherited by derived classes. |=== [#protected_derived-derived_shadowed] @@ -583,6 +656,21 @@ derived_shadowed(); A class that should inherit functions as protected. +[#protected_derived-excluded_inherited] +== link:#protected_derived[protected_derived]::excluded_inherited + +This function should be inherited by derived classes. + +=== Synopsis + +Declared in `<copy‐dependencies.cpp>` + +[source,cpp,subs="verbatim,replacements,macros,-callouts"] +---- +excluded_base& +excluded_inherited(); +---- + [#protected_derived-do_derived_shadowed] == link:#protected_derived[protected_derived]::do_derived_shadowed @@ -632,20 +720,5 @@ excluded_base& do_shadowed(); ---- -[#protected_derived-excluded_inherited] -== link:#protected_derived[protected_derived]::excluded_inherited - -This function should be inherited by derived classes. - -=== Synopsis - -Declared in `<copy‐dependencies.cpp>` - -[source,cpp,subs="verbatim,replacements,macros,-callouts"] ----- -excluded_base& -excluded_inherited(); ----- - [.small]#Created with https://www.mrdocs.com[MrDocs]# diff --git a/test-files/golden-tests/config/inherit-base-members/copy-dependencies.cpp b/test-files/golden-tests/config/inherit-base-members/copy-dependencies.cpp index eff6deaf5..0a5efa42c 100644 --- a/test-files/golden-tests/config/inherit-base-members/copy-dependencies.cpp +++ b/test-files/golden-tests/config/inherit-base-members/copy-dependencies.cpp @@ -21,7 +21,7 @@ class base_base { public: /// This function should be indirectly inherited by derived classes. base_base& base_base_inherited(); -public: +protected: /// This function should be indirectly inherited by derived classes. base_base& do_base_base_inherited(); }; @@ -54,7 +54,7 @@ class derived public: /// This function should shadow the base class function. derived& derived_shadowed(); -public: +protected: /// This function should shadow the base class function. derived& do_derived_shadowed(); }; @@ -67,7 +67,7 @@ class protected_derived public: /// This function should shadow the base class function. protected_derived& derived_shadowed(); -public: +protected: /// This function should shadow the base class function. protected_derived& do_derived_shadowed(); }; @@ -80,7 +80,7 @@ class private_derived public: /// This function should shadow the base class function. private_derived& derived_shadowed(); -public: +protected: /// This function should shadow the base class function. private_derived& do_derived_shadowed(); }; diff --git a/test-files/golden-tests/config/inherit-base-members/copy-dependencies.html b/test-files/golden-tests/config/inherit-base-members/copy-dependencies.html index a1576424a..5d132faa4 100644 --- a/test-files/golden-tests/config/inherit-base-members/copy-dependencies.html +++ b/test-files/golden-tests/config/inherit-base-members/copy-dependencies.html @@ -74,8 +74,7 @@

Member Functions

base_base_inherited This function should be indirectly inherited by derived classes. base_inherited This function should be inherited by derived classes. base_shadowed This function should shadow the excluded_base function. -derived_shadowed This function should be shadowed by derived classes. -do_base_base_inherited This function should be indirectly inherited by derived classes. +derived_shadowed This function should be shadowed by derived classes. @@ -90,6 +89,7 @@

Protected Member Functions

+do_base_base_inherited This function should be indirectly inherited by derived classes. do_base_inherited This function should be inherited by derived classes. do_base_shadowed This function should shadow the excluded_base function. do_derived_shadowed This function should be shadowed by derived classes. @@ -285,12 +285,25 @@

Member Functions

-base_base_inherited This function should be indirectly inherited by derived classes. -do_base_base_inherited This function should be indirectly inherited by derived classes. +base_base_inherited This function should be indirectly inherited by derived classes. +

Protected Member Functions

+ + + + + + + + + + + +
NameDescription
do_base_base_inherited This function should be indirectly inherited by derived classes.
+

Derived Classes

@@ -405,8 +418,6 @@

Member Functions

base_inherited This function should be inherited by derived classes. base_shadowed This function should shadow the excluded_base function. derived_shadowed This function should shadow the base class function. -do_base_base_inherited This function should be indirectly inherited by derived classes. -do_derived_shadowed This function should shadow the base class function. excluded_inherited This function should be inherited by derived classes. @@ -422,9 +433,10 @@

Protected Member Functions

+do_base_base_inherited This function should be indirectly inherited by derived classes. do_base_inherited This function should be inherited by derived classes. do_base_shadowed This function should shadow the excluded_base function. -do_derived_shadowed This function should be shadowed by derived classes. +do_derived_shadowed This function should shadow the base class function. do_excluded_inherited This function should be inherited by derived classes. do_shadowed This function should be shadowed by derived classes. @@ -458,9 +470,9 @@

Return Value

-

derived::do_derived_shadowed

+

derived::excluded_inherited

-This function should shadow the base class function. +This function should be inherited by derived classes.
@@ -469,22 +481,18 @@

Synopsis

Declared in <copy-dependencies.cpp>
-derived&
-do_derived_shadowed();
+excluded_base&
+excluded_inherited();
 
 
 
-
-

Return Value

-A class that derives from base and excluded_base -
-

derived::excluded_inherited

+

derived::do_derived_shadowed

-This function should be inherited by derived classes. +This function should shadow the base class function.
@@ -493,12 +501,16 @@

Synopsis

Declared in <copy-dependencies.cpp>
-excluded_base&
-excluded_inherited();
+derived&
+do_derived_shadowed();
 
 
 
+
+

Return Value

+A class that derives from base and excluded_base +
@@ -570,12 +582,34 @@

Member Functions

+base_base_inherited This function should be indirectly inherited by derived classes. +base_inherited This function should be inherited by derived classes. +base_shadowed This function should shadow the excluded_base function. derived_shadowed This function should shadow the base class function. -do_derived_shadowed This function should shadow the base class function. +excluded_inherited This function should be inherited by derived classes. +

Protected Member Functions

+ + + + + + + + + + + + + + + + +
NameDescription
do_base_base_inherited This function should be indirectly inherited by derived classes.
do_base_inherited This function should be inherited by derived classes.
do_base_shadowed This function should shadow the excluded_base function.
do_derived_shadowed This function should shadow the base class function.
do_excluded_inherited This function should be inherited by derived classes.
do_shadowed This function should be shadowed by derived classes.
+
@@ -604,6 +638,26 @@

Return Value

+

private_derived::excluded_inherited

+
+This function should be inherited by derived classes. + +
+
+
+

Synopsis

+
+Declared in <copy-dependencies.cpp>
+
+excluded_base&
+excluded_inherited();
+
+
+
+
+
+
+

private_derived::do_derived_shadowed

This function should shadow the base class function. @@ -628,6 +682,46 @@

Return Value

+

private_derived::do_excluded_inherited

+
+This function should be inherited by derived classes. + +
+
+
+

Synopsis

+
+Declared in <copy-dependencies.cpp>
+
+excluded_base&
+do_excluded_inherited();
+
+
+
+
+
+
+
+

private_derived::do_shadowed

+
+This function should be shadowed by derived classes. + +
+
+
+

Synopsis

+
+Declared in <copy-dependencies.cpp>
+
+excluded_base&
+do_shadowed();
+
+
+
+
+
+
+

protected_derived

A class that should inherit functions as protected. @@ -671,8 +765,11 @@

Member Functions

+base_base_inherited This function should be indirectly inherited by derived classes. +base_inherited This function should be inherited by derived classes. +base_shadowed This function should shadow the excluded_base function. derived_shadowed This function should shadow the base class function. -do_derived_shadowed This function should shadow the base class function. +excluded_inherited This function should be inherited by derived classes. @@ -687,17 +784,12 @@

Protected Member Functions

-base_base_inherited This function should be indirectly inherited by derived classes. -base_inherited This function should be inherited by derived classes. -base_shadowed This function should shadow the excluded_base function. -derived_shadowed This function should be shadowed by derived classes. do_base_base_inherited This function should be indirectly inherited by derived classes. do_base_inherited This function should be inherited by derived classes. do_base_shadowed This function should shadow the excluded_base function. -do_derived_shadowed This function should be shadowed by derived classes. +do_derived_shadowed This function should shadow the base class function. do_excluded_inherited This function should be inherited by derived classes. -do_shadowed This function should be shadowed by derived classes. -excluded_inherited This function should be inherited by derived classes. +do_shadowed This function should be shadowed by derived classes. @@ -729,9 +821,9 @@

Return Value

-

protected_derived::do_derived_shadowed

+

protected_derived::excluded_inherited

-This function should shadow the base class function. +This function should be inherited by derived classes.
@@ -740,22 +832,18 @@

Synopsis

Declared in <copy-dependencies.cpp>
-protected_derived&
-do_derived_shadowed();
+excluded_base&
+excluded_inherited();
 
 
 
-
-

Return Value

-A class that should inherit functions as protected. -
-

protected_derived::do_excluded_inherited

+

protected_derived::do_derived_shadowed

-This function should be inherited by derived classes. +This function should shadow the base class function.
@@ -764,18 +852,22 @@

Synopsis

Declared in <copy-dependencies.cpp>
-excluded_base&
-do_excluded_inherited();
+protected_derived&
+do_derived_shadowed();
 
 
 
+
+

Return Value

+A class that should inherit functions as protected. +
-

protected_derived::do_shadowed

+

protected_derived::do_excluded_inherited

-This function should be shadowed by derived classes. +This function should be inherited by derived classes.
@@ -785,7 +877,7 @@

Synopsis

Declared in <copy-dependencies.cpp>
 excluded_base&
-do_shadowed();
+do_excluded_inherited();
 
 
 
@@ -793,9 +885,9 @@

Synopsis

-

protected_derived::excluded_inherited

+

protected_derived::do_shadowed

-This function should be inherited by derived classes. +This function should be shadowed by derived classes.
@@ -805,7 +897,7 @@

Synopsis

Declared in <copy-dependencies.cpp>
 excluded_base&
-excluded_inherited();
+do_shadowed();
 
 
 
diff --git a/test-files/golden-tests/config/inherit-base-members/copy-dependencies.xml b/test-files/golden-tests/config/inherit-base-members/copy-dependencies.xml index 518a2a8f4..6c0849107 100644 --- a/test-files/golden-tests/config/inherit-base-members/copy-dependencies.xml +++ b/test-files/golden-tests/config/inherit-base-members/copy-dependencies.xml @@ -76,7 +76,7 @@ - + @@ -164,7 +164,7 @@ - + @@ -258,51 +258,35 @@ - - + + - + - This function should be indirectly inherited by derived classes. + This function should be inherited by derived classes. - - A second-order base class to test indirect inheritance - - - + + - + - This function should shadow the base class function. + This function should be indirectly inherited by derived classes. - A class that derives from base and excluded_base + A second-order base class to test indirect inheritance - - - - - - - - - - This function should be inherited by derived classes. - - - @@ -335,19 +319,19 @@ - - + + - + - This function should be shadowed by derived classes. + This function should shadow the base class function. - A base class to test inheritance and shadowing + A class that derives from base and excluded_base @@ -391,6 +375,54 @@ A class that uses private inheritance only + + + + + + + + + + This function should be indirectly inherited by derived classes. + + + A second-order base class to test indirect inheritance + + + + + + + + + + + + + This function should be inherited by derived classes. + + + A base class to test inheritance and shadowing + + + + + + + + + + + + + This function should shadow the excluded_base function. + + + A base class to test inheritance and shadowing + + + @@ -407,57 +439,72 @@ - - + + - + - This function should shadow the base class function. + This function should be inherited by derived classes. + + + + + + + + + + + + + This function should be indirectly inherited by derived classes. - A class that uses private inheritance only + A second-order base class to test indirect inheritance - - - - - - - - - - - - A class that should inherit functions as protected. - - - - + + - + - This function should shadow the base class function. + This function should be inherited by derived classes. - A class that should inherit functions as protected. + A base class to test inheritance and shadowing - - + + - + + + + + + This function should shadow the excluded_base function. + + + A base class to test inheritance and shadowing + + + + + + + + @@ -465,10 +512,50 @@ This function should shadow the base class function. - A class that should inherit functions as protected. + A class that uses private inheritance only + + + + + + + + + + This function should be inherited by derived classes. + + + + + + + + + + + + + This function should be shadowed by derived classes. + + + + + + + + + + + + + + + A class that should inherit functions as protected. + + @@ -517,23 +604,36 @@ - - + + - + - This function should be shadowed by derived classes. + This function should shadow the base class function. - A base class to test inheritance and shadowing + A class that should inherit functions as protected. - + + + + + + + + + + This function should be inherited by derived classes. + + + + @@ -581,19 +681,19 @@ - - + + - + - This function should be shadowed by derived classes. + This function should shadow the base class function. - A base class to test inheritance and shadowing + A class that should inherit functions as protected. @@ -623,19 +723,6 @@ - - - - - - - - - - This function should be inherited by derived classes. - - - diff --git a/test-files/golden-tests/config/inherit-base-members/copy.adoc b/test-files/golden-tests/config/inherit-base-members/copy.adoc index 3f9cabdfc..4f4baacdc 100644 --- a/test-files/golden-tests/config/inherit-base-members/copy.adoc +++ b/test-files/golden-tests/config/inherit-base-members/copy.adoc @@ -61,8 +61,6 @@ class base | This function should shadow the excluded_base function. | link:#base-derived_shadowed[`derived_shadowed`] | This function should be shadowed by derived classes. -| link:#base-do_base_base_inherited[`do_base_base_inherited`] -| This function should be indirectly inherited by derived classes. |=== === Protected Member Functions @@ -71,6 +69,8 @@ class base |=== | Name | Description +| link:#base-do_base_base_inherited[`do_base_base_inherited`] +| This function should be indirectly inherited by derived classes. | link:#base-do_base_inherited[`do_base_inherited`] | This function should be inherited by derived classes. | link:#base-do_base_shadowed[`do_base_shadowed`] @@ -263,6 +263,14 @@ class base_base; | Description | link:#base_base-base_base_inherited[`base_base_inherited`] | This function should be indirectly inherited by derived classes. +|=== + +=== Protected Member Functions + +[cols=2] +|=== +| Name +| Description | link:#base_base-do_base_base_inherited[`do_base_base_inherited`] | This function should be indirectly inherited by derived classes. |=== @@ -357,10 +365,6 @@ class derived | This function should shadow the excluded_base function. | link:#derived-derived_shadowed[`derived_shadowed`] | This function should shadow the base class function. -| link:#derived-do_base_base_inherited[`do_base_base_inherited`] -| This function should be indirectly inherited by derived classes. -| link:#derived-do_derived_shadowed-0a[`do_derived_shadowed`] -| This function should shadow the base class function. | link:#derived-excluded_inherited[`excluded_inherited`] | This function should be inherited by derived classes. |=== @@ -371,12 +375,14 @@ class derived |=== | Name | Description +| link:#derived-do_base_base_inherited[`do_base_base_inherited`] +| This function should be indirectly inherited by derived classes. | link:#derived-do_base_inherited[`do_base_inherited`] | This function should be inherited by derived classes. | link:#derived-do_base_shadowed[`do_base_shadowed`] | This function should shadow the excluded_base function. -| link:#derived-do_derived_shadowed-0d[`do_derived_shadowed`] -| This function should be shadowed by derived classes. +| link:#derived-do_derived_shadowed[`do_derived_shadowed`] +| This function should shadow the base class function. | link:#derived-do_excluded_inherited[`do_excluded_inherited`] | This function should be inherited by derived classes. | link:#derived-do_shadowed[`do_shadowed`] @@ -459,10 +465,10 @@ derived_shadowed(); A class that derives from base and excluded_base -[#derived-do_base_base_inherited] -== link:#derived[derived]::do_base_base_inherited +[#derived-excluded_inherited] +== link:#derived[derived]::excluded_inherited -This function should be indirectly inherited by derived classes. +This function should be inherited by derived classes. === Synopsis @@ -470,18 +476,14 @@ Declared in `<copy.cpp>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- -link:#base_base[base_base]& -do_base_base_inherited(); +excluded_base& +excluded_inherited(); ---- -=== Return Value - -A second‐order base class to test indirect inheritance - -[#derived-do_derived_shadowed-0a] -== link:#derived[derived]::do_derived_shadowed +[#derived-do_base_base_inherited] +== link:#derived[derived]::do_base_base_inherited -This function should shadow the base class function. +This function should be indirectly inherited by derived classes. === Synopsis @@ -489,28 +491,13 @@ Declared in `<copy.cpp>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- -link:#derived[derived]& -do_derived_shadowed(); +link:#base_base[base_base]& +do_base_base_inherited(); ---- === Return Value -A class that derives from base and excluded_base - -[#derived-excluded_inherited] -== link:#derived[derived]::excluded_inherited - -This function should be inherited by derived classes. - -=== Synopsis - -Declared in `<copy.cpp>` - -[source,cpp,subs="verbatim,replacements,macros,-callouts"] ----- -excluded_base& -excluded_inherited(); ----- +A second‐order base class to test indirect inheritance [#derived-do_base_inherited] == link:#derived[derived]::do_base_inherited @@ -550,10 +537,10 @@ do_base_shadowed(); A base class to test inheritance and shadowing -[#derived-do_derived_shadowed-0d] +[#derived-do_derived_shadowed] == link:#derived[derived]::do_derived_shadowed -This function should be shadowed by derived classes. +This function should shadow the base class function. === Synopsis @@ -561,13 +548,13 @@ Declared in `<copy.cpp>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- -link:#base[base]& +link:#derived[derived]& do_derived_shadowed(); ---- === Return Value -A base class to test inheritance and shadowing +A class that derives from base and excluded_base [#derived-do_excluded_inherited] == link:#derived[derived]::do_excluded_inherited @@ -621,12 +608,95 @@ class private_derived |=== | Name | Description +| link:#private_derived-base_base_inherited[`base_base_inherited`] +| This function should be indirectly inherited by derived classes. +| link:#private_derived-base_inherited[`base_inherited`] +| This function should be inherited by derived classes. +| link:#private_derived-base_shadowed[`base_shadowed`] +| This function should shadow the excluded_base function. | link:#private_derived-derived_shadowed[`derived_shadowed`] | This function should shadow the base class function. +| link:#private_derived-excluded_inherited[`excluded_inherited`] +| This function should be inherited by derived classes. +|=== + +=== Protected Member Functions + +[cols=2] +|=== +| Name +| Description +| link:#private_derived-do_base_base_inherited[`do_base_base_inherited`] +| This function should be indirectly inherited by derived classes. +| link:#private_derived-do_base_inherited[`do_base_inherited`] +| This function should be inherited by derived classes. +| link:#private_derived-do_base_shadowed[`do_base_shadowed`] +| This function should shadow the excluded_base function. | link:#private_derived-do_derived_shadowed[`do_derived_shadowed`] | This function should shadow the base class function. +| link:#private_derived-do_excluded_inherited[`do_excluded_inherited`] +| This function should be inherited by derived classes. +| link:#private_derived-do_shadowed[`do_shadowed`] +| This function should be shadowed by derived classes. |=== +[#private_derived-base_base_inherited] +== link:#private_derived[private_derived]::base_base_inherited + +This function should be indirectly inherited by derived classes. + +=== Synopsis + +Declared in `<copy.cpp>` + +[source,cpp,subs="verbatim,replacements,macros,-callouts"] +---- +link:#base_base[base_base]& +base_base_inherited(); +---- + +=== Return Value + +A second‐order base class to test indirect inheritance + +[#private_derived-base_inherited] +== link:#private_derived[private_derived]::base_inherited + +This function should be inherited by derived classes. + +=== Synopsis + +Declared in `<copy.cpp>` + +[source,cpp,subs="verbatim,replacements,macros,-callouts"] +---- +link:#base[base]& +base_inherited(); +---- + +=== Return Value + +A base class to test inheritance and shadowing + +[#private_derived-base_shadowed] +== link:#private_derived[private_derived]::base_shadowed + +This function should shadow the excluded_base function. + +=== Synopsis + +Declared in `<copy.cpp>` + +[source,cpp,subs="verbatim,replacements,macros,-callouts"] +---- +link:#base[base]& +base_shadowed(); +---- + +=== Return Value + +A base class to test inheritance and shadowing + [#private_derived-derived_shadowed] == link:#private_derived[private_derived]::derived_shadowed @@ -646,6 +716,78 @@ derived_shadowed(); A class that uses private inheritance only +[#private_derived-excluded_inherited] +== link:#private_derived[private_derived]::excluded_inherited + +This function should be inherited by derived classes. + +=== Synopsis + +Declared in `<copy.cpp>` + +[source,cpp,subs="verbatim,replacements,macros,-callouts"] +---- +excluded_base& +excluded_inherited(); +---- + +[#private_derived-do_base_base_inherited] +== link:#private_derived[private_derived]::do_base_base_inherited + +This function should be indirectly inherited by derived classes. + +=== Synopsis + +Declared in `<copy.cpp>` + +[source,cpp,subs="verbatim,replacements,macros,-callouts"] +---- +link:#base_base[base_base]& +do_base_base_inherited(); +---- + +=== Return Value + +A second‐order base class to test indirect inheritance + +[#private_derived-do_base_inherited] +== link:#private_derived[private_derived]::do_base_inherited + +This function should be inherited by derived classes. + +=== Synopsis + +Declared in `<copy.cpp>` + +[source,cpp,subs="verbatim,replacements,macros,-callouts"] +---- +link:#base[base]& +do_base_inherited(); +---- + +=== Return Value + +A base class to test inheritance and shadowing + +[#private_derived-do_base_shadowed] +== link:#private_derived[private_derived]::do_base_shadowed + +This function should shadow the excluded_base function. + +=== Synopsis + +Declared in `<copy.cpp>` + +[source,cpp,subs="verbatim,replacements,macros,-callouts"] +---- +link:#base[base]& +do_base_shadowed(); +---- + +=== Return Value + +A base class to test inheritance and shadowing + [#private_derived-do_derived_shadowed] == link:#private_derived[private_derived]::do_derived_shadowed @@ -665,6 +807,36 @@ do_derived_shadowed(); A class that uses private inheritance only +[#private_derived-do_excluded_inherited] +== link:#private_derived[private_derived]::do_excluded_inherited + +This function should be inherited by derived classes. + +=== Synopsis + +Declared in `<copy.cpp>` + +[source,cpp,subs="verbatim,replacements,macros,-callouts"] +---- +excluded_base& +do_excluded_inherited(); +---- + +[#private_derived-do_shadowed] +== link:#private_derived[private_derived]::do_shadowed + +This function should be shadowed by derived classes. + +=== Synopsis + +Declared in `<copy.cpp>` + +[source,cpp,subs="verbatim,replacements,macros,-callouts"] +---- +excluded_base& +do_shadowed(); +---- + [#protected_derived] == protected_derived @@ -699,10 +871,16 @@ class protected_derived |=== | Name | Description -| link:#protected_derived-derived_shadowed-0a[`derived_shadowed`] -| This function should shadow the base class function. -| link:#protected_derived-do_derived_shadowed-0e[`do_derived_shadowed`] +| link:#protected_derived-base_base_inherited[`base_base_inherited`] +| This function should be indirectly inherited by derived classes. +| link:#protected_derived-base_inherited[`base_inherited`] +| This function should be inherited by derived classes. +| link:#protected_derived-base_shadowed[`base_shadowed`] +| This function should shadow the excluded_base function. +| link:#protected_derived-derived_shadowed[`derived_shadowed`] | This function should shadow the base class function. +| link:#protected_derived-excluded_inherited[`excluded_inherited`] +| This function should be inherited by derived classes. |=== === Protected Member Functions @@ -711,68 +889,20 @@ class protected_derived |=== | Name | Description -| link:#protected_derived-base_base_inherited[`base_base_inherited`] -| This function should be indirectly inherited by derived classes. -| link:#protected_derived-base_inherited[`base_inherited`] -| This function should be inherited by derived classes. -| link:#protected_derived-base_shadowed[`base_shadowed`] -| This function should shadow the excluded_base function. -| link:#protected_derived-derived_shadowed-0f[`derived_shadowed`] -| This function should be shadowed by derived classes. | link:#protected_derived-do_base_base_inherited[`do_base_base_inherited`] | This function should be indirectly inherited by derived classes. | link:#protected_derived-do_base_inherited[`do_base_inherited`] | This function should be inherited by derived classes. | link:#protected_derived-do_base_shadowed[`do_base_shadowed`] | This function should shadow the excluded_base function. -| link:#protected_derived-do_derived_shadowed-06[`do_derived_shadowed`] -| This function should be shadowed by derived classes. +| link:#protected_derived-do_derived_shadowed[`do_derived_shadowed`] +| This function should shadow the base class function. | link:#protected_derived-do_excluded_inherited[`do_excluded_inherited`] | This function should be inherited by derived classes. | link:#protected_derived-do_shadowed[`do_shadowed`] | This function should be shadowed by derived classes. -| link:#protected_derived-excluded_inherited[`excluded_inherited`] -| This function should be inherited by derived classes. |=== -[#protected_derived-derived_shadowed-0a] -== link:#protected_derived[protected_derived]::derived_shadowed - -This function should shadow the base class function. - -=== Synopsis - -Declared in `<copy.cpp>` - -[source,cpp,subs="verbatim,replacements,macros,-callouts"] ----- -link:#protected_derived[protected_derived]& -derived_shadowed(); ----- - -=== Return Value - -A class that should inherit functions as protected. - -[#protected_derived-do_derived_shadowed-0e] -== link:#protected_derived[protected_derived]::do_derived_shadowed - -This function should shadow the base class function. - -=== Synopsis - -Declared in `<copy.cpp>` - -[source,cpp,subs="verbatim,replacements,macros,-callouts"] ----- -link:#protected_derived[protected_derived]& -do_derived_shadowed(); ----- - -=== Return Value - -A class that should inherit functions as protected. - [#protected_derived-base_base_inherited] == link:#protected_derived[protected_derived]::base_base_inherited @@ -830,10 +960,10 @@ base_shadowed(); A base class to test inheritance and shadowing -[#protected_derived-derived_shadowed-0f] +[#protected_derived-derived_shadowed] == link:#protected_derived[protected_derived]::derived_shadowed -This function should be shadowed by derived classes. +This function should shadow the base class function. === Synopsis @@ -841,13 +971,28 @@ Declared in `<copy.cpp>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- -link:#base[base]& +link:#protected_derived[protected_derived]& derived_shadowed(); ---- === Return Value -A base class to test inheritance and shadowing +A class that should inherit functions as protected. + +[#protected_derived-excluded_inherited] +== link:#protected_derived[protected_derived]::excluded_inherited + +This function should be inherited by derived classes. + +=== Synopsis + +Declared in `<copy.cpp>` + +[source,cpp,subs="verbatim,replacements,macros,-callouts"] +---- +excluded_base& +excluded_inherited(); +---- [#protected_derived-do_base_base_inherited] == link:#protected_derived[protected_derived]::do_base_base_inherited @@ -906,10 +1051,10 @@ do_base_shadowed(); A base class to test inheritance and shadowing -[#protected_derived-do_derived_shadowed-06] +[#protected_derived-do_derived_shadowed] == link:#protected_derived[protected_derived]::do_derived_shadowed -This function should be shadowed by derived classes. +This function should shadow the base class function. === Synopsis @@ -917,13 +1062,13 @@ Declared in `<copy.cpp>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- -link:#base[base]& +link:#protected_derived[protected_derived]& do_derived_shadowed(); ---- === Return Value -A base class to test inheritance and shadowing +A class that should inherit functions as protected. [#protected_derived-do_excluded_inherited] == link:#protected_derived[protected_derived]::do_excluded_inherited @@ -955,20 +1100,5 @@ excluded_base& do_shadowed(); ---- -[#protected_derived-excluded_inherited] -== link:#protected_derived[protected_derived]::excluded_inherited - -This function should be inherited by derived classes. - -=== Synopsis - -Declared in `<copy.cpp>` - -[source,cpp,subs="verbatim,replacements,macros,-callouts"] ----- -excluded_base& -excluded_inherited(); ----- - [.small]#Created with https://www.mrdocs.com[MrDocs]# diff --git a/test-files/golden-tests/config/inherit-base-members/copy.cpp b/test-files/golden-tests/config/inherit-base-members/copy.cpp index eff6deaf5..0a5efa42c 100644 --- a/test-files/golden-tests/config/inherit-base-members/copy.cpp +++ b/test-files/golden-tests/config/inherit-base-members/copy.cpp @@ -21,7 +21,7 @@ class base_base { public: /// This function should be indirectly inherited by derived classes. base_base& base_base_inherited(); -public: +protected: /// This function should be indirectly inherited by derived classes. base_base& do_base_base_inherited(); }; @@ -54,7 +54,7 @@ class derived public: /// This function should shadow the base class function. derived& derived_shadowed(); -public: +protected: /// This function should shadow the base class function. derived& do_derived_shadowed(); }; @@ -67,7 +67,7 @@ class protected_derived public: /// This function should shadow the base class function. protected_derived& derived_shadowed(); -public: +protected: /// This function should shadow the base class function. protected_derived& do_derived_shadowed(); }; @@ -80,7 +80,7 @@ class private_derived public: /// This function should shadow the base class function. private_derived& derived_shadowed(); -public: +protected: /// This function should shadow the base class function. private_derived& do_derived_shadowed(); }; diff --git a/test-files/golden-tests/config/inherit-base-members/copy.html b/test-files/golden-tests/config/inherit-base-members/copy.html index 781fd9edf..5550bfaa0 100644 --- a/test-files/golden-tests/config/inherit-base-members/copy.html +++ b/test-files/golden-tests/config/inherit-base-members/copy.html @@ -74,8 +74,7 @@

Member Functions

base_base_inherited This function should be indirectly inherited by derived classes. base_inherited This function should be inherited by derived classes. base_shadowed This function should shadow the excluded_base function. -derived_shadowed This function should be shadowed by derived classes. -do_base_base_inherited This function should be indirectly inherited by derived classes. +derived_shadowed This function should be shadowed by derived classes. @@ -90,6 +89,7 @@

Protected Member Functions

+do_base_base_inherited This function should be indirectly inherited by derived classes. do_base_inherited This function should be inherited by derived classes. do_base_shadowed This function should shadow the excluded_base function. do_derived_shadowed This function should be shadowed by derived classes. @@ -333,12 +333,25 @@

Member Functions

-base_base_inherited This function should be indirectly inherited by derived classes. -do_base_base_inherited This function should be indirectly inherited by derived classes. +base_base_inherited This function should be indirectly inherited by derived classes. +

Protected Member Functions

+ + + + + + + + + + + +
NameDescription
do_base_base_inherited This function should be indirectly inherited by derived classes.
+

Derived Classes

@@ -453,8 +466,6 @@

Member Functions

base_inherited This function should be inherited by derived classes. base_shadowed This function should shadow the excluded_base function. derived_shadowed This function should shadow the base class function. -do_base_base_inherited This function should be indirectly inherited by derived classes. -do_derived_shadowed This function should shadow the base class function. excluded_inherited This function should be inherited by derived classes. @@ -470,9 +481,10 @@

Protected Member Functions

+do_base_base_inherited This function should be indirectly inherited by derived classes. do_base_inherited This function should be inherited by derived classes. do_base_shadowed This function should shadow the excluded_base function. -do_derived_shadowed This function should be shadowed by derived classes. +do_derived_shadowed This function should shadow the base class function. do_excluded_inherited This function should be inherited by derived classes. do_shadowed This function should be shadowed by derived classes. @@ -578,9 +590,9 @@

Return Value

-

derived::do_base_base_inherited

+

derived::excluded_inherited

-This function should be indirectly inherited by derived classes. +This function should be inherited by derived classes.
@@ -589,22 +601,18 @@

Synopsis

Declared in <copy.cpp>
-base_base&
-do_base_base_inherited();
+excluded_base&
+excluded_inherited();
 
 
 
-
-

Return Value

-A second-order base class to test indirect inheritance -
-

derived::do_derived_shadowed

+

derived::do_base_base_inherited

-This function should shadow the base class function. +This function should be indirectly inherited by derived classes.
@@ -613,35 +621,15 @@

Synopsis

Declared in <copy.cpp>
-derived&
-do_derived_shadowed();
+base_base&
+do_base_base_inherited();
 
 
 

Return Value

-A class that derives from base and excluded_base -
-
-
-
-

derived::excluded_inherited

-
-This function should be inherited by derived classes. - -
-
-
-

Synopsis

-
-Declared in <copy.cpp>
-
-excluded_base&
-excluded_inherited();
-
-
-
+A second-order base class to test indirect inheritance
@@ -694,9 +682,9 @@

Return Value

-

derived::do_derived_shadowed

+

derived::do_derived_shadowed

-This function should be shadowed by derived classes. +This function should shadow the base class function.
@@ -705,7 +693,7 @@

Synopsis

Declared in <copy.cpp>
-base&
+derived&
 do_derived_shadowed();
 
 
@@ -713,7 +701,7 @@ 

Synopsis

Return Value

-A base class to test inheritance and shadowing +A class that derives from base and excluded_base
@@ -786,13 +774,107 @@

Member Functions

+base_base_inherited This function should be indirectly inherited by derived classes. +base_inherited This function should be inherited by derived classes. +base_shadowed This function should shadow the excluded_base function. derived_shadowed This function should shadow the base class function. -do_derived_shadowed This function should shadow the base class function. +excluded_inherited This function should be inherited by derived classes. +

Protected Member Functions

+ + + + + + + + + + + + + + + + +
NameDescription
do_base_base_inherited This function should be indirectly inherited by derived classes.
do_base_inherited This function should be inherited by derived classes.
do_base_shadowed This function should shadow the excluded_base function.
do_derived_shadowed This function should shadow the base class function.
do_excluded_inherited This function should be inherited by derived classes.
do_shadowed This function should be shadowed by derived classes.
+ +
+
+
+

private_derived::base_base_inherited

+
+This function should be indirectly inherited by derived classes. + +
+
+
+

Synopsis

+
+Declared in <copy.cpp>
+
+base_base&
+base_base_inherited();
+
+
+
+
+
+

Return Value

+A second-order base class to test indirect inheritance +
+
+
+
+

private_derived::base_inherited

+
+This function should be inherited by derived classes. + +
+
+
+

Synopsis

+
+Declared in <copy.cpp>
+
+base&
+base_inherited();
+
+
+
+
+
+

Return Value

+A base class to test inheritance and shadowing +
+
+
+
+

private_derived::base_shadowed

+
+This function should shadow the excluded_base function. + +
+
+
+

Synopsis

+
+Declared in <copy.cpp>
+
+base&
+base_shadowed();
+
+
+
+
+
+

Return Value

+A base class to test inheritance and shadowing +
@@ -820,6 +902,98 @@

Return Value

+

private_derived::excluded_inherited

+
+This function should be inherited by derived classes. + +
+
+
+

Synopsis

+
+Declared in <copy.cpp>
+
+excluded_base&
+excluded_inherited();
+
+
+
+
+
+
+
+

private_derived::do_base_base_inherited

+
+This function should be indirectly inherited by derived classes. + +
+
+
+

Synopsis

+
+Declared in <copy.cpp>
+
+base_base&
+do_base_base_inherited();
+
+
+
+
+
+

Return Value

+A second-order base class to test indirect inheritance +
+
+
+
+

private_derived::do_base_inherited

+
+This function should be inherited by derived classes. + +
+
+
+

Synopsis

+
+Declared in <copy.cpp>
+
+base&
+do_base_inherited();
+
+
+
+
+
+

Return Value

+A base class to test inheritance and shadowing +
+
+
+
+

private_derived::do_base_shadowed

+
+This function should shadow the excluded_base function. + +
+
+
+

Synopsis

+
+Declared in <copy.cpp>
+
+base&
+do_base_shadowed();
+
+
+
+
+
+

Return Value

+A base class to test inheritance and shadowing +
+
+
+

private_derived::do_derived_shadowed

This function should shadow the base class function. @@ -844,6 +1018,46 @@

Return Value

+

private_derived::do_excluded_inherited

+
+This function should be inherited by derived classes. + +
+
+
+

Synopsis

+
+Declared in <copy.cpp>
+
+excluded_base&
+do_excluded_inherited();
+
+
+
+
+
+
+
+

private_derived::do_shadowed

+
+This function should be shadowed by derived classes. + +
+
+
+

Synopsis

+
+Declared in <copy.cpp>
+
+excluded_base&
+do_shadowed();
+
+
+
+
+
+
+

protected_derived

A class that should inherit functions as protected. @@ -887,8 +1101,11 @@

Member Functions

-derived_shadowed This function should shadow the base class function. -do_derived_shadowed This function should shadow the base class function. +base_base_inherited This function should be indirectly inherited by derived classes. +base_inherited This function should be inherited by derived classes. +base_shadowed This function should shadow the excluded_base function. +derived_shadowed This function should shadow the base class function. +excluded_inherited This function should be inherited by derived classes. @@ -903,17 +1120,12 @@

Protected Member Functions

-base_base_inherited This function should be indirectly inherited by derived classes. -base_inherited This function should be inherited by derived classes. -base_shadowed This function should shadow the excluded_base function. -derived_shadowed This function should be shadowed by derived classes. do_base_base_inherited This function should be indirectly inherited by derived classes. do_base_inherited This function should be inherited by derived classes. do_base_shadowed This function should shadow the excluded_base function. -do_derived_shadowed This function should be shadowed by derived classes. +do_derived_shadowed This function should shadow the base class function. do_excluded_inherited This function should be inherited by derived classes. -do_shadowed This function should be shadowed by derived classes. -excluded_inherited This function should be inherited by derived classes. +do_shadowed This function should be shadowed by derived classes. @@ -921,33 +1133,9 @@

Protected Member Functions

-

protected_derived::derived_shadowed

-
-This function should shadow the base class function. - -
-
-
-

Synopsis

-
-Declared in <copy.cpp>
-
-protected_derived&
-derived_shadowed();
-
-
-
-
-
-

Return Value

-A class that should inherit functions as protected. -
-
-
-
-

protected_derived::do_derived_shadowed

+

protected_derived::base_base_inherited

-This function should shadow the base class function. +This function should be indirectly inherited by derived classes.
@@ -956,22 +1144,22 @@

Synopsis

Declared in <copy.cpp>
-protected_derived&
-do_derived_shadowed();
+base_base&
+base_base_inherited();
 
 
 

Return Value

-A class that should inherit functions as protected. +A second-order base class to test indirect inheritance
-

protected_derived::base_base_inherited

+

protected_derived::base_inherited

-This function should be indirectly inherited by derived classes. +This function should be inherited by derived classes.
@@ -980,22 +1168,22 @@

Synopsis

Declared in <copy.cpp>
-base_base&
-base_base_inherited();
+base&
+base_inherited();
 
 
 

Return Value

-A second-order base class to test indirect inheritance +A base class to test inheritance and shadowing
-

protected_derived::base_inherited

+

protected_derived::base_shadowed

-This function should be inherited by derived classes. +This function should shadow the excluded_base function.
@@ -1005,7 +1193,7 @@

Synopsis

Declared in <copy.cpp>
 base&
-base_inherited();
+base_shadowed();
 
 
 
@@ -1017,9 +1205,9 @@

Return Value

-

protected_derived::base_shadowed

+

protected_derived::derived_shadowed

-This function should shadow the excluded_base function. +This function should shadow the base class function.
@@ -1028,22 +1216,22 @@

Synopsis

Declared in <copy.cpp>
-base&
-base_shadowed();
+protected_derived&
+derived_shadowed();
 
 
 

Return Value

-A base class to test inheritance and shadowing +A class that should inherit functions as protected.
-

protected_derived::derived_shadowed

+

protected_derived::excluded_inherited

-This function should be shadowed by derived classes. +This function should be inherited by derived classes.
@@ -1052,16 +1240,12 @@

Synopsis

Declared in <copy.cpp>
-base&
-derived_shadowed();
+excluded_base&
+excluded_inherited();
 
 
 
-
-

Return Value

-A base class to test inheritance and shadowing -
@@ -1137,9 +1321,9 @@

Return Value

-

protected_derived::do_derived_shadowed

+

protected_derived::do_derived_shadowed

-This function should be shadowed by derived classes. +This function should shadow the base class function.
@@ -1148,7 +1332,7 @@

Synopsis

Declared in <copy.cpp>
-base&
+protected_derived&
 do_derived_shadowed();
 
 
@@ -1156,7 +1340,7 @@ 

Synopsis

Return Value

-A base class to test inheritance and shadowing +A class that should inherit functions as protected.
@@ -1195,26 +1379,6 @@

Synopsis

excluded_base& do_shadowed(); - - -
-
-
-
-

protected_derived::excluded_inherited

-
-This function should be inherited by derived classes. - -
-
-
-

Synopsis

-
-Declared in <copy.cpp>
-
-excluded_base&
-excluded_inherited();
-
 
 
diff --git a/test-files/golden-tests/config/inherit-base-members/copy.xml b/test-files/golden-tests/config/inherit-base-members/copy.xml index e2a9fdb77..ca309c2a0 100644 --- a/test-files/golden-tests/config/inherit-base-members/copy.xml +++ b/test-files/golden-tests/config/inherit-base-members/copy.xml @@ -76,7 +76,7 @@ - + @@ -164,7 +164,7 @@ - + @@ -258,51 +258,35 @@ - - + + - + - This function should be indirectly inherited by derived classes. + This function should be inherited by derived classes. - - A second-order base class to test indirect inheritance - - - + + - + - This function should shadow the base class function. + This function should be indirectly inherited by derived classes. - A class that derives from base and excluded_base + A second-order base class to test indirect inheritance - - - - - - - - - - This function should be inherited by derived classes. - - - @@ -335,19 +319,19 @@ - - + + - + - This function should be shadowed by derived classes. + This function should shadow the base class function. - A base class to test inheritance and shadowing + A class that derives from base and excluded_base @@ -391,6 +375,54 @@ A class that uses private inheritance only + + + + + + + + + + This function should be indirectly inherited by derived classes. + + + A second-order base class to test indirect inheritance + + + + + + + + + + + + + This function should be inherited by derived classes. + + + A base class to test inheritance and shadowing + + + + + + + + + + + + + This function should shadow the excluded_base function. + + + A base class to test inheritance and shadowing + + + @@ -407,57 +439,72 @@ - - + + - + - This function should shadow the base class function. + This function should be inherited by derived classes. + + + + + + + + + + + + + This function should be indirectly inherited by derived classes. - A class that uses private inheritance only + A second-order base class to test indirect inheritance - - - - - - - - - - - - A class that should inherit functions as protected. - - - - + + - + - This function should shadow the base class function. + This function should be inherited by derived classes. - A class that should inherit functions as protected. + A base class to test inheritance and shadowing - - + + - + + + + + + This function should shadow the excluded_base function. + + + A base class to test inheritance and shadowing + + + + + + + + @@ -465,10 +512,50 @@ This function should shadow the base class function. - A class that should inherit functions as protected. + A class that uses private inheritance only + + + + + + + + + + This function should be inherited by derived classes. + + + + + + + + + + + + + This function should be shadowed by derived classes. + + + + + + + + + + + + + + + A class that should inherit functions as protected. + + @@ -517,23 +604,36 @@ - - + + - + - This function should be shadowed by derived classes. + This function should shadow the base class function. - A base class to test inheritance and shadowing + A class that should inherit functions as protected. - + + + + + + + + + + This function should be inherited by derived classes. + + + + @@ -581,19 +681,19 @@ - - + + - + - This function should be shadowed by derived classes. + This function should shadow the base class function. - A base class to test inheritance and shadowing + A class that should inherit functions as protected. @@ -623,19 +723,6 @@ - - - - - - - - - - This function should be inherited by derived classes. - - - diff --git a/test-files/golden-tests/config/inherit-base-members/nested.adoc b/test-files/golden-tests/config/inherit-base-members/nested.adoc new file mode 100644 index 000000000..20a330d58 --- /dev/null +++ b/test-files/golden-tests/config/inherit-base-members/nested.adoc @@ -0,0 +1,289 @@ += Reference +:mrdocs: + +[#index] +== Global namespace + +=== Types + +[cols=1] +|=== +| Name +| link:#X[`X`] +|=== + +[#X] +== X + +=== Synopsis + +Declared in `<nested.cpp>` + +[source,cpp,subs="verbatim,replacements,macros,-callouts"] +---- +struct X; +---- + +=== Types + +[cols=2] +|=== +| Name +| Description +| link:#X-base[`base`] +| A base class to test inheritance and shadowing +| link:#X-derived[`derived`] +| A class that derives from base and excluded_base +|=== + +[#X-base] +== link:#X[X]::base + +A base class to test inheritance and shadowing + +=== Synopsis + +Declared in `<nested.cpp>` + +[source,cpp,subs="verbatim,replacements,macros,-callouts"] +---- +class base; +---- + +=== Member Functions + +[cols=2] +|=== +| Name +| Description +| link:#X-base-derived_shadowed[`derived_shadowed`] +| This function should be shadowed by derived classes. +| link:#X-base-base_inherited[`base_inherited`] +| This function should be inherited by derived classes. +|=== + +=== Protected Member Functions + +[cols=2] +|=== +| Name +| Description +| link:#X-base-do_derived_shadowed[`do_derived_shadowed`] +| This function should be shadowed by derived classes. +| link:#X-base-do_base_inherited[`do_base_inherited`] +| This function should be inherited by derived classes. +|=== + +=== Derived Classes + +[cols=2] +|=== +| Name +| Description +| link:#X-derived[`derived`] +| A class that derives from base and excluded_base +|=== + +[#X-base-derived_shadowed] +== link:#X[X]::link:#X-base[base]::derived_shadowed + +This function should be shadowed by derived classes. + +=== Synopsis + +Declared in `<nested.cpp>` + +[source,cpp,subs="verbatim,replacements,macros,-callouts"] +---- +link:#X-base[base]& +derived_shadowed(); +---- + +=== Return Value + +A base class to test inheritance and shadowing + +[#X-base-base_inherited] +== link:#X[X]::link:#X-base[base]::base_inherited + +This function should be inherited by derived classes. + +=== Synopsis + +Declared in `<nested.cpp>` + +[source,cpp,subs="verbatim,replacements,macros,-callouts"] +---- +link:#X-base[base]& +base_inherited(); +---- + +=== Return Value + +A base class to test inheritance and shadowing + +[#X-base-do_derived_shadowed] +== link:#X[X]::link:#X-base[base]::do_derived_shadowed + +This function should be shadowed by derived classes. + +=== Synopsis + +Declared in `<nested.cpp>` + +[source,cpp,subs="verbatim,replacements,macros,-callouts"] +---- +link:#X-base[base]& +do_derived_shadowed(); +---- + +=== Return Value + +A base class to test inheritance and shadowing + +[#X-base-do_base_inherited] +== link:#X[X]::link:#X-base[base]::do_base_inherited + +This function should be inherited by derived classes. + +=== Synopsis + +Declared in `<nested.cpp>` + +[source,cpp,subs="verbatim,replacements,macros,-callouts"] +---- +link:#X-base[base]& +do_base_inherited(); +---- + +=== Return Value + +A base class to test inheritance and shadowing + +[#X-derived] +== link:#X[X]::derived + +A class that derives from base and excluded_base + +=== Synopsis + +Declared in `<nested.cpp>` + +[source,cpp,subs="verbatim,replacements,macros,-callouts"] +---- +class derived + : public link:#X-base[base] +---- + +=== Base Classes + +[cols=2] +|=== +| Name +| Description +| `link:#X-base[base]` +| A base class to test inheritance and shadowing +|=== + +=== Member Functions + +[cols=2] +|=== +| Name +| Description +| link:#X-derived-derived_shadowed[`derived_shadowed`] +| This function should shadow the base class function. +| link:#X-derived-base_inherited[`base_inherited`] +| This function should be inherited by derived classes. +|=== + +=== Protected Member Functions + +[cols=2] +|=== +| Name +| Description +| link:#X-derived-do_derived_shadowed[`do_derived_shadowed`] +| This function should shadow the base class function. +| link:#X-derived-do_base_inherited[`do_base_inherited`] +| This function should be inherited by derived classes. +|=== + +[#X-derived-derived_shadowed] +== link:#X[X]::link:#X-derived[derived]::derived_shadowed + +This function should shadow the base class function. + +=== Synopsis + +Declared in `<nested.cpp>` + +[source,cpp,subs="verbatim,replacements,macros,-callouts"] +---- +link:#X-derived[derived]& +derived_shadowed(); +---- + +=== Return Value + +A class that derives from base and excluded_base + +[#X-derived-base_inherited] +== link:#X[X]::link:#X-derived[derived]::base_inherited + +This function should be inherited by derived classes. + +=== Synopsis + +Declared in `<nested.cpp>` + +[source,cpp,subs="verbatim,replacements,macros,-callouts"] +---- +link:#X-base[base]& +base_inherited(); +---- + +=== Return Value + +A base class to test inheritance and shadowing + +[#X-derived-do_derived_shadowed] +== link:#X[X]::link:#X-derived[derived]::do_derived_shadowed + +This function should shadow the base class function. + +=== Synopsis + +Declared in `<nested.cpp>` + +[source,cpp,subs="verbatim,replacements,macros,-callouts"] +---- +link:#X-derived[derived]& +do_derived_shadowed(); +---- + +=== Return Value + +A class that derives from base and excluded_base + +[#X-derived-do_base_inherited] +== link:#X[X]::link:#X-derived[derived]::do_base_inherited + +This function should be inherited by derived classes. + +=== Synopsis + +Declared in `<nested.cpp>` + +[source,cpp,subs="verbatim,replacements,macros,-callouts"] +---- +link:#X-base[base]& +do_base_inherited(); +---- + +=== Return Value + +A base class to test inheritance and shadowing + + +[.small]#Created with https://www.mrdocs.com[MrDocs]# diff --git a/test-files/golden-tests/config/inherit-base-members/nested.cpp b/test-files/golden-tests/config/inherit-base-members/nested.cpp new file mode 100644 index 000000000..8964f0693 --- /dev/null +++ b/test-files/golden-tests/config/inherit-base-members/nested.cpp @@ -0,0 +1,29 @@ +struct X +{ + /// A base class to test inheritance and shadowing + class base + { + public: + /// This function should be shadowed by derived classes. + base& derived_shadowed(); + /// This function should be inherited by derived classes. + base& base_inherited(); + protected: + /// This function should be shadowed by derived classes. + base& do_derived_shadowed(); + /// This function should be inherited by derived classes. + base& do_base_inherited(); + }; + + /// A class that derives from base and excluded_base + class derived + : public base + { + public: + /// This function should shadow the base class function. + derived& derived_shadowed(); + protected: + /// This function should shadow the base class function. + derived& do_derived_shadowed(); + }; +}; diff --git a/test-files/golden-tests/config/inherit-base-members/nested.html b/test-files/golden-tests/config/inherit-base-members/nested.html new file mode 100644 index 000000000..f4ee58099 --- /dev/null +++ b/test-files/golden-tests/config/inherit-base-members/nested.html @@ -0,0 +1,388 @@ + + +Reference + + +
+

Reference

+
+
+

+
+

Types

+ + + + + + + + + + +
Name
X
+ +
+
+
+

X

+
+
+

Synopsis

+
+Declared in <nested.cpp>
+
+struct X;
+
+
+
+
+

Types

+ + + + + + + + + + + + +
NameDescription
base A base class to test inheritance and shadowing
derived A class that derives from base and excluded_base
+ + + +
+
+
+

X::base

+
+A base class to test inheritance and shadowing + +
+
+
+

Synopsis

+
+Declared in <nested.cpp>
+
+class base;
+
+
+
+
+

Member Functions

+ + + + + + + + + + + + +
NameDescription
derived_shadowed This function should be shadowed by derived classes.
base_inherited This function should be inherited by derived classes.
+ + +

Protected Member Functions

+ + + + + + + + + + + + +
NameDescription
do_derived_shadowed This function should be shadowed by derived classes.
do_base_inherited This function should be inherited by derived classes.
+ + +
+

Derived Classes

+ + + + + + + + + + +
NameDescription
derived + A class that derives from base and excluded_base
+
+
+
+
+

X::base::derived_shadowed

+
+This function should be shadowed by derived classes. + +
+
+
+

Synopsis

+
+Declared in <nested.cpp>
+
+base&
+derived_shadowed();
+
+
+
+
+
+

Return Value

+A base class to test inheritance and shadowing +
+
+
+
+

X::base::base_inherited

+
+This function should be inherited by derived classes. + +
+
+
+

Synopsis

+
+Declared in <nested.cpp>
+
+base&
+base_inherited();
+
+
+
+
+
+

Return Value

+A base class to test inheritance and shadowing +
+
+
+
+

X::base::do_derived_shadowed

+
+This function should be shadowed by derived classes. + +
+
+
+

Synopsis

+
+Declared in <nested.cpp>
+
+base&
+do_derived_shadowed();
+
+
+
+
+
+

Return Value

+A base class to test inheritance and shadowing +
+
+
+
+

X::base::do_base_inherited

+
+This function should be inherited by derived classes. + +
+
+
+

Synopsis

+
+Declared in <nested.cpp>
+
+base&
+do_base_inherited();
+
+
+
+
+
+

Return Value

+A base class to test inheritance and shadowing +
+
+
+
+

X::derived

+
+A class that derives from base and excluded_base + +
+
+
+

Synopsis

+
+Declared in <nested.cpp>
+
+class derived
+    : public base
+
+
+
+
+
+

Base Classes

+ + + + + + + + + + +
NameDescription
baseA base class to test inheritance and shadowing
+
+

Member Functions

+ + + + + + + + + + + + +
NameDescription
derived_shadowed This function should shadow the base class function.
base_inherited This function should be inherited by derived classes.
+ + +

Protected Member Functions

+ + + + + + + + + + + + +
NameDescription
do_derived_shadowed This function should shadow the base class function.
do_base_inherited This function should be inherited by derived classes.
+ + +
+
+
+

X::derived::derived_shadowed

+
+This function should shadow the base class function. + +
+
+
+

Synopsis

+
+Declared in <nested.cpp>
+
+derived&
+derived_shadowed();
+
+
+
+
+
+

Return Value

+A class that derives from base and excluded_base +
+
+
+
+

X::derived::base_inherited

+
+This function should be inherited by derived classes. + +
+
+
+

Synopsis

+
+Declared in <nested.cpp>
+
+base&
+base_inherited();
+
+
+
+
+
+

Return Value

+A base class to test inheritance and shadowing +
+
+
+
+

X::derived::do_derived_shadowed

+
+This function should shadow the base class function. + +
+
+
+

Synopsis

+
+Declared in <nested.cpp>
+
+derived&
+do_derived_shadowed();
+
+
+
+
+
+

Return Value

+A class that derives from base and excluded_base +
+
+
+
+

X::derived::do_base_inherited

+
+This function should be inherited by derived classes. + +
+
+
+

Synopsis

+
+Declared in <nested.cpp>
+
+base&
+do_base_inherited();
+
+
+
+
+
+

Return Value

+A base class to test inheritance and shadowing +
+
+ +
+
+

Created with MrDocs

+
+ + \ No newline at end of file diff --git a/test-files/golden-tests/config/inherit-base-members/nested.xml b/test-files/golden-tests/config/inherit-base-members/nested.xml new file mode 100644 index 000000000..b75b18a8f --- /dev/null +++ b/test-files/golden-tests/config/inherit-base-members/nested.xml @@ -0,0 +1,156 @@ + + + + + + + + + + A base class to test inheritance and shadowing + + + + + + + + + + + + This function should be shadowed by derived classes. + + + A base class to test inheritance and shadowing + + + + + + + + + + + + + This function should be inherited by derived classes. + + + A base class to test inheritance and shadowing + + + + + + + + + + + + + This function should be shadowed by derived classes. + + + A base class to test inheritance and shadowing + + + + + + + + + + + + + This function should be inherited by derived classes. + + + A base class to test inheritance and shadowing + + + + + + + + + + + + A class that derives from base and excluded_base + + + + + + + + + + + + This function should shadow the base class function. + + + A class that derives from base and excluded_base + + + + + + + + + + + + + This function should be inherited by derived classes. + + + A base class to test inheritance and shadowing + + + + + + + + + + + + + This function should shadow the base class function. + + + A class that derives from base and excluded_base + + + + + + + + + + + + + This function should be inherited by derived classes. + + + A base class to test inheritance and shadowing + + + + + + + diff --git a/test-files/golden-tests/config/inherit-base-members/nested.yml b/test-files/golden-tests/config/inherit-base-members/nested.yml new file mode 100644 index 000000000..5a9766d7f --- /dev/null +++ b/test-files/golden-tests/config/inherit-base-members/nested.yml @@ -0,0 +1,5 @@ +inherit-base-members: copy-all +exclude-symbols: + - excluded_base +extract-private-bases: true +warn-no-paramdoc: false \ No newline at end of file diff --git a/test-files/golden-tests/config/inherit-base-members/never.adoc b/test-files/golden-tests/config/inherit-base-members/never.adoc index 12603fb45..266ab76ce 100644 --- a/test-files/golden-tests/config/inherit-base-members/never.adoc +++ b/test-files/golden-tests/config/inherit-base-members/never.adoc @@ -221,6 +221,14 @@ class base_base; | Description | link:#base_base-base_base_inherited[`base_base_inherited`] | This function should be indirectly inherited by derived classes. +|=== + +=== Protected Member Functions + +[cols=2] +|=== +| Name +| Description | link:#base_base-do_base_base_inherited[`do_base_base_inherited`] | This function should be indirectly inherited by derived classes. |=== @@ -309,6 +317,14 @@ class derived | Description | link:#derived-derived_shadowed[`derived_shadowed`] | This function should shadow the base class function. +|=== + +=== Protected Member Functions + +[cols=2] +|=== +| Name +| Description | link:#derived-do_derived_shadowed[`do_derived_shadowed`] | This function should shadow the base class function. |=== @@ -375,6 +391,14 @@ class private_derived | Description | link:#private_derived-derived_shadowed[`derived_shadowed`] | This function should shadow the base class function. +|=== + +=== Protected Member Functions + +[cols=2] +|=== +| Name +| Description | link:#private_derived-do_derived_shadowed[`do_derived_shadowed`] | This function should shadow the base class function. |=== @@ -453,6 +477,14 @@ class protected_derived | Description | link:#protected_derived-derived_shadowed[`derived_shadowed`] | This function should shadow the base class function. +|=== + +=== Protected Member Functions + +[cols=2] +|=== +| Name +| Description | link:#protected_derived-do_derived_shadowed[`do_derived_shadowed`] | This function should shadow the base class function. |=== diff --git a/test-files/golden-tests/config/inherit-base-members/never.cpp b/test-files/golden-tests/config/inherit-base-members/never.cpp index eff6deaf5..0a5efa42c 100644 --- a/test-files/golden-tests/config/inherit-base-members/never.cpp +++ b/test-files/golden-tests/config/inherit-base-members/never.cpp @@ -21,7 +21,7 @@ class base_base { public: /// This function should be indirectly inherited by derived classes. base_base& base_base_inherited(); -public: +protected: /// This function should be indirectly inherited by derived classes. base_base& do_base_base_inherited(); }; @@ -54,7 +54,7 @@ class derived public: /// This function should shadow the base class function. derived& derived_shadowed(); -public: +protected: /// This function should shadow the base class function. derived& do_derived_shadowed(); }; @@ -67,7 +67,7 @@ class protected_derived public: /// This function should shadow the base class function. protected_derived& derived_shadowed(); -public: +protected: /// This function should shadow the base class function. protected_derived& do_derived_shadowed(); }; @@ -80,7 +80,7 @@ class private_derived public: /// This function should shadow the base class function. private_derived& derived_shadowed(); -public: +protected: /// This function should shadow the base class function. private_derived& do_derived_shadowed(); }; diff --git a/test-files/golden-tests/config/inherit-base-members/never.html b/test-files/golden-tests/config/inherit-base-members/never.html index dd80b4f49..d3a81c87c 100644 --- a/test-files/golden-tests/config/inherit-base-members/never.html +++ b/test-files/golden-tests/config/inherit-base-members/never.html @@ -283,12 +283,25 @@

Member Functions

-base_base_inherited This function should be indirectly inherited by derived classes. -do_base_base_inherited This function should be indirectly inherited by derived classes. +base_base_inherited This function should be indirectly inherited by derived classes. +

Protected Member Functions

+ + + + + + + + + + + +
NameDescription
do_base_base_inherited This function should be indirectly inherited by derived classes.
+

Derived Classes

@@ -399,12 +412,25 @@

Member Functions

-derived_shadowed This function should shadow the base class function. -do_derived_shadowed This function should shadow the base class function. +derived_shadowed This function should shadow the base class function. +

Protected Member Functions

+ + + + + + + + + + + +
NameDescription
do_derived_shadowed This function should shadow the base class function.
+
@@ -485,12 +511,25 @@

Member Functions

-derived_shadowed This function should shadow the base class function. -do_derived_shadowed This function should shadow the base class function. +derived_shadowed This function should shadow the base class function. +

Protected Member Functions

+ + + + + + + + + + + +
NameDescription
do_derived_shadowed This function should shadow the base class function.
+
@@ -586,12 +625,25 @@

Member Functions

-derived_shadowed This function should shadow the base class function. -do_derived_shadowed This function should shadow the base class function. +derived_shadowed This function should shadow the base class function. +

Protected Member Functions

+ + + + + + + + + + + +
NameDescription
do_derived_shadowed This function should shadow the base class function.
+
diff --git a/test-files/golden-tests/config/inherit-base-members/never.xml b/test-files/golden-tests/config/inherit-base-members/never.xml index f34168d4d..d0d4fa217 100644 --- a/test-files/golden-tests/config/inherit-base-members/never.xml +++ b/test-files/golden-tests/config/inherit-base-members/never.xml @@ -132,7 +132,7 @@ - + @@ -178,7 +178,7 @@ - + @@ -224,7 +224,7 @@ - + @@ -270,7 +270,7 @@ - + diff --git a/test-files/golden-tests/config/inherit-base-members/reference.adoc b/test-files/golden-tests/config/inherit-base-members/reference.adoc index 4970145c6..6e7931258 100644 --- a/test-files/golden-tests/config/inherit-base-members/reference.adoc +++ b/test-files/golden-tests/config/inherit-base-members/reference.adoc @@ -61,8 +61,6 @@ class base | This function should shadow the excluded_base function. | link:#base-derived_shadowed[`derived_shadowed`] | This function should be shadowed by derived classes. -| link:#base_base-do_base_base_inherited[`do_base_base_inherited`] -| This function should be indirectly inherited by derived classes. |=== === Protected Member Functions @@ -71,6 +69,8 @@ class base |=== | Name | Description +| link:#base_base-do_base_base_inherited[`do_base_base_inherited`] +| This function should be indirectly inherited by derived classes. | link:#base-do_base_inherited[`do_base_inherited`] | This function should be inherited by derived classes. | link:#base-do_base_shadowed[`do_base_shadowed`] @@ -225,6 +225,14 @@ class base_base; | Description | link:#base_base-base_base_inherited[`base_base_inherited`] | This function should be indirectly inherited by derived classes. +|=== + +=== Protected Member Functions + +[cols=2] +|=== +| Name +| Description | link:#base_base-do_base_base_inherited[`do_base_base_inherited`] | This function should be indirectly inherited by derived classes. |=== @@ -319,10 +327,6 @@ class derived | This function should shadow the excluded_base function. | link:#derived-derived_shadowed[`derived_shadowed`] | This function should shadow the base class function. -| link:#base_base-do_base_base_inherited[`do_base_base_inherited`] -| This function should be indirectly inherited by derived classes. -| link:#derived-do_derived_shadowed[`do_derived_shadowed`] -| This function should shadow the base class function. |=== === Protected Member Functions @@ -331,12 +335,14 @@ class derived |=== | Name | Description +| link:#base_base-do_base_base_inherited[`do_base_base_inherited`] +| This function should be indirectly inherited by derived classes. | link:#base-do_base_inherited[`do_base_inherited`] | This function should be inherited by derived classes. | link:#base-do_base_shadowed[`do_base_shadowed`] | This function should shadow the excluded_base function. -| link:#base-do_derived_shadowed[`do_derived_shadowed`] -| This function should be shadowed by derived classes. +| link:#derived-do_derived_shadowed[`do_derived_shadowed`] +| This function should shadow the base class function. |=== [#derived-derived_shadowed] @@ -399,8 +405,28 @@ class private_derived |=== | Name | Description +| link:#base_base-base_base_inherited[`base_base_inherited`] +| This function should be indirectly inherited by derived classes. +| link:#base-base_inherited[`base_inherited`] +| This function should be inherited by derived classes. +| link:#base-base_shadowed[`base_shadowed`] +| This function should shadow the excluded_base function. | link:#private_derived-derived_shadowed[`derived_shadowed`] | This function should shadow the base class function. +|=== + +=== Protected Member Functions + +[cols=2] +|=== +| Name +| Description +| link:#base_base-do_base_base_inherited[`do_base_base_inherited`] +| This function should be indirectly inherited by derived classes. +| link:#base-do_base_inherited[`do_base_inherited`] +| This function should be inherited by derived classes. +| link:#base-do_base_shadowed[`do_base_shadowed`] +| This function should shadow the excluded_base function. | link:#private_derived-do_derived_shadowed[`do_derived_shadowed`] | This function should shadow the base class function. |=== @@ -477,10 +503,14 @@ class protected_derived |=== | Name | Description +| link:#base_base-base_base_inherited[`base_base_inherited`] +| This function should be indirectly inherited by derived classes. +| link:#base-base_inherited[`base_inherited`] +| This function should be inherited by derived classes. +| link:#base-base_shadowed[`base_shadowed`] +| This function should shadow the excluded_base function. | link:#protected_derived-derived_shadowed[`derived_shadowed`] | This function should shadow the base class function. -| link:#protected_derived-do_derived_shadowed[`do_derived_shadowed`] -| This function should shadow the base class function. |=== === Protected Member Functions @@ -489,22 +519,14 @@ class protected_derived |=== | Name | Description -| link:#base_base-base_base_inherited[`base_base_inherited`] -| This function should be indirectly inherited by derived classes. -| link:#base-base_inherited[`base_inherited`] -| This function should be inherited by derived classes. -| link:#base-base_shadowed[`base_shadowed`] -| This function should shadow the excluded_base function. -| link:#base-derived_shadowed[`derived_shadowed`] -| This function should be shadowed by derived classes. | link:#base_base-do_base_base_inherited[`do_base_base_inherited`] | This function should be indirectly inherited by derived classes. | link:#base-do_base_inherited[`do_base_inherited`] | This function should be inherited by derived classes. | link:#base-do_base_shadowed[`do_base_shadowed`] | This function should shadow the excluded_base function. -| link:#base-do_derived_shadowed[`do_derived_shadowed`] -| This function should be shadowed by derived classes. +| link:#protected_derived-do_derived_shadowed[`do_derived_shadowed`] +| This function should shadow the base class function. |=== [#protected_derived-derived_shadowed] diff --git a/test-files/golden-tests/config/inherit-base-members/reference.cpp b/test-files/golden-tests/config/inherit-base-members/reference.cpp index eff6deaf5..0a5efa42c 100644 --- a/test-files/golden-tests/config/inherit-base-members/reference.cpp +++ b/test-files/golden-tests/config/inherit-base-members/reference.cpp @@ -21,7 +21,7 @@ class base_base { public: /// This function should be indirectly inherited by derived classes. base_base& base_base_inherited(); -public: +protected: /// This function should be indirectly inherited by derived classes. base_base& do_base_base_inherited(); }; @@ -54,7 +54,7 @@ class derived public: /// This function should shadow the base class function. derived& derived_shadowed(); -public: +protected: /// This function should shadow the base class function. derived& do_derived_shadowed(); }; @@ -67,7 +67,7 @@ class protected_derived public: /// This function should shadow the base class function. protected_derived& derived_shadowed(); -public: +protected: /// This function should shadow the base class function. protected_derived& do_derived_shadowed(); }; @@ -80,7 +80,7 @@ class private_derived public: /// This function should shadow the base class function. private_derived& derived_shadowed(); -public: +protected: /// This function should shadow the base class function. private_derived& do_derived_shadowed(); }; diff --git a/test-files/golden-tests/config/inherit-base-members/reference.html b/test-files/golden-tests/config/inherit-base-members/reference.html index 731d0faae..7daa4f9ad 100644 --- a/test-files/golden-tests/config/inherit-base-members/reference.html +++ b/test-files/golden-tests/config/inherit-base-members/reference.html @@ -74,8 +74,7 @@

Member Functions

base_base_inherited This function should be indirectly inherited by derived classes. base_inherited This function should be inherited by derived classes. base_shadowed This function should shadow the excluded_base function. -derived_shadowed This function should be shadowed by derived classes. -do_base_base_inherited This function should be indirectly inherited by derived classes. +derived_shadowed This function should be shadowed by derived classes. @@ -90,6 +89,7 @@

Protected Member Functions

+do_base_base_inherited This function should be indirectly inherited by derived classes. do_base_inherited This function should be inherited by derived classes. do_base_shadowed This function should shadow the excluded_base function. do_derived_shadowed This function should be shadowed by derived classes. @@ -285,12 +285,25 @@

Member Functions

-base_base_inherited This function should be indirectly inherited by derived classes. -do_base_base_inherited This function should be indirectly inherited by derived classes. +base_base_inherited This function should be indirectly inherited by derived classes. +

Protected Member Functions

+ + + + + + + + + + + +
NameDescription
do_base_base_inherited This function should be indirectly inherited by derived classes.
+

Derived Classes

@@ -404,9 +417,7 @@

Member Functions

base_base_inherited This function should be indirectly inherited by derived classes. base_inherited This function should be inherited by derived classes. base_shadowed This function should shadow the excluded_base function. -derived_shadowed This function should shadow the base class function. -do_base_base_inherited This function should be indirectly inherited by derived classes. -do_derived_shadowed This function should shadow the base class function. +derived_shadowed This function should shadow the base class function. @@ -421,9 +432,10 @@

Protected Member Functions

+do_base_base_inherited This function should be indirectly inherited by derived classes. do_base_inherited This function should be inherited by derived classes. do_base_shadowed This function should shadow the excluded_base function. -do_derived_shadowed This function should be shadowed by derived classes. +do_derived_shadowed This function should shadow the base class function. @@ -507,12 +519,31 @@

Member Functions

-derived_shadowed This function should shadow the base class function. -do_derived_shadowed This function should shadow the base class function. +base_base_inherited This function should be indirectly inherited by derived classes. +base_inherited This function should be inherited by derived classes. +base_shadowed This function should shadow the excluded_base function. +derived_shadowed This function should shadow the base class function. +

Protected Member Functions

+ + + + + + + + + + + + + + +
NameDescription
do_base_base_inherited This function should be indirectly inherited by derived classes.
do_base_inherited This function should be inherited by derived classes.
do_base_shadowed This function should shadow the excluded_base function.
do_derived_shadowed This function should shadow the base class function.
+
@@ -608,8 +639,10 @@

Member Functions

-derived_shadowed This function should shadow the base class function. -do_derived_shadowed This function should shadow the base class function. +base_base_inherited This function should be indirectly inherited by derived classes. +base_inherited This function should be inherited by derived classes. +base_shadowed This function should shadow the excluded_base function. +derived_shadowed This function should shadow the base class function. @@ -624,14 +657,10 @@

Protected Member Functions

-base_base_inherited This function should be indirectly inherited by derived classes. -base_inherited This function should be inherited by derived classes. -base_shadowed This function should shadow the excluded_base function. -derived_shadowed This function should be shadowed by derived classes. do_base_base_inherited This function should be indirectly inherited by derived classes. do_base_inherited This function should be inherited by derived classes. do_base_shadowed This function should shadow the excluded_base function. -do_derived_shadowed This function should be shadowed by derived classes. +do_derived_shadowed This function should shadow the base class function. diff --git a/test-files/golden-tests/config/inherit-base-members/reference.xml b/test-files/golden-tests/config/inherit-base-members/reference.xml index 6c1d01927..6a981d1bd 100644 --- a/test-files/golden-tests/config/inherit-base-members/reference.xml +++ b/test-files/golden-tests/config/inherit-base-members/reference.xml @@ -76,7 +76,7 @@ - + @@ -164,7 +164,7 @@ - + @@ -258,7 +258,7 @@ - + @@ -274,22 +274,6 @@ - - - - - - - - - - This function should shadow the base class function. - - - A class that derives from base and excluded_base - - - @@ -322,19 +306,19 @@ - - + + - + - This function should be shadowed by derived classes. + This function should shadow the base class function. - A base class to test inheritance and shadowing + A class that derives from base and excluded_base @@ -352,6 +336,54 @@ A class that uses private inheritance only + + + + + + + + + + This function should be indirectly inherited by derived classes. + + + A second-order base class to test indirect inheritance + + + + + + + + + + + + + This function should be inherited by derived classes. + + + A base class to test inheritance and shadowing + + + + + + + + + + + + + This function should shadow the excluded_base function. + + + A base class to test inheritance and shadowing + + + @@ -368,57 +400,59 @@ - - + + - + - This function should shadow the base class function. + This function should be indirectly inherited by derived classes. - A class that uses private inheritance only + A second-order base class to test indirect inheritance - - - - - - - - - - - - A class that should inherit functions as protected. - - - - + + - + - This function should shadow the base class function. + This function should be inherited by derived classes. - A class that should inherit functions as protected. + A base class to test inheritance and shadowing - - + + - + + + + + + This function should shadow the excluded_base function. + + + A base class to test inheritance and shadowing + + + + + + + + @@ -426,10 +460,24 @@ This function should shadow the base class function. - A class that should inherit functions as protected. + A class that uses private inheritance only + + + + + + + + + + + + A class that should inherit functions as protected. + + @@ -478,23 +526,23 @@ - - + + - + - This function should be shadowed by derived classes. + This function should shadow the base class function. - A base class to test inheritance and shadowing + A class that should inherit functions as protected. - + @@ -542,19 +590,19 @@ - - + + - + - This function should be shadowed by derived classes. + This function should shadow the base class function. - A base class to test inheritance and shadowing + A class that should inherit functions as protected. diff --git a/test-files/golden-tests/config/inherit-base-members/skip-special.adoc b/test-files/golden-tests/config/inherit-base-members/skip-special.adoc index ce79aba4d..6a92af9ab 100644 --- a/test-files/golden-tests/config/inherit-base-members/skip-special.adoc +++ b/test-files/golden-tests/config/inherit-base-members/skip-special.adoc @@ -63,8 +63,6 @@ class base | This function should shadow the excluded_base function. | link:#base-derived_shadowed[`derived_shadowed`] | This function should be shadowed by derived classes. -| link:#base_base-do_base_base_inherited[`do_base_base_inherited`] -| This function should be indirectly inherited by derived classes. |=== === Protected Member Functions @@ -73,6 +71,8 @@ class base |=== | Name | Description +| link:#base_base-do_base_base_inherited[`do_base_base_inherited`] +| This function should be indirectly inherited by derived classes. | link:#base-do_base_inherited[`do_base_inherited`] | This function should be inherited by derived classes. | link:#base-do_base_shadowed[`do_base_shadowed`] @@ -233,6 +233,14 @@ class base_base; | Destructor should not be inherited | link:#base_base-base_base_inherited[`base_base_inherited`] | This function should be indirectly inherited by derived classes. +|=== + +=== Protected Member Functions + +[cols=2] +|=== +| Name +| Description | link:#base_base-do_base_base_inherited[`do_base_base_inherited`] | This function should be indirectly inherited by derived classes. |=== @@ -349,10 +357,6 @@ class derived | This function should shadow the excluded_base function. | link:#derived-derived_shadowed[`derived_shadowed`] | This function should shadow the base class function. -| link:#base_base-do_base_base_inherited[`do_base_base_inherited`] -| This function should be indirectly inherited by derived classes. -| link:#derived-do_derived_shadowed[`do_derived_shadowed`] -| This function should shadow the base class function. | link:#derived-excluded_inherited[`excluded_inherited`] | This function should be inherited by derived classes. |=== @@ -363,12 +367,14 @@ class derived |=== | Name | Description +| link:#base_base-do_base_base_inherited[`do_base_base_inherited`] +| This function should be indirectly inherited by derived classes. | link:#base-do_base_inherited[`do_base_inherited`] | This function should be inherited by derived classes. | link:#base-do_base_shadowed[`do_base_shadowed`] | This function should shadow the excluded_base function. -| link:#base-do_derived_shadowed[`do_derived_shadowed`] -| This function should be shadowed by derived classes. +| link:#derived-do_derived_shadowed[`do_derived_shadowed`] +| This function should shadow the base class function. | link:#derived-do_excluded_inherited[`do_excluded_inherited`] | This function should be inherited by derived classes. | link:#derived-do_shadowed[`do_shadowed`] @@ -418,10 +424,10 @@ link:#derived[derived]& derived_shadowed(); ---- -[#derived-do_derived_shadowed] -== link:#derived[derived]::do_derived_shadowed +[#derived-excluded_inherited] +== link:#derived[derived]::excluded_inherited -This function should shadow the base class function. +This function should be inherited by derived classes. === Synopsis @@ -429,14 +435,14 @@ Declared in `<skip‐special.cpp>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- -link:#derived[derived]& -do_derived_shadowed(); +excluded_base& +excluded_inherited(); ---- -[#derived-excluded_inherited] -== link:#derived[derived]::excluded_inherited +[#derived-do_derived_shadowed] +== link:#derived[derived]::do_derived_shadowed -This function should be inherited by derived classes. +This function should shadow the base class function. === Synopsis @@ -444,8 +450,8 @@ Declared in `<skip‐special.cpp>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- -excluded_base& -excluded_inherited(); +link:#derived[derived]& +do_derived_shadowed(); ---- [#derived-do_excluded_inherited] @@ -502,10 +508,36 @@ class private_derived | Constructor should not be inherited | link:#private_derived-2destructor[`~private_derived`] [.small]#[destructor]# | Destructor should not be inherited +| link:#base_base-base_base_inherited[`base_base_inherited`] +| This function should be indirectly inherited by derived classes. +| link:#base-base_inherited[`base_inherited`] +| This function should be inherited by derived classes. +| link:#base-base_shadowed[`base_shadowed`] +| This function should shadow the excluded_base function. | link:#private_derived-derived_shadowed[`derived_shadowed`] | This function should shadow the base class function. +| link:#private_derived-excluded_inherited[`excluded_inherited`] +| This function should be inherited by derived classes. +|=== + +=== Protected Member Functions + +[cols=2] +|=== +| Name +| Description +| link:#base_base-do_base_base_inherited[`do_base_base_inherited`] +| This function should be indirectly inherited by derived classes. +| link:#base-do_base_inherited[`do_base_inherited`] +| This function should be inherited by derived classes. +| link:#base-do_base_shadowed[`do_base_shadowed`] +| This function should shadow the excluded_base function. | link:#private_derived-do_derived_shadowed[`do_derived_shadowed`] | This function should shadow the base class function. +| link:#private_derived-do_excluded_inherited[`do_excluded_inherited`] +| This function should be inherited by derived classes. +| link:#private_derived-do_shadowed[`do_shadowed`] +| This function should be shadowed by derived classes. |=== [#private_derived-2constructor] @@ -551,6 +583,21 @@ link:#private_derived[private_derived]& derived_shadowed(); ---- +[#private_derived-excluded_inherited] +== link:#private_derived[private_derived]::excluded_inherited + +This function should be inherited by derived classes. + +=== Synopsis + +Declared in `<skip‐special.cpp>` + +[source,cpp,subs="verbatim,replacements,macros,-callouts"] +---- +excluded_base& +excluded_inherited(); +---- + [#private_derived-do_derived_shadowed] == link:#private_derived[private_derived]::do_derived_shadowed @@ -566,6 +613,36 @@ link:#private_derived[private_derived]& do_derived_shadowed(); ---- +[#private_derived-do_excluded_inherited] +== link:#private_derived[private_derived]::do_excluded_inherited + +This function should be inherited by derived classes. + +=== Synopsis + +Declared in `<skip‐special.cpp>` + +[source,cpp,subs="verbatim,replacements,macros,-callouts"] +---- +excluded_base& +do_excluded_inherited(); +---- + +[#private_derived-do_shadowed] +== link:#private_derived[private_derived]::do_shadowed + +This function should be shadowed by derived classes. + +=== Synopsis + +Declared in `<skip‐special.cpp>` + +[source,cpp,subs="verbatim,replacements,macros,-callouts"] +---- +excluded_base& +do_shadowed(); +---- + [#protected_derived] == protected_derived @@ -604,10 +681,16 @@ class protected_derived | Constructor should not be inherited | link:#protected_derived-2destructor[`~protected_derived`] [.small]#[destructor]# | Destructor should not be inherited +| link:#base_base-base_base_inherited[`base_base_inherited`] +| This function should be indirectly inherited by derived classes. +| link:#base-base_inherited[`base_inherited`] +| This function should be inherited by derived classes. +| link:#base-base_shadowed[`base_shadowed`] +| This function should shadow the excluded_base function. | link:#protected_derived-derived_shadowed[`derived_shadowed`] | This function should shadow the base class function. -| link:#protected_derived-do_derived_shadowed[`do_derived_shadowed`] -| This function should shadow the base class function. +| link:#protected_derived-excluded_inherited[`excluded_inherited`] +| This function should be inherited by derived classes. |=== === Protected Member Functions @@ -616,28 +699,18 @@ class protected_derived |=== | Name | Description -| link:#base_base-base_base_inherited[`base_base_inherited`] -| This function should be indirectly inherited by derived classes. -| link:#base-base_inherited[`base_inherited`] -| This function should be inherited by derived classes. -| link:#base-base_shadowed[`base_shadowed`] -| This function should shadow the excluded_base function. -| link:#base-derived_shadowed[`derived_shadowed`] -| This function should be shadowed by derived classes. | link:#base_base-do_base_base_inherited[`do_base_base_inherited`] | This function should be indirectly inherited by derived classes. | link:#base-do_base_inherited[`do_base_inherited`] | This function should be inherited by derived classes. | link:#base-do_base_shadowed[`do_base_shadowed`] | This function should shadow the excluded_base function. -| link:#base-do_derived_shadowed[`do_derived_shadowed`] -| This function should be shadowed by derived classes. +| link:#protected_derived-do_derived_shadowed[`do_derived_shadowed`] +| This function should shadow the base class function. | link:#protected_derived-do_excluded_inherited[`do_excluded_inherited`] | This function should be inherited by derived classes. | link:#protected_derived-do_shadowed[`do_shadowed`] | This function should be shadowed by derived classes. -| link:#protected_derived-excluded_inherited[`excluded_inherited`] -| This function should be inherited by derived classes. |=== [#protected_derived-2constructor] @@ -687,6 +760,21 @@ derived_shadowed(); Should inherit functions as protected. +[#protected_derived-excluded_inherited] +== link:#protected_derived[protected_derived]::excluded_inherited + +This function should be inherited by derived classes. + +=== Synopsis + +Declared in `<skip‐special.cpp>` + +[source,cpp,subs="verbatim,replacements,macros,-callouts"] +---- +excluded_base& +excluded_inherited(); +---- + [#protected_derived-do_derived_shadowed] == link:#protected_derived[protected_derived]::do_derived_shadowed @@ -736,20 +824,5 @@ excluded_base& do_shadowed(); ---- -[#protected_derived-excluded_inherited] -== link:#protected_derived[protected_derived]::excluded_inherited - -This function should be inherited by derived classes. - -=== Synopsis - -Declared in `<skip‐special.cpp>` - -[source,cpp,subs="verbatim,replacements,macros,-callouts"] ----- -excluded_base& -excluded_inherited(); ----- - [.small]#Created with https://www.mrdocs.com[MrDocs]# diff --git a/test-files/golden-tests/config/inherit-base-members/skip-special.cpp b/test-files/golden-tests/config/inherit-base-members/skip-special.cpp index b8ac9b61d..d4cd97243 100644 --- a/test-files/golden-tests/config/inherit-base-members/skip-special.cpp +++ b/test-files/golden-tests/config/inherit-base-members/skip-special.cpp @@ -36,7 +36,7 @@ class base_base { /// This function should be indirectly inherited by derived classes. base_base& base_base_inherited(); -public: +protected: /// This function should be indirectly inherited by derived classes. base_base& do_base_base_inherited(); }; @@ -79,7 +79,7 @@ class derived /// This function should shadow the base class function. derived& derived_shadowed(); -public: +protected: /// This function should shadow the base class function. derived& do_derived_shadowed(); }; @@ -98,7 +98,7 @@ class protected_derived /// This function should shadow the base class function. protected_derived& derived_shadowed(); -public: +protected: /// This function should shadow the base class function. protected_derived& do_derived_shadowed(); }; @@ -116,7 +116,7 @@ class private_derived /// This function should shadow the base class function. private_derived& derived_shadowed(); -public: +protected: /// This function should shadow the base class function. private_derived& do_derived_shadowed(); }; diff --git a/test-files/golden-tests/config/inherit-base-members/skip-special.html b/test-files/golden-tests/config/inherit-base-members/skip-special.html index a047bd876..63f270bfb 100644 --- a/test-files/golden-tests/config/inherit-base-members/skip-special.html +++ b/test-files/golden-tests/config/inherit-base-members/skip-special.html @@ -72,8 +72,7 @@

Member Functions

base_base_inherited This function should be indirectly inherited by derived classes. base_inherited This function should be inherited by derived classes. base_shadowed This function should shadow the excluded_base function. -derived_shadowed This function should be shadowed by derived classes. -do_base_base_inherited This function should be indirectly inherited by derived classes. +derived_shadowed This function should be shadowed by derived classes. @@ -88,6 +87,7 @@

Protected Member Functions

+do_base_base_inherited This function should be indirectly inherited by derived classes. do_base_inherited This function should be inherited by derived classes. do_base_shadowed This function should shadow the excluded_base function. do_derived_shadowed This function should be shadowed by derived classes. @@ -295,12 +295,25 @@

Member Functions

base_base [constructor]Constructor should not be inherited ~base_base [destructor]Destructor should not be inherited -base_base_inherited This function should be indirectly inherited by derived classes. -do_base_base_inherited This function should be indirectly inherited by derived classes. +base_base_inherited This function should be indirectly inherited by derived classes. +

Protected Member Functions

+ + + + + + + + + + + +
NameDescription
do_base_base_inherited This function should be indirectly inherited by derived classes.
+

Derived Classes

@@ -443,8 +456,6 @@

Member Functions

base_inherited This function should be inherited by derived classes. base_shadowed This function should shadow the excluded_base function. derived_shadowed This function should shadow the base class function. -do_base_base_inherited This function should be indirectly inherited by derived classes. -do_derived_shadowed This function should shadow the base class function. excluded_inherited This function should be inherited by derived classes. @@ -460,9 +471,10 @@

Protected Member Functions

+do_base_base_inherited This function should be indirectly inherited by derived classes. do_base_inherited This function should be inherited by derived classes. do_base_shadowed This function should shadow the excluded_base function. -do_derived_shadowed This function should be shadowed by derived classes. +do_derived_shadowed This function should shadow the base class function. do_excluded_inherited This function should be inherited by derived classes. do_shadowed This function should be shadowed by derived classes. @@ -530,9 +542,9 @@

Synopsis

-

derived::do_derived_shadowed

+

derived::excluded_inherited

-This function should shadow the base class function. +This function should be inherited by derived classes.
@@ -541,8 +553,8 @@

Synopsis

Declared in <skip-special.cpp>
-derived&
-do_derived_shadowed();
+excluded_base&
+excluded_inherited();
 
 
 
@@ -550,9 +562,9 @@

Synopsis

-

derived::excluded_inherited

+

derived::do_derived_shadowed

-This function should be inherited by derived classes. +This function should shadow the base class function.
@@ -561,8 +573,8 @@

Synopsis

Declared in <skip-special.cpp>
-excluded_base&
-excluded_inherited();
+derived&
+do_derived_shadowed();
 
 
 
@@ -636,12 +648,34 @@

Member Functions

private_derived [constructor]Constructor should not be inherited ~private_derived [destructor]Destructor should not be inherited +base_base_inherited This function should be indirectly inherited by derived classes. +base_inherited This function should be inherited by derived classes. +base_shadowed This function should shadow the excluded_base function. derived_shadowed This function should shadow the base class function. -do_derived_shadowed This function should shadow the base class function. +excluded_inherited This function should be inherited by derived classes. +

Protected Member Functions

+ + + + + + + + + + + + + + + + +
NameDescription
do_base_base_inherited This function should be indirectly inherited by derived classes.
do_base_inherited This function should be inherited by derived classes.
do_base_shadowed This function should shadow the excluded_base function.
do_derived_shadowed This function should shadow the base class function.
do_excluded_inherited This function should be inherited by derived classes.
do_shadowed This function should be shadowed by derived classes.
+
@@ -698,6 +732,26 @@

Synopsis

private_derived& derived_shadowed(); + + +
+
+
+
+

private_derived::excluded_inherited

+
+This function should be inherited by derived classes. + +
+
+
+

Synopsis

+
+Declared in <skip-special.cpp>
+
+excluded_base&
+excluded_inherited();
+
 
 
@@ -718,6 +772,46 @@

Synopsis

private_derived& do_derived_shadowed(); + + +
+
+
+
+

private_derived::do_excluded_inherited

+
+This function should be inherited by derived classes. + +
+
+
+

Synopsis

+
+Declared in <skip-special.cpp>
+
+excluded_base&
+do_excluded_inherited();
+
+
+
+
+
+
+
+

private_derived::do_shadowed

+
+This function should be shadowed by derived classes. + +
+
+
+

Synopsis

+
+Declared in <skip-special.cpp>
+
+excluded_base&
+do_shadowed();
+
 
 
@@ -769,8 +863,11 @@

Member Functions

protected_derived [constructor]Constructor should not be inherited ~protected_derived [destructor]Destructor should not be inherited +base_base_inherited This function should be indirectly inherited by derived classes. +base_inherited This function should be inherited by derived classes. +base_shadowed This function should shadow the excluded_base function. derived_shadowed This function should shadow the base class function. -do_derived_shadowed This function should shadow the base class function. +excluded_inherited This function should be inherited by derived classes. @@ -785,17 +882,12 @@

Protected Member Functions

-base_base_inherited This function should be indirectly inherited by derived classes. -base_inherited This function should be inherited by derived classes. -base_shadowed This function should shadow the excluded_base function. -derived_shadowed This function should be shadowed by derived classes. do_base_base_inherited This function should be indirectly inherited by derived classes. do_base_inherited This function should be inherited by derived classes. do_base_shadowed This function should shadow the excluded_base function. -do_derived_shadowed This function should be shadowed by derived classes. +do_derived_shadowed This function should shadow the base class function. do_excluded_inherited This function should be inherited by derived classes. -do_shadowed This function should be shadowed by derived classes. -excluded_inherited This function should be inherited by derived classes. +do_shadowed This function should be shadowed by derived classes. @@ -865,9 +957,9 @@

Return Value

-

protected_derived::do_derived_shadowed

+

protected_derived::excluded_inherited

-This function should shadow the base class function. +This function should be inherited by derived classes.
@@ -876,22 +968,18 @@

Synopsis

Declared in <skip-special.cpp>
-protected_derived&
-do_derived_shadowed();
+excluded_base&
+excluded_inherited();
 
 
 
-
-

Return Value

-Should inherit functions as protected. -
-

protected_derived::do_excluded_inherited

+

protected_derived::do_derived_shadowed

-This function should be inherited by derived classes. +This function should shadow the base class function.
@@ -900,18 +988,22 @@

Synopsis

Declared in <skip-special.cpp>
-excluded_base&
-do_excluded_inherited();
+protected_derived&
+do_derived_shadowed();
 
 
 
+
+

Return Value

+Should inherit functions as protected. +
-

protected_derived::do_shadowed

+

protected_derived::do_excluded_inherited

-This function should be shadowed by derived classes. +This function should be inherited by derived classes.
@@ -921,7 +1013,7 @@

Synopsis

Declared in <skip-special.cpp>
 excluded_base&
-do_shadowed();
+do_excluded_inherited();
 
 
 
@@ -929,9 +1021,9 @@

Synopsis

-

protected_derived::excluded_inherited

+

protected_derived::do_shadowed

-This function should be inherited by derived classes. +This function should be shadowed by derived classes.
@@ -941,7 +1033,7 @@

Synopsis

Declared in <skip-special.cpp>
 excluded_base&
-excluded_inherited();
+do_shadowed();
 
 
 
diff --git a/test-files/golden-tests/config/inherit-base-members/skip-special.xml b/test-files/golden-tests/config/inherit-base-members/skip-special.xml index bbb51ca5e..baa98f1b4 100644 --- a/test-files/golden-tests/config/inherit-base-members/skip-special.xml +++ b/test-files/golden-tests/config/inherit-base-members/skip-special.xml @@ -75,7 +75,7 @@ - + @@ -159,7 +159,7 @@ - + @@ -249,42 +249,29 @@ - - - - - - - - - - This function should be indirectly inherited by derived classes. - - - - - + + - + - This function should shadow the base class function. + This function should be inherited by derived classes. - - + + - + - This function should be inherited by derived classes. + This function should be indirectly inherited by derived classes. @@ -314,16 +301,16 @@ - - + + - + - This function should be shadowed by derived classes. + This function should shadow the base class function. @@ -378,6 +365,45 @@ + + + + + + + + + + This function should be indirectly inherited by derived classes. + + + + + + + + + + + + + This function should be inherited by derived classes. + + + + + + + + + + + + + This function should shadow the excluded_base function. + + + @@ -391,7 +417,59 @@ - + + + + + + + + + + This function should be inherited by derived classes. + + + + + + + + + + + + + This function should be indirectly inherited by derived classes. + + + + + + + + + + + + + This function should be inherited by derived classes. + + + + + + + + + + + + + This function should shadow the excluded_base function. + + + + @@ -404,6 +482,32 @@ + + + + + + + + + + This function should be inherited by derived classes. + + + + + + + + + + + + + This function should be shadowed by derived classes. + + +
@@ -434,38 +538,6 @@ - - - - - - - - - - This function should shadow the base class function. - - - Should inherit functions as protected. - - - - - - - - - - - - - This function should shadow the base class function. - - - Should inherit functions as protected. - - - @@ -505,20 +577,36 @@ - - + + - + - This function should be shadowed by derived classes. + This function should shadow the base class function. + + + Should inherit functions as protected. + + + + + + + + + + + + + This function should be inherited by derived classes. - + @@ -557,17 +645,20 @@ - - + + - + - This function should be shadowed by derived classes. + This function should shadow the base class function. + + Should inherit functions as protected. + @@ -596,19 +687,6 @@ - - - - - - - - - - This function should be inherited by derived classes. - - -
diff --git a/test-files/golden-tests/config/sort-members-by/sort-members-by-name.adoc b/test-files/golden-tests/config/sort-members-by/sort-members-by-name.adoc index c71581bd8..c2610b6d6 100644 --- a/test-files/golden-tests/config/sort-members-by/sort-members-by-name.adoc +++ b/test-files/golden-tests/config/sort-members-by/sort-members-by-name.adoc @@ -59,16 +59,6 @@ Constructors Declared in `<sort‐members‐by‐name.cpp>` -Default constructor - - -[source,cpp,subs="verbatim,replacements,macros,-callouts"] ----- -link:#Z-2constructor-05[Z](); ----- - -[.small]#link:#Z-2constructor-05[_» more..._]# - Construct from `int` @@ -79,20 +69,16 @@ link:#Z-2constructor-06[Z](int value); [.small]#link:#Z-2constructor-06[_» more..._]# -[#Z-2constructor-05] -== link:#Z[Z]::Z - Default constructor -=== Synopsis - -Declared in `<sort‐members‐by‐name.cpp>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- -Z(); +link:#Z-2constructor-05[Z](); ---- +[.small]#link:#Z-2constructor-05[_» more..._]# + [#Z-2constructor-06] == link:#Z[Z]::Z @@ -117,6 +103,20 @@ Z(int value); | The value to construct from |=== +[#Z-2constructor-05] +== link:#Z[Z]::Z + +Default constructor + +=== Synopsis + +Declared in `<sort‐members‐by‐name.cpp>` + +[source,cpp,subs="verbatim,replacements,macros,-callouts"] +---- +Z(); +---- + [#Z-2destructor] == link:#Z[Z]::~Z diff --git a/test-files/golden-tests/config/sort-members-by/sort-members-by-name.html b/test-files/golden-tests/config/sort-members-by/sort-members-by-name.html index 839f92eca..c24eef6ea 100644 --- a/test-files/golden-tests/config/sort-members-by/sort-members-by-name.html +++ b/test-files/golden-tests/config/sort-members-by/sort-members-by-name.html @@ -74,13 +74,6 @@

Z::Z

Synopses

Declared in <sort-members-by-name.cpp>
-Default constructor -
-Z();
-
-
-
» more... - Construct from int
 Z(int value);
@@ -88,26 +81,14 @@ 

Synopses

» more... - - - -
-
-

Z::Z

-
Default constructor - -
-
-
-

Synopsis

-
-Declared in <sort-members-by-name.cpp>
-Z();
+Z();
 
 
-
+» more... + +
@@ -148,6 +129,25 @@

Parameters

+

Z::Z

+
+Default constructor + +
+
+
+

Synopsis

+
+Declared in <sort-members-by-name.cpp>
+
+Z();
+
+
+
+
+
+
+

Z::~Z

Destructor diff --git a/test-files/golden-tests/config/sort-members-by/sort-members-by-name.xml b/test-files/golden-tests/config/sort-members-by/sort-members-by-name.xml index ea7587b9a..8f1c00c19 100644 --- a/test-files/golden-tests/config/sort-members-by/sort-members-by-name.xml +++ b/test-files/golden-tests/config/sort-members-by/sort-members-by-name.xml @@ -4,14 +4,6 @@ - - - - - Default constructor - - - @@ -27,6 +19,14 @@ + + + + + Default constructor + + + diff --git a/test-files/golden-tests/config/sort-namespace-members-by/sort-namespace-members-by-location.adoc b/test-files/golden-tests/config/sort-namespace-members-by/sort-namespace-members-by-location.adoc index 5819d534a..98b45f52a 100644 --- a/test-files/golden-tests/config/sort-namespace-members-by/sort-namespace-members-by-location.adoc +++ b/test-files/golden-tests/config/sort-namespace-members-by/sort-namespace-members-by-location.adoc @@ -191,16 +191,6 @@ Constructors Declared in `<sort‐namespace‐members‐by‐location.cpp>` -Default constructor - - -[source,cpp,subs="verbatim,replacements,macros,-callouts"] ----- -link:#Z-2constructor-05[Z](); ----- - -[.small]#link:#Z-2constructor-05[_» more..._]# - Construct from `int` @@ -211,20 +201,16 @@ link:#Z-2constructor-06[Z](int value); [.small]#link:#Z-2constructor-06[_» more..._]# -[#Z-2constructor-05] -== link:#Z[Z]::Z - Default constructor -=== Synopsis - -Declared in `<sort‐namespace‐members‐by‐location.cpp>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- -Z(); +link:#Z-2constructor-05[Z](); ---- +[.small]#link:#Z-2constructor-05[_» more..._]# + [#Z-2constructor-06] == link:#Z[Z]::Z @@ -249,6 +235,20 @@ Z(int value); | The value to construct from |=== +[#Z-2constructor-05] +== link:#Z[Z]::Z + +Default constructor + +=== Synopsis + +Declared in `<sort‐namespace‐members‐by‐location.cpp>` + +[source,cpp,subs="verbatim,replacements,macros,-callouts"] +---- +Z(); +---- + [#Z-2destructor] == link:#Z[Z]::~Z diff --git a/test-files/golden-tests/config/sort-namespace-members-by/sort-namespace-members-by-location.html b/test-files/golden-tests/config/sort-namespace-members-by/sort-namespace-members-by-location.html index e90718cb6..0718c256a 100644 --- a/test-files/golden-tests/config/sort-namespace-members-by/sort-namespace-members-by-location.html +++ b/test-files/golden-tests/config/sort-namespace-members-by/sort-namespace-members-by-location.html @@ -246,13 +246,6 @@

Z::Z

Synopses

Declared in <sort-namespace-members-by-location.cpp>
-Default constructor -
-Z();
-
-
-
» more... - Construct from int
 Z(int value);
@@ -260,26 +253,14 @@ 

Synopses

» more... - -
-
-
-
-

Z::Z

-
Default constructor - -
-
-
-

Synopsis

-
-Declared in <sort-namespace-members-by-location.cpp>
-Z();
+Z();
 
 
-
+» more... + +
@@ -320,6 +301,25 @@

Parameters

+

Z::Z

+
+Default constructor + +
+
+
+

Synopsis

+
+Declared in <sort-namespace-members-by-location.cpp>
+
+Z();
+
+
+
+
+
+
+

Z::~Z

Destructor diff --git a/test-files/golden-tests/config/sort-namespace-members-by/sort-namespace-members-by-location.xml b/test-files/golden-tests/config/sort-namespace-members-by/sort-namespace-members-by-location.xml index 0071193ec..b4057c78b 100644 --- a/test-files/golden-tests/config/sort-namespace-members-by/sort-namespace-members-by-location.xml +++ b/test-files/golden-tests/config/sort-namespace-members-by/sort-namespace-members-by-location.xml @@ -52,14 +52,6 @@ - - - - - Default constructor - - - @@ -75,6 +67,14 @@ + + + + + Default constructor + + + diff --git a/test-files/golden-tests/config/sort-namespace-members-by/sort-namespace-members-by-name.adoc b/test-files/golden-tests/config/sort-namespace-members-by/sort-namespace-members-by-name.adoc index 1ba8bff7f..29b0b51d6 100644 --- a/test-files/golden-tests/config/sort-namespace-members-by/sort-namespace-members-by-name.adoc +++ b/test-files/golden-tests/config/sort-namespace-members-by/sort-namespace-members-by-name.adoc @@ -191,16 +191,6 @@ Constructors Declared in `<sort‐namespace‐members‐by‐name.cpp>` -Default constructor - - -[source,cpp,subs="verbatim,replacements,macros,-callouts"] ----- -link:#Z-2constructor-05[Z](); ----- - -[.small]#link:#Z-2constructor-05[_» more..._]# - Construct from `int` @@ -211,20 +201,16 @@ link:#Z-2constructor-06[Z](int value); [.small]#link:#Z-2constructor-06[_» more..._]# -[#Z-2constructor-05] -== link:#Z[Z]::Z - Default constructor -=== Synopsis - -Declared in `<sort‐namespace‐members‐by‐name.cpp>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- -Z(); +link:#Z-2constructor-05[Z](); ---- +[.small]#link:#Z-2constructor-05[_» more..._]# + [#Z-2constructor-06] == link:#Z[Z]::Z @@ -249,6 +235,20 @@ Z(int value); | The value to construct from |=== +[#Z-2constructor-05] +== link:#Z[Z]::Z + +Default constructor + +=== Synopsis + +Declared in `<sort‐namespace‐members‐by‐name.cpp>` + +[source,cpp,subs="verbatim,replacements,macros,-callouts"] +---- +Z(); +---- + [#Z-2destructor] == link:#Z[Z]::~Z diff --git a/test-files/golden-tests/config/sort-namespace-members-by/sort-namespace-members-by-name.html b/test-files/golden-tests/config/sort-namespace-members-by/sort-namespace-members-by-name.html index 399b5f869..abbab300b 100644 --- a/test-files/golden-tests/config/sort-namespace-members-by/sort-namespace-members-by-name.html +++ b/test-files/golden-tests/config/sort-namespace-members-by/sort-namespace-members-by-name.html @@ -246,13 +246,6 @@

Z::Z

Synopses

Declared in <sort-namespace-members-by-name.cpp>
-Default constructor -
-Z();
-
-
-
» more... - Construct from int
 Z(int value);
@@ -260,26 +253,14 @@ 

Synopses

» more... - -
-
-
-
-

Z::Z

-
Default constructor - -
-
-
-

Synopsis

-
-Declared in <sort-namespace-members-by-name.cpp>
-Z();
+Z();
 
 
-
+» more... + +
@@ -320,6 +301,25 @@

Parameters

+

Z::Z

+
+Default constructor + +
+
+
+

Synopsis

+
+Declared in <sort-namespace-members-by-name.cpp>
+
+Z();
+
+
+
+
+
+
+

Z::~Z

Destructor diff --git a/test-files/golden-tests/config/sort-namespace-members-by/sort-namespace-members-by-name.xml b/test-files/golden-tests/config/sort-namespace-members-by/sort-namespace-members-by-name.xml index db912f484..6e38cd1db 100644 --- a/test-files/golden-tests/config/sort-namespace-members-by/sort-namespace-members-by-name.xml +++ b/test-files/golden-tests/config/sort-namespace-members-by/sort-namespace-members-by-name.xml @@ -52,14 +52,6 @@ - - - - - Default constructor - - - @@ -75,6 +67,14 @@ + + + + + Default constructor + + + diff --git a/test-files/golden-tests/config/sort/sort-members.adoc b/test-files/golden-tests/config/sort/sort-members.adoc index d0b9a0b30..57991f8a5 100644 --- a/test-files/golden-tests/config/sort/sort-members.adoc +++ b/test-files/golden-tests/config/sort/sort-members.adoc @@ -191,16 +191,6 @@ Constructors Declared in `<sort‐members.cpp>` -Default constructor - - -[source,cpp,subs="verbatim,replacements,macros,-callouts"] ----- -link:#Z-2constructor-05[Z](); ----- - -[.small]#link:#Z-2constructor-05[_» more..._]# - Construct from `int` @@ -211,20 +201,16 @@ link:#Z-2constructor-06[Z](int value); [.small]#link:#Z-2constructor-06[_» more..._]# -[#Z-2constructor-05] -== link:#Z[Z]::Z - Default constructor -=== Synopsis - -Declared in `<sort‐members.cpp>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- -Z(); +link:#Z-2constructor-05[Z](); ---- +[.small]#link:#Z-2constructor-05[_» more..._]# + [#Z-2constructor-06] == link:#Z[Z]::Z @@ -249,6 +235,20 @@ Z(int value); | The value to construct from |=== +[#Z-2constructor-05] +== link:#Z[Z]::Z + +Default constructor + +=== Synopsis + +Declared in `<sort‐members.cpp>` + +[source,cpp,subs="verbatim,replacements,macros,-callouts"] +---- +Z(); +---- + [#Z-2destructor] == link:#Z[Z]::~Z diff --git a/test-files/golden-tests/config/sort/sort-members.html b/test-files/golden-tests/config/sort/sort-members.html index d2563ae5a..28b01c5d0 100644 --- a/test-files/golden-tests/config/sort/sort-members.html +++ b/test-files/golden-tests/config/sort/sort-members.html @@ -246,13 +246,6 @@

Z::Z

Synopses

Declared in <sort-members.cpp>
-Default constructor -
-Z();
-
-
-
» more... - Construct from int
 Z(int value);
@@ -260,26 +253,14 @@ 

Synopses

» more... - -
-
-
-
-

Z::Z

-
Default constructor - -
-
-
-

Synopsis

-
-Declared in <sort-members.cpp>
-Z();
+Z();
 
 
-
+» more... + +
@@ -320,6 +301,25 @@

Parameters

+

Z::Z

+
+Default constructor + +
+
+
+

Synopsis

+
+Declared in <sort-members.cpp>
+
+Z();
+
+
+
+
+
+
+

Z::~Z

Destructor diff --git a/test-files/golden-tests/config/sort/sort-members.xml b/test-files/golden-tests/config/sort/sort-members.xml index 143cabb54..54b340ae9 100644 --- a/test-files/golden-tests/config/sort/sort-members.xml +++ b/test-files/golden-tests/config/sort/sort-members.xml @@ -52,14 +52,6 @@ - - - - - Default constructor - - - @@ -75,6 +67,14 @@ + + + + + Default constructor + + + diff --git a/test-files/golden-tests/config/sort/unordered.adoc b/test-files/golden-tests/config/sort/unordered.adoc index f615bc695..0cc3dd580 100644 --- a/test-files/golden-tests/config/sort/unordered.adoc +++ b/test-files/golden-tests/config/sort/unordered.adoc @@ -342,16 +342,6 @@ Constructors Declared in `<unordered.cpp>` -Default constructor - - -[source,cpp,subs="verbatim,replacements,macros,-callouts"] ----- -link:#Z-2constructor-05[Z](); ----- - -[.small]#link:#Z-2constructor-05[_» more..._]# - Construct from `int` @@ -362,20 +352,16 @@ link:#Z-2constructor-06[Z](int value); [.small]#link:#Z-2constructor-06[_» more..._]# -[#Z-2constructor-05] -== link:#Z[Z]::Z - Default constructor -=== Synopsis - -Declared in `<unordered.cpp>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- -Z(); +link:#Z-2constructor-05[Z](); ---- +[.small]#link:#Z-2constructor-05[_» more..._]# + [#Z-2constructor-06] == link:#Z[Z]::Z @@ -400,6 +386,20 @@ Z(int value); | The value to construct from |=== +[#Z-2constructor-05] +== link:#Z[Z]::Z + +Default constructor + +=== Synopsis + +Declared in `<unordered.cpp>` + +[source,cpp,subs="verbatim,replacements,macros,-callouts"] +---- +Z(); +---- + [#operator_not_eq] == operator!= diff --git a/test-files/golden-tests/config/sort/unordered.html b/test-files/golden-tests/config/sort/unordered.html index 6dc210a0f..62830da1e 100644 --- a/test-files/golden-tests/config/sort/unordered.html +++ b/test-files/golden-tests/config/sort/unordered.html @@ -451,13 +451,6 @@

Z::Z

Synopses

Declared in <unordered.cpp>
-Default constructor -
-Z();
-
-
-
» more... - Construct from int
 Z(int value);
@@ -465,26 +458,14 @@ 

Synopses

» more... - -
-
-
-
-

Z::Z

-
Default constructor - -
-
-
-

Synopsis

-
-Declared in <unordered.cpp>
-Z();
+Z();
 
 
-
+» more... + +
@@ -525,6 +506,25 @@

Parameters

+

Z::Z

+
+Default constructor + +
+
+
+

Synopsis

+
+Declared in <unordered.cpp>
+
+Z();
+
+
+
+
+
+
+

operator!=

Inequality operator diff --git a/test-files/golden-tests/config/sort/unordered.xml b/test-files/golden-tests/config/sort/unordered.xml index 1715fe9d1..0657884e7 100644 --- a/test-files/golden-tests/config/sort/unordered.xml +++ b/test-files/golden-tests/config/sort/unordered.xml @@ -179,14 +179,6 @@ - - - - - Default constructor - - - @@ -202,6 +194,14 @@ + + + + + Default constructor + + + diff --git a/test-files/golden-tests/core/libcxx.cpp b/test-files/golden-tests/core/libcxx.cpp deleted file mode 100644 index 714a9d823..000000000 --- a/test-files/golden-tests/core/libcxx.cpp +++ /dev/null @@ -1,152 +0,0 @@ -// Check if all std includes are functional with -nostdinc -// defined in MrDocsCompilationDatabase.cpp and headers/libc-stubs - -// libcxx -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/** Computes the square root of an integral value. - - This function calculates the square root of a - given integral value using bit manipulation. - - @throws std::invalid_argument if the input value is negative. - - @tparam T The type of the input value. Must be an integral type. - @param value The integral value to compute the square root of. - @return The square root of the input value. - */ -template -std::enable_if_t, T> -sqrt(T value); - diff --git a/test-files/golden-tests/javadoc/copydoc/operator-param.adoc b/test-files/golden-tests/javadoc/copydoc/operator-param.adoc index dd7aab791..50b355d76 100644 --- a/test-files/golden-tests/javadoc/copydoc/operator-param.adoc +++ b/test-files/golden-tests/javadoc/copydoc/operator-param.adoc @@ -50,10 +50,10 @@ Return true if ch is in the character set. ---- constexpr bool -link:#A-operator_call-0f[operator()](char ch) const noexcept; +link:#A-operator_call-0b[operator()](unsigned char ch) const noexcept; ---- -[.small]#link:#A-operator_call-0f[_» more..._]# +[.small]#link:#A-operator_call-0b[_» more..._]# Return true if ch is in the character set. @@ -62,10 +62,10 @@ Return true if ch is in the character set. ---- constexpr bool -link:#A-operator_call-0b[operator()](unsigned char ch) const noexcept; +link:#A-operator_call-0f[operator()](char ch) const noexcept; ---- -[.small]#link:#A-operator_call-0b[_» more..._]# +[.small]#link:#A-operator_call-0f[_» more..._]# === Return Value @@ -78,10 +78,10 @@ True if ch is in the set, otherwise false. | Name | Description | *ch* -| The signed character to test. +| The unsigned character to test. |=== -[#A-operator_call-0f] +[#A-operator_call-0b] == link:#A[A]::operator() Return true if ch is in the character set. @@ -94,7 +94,7 @@ Declared in `<operator‐param.cpp>` ---- constexpr bool -operator()(char ch) const noexcept; +operator()(unsigned char ch) const noexcept; ---- === Description @@ -112,10 +112,10 @@ True if ch is in the set, otherwise false. | Name | Description | *ch* -| The signed character to test. +| The unsigned character to test. |=== -[#A-operator_call-0b] +[#A-operator_call-0f] == link:#A[A]::operator() Return true if ch is in the character set. @@ -128,7 +128,7 @@ Declared in `<operator‐param.cpp>` ---- constexpr bool -operator()(unsigned char ch) const noexcept; +operator()(char ch) const noexcept; ---- === Description @@ -146,7 +146,7 @@ True if ch is in the set, otherwise false. | Name | Description | *ch* -| The unsigned character to test. +| The signed character to test. |=== diff --git a/test-files/golden-tests/javadoc/copydoc/operator-param.html b/test-files/golden-tests/javadoc/copydoc/operator-param.html index 69beb6df7..666f990e1 100644 --- a/test-files/golden-tests/javadoc/copydoc/operator-param.html +++ b/test-files/golden-tests/javadoc/copydoc/operator-param.html @@ -70,19 +70,19 @@

Synopses

 constexpr
 bool
-operator()(char ch) const noexcept;
+operator()(unsigned char ch) const noexcept;
 
 
-
» more... +» more... Return true if ch is in the character set.
 constexpr
 bool
-operator()(unsigned char ch) const noexcept;
+operator()(char ch) const noexcept;
 
 
-
» more... +» more...
@@ -102,7 +102,7 @@

Parameters

ch -The signed character to test. +The unsigned character to test. @@ -110,7 +110,7 @@

Parameters

-

A::operator()

+

A::operator()

Return true if ch is in the character set. @@ -123,7 +123,7 @@

Synopsis

 constexpr
 bool
-operator()(char ch) const noexcept;
+operator()(unsigned char ch) const noexcept;
 
 
 
@@ -148,7 +148,7 @@

Parameters

ch -The signed character to test. +The unsigned character to test. @@ -156,7 +156,7 @@

Parameters

-

A::operator()

+

A::operator()

Return true if ch is in the character set. @@ -169,7 +169,7 @@

Synopsis

 constexpr
 bool
-operator()(unsigned char ch) const noexcept;
+operator()(char ch) const noexcept;
 
 
 
@@ -194,7 +194,7 @@

Parameters

ch -The unsigned character to test. +The signed character to test. diff --git a/test-files/golden-tests/javadoc/copydoc/operator-param.xml b/test-files/golden-tests/javadoc/copydoc/operator-param.xml index 742d01c42..4affc9392 100644 --- a/test-files/golden-tests/javadoc/copydoc/operator-param.xml +++ b/test-files/golden-tests/javadoc/copydoc/operator-param.xml @@ -4,8 +4,8 @@ - - + + @@ -13,7 +13,7 @@ - + @@ -26,12 +26,12 @@ True if ch is in the set, otherwise false. - The signed character to test. + The unsigned character to test. - - + + @@ -39,7 +39,7 @@ - + @@ -52,7 +52,7 @@ True if ch is in the set, otherwise false. - The unsigned character to test. + The signed character to test. diff --git a/test-files/golden-tests/javadoc/copydoc/qualified.adoc b/test-files/golden-tests/javadoc/copydoc/qualified.adoc index 8e2497b3c..9808fbcee 100644 --- a/test-files/golden-tests/javadoc/copydoc/qualified.adoc +++ b/test-files/golden-tests/javadoc/copydoc/qualified.adoc @@ -427,27 +427,27 @@ Documentation for the reference function Declared in `<qualified.cpp>` -Reference function +Fail [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- void -link:#N-A-g-0a[g](link:#N-A-B[B] a); +link:#N-A-g-06c[g](int a); ---- -[.small]#link:#N-A-g-0a[_» more..._]# +[.small]#link:#N-A-g-06c[_» more..._]# -Fail +Reference function [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- void -link:#N-A-g-06c[g](int a); +link:#N-A-g-0a[g](link:#N-A-B[B] a); ---- -[.small]#link:#N-A-g-06c[_» more..._]# +[.small]#link:#N-A-g-0a[_» more..._]# === Parameters @@ -456,13 +456,13 @@ link:#N-A-g-06c[g](int a); | Name | Description | *a* -| Qualified param +| Fundamental type parameter |=== -[#N-A-g-0a] +[#N-A-g-06c] == link:#N[N]::link:#N-A[A]::g -Reference function +Fail === Synopsis @@ -471,12 +471,12 @@ Declared in `<qualified.cpp>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- void -g(link:#N-A-B[B] a); +g(int a); ---- === Description -Documentation for the reference function +Function with same number of parameters but different types. This should fail. === Parameters @@ -485,13 +485,13 @@ Documentation for the reference function | Name | Description | *a* -| Qualified param +| Fundamental type parameter |=== -[#N-A-g-06c] +[#N-A-g-0a] == link:#N[N]::link:#N-A[A]::g -Fail +Reference function === Synopsis @@ -500,12 +500,12 @@ Declared in `<qualified.cpp>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- void -g(int a); +g(link:#N-A-B[B] a); ---- === Description -Function with same number of parameters but different types. This should fail. +Documentation for the reference function === Parameters @@ -514,7 +514,7 @@ Function with same number of parameters but different types. This should | Name | Description | *a* -| Fundamental type parameter +| Qualified param |=== [#N-A-h-05] @@ -526,27 +526,27 @@ Function with same number of parameters but different types. This should Declared in `<qualified.cpp>` -Reference function +Fail [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- void -link:#N-A-h-0f[h](link:#N-A-B[N::A::B] a); +link:#N-A-h-06[h](int a); ---- -[.small]#link:#N-A-h-0f[_» more..._]# +[.small]#link:#N-A-h-06[_» more..._]# -Fail +Reference function [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- void -link:#N-A-h-06[h](int a); +link:#N-A-h-0f[h](link:#N-A-B[N::A::B] a); ---- -[.small]#link:#N-A-h-06[_» more..._]# +[.small]#link:#N-A-h-0f[_» more..._]# === Parameters @@ -555,13 +555,13 @@ link:#N-A-h-06[h](int a); | Name | Description | *a* -| Qualified param +| Fundamental type parameter |=== -[#N-A-h-0f] +[#N-A-h-06] == link:#N[N]::link:#N-A[A]::h -Reference function +Fail === Synopsis @@ -570,12 +570,12 @@ Declared in `<qualified.cpp>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- void -h(link:#N-A-B[N::A::B] a); +h(int a); ---- === Description -Documentation for the reference function +Function with same number of parameters but different types. This should fail. === Parameters @@ -584,13 +584,13 @@ Documentation for the reference function | Name | Description | *a* -| Qualified param +| Fundamental type parameter |=== -[#N-A-h-06] +[#N-A-h-0f] == link:#N[N]::link:#N-A[A]::h -Fail +Reference function === Synopsis @@ -599,12 +599,12 @@ Declared in `<qualified.cpp>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- void -h(int a); +h(link:#N-A-B[N::A::B] a); ---- === Description -Function with same number of parameters but different types. This should fail. +Documentation for the reference function === Parameters @@ -613,7 +613,7 @@ Function with same number of parameters but different types. This should | Name | Description | *a* -| Fundamental type parameter +| Qualified param |=== [#param_t] diff --git a/test-files/golden-tests/javadoc/copydoc/qualified.html b/test-files/golden-tests/javadoc/copydoc/qualified.html index 9765eeece..1cf6bf204 100644 --- a/test-files/golden-tests/javadoc/copydoc/qualified.html +++ b/test-files/golden-tests/javadoc/copydoc/qualified.html @@ -554,21 +554,21 @@

N::A::g

Synopses

Declared in <qualified.cpp>
-Reference function +Fail
 void
-g(B a);
+g(int a);
 
 
-
» more... +» more... -Fail +Reference function
 void
-g(int a);
+g(B a);
 
 
-
» more... +» more...
@@ -584,7 +584,7 @@

Parameters

a -Qualified param +Fundamental type parameter @@ -592,9 +592,9 @@

Parameters

-

N::A::g

+

N::A::g

-Reference function +Fail
@@ -604,14 +604,14 @@

Synopsis

Declared in <qualified.cpp>
 void
-g(B a);
+g(int a);
 
 
 

Description

-

Documentation for the reference function

+

Function with same number of parameters but different types. This should fail.

Parameters

@@ -625,7 +625,7 @@

Parameters

a -Qualified param +Fundamental type parameter @@ -633,9 +633,9 @@

Parameters

-

N::A::g

+

N::A::g

-Fail +Reference function
@@ -645,14 +645,14 @@

Synopsis

Declared in <qualified.cpp>
 void
-g(int a);
+g(B a);
 
 
 

Description

-

Function with same number of parameters but different types. This should fail.

+

Documentation for the reference function

Parameters

@@ -666,7 +666,7 @@

Parameters

a -Fundamental type parameter +Qualified param @@ -684,21 +684,21 @@

N::A::h

Synopses

Declared in <qualified.cpp>
-Reference function +Fail
 void
-h(N::A::B a);
+h(int a);
 
 
-
» more... +» more... -Fail +Reference function
 void
-h(int a);
+h(N::A::B a);
 
 
-
» more... +» more...
@@ -714,7 +714,7 @@

Parameters

a -Qualified param +Fundamental type parameter @@ -722,9 +722,9 @@

Parameters

-

N::A::h

+

N::A::h

-Reference function +Fail
@@ -734,14 +734,14 @@

Synopsis

Declared in <qualified.cpp>
 void
-h(N::A::B a);
+h(int a);
 
 
 

Description

-

Documentation for the reference function

+

Function with same number of parameters but different types. This should fail.

Parameters

@@ -755,7 +755,7 @@

Parameters

a -Qualified param +Fundamental type parameter @@ -763,9 +763,9 @@

Parameters

-

N::A::h

+

N::A::h

-Fail +Reference function
@@ -775,14 +775,14 @@

Synopsis

Declared in <qualified.cpp>
 void
-h(int a);
+h(N::A::B a);
 
 
 

Description

-

Function with same number of parameters but different types. This should fail.

+

Documentation for the reference function

Parameters

@@ -796,7 +796,7 @@

Parameters

a -Fundamental type parameter +Qualified param diff --git a/test-files/golden-tests/javadoc/copydoc/qualified.xml b/test-files/golden-tests/javadoc/copydoc/qualified.xml index 3ab2d360a..6f94dd637 100644 --- a/test-files/golden-tests/javadoc/copydoc/qualified.xml +++ b/test-files/golden-tests/javadoc/copydoc/qualified.xml @@ -144,6 +144,23 @@ + + + + + + + + Fail + + + Function with same number of parameters but different types. This should fail. + + + Fundamental type parameter + + + @@ -161,8 +178,8 @@ - - + + @@ -195,23 +212,6 @@ - - - - - - - - Fail - - - Function with same number of parameters but different types. This should fail. - - - Fundamental type parameter - - - - + @@ -1106,13 +1106,6 @@ - + @@ -1375,13 +1375,6 @@ - + @@ -1523,13 +1523,6 @@ - + diff --git a/test-files/golden-tests/symbols/record/conditional-explicit.adoc b/test-files/golden-tests/symbols/record/conditional-explicit.adoc index 9bbad6532..466e5abff 100644 --- a/test-files/golden-tests/symbols/record/conditional-explicit.adoc +++ b/test-files/golden-tests/symbols/record/conditional-explicit.adoc @@ -52,16 +52,15 @@ Constructors Declared in `<conditional‐explicit.cpp>` -Conditionally explicit conversion from char +Implicit conversion from double [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- -explicit(sizeof(T) > 4) -link:#A-2constructor-0b[A](char value); +link:#A-2constructor-00[A](double value); ---- -[.small]#link:#A-2constructor-0b[_» more..._]# +[.small]#link:#A-2constructor-00[_» more..._]# Explicit conversion from int @@ -74,15 +73,16 @@ link:#A-2constructor-01[A](int value); [.small]#link:#A-2constructor-01[_» more..._]# -Implicit conversion from double +Conditionally explicit conversion from char [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- -link:#A-2constructor-00[A](double value); +explicit(sizeof(T) > 4) +link:#A-2constructor-0b[A](char value); ---- -[.small]#link:#A-2constructor-00[_» more..._]# +[.small]#link:#A-2constructor-0b[_» more..._]# Conditionally explicit conversion from other types @@ -96,10 +96,10 @@ link:#A-2constructor-02[A](U value); [.small]#link:#A-2constructor-02[_» more..._]# -[#A-2constructor-0b] +[#A-2constructor-00] == link:#A[A]::A -Conditionally explicit conversion from char +Implicit conversion from double === Synopsis @@ -107,8 +107,7 @@ Declared in `<conditional‐explicit.cpp>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- -explicit(sizeof(T) > 4) -A(char value); +A(double value); ---- === Parameters @@ -146,10 +145,10 @@ A(int value); | The value to construct from |=== -[#A-2constructor-00] +[#A-2constructor-0b] == link:#A[A]::A -Implicit conversion from double +Conditionally explicit conversion from char === Synopsis @@ -157,7 +156,8 @@ Declared in `<conditional‐explicit.cpp>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- -A(double value); +explicit(sizeof(T) > 4) +A(char value); ---- === Parameters diff --git a/test-files/golden-tests/symbols/record/conditional-explicit.html b/test-files/golden-tests/symbols/record/conditional-explicit.html index 776f3004e..acd444974 100644 --- a/test-files/golden-tests/symbols/record/conditional-explicit.html +++ b/test-files/golden-tests/symbols/record/conditional-explicit.html @@ -71,13 +71,12 @@

A::A

Synopses

Declared in <conditional-explicit.cpp>
-Conditionally explicit conversion from char +Implicit conversion from double
-explicit(sizeof(T) > 4)
-A(char value);
+A(double value);
 
 
-
» more... +» more... Explicit conversion from int
@@ -87,12 +86,13 @@ 

Synopses

» more... -Implicit conversion from double +Conditionally explicit conversion from char
-A(double value);
+explicit(sizeof(T) > 4)
+A(char value);
 
 
-
» more... +» more... Conditionally explicit conversion from other types
@@ -108,9 +108,9 @@ 

Synopses

-

A::A

+

A::A

-Conditionally explicit conversion from char +Implicit conversion from double
@@ -119,8 +119,7 @@

Synopsis

Declared in <conditional-explicit.cpp>
-explicit(sizeof(T) > 4)
-A(char value);
+A(double value);
 
 
 
@@ -182,9 +181,9 @@

Parameters

-

A::A

+

A::A

-Implicit conversion from double +Conditionally explicit conversion from char
@@ -193,7 +192,8 @@

Synopsis

Declared in <conditional-explicit.cpp>
-A(double value);
+explicit(sizeof(T) > 4)
+A(char value);
 
 
 
diff --git a/test-files/golden-tests/symbols/record/conditional-explicit.xml b/test-files/golden-tests/symbols/record/conditional-explicit.xml index 6a6d3daf0..252e0ec09 100644 --- a/test-files/golden-tests/symbols/record/conditional-explicit.xml +++ b/test-files/golden-tests/symbols/record/conditional-explicit.xml @@ -6,14 +6,14 @@ - - + + - + - Conditionally explicit conversion from char + Implicit conversion from double The value to construct from @@ -34,14 +34,14 @@ - - + + - + - Implicit conversion from double + Conditionally explicit conversion from char The value to construct from diff --git a/test-files/golden-tests/symbols/record/shadowing.adoc b/test-files/golden-tests/symbols/record/shadowing.adoc new file mode 100644 index 000000000..8b20c1a98 --- /dev/null +++ b/test-files/golden-tests/symbols/record/shadowing.adoc @@ -0,0 +1,174 @@ += Reference +:mrdocs: + +[#index] +== Global namespace + +=== Types + +[cols=1] +|=== +| Name +| link:#Base[`Base`] +| link:#Derived[`Derived`] +|=== + +[#Base] +== Base + +=== Synopsis + +Declared in `<shadowing.cpp>` + +[source,cpp,subs="verbatim,replacements,macros,-callouts"] +---- +struct Base; +---- + +=== Member Functions + +[cols=1] +|=== +| Name +| link:#Base-bar[`bar`] +| link:#Base-baz[`baz`] +| link:#Base-foo[`foo`] +|=== + +=== Derived Classes + +[cols=2] +|=== +| Name +| Description +| link:#Derived[`Derived`] +| +|=== + +[#Base-bar] +== link:#Base[Base]::bar + +=== Synopsis + +Declared in `<shadowing.cpp>` + +[source,cpp,subs="verbatim,replacements,macros,-callouts"] +---- +void +bar(); +---- + +[#Base-baz] +== link:#Base[Base]::baz + +=== Synopsis + +Declared in `<shadowing.cpp>` + +[source,cpp,subs="verbatim,replacements,macros,-callouts"] +---- +void +baz(); +---- + +[#Base-foo] +== link:#Base[Base]::foo + +=== Synopsis + +Declared in `<shadowing.cpp>` + +[source,cpp,subs="verbatim,replacements,macros,-callouts"] +---- +void +foo(); +---- + +[#Derived] +== Derived + +=== Synopsis + +Declared in `<shadowing.cpp>` + +[source,cpp,subs="verbatim,replacements,macros,-callouts"] +---- +struct Derived + : link:#Base[Base] +---- + +=== Base Classes + +[cols=2] +|=== +| Name +| Description +| `link:#Base[Base]` +| +|=== + +=== Member Functions + +[cols=1] +|=== +| Name +| link:#Derived-foo[`foo`] +|=== + +=== Protected Member Functions + +[cols=1] +|=== +| Name +| link:#Derived-bar[`bar`] +|=== + +=== Private Member Functions + +[cols=1] +|=== +| Name +| link:#Derived-baz[`baz`] +|=== + +[#Derived-foo] +== link:#Derived[Derived]::foo + +=== Synopsis + +Declared in `<shadowing.cpp>` + +[source,cpp,subs="verbatim,replacements,macros,-callouts"] +---- +void +foo(); +---- + +[#Derived-bar] +== link:#Derived[Derived]::bar + +=== Synopsis + +Declared in `<shadowing.cpp>` + +[source,cpp,subs="verbatim,replacements,macros,-callouts"] +---- +void +bar(); +---- + +[#Derived-baz] +== link:#Derived[Derived]::baz + +=== Synopsis + +Declared in `<shadowing.cpp>` + +[source,cpp,subs="verbatim,replacements,macros,-callouts"] +---- +void +baz(); +---- + + +[.small]#Created with https://www.mrdocs.com[MrDocs]# diff --git a/test-files/golden-tests/symbols/record/shadowing.cpp b/test-files/golden-tests/symbols/record/shadowing.cpp new file mode 100644 index 000000000..9d5dde07f --- /dev/null +++ b/test-files/golden-tests/symbols/record/shadowing.cpp @@ -0,0 +1,13 @@ +struct Base { +void foo(); +void bar(); +void baz(); +}; + +struct Derived : Base { + void foo(); +protected: + void bar(); +private: + void baz(); +}; diff --git a/test-files/golden-tests/symbols/record/shadowing.html b/test-files/golden-tests/symbols/record/shadowing.html new file mode 100644 index 000000000..c9a5e9c21 --- /dev/null +++ b/test-files/golden-tests/symbols/record/shadowing.html @@ -0,0 +1,247 @@ + + +Reference + + +
+

Reference

+
+
+

+
+

Types

+ + + + + + + + + + + +
Name
Base
Derived
+ +
+
+
+

Base

+
+
+

Synopsis

+
+Declared in <shadowing.cpp>
+
+struct Base;
+
+
+
+
+

Member Functions

+ + + + + + + + + + + + +
Name
bar
baz
foo
+ + + +
+

Derived Classes

+ + + + + + + + + + +
NameDescription
Derived +
+
+
+
+ +
+

Synopsis

+
+Declared in <shadowing.cpp>
+
+void
+bar();
+
+
+
+
+
+
+ +
+

Synopsis

+
+Declared in <shadowing.cpp>
+
+void
+baz();
+
+
+
+
+
+
+ +
+

Synopsis

+
+Declared in <shadowing.cpp>
+
+void
+foo();
+
+
+
+
+
+
+ +
+

Synopsis

+
+Declared in <shadowing.cpp>
+
+struct Derived
+    : Base
+
+
+
+
+
+

Base Classes

+ + + + + + + + + + +
NameDescription
Base
+
+

Member Functions

+ + + + + + + + + + +
Name
foo
+ + +

Protected Member Functions

+ + + + + + + + + + +
Name
bar
+ + +

Private Member Functions

+ + + + + + + + + + +
Name
baz
+ +
+
+ +
+

Synopsis

+
+Declared in <shadowing.cpp>
+
+void
+foo();
+
+
+
+
+
+
+ +
+

Synopsis

+
+Declared in <shadowing.cpp>
+
+void
+bar();
+
+
+
+
+
+
+ +
+

Synopsis

+
+Declared in <shadowing.cpp>
+
+void
+baz();
+
+
+
+
+
+ +
+
+

Created with MrDocs

+
+ + \ No newline at end of file diff --git a/test-files/golden-tests/symbols/record/shadowing.xml b/test-files/golden-tests/symbols/record/shadowing.xml new file mode 100644 index 000000000..2875b878e --- /dev/null +++ b/test-files/golden-tests/symbols/record/shadowing.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/test-files/golden-tests/symbols/record/shadowing.yml b/test-files/golden-tests/symbols/record/shadowing.yml new file mode 100644 index 000000000..e331f0b8b --- /dev/null +++ b/test-files/golden-tests/symbols/record/shadowing.yml @@ -0,0 +1 @@ +extract-private: true