diff options
| author | Tim Foley <tfoleyNV@users.noreply.github.com> | 2021-01-07 16:01:48 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-01-07 16:01:48 -0800 |
| commit | e24c5a6cb9c3347477b83abe084a09ae8f9fde0a (patch) | |
| tree | be5f8d31f8989ddc207f8ecdaa68a0bb6234a369 /source/slang | |
| parent | d84f4582c0caa656e7d0ca0e619651f8b4e5ed16 (diff) | |
Fill in some missing bits of capability API (#1652)
* Fill in some missing bits of capability API
* Make invalid/unknown capability have a zero value (this aligns it better with the public API for `SlangProfileID`, so that the two can be merged down the line)
* Actually provide an implementation of `spFindCapability()` public API
* fixup: bug fixes for renumbering invalid capability atom
Diffstat (limited to 'source/slang')
| -rw-r--r-- | source/slang/slang-api.cpp | 7 | ||||
| -rw-r--r-- | source/slang/slang-capability.cpp | 13 | ||||
| -rw-r--r-- | source/slang/slang-capability.h | 2 |
3 files changed, 10 insertions, 12 deletions
diff --git a/source/slang/slang-api.cpp b/source/slang/slang-api.cpp index e1eee66dd..4595bac51 100644 --- a/source/slang/slang-api.cpp +++ b/source/slang/slang-api.cpp @@ -127,6 +127,13 @@ SLANG_API SlangProfileID spFindProfile( return session->findProfile(name); } +SLANG_API SlangCapabilityID spFindCapability( + SlangSession* session, + char const* name) +{ + return session->findCapability(name); +} + /* !!!!!!!!!!!!!!!!!!SlangCompileRequest API!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */ /*! diff --git a/source/slang/slang-capability.cpp b/source/slang/slang-capability.cpp index a75f6131c..5de05a5a4 100644 --- a/source/slang/slang-capability.cpp +++ b/source/slang/slang-capability.cpp @@ -97,11 +97,7 @@ struct CapabilityAtomInfo CapabilityAtom bases[kCapabilityAtom_MaxBases]; }; // -// The array is going to be sized to include an entry for `CapabilityAtom::Invalid` -// which as a value of -1, so we need to size the array one larger than the `Count` -// value. -// -static const CapabilityAtomInfo kCapabilityAtoms[Int(CapabilityAtom::Count) + 1] = +static const CapabilityAtomInfo kCapabilityAtoms[Int(CapabilityAtom::Count)] = { { "invalid", CapabilityAtomFlavor::Concrete, CapabilityAtomConflictMask::None, 0, { CapabilityAtom::Invalid, CapabilityAtom::Invalid, CapabilityAtom::Invalid, CapabilityAtom::Invalid } }, @@ -114,7 +110,7 @@ static const CapabilityAtomInfo kCapabilityAtoms[Int(CapabilityAtom::Count) + 1] static CapabilityAtomInfo const& _getInfo(CapabilityAtom atom) { SLANG_ASSERT(Int(atom) < Int(CapabilityAtom::Count)); - return kCapabilityAtoms[Int(atom) + 1]; + return kCapabilityAtoms[Int(atom)]; } CapabilityAtom findCapabilityAtom(UnownedStringSlice const& name) @@ -124,11 +120,6 @@ CapabilityAtom findCapabilityAtom(UnownedStringSlice const& name) // for( Index i = 0; i < Index(CapabilityAtom::Count); ++i ) { - // Note: using `_getInfo` here instead of accessing - // the `kCapabilityAtoms` array directly lets us - // avoid dealing with the offset-by-one indexing - // choice. - // auto& capInfo = _getInfo(CapabilityAtom(i)); if(name == UnownedTerminatedStringSlice(capInfo.name)) return CapabilityAtom(i); diff --git a/source/slang/slang-capability.h b/source/slang/slang-capability.h index 5392a669a..dd3ffce2c 100644 --- a/source/slang/slang-capability.h +++ b/source/slang/slang-capability.h @@ -32,7 +32,7 @@ enum class CapabilityAtom : int32_t // function needs the invalid capability, it would be reasonable // to report that situation as an error. // - Invalid = -1, + Invalid = 0, #define SLANG_CAPABILITY_ATOM(ENUMERATOR, NAME, FLAVOR, CONFLICT, RANK, BASE0, BASE1, BASE2, BASE3) \ ENUMERATOR, |
