1 package net.sourceforge.jenesis4java;
2
3 /*
4 * #%L
5 * Jenesis 4 Java Code Generator
6 * %%
7 * Copyright (C) 2000 - 2015 jenesis4java
8 * %%
9 * This program is free software: you can redistribute it and/or modify
10 * it under the terms of the GNU Lesser General Public License as
11 * published by the Free Software Foundation, either version 3 of the
12 * License, or (at your option) any later version.
13 *
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Lesser Public License for more details.
18 *
19 * You should have received a copy of the GNU General Lesser Public
20 * License along with this program. If not, see
21 * <http://www.gnu.org/licenses/lgpl-3.0.html>.
22 * #L%
23 */
24
25 import java.util.List;
26
27 /**
28 * Copyright (C) 2008, 2010 Richard van Nieuwenhoven - ritchie [at] gmx [dot] at
29 * Copyright (C) 2000, 2001 Paul Cody Johnston - pcj@inxar.org <br>
30 * This file is part of Jenesis4java. Jenesis4java is free software: you can
31 * redistribute it and/or modify it under the terms of the GNU Lesser General
32 * Public License as published by the Free Software Foundation, either version 3
33 * of the License, or (at your option) any later version.<br>
34 * Jenesis4java is distributed in the hope that it will be useful, but WITHOUT
35 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
36 * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
37 * details.<br>
38 * You should have received a copy of the GNU Lesser General Public License
39 * along with Jenesis4java. If not, see <http://www.gnu.org/licenses/>.
40 */
41 /**
42 * {@code Declaration} subinterface for methods including abstract and class
43 * methods.
44 */
45 public interface Method extends Member {
46
47 /**
48 * Adds a new {@code FormalParameter} to this method signature with the
49 * given type and name and returns the {@code Method}.
50 */
51 FormalParameter addParameter(Class type, String name);
52
53 /**
54 * Adds a new {@code FormalParameter} to this method signature with the
55 * given type and name and returns the {@code Method}.
56 */
57 FormalParameter addParameter(Type type, String name);
58
59 /**
60 * Adds this string to the list of throws and returns the {@code Method}.
61 */
62 Method addThrows(String type);
63
64 /**
65 * Gets the list of formal parameter declarations as an list of
66 * {@code FormalParameter}.
67 */
68 List<FormalParameter> getParameters();
69
70 /**
71 * Gets the list of throws clauses as an list of {@code String}.
72 */
73 List<String> getThrows();
74
75 /**
76 * Gets the (return) type of this method.
77 */
78 Type getType();
79
80 /**
81 * Accessor method for the isAbstract flag.
82 */
83 boolean isAbstract();
84
85 /**
86 * Mutator method for the isAbstract flag.
87 */
88 Method isAbstract(boolean value);
89
90 /**
91 * Sets the (return) type of this method.
92 */
93 Method setType(Type type);
94 }