blob: 2f7d1e12907fdaa9599d7ebc1b3d52650ed9dc3a [file] [log] [blame]
dan sinclair4b1d79e2022-12-01 23:45:18 +00001// Copyright 2021 The Tint Authors.
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15#include "src/tint/sem/array_count.h"
16
Ben Clayton651d9e22023-02-09 10:34:14 +000017#include "src/tint/ast/identifier.h"
18
dan sinclair4b1d79e2022-12-01 23:45:18 +000019TINT_INSTANTIATE_TYPEINFO(tint::sem::NamedOverrideArrayCount);
20TINT_INSTANTIATE_TYPEINFO(tint::sem::UnnamedOverrideArrayCount);
21
22namespace tint::sem {
23
dan sinclair4b1d79e2022-12-01 23:45:18 +000024NamedOverrideArrayCount::NamedOverrideArrayCount(const GlobalVariable* var)
dan sinclair12fa3032023-04-19 23:52:33 +000025 : Base(static_cast<size_t>(utils::TypeInfo::Of<NamedOverrideArrayCount>().full_hashcode)),
Ben Claytonce93a6b2022-12-19 17:07:29 +000026 variable(var) {}
dan sinclair4b1d79e2022-12-01 23:45:18 +000027NamedOverrideArrayCount::~NamedOverrideArrayCount() = default;
28
Ben Clayton7c3e9a62022-12-16 15:31:19 +000029bool NamedOverrideArrayCount::Equals(const UniqueNode& other) const {
dan sinclair4b1d79e2022-12-01 23:45:18 +000030 if (auto* v = other.As<NamedOverrideArrayCount>()) {
31 return variable == v->variable;
32 }
33 return false;
34}
35
dan sinclaird026e132023-04-18 19:38:25 +000036std::string NamedOverrideArrayCount::FriendlyName() const {
37 return variable->Declaration()->name->symbol.Name();
dan sinclair946858a2022-12-08 22:21:24 +000038}
39
dan sinclairf8abdc72023-01-05 21:07:15 +000040type::ArrayCount* NamedOverrideArrayCount::Clone(type::CloneContext&) const {
41 TINT_ASSERT(Type, false && "Named override array count clone not available");
42 return nullptr;
43}
44
Ben Clayton3fb9a3f2023-02-04 21:20:26 +000045UnnamedOverrideArrayCount::UnnamedOverrideArrayCount(const ValueExpression* e)
dan sinclair12fa3032023-04-19 23:52:33 +000046 : Base(static_cast<size_t>(utils::TypeInfo::Of<UnnamedOverrideArrayCount>().full_hashcode)),
47 expr(e) {}
dan sinclair4b1d79e2022-12-01 23:45:18 +000048UnnamedOverrideArrayCount::~UnnamedOverrideArrayCount() = default;
49
Ben Clayton7c3e9a62022-12-16 15:31:19 +000050bool UnnamedOverrideArrayCount::Equals(const UniqueNode& other) const {
dan sinclair4b1d79e2022-12-01 23:45:18 +000051 if (auto* v = other.As<UnnamedOverrideArrayCount>()) {
52 return expr == v->expr;
53 }
54 return false;
55}
56
dan sinclaird026e132023-04-18 19:38:25 +000057std::string UnnamedOverrideArrayCount::FriendlyName() const {
dan sinclair946858a2022-12-08 22:21:24 +000058 return "[unnamed override-expression]";
59}
60
dan sinclairf8abdc72023-01-05 21:07:15 +000061type::ArrayCount* UnnamedOverrideArrayCount::Clone(type::CloneContext&) const {
62 TINT_ASSERT(Type, false && "Unnamed override array count clone not available");
63 return nullptr;
64}
65
dan sinclair4b1d79e2022-12-01 23:45:18 +000066} // namespace tint::sem