IDL compiler front-end library
OperationBase.h
Go to the documentation of this file.
1 /*
3 * Nirvana IDL front-end library.
4 *
5 * This is a part of the Nirvana project.
6 *
7 * Author: Igor Popov
8 *
9 * Copyright (c) 2021 Igor Popov.
10 *
11 * This program is free software; you can redistribute it and/or modify
12 * it under the terms of the GNU Lesser General Public License as published by
13 * the Free Software Foundation; either version 3 of the License, or
14 * (at your option) any later version.
15 *
16 * This program is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
20 *
21 * You should have received a copy of the GNU Lesser General Public
22 * License along with this library. If not, see <http://www.gnu.org/licenses/>.
23 *
24 * Send comments and/or bug reports to:
25 * popov.nirvana@gmail.com
26 */
27 #ifndef IDLFE_AST_OPERATIONBASE_H_
28 #define IDLFE_AST_OPERATIONBASE_H_
29 #pragma once
30 
31 #include "Parameter.h"
32 #include "Exception.h"
33 
34 namespace AST{
35 
38  public NamedItem,
39  public ContainerT <Parameter>
40 {
41 public:
43  const Raises& raises () const noexcept
44  {
45  return raises_;
46  }
47 
48 protected:
50  NamedItem (kind, builder, name)
51  {}
52 
53 private:
54  friend class Builder;
55 
56  void raises (Raises&& exceptions)
57  {
58  raises_ = std::move (exceptions);
59  }
60 
61 private:
62  Raises raises_;
63 };
64 
65 }
66 
67 #endif
68 
The AST builder.
Definition: Builder.h:60
Sequential container of the AST items.
Definition: Container.h:40
Kind
The kind of item.
Definition: Item.h:45
Kind kind() const noexcept
Definition: Item.h:75
A named AST item.
Definition: NamedItem.h:45
const Identifier & name() const noexcept
Definition: NamedItem.h:48
An operation base.
Definition: OperationBase.h:40
const Raises & raises() const noexcept
Definition: OperationBase.h:43
The IDL simple declarator.
Definition: Declarators.h:41
Abstract Syntax Tree namespace.
Definition: Array.h:34
std::vector< const ItemWithId * > Raises
Definition: Exception.h:55