From fd304c6c02c73a0024f6d982b1936451e4812370 Mon Sep 17 00:00:00 2001 From: jsmall-nvidia Date: Mon, 15 Mar 2021 11:16:32 -0400 Subject: Improvements in Docs requirements/availability (#1751) * #include an absolute path didn't work - because paths were taken to always be relative. * Use capability system in docs. Simplify how requirements/availability is produced. * Small fixes in output of availablity. * Updated stdlib doc. * Small improvements. Co-authored-by: Tim Foley --- source/slang/slang-capability.cpp | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'source/slang/slang-capability.cpp') diff --git a/source/slang/slang-capability.cpp b/source/slang/slang-capability.cpp index 5de05a5a4..0b82cb92c 100644 --- a/source/slang/slang-capability.cpp +++ b/source/slang/slang-capability.cpp @@ -127,6 +127,31 @@ CapabilityAtom findCapabilityAtom(UnownedStringSlice const& name) return CapabilityAtom::Invalid; } +bool isCapabilityDerivedFrom(CapabilityAtom atom, CapabilityAtom base) +{ + if (atom == base) + { + return true; + } + + const auto& info = kCapabilityAtoms[Index(atom)]; + + for (auto cur : info.bases) + { + if (cur == CapabilityAtom::Invalid) + { + return false; + } + + if (isCapabilityDerivedFrom(cur, base)) + { + return true; + } + } + + return false; +} + // // CapabilitySet // -- cgit v1.2.3