diff options
Diffstat (limited to 'gfx/skia/skia/src/sksl/SkSLIntrinsicList.cpp')
-rw-r--r-- | gfx/skia/skia/src/sksl/SkSLIntrinsicList.cpp | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/gfx/skia/skia/src/sksl/SkSLIntrinsicList.cpp b/gfx/skia/skia/src/sksl/SkSLIntrinsicList.cpp new file mode 100644 index 0000000000..a582bdff60 --- /dev/null +++ b/gfx/skia/skia/src/sksl/SkSLIntrinsicList.cpp @@ -0,0 +1,33 @@ +/* + * Copyright 2021 Google LLC. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "src/base/SkStringView.h" +#include "src/sksl/SkSLIntrinsicList.h" + +namespace SkSL { + +const IntrinsicMap& GetIntrinsicMap() { + #define SKSL_INTRINSIC(name) {#name, k_##name##_IntrinsicKind}, + static const auto* kAllIntrinsics = new SkTHashMap<std::string_view, IntrinsicKind>{ + SKSL_INTRINSIC_LIST + }; + #undef SKSL_INTRINSIC + + return *kAllIntrinsics; +} + +IntrinsicKind FindIntrinsicKind(std::string_view functionName) { + if (skstd::starts_with(functionName, '$')) { + functionName.remove_prefix(1); + } + + const IntrinsicMap& intrinsicMap = GetIntrinsicMap(); + IntrinsicKind* kind = intrinsicMap.find(functionName); + return kind ? *kind : kNotIntrinsic; +} + +} // namespace SkSL |