1 /*
2  * Licensed to the Apache Software Foundation (ASF) under one
3  * or more contributor license agreements.  See the NOTICE file
4  * distributed with this work for additional information
5  * regarding copyright ownership.  The ASF licenses this file
6  * to you under the Apache License, Version 2.0 (the
7  * "License"); you may not use this file except in compliance
8  * with the License.  You may obtain a copy of the License at
9  *
10  *   http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing,
13  * software distributed under the License is distributed on an
14  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15  * KIND, either express or implied.  See the License for the
16  * specific language governing permissions and limitations
17  * under the License.
18  */
19 
20 /*!
21  * \file base.cc
22  * \brief The core base types for Relay.
23  */
24 
25 #include <tvm/ir/type.h>
26 #include <tvm/relay/base.h>
27 #include <tvm/runtime/registry.h>
28 
29 namespace tvm {
30 namespace relay {
31 
32 using namespace tvm::runtime;
33 
34 TVM_REGISTER_NODE_TYPE(IdNode);
35 
Id(String name_hint)36 Id::Id(String name_hint) {
37   ObjectPtr<IdNode> n = make_object<IdNode>();
38   n->name_hint = std::move(name_hint);
39   data_ = std::move(n);
40 }
41 
__anon9d31053c0102(ObjectRef node_ref, Span sp) 42 TVM_REGISTER_GLOBAL("ir.NodeSetSpan").set_body_typed([](ObjectRef node_ref, Span sp) {
43   if (auto* rn = node_ref.as<RelayNode>()) {
44     rn->span = sp;
45   } else if (auto* rn = node_ref.as<RelayExprNode>()) {
46     rn->span = sp;
47   } else if (auto* rn = node_ref.as<TypeNode>()) {
48     rn->span = sp;
49   } else {
50     LOG(FATAL) << "Expect Type or RelayNode ";
51   }
52 });
53 
54 }  // namespace relay
55 }  // namespace tvm
56