1 //===- Dialect.cpp - Dialect wrapper class --------------------------------===//
2 //
3 // Copyright 2019 The MLIR Authors.
4 //
5 // Licensed under the Apache License, Version 2.0 (the "License");
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
8 //
9 //   http://www.apache.org/licenses/LICENSE-2.0
10 //
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
16 // =============================================================================
17 //
18 // Dialect wrapper to simplify using TableGen Record defining a MLIR dialect.
19 //
20 //===----------------------------------------------------------------------===//
21 
22 #include "mlir/TableGen/Dialect.h"
23 #include "llvm/TableGen/Record.h"
24 
25 namespace mlir {
26 namespace tblgen {
27 
28 StringRef tblgen::Dialect::getName() const {
29   return def->getValueAsString("name");
30 }
31 
32 StringRef tblgen::Dialect::getCppNamespace() const {
33   return def->getValueAsString("cppNamespace");
34 }
35 
36 static StringRef getAsStringOrEmpty(const llvm::Record &record,
37                                     StringRef fieldName) {
38   if (auto valueInit = record.getValueInit(fieldName)) {
39     if (llvm::isa<llvm::CodeInit>(valueInit) ||
40         llvm::isa<llvm::StringInit>(valueInit))
41       return record.getValueAsString(fieldName);
42   }
43   return "";
44 }
45 
46 StringRef tblgen::Dialect::getSummary() const {
47   return getAsStringOrEmpty(*def, "summary");
48 }
49 
50 StringRef tblgen::Dialect::getDescription() const {
51   return getAsStringOrEmpty(*def, "description");
52 }
53 
54 bool Dialect::operator==(const Dialect &other) const {
55   return def == other.def;
56 }
57 
58 bool Dialect::operator<(const Dialect &other) const {
59   return getName() < other.getName();
60 }
61 
62 } // end namespace tblgen
63 } // end namespace mlir
64