MLIR  22.0.0git
Protocol.h
Go to the documentation of this file.
1 //===--- Protocol.h - Language Server Protocol Implementation ---*- C++ -*-===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 //
9 // This file contains structs for LSP commands that are specific to the PDLL
10 // server.
11 //
12 // Each struct has a toJSON and fromJSON function, that converts between
13 // the struct and a JSON representation. (See JSON.h)
14 //
15 // Some structs also have operator<< serialization. This is for debugging and
16 // tests, and is not generally machine-readable.
17 //
18 //===----------------------------------------------------------------------===//
19 
20 #ifndef LIB_MLIR_TOOLS_MLIRPDLLLSPSERVER_PROTOCOL_H_
21 #define LIB_MLIR_TOOLS_MLIRPDLLLSPSERVER_PROTOCOL_H_
22 
23 #include "llvm/Support/LSP/Protocol.h"
24 
25 namespace mlir {
26 namespace lsp {
27 using llvm::lsp::URIForFile;
28 
29 //===----------------------------------------------------------------------===//
30 // PDLLViewOutputParams
31 //===----------------------------------------------------------------------===//
32 
33 /// The type of output to view from PDLL.
34 enum class PDLLViewOutputKind {
35  AST,
36  MLIR,
37  CPP,
38 };
39 
40 /// Represents the parameters used when viewing the output of a PDLL file.
42  /// The URI of the document to view the output of.
43  URIForFile uri;
44 
45  /// The kind of output to generate.
47 };
48 
49 /// Add support for JSON serialization.
50 bool fromJSON(const llvm::json::Value &value, PDLLViewOutputKind &result,
51  llvm::json::Path path);
52 bool fromJSON(const llvm::json::Value &value, PDLLViewOutputParams &result,
53  llvm::json::Path path);
54 
55 //===----------------------------------------------------------------------===//
56 // PDLLViewOutputResult
57 //===----------------------------------------------------------------------===//
58 
59 /// Represents the result of viewing the output of a PDLL file.
61  /// The string representation of the output.
62  std::string output;
63 };
64 
65 /// Add support for JSON serialization.
66 llvm::json::Value toJSON(const PDLLViewOutputResult &value);
67 
68 } // namespace lsp
69 } // namespace mlir
70 
71 #endif
bool fromJSON(const llvm::json::Value &value, PDLLViewOutputKind &result, llvm::json::Path path)
Add support for JSON serialization.
Definition: Protocol.cpp:40
PDLLViewOutputKind
The type of output to view from PDLL.
Definition: Protocol.h:34
llvm::json::Value toJSON(const PDLLViewOutputResult &value)
Add support for JSON serialization.
Definition: Protocol.cpp:69
Include the generated interface declarations.
Represents the parameters used when viewing the output of a PDLL file.
Definition: Protocol.h:41
URIForFile uri
The URI of the document to view the output of.
Definition: Protocol.h:43
PDLLViewOutputKind kind
The kind of output to generate.
Definition: Protocol.h:46
Represents the result of viewing the output of a PDLL file.
Definition: Protocol.h:60
std::string output
The string representation of the output.
Definition: Protocol.h:62