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 a class constructor. 43 */ 44 public interface Constructor extends Access, InitializationDeclaration { 45 46 /** 47 * The target of a constructor forwarding. 48 */ 49 enum ForwardingTarget { 50 51 /** 52 * Forward the constructor call to another constructor of the class. 53 */ 54 THIS, 55 56 /** 57 * Forward the constructor call to a constructor of the superclass. 58 */ 59 SUPER 60 } 61 62 /** 63 * A Constructor forwarding call. This will be printed prior to any other 64 * statement in the body. 65 * <p> 66 * The call can be forwarded either to {@code this(..)} or {@code super(..)}. 67 * <p> 68 * By default, no forwarding is created. 69 * 70 * @param target 71 * The target of the forwarding. If this value is {@code null}, 72 * no forwarding statement is created. 73 * @return The currently active {@link ConstructorForwarding}, or 74 * {@code null}, if no forwarding is active. 75 */ 76 ConstructorForwarding forwardCall(ForwardingTarget target); 77 78 /** 79 * Adds a new formal parameter to the list of parameters with the given 80 * {@code Type} and name, and returns the {@code FormalParameter} object. 81 */ 82 FormalParameter addParameter(Class type, String name); 83 84 /** 85 * Adds a new formal parameter to the list of parameters with the given 86 * {@code Type} and name, and returns the {@code FormalParameter} object. 87 */ 88 FormalParameter addParameter(Type type, String name); 89 90 /** 91 * Adds this String to the list of throws. 92 */ 93 Constructor addThrows(String type); 94 95 /** 96 * Gets the list of formal parameters as a list of {@code FormalParameter}. 97 */ 98 List<FormalParameter> getParameters(); 99 100 /** 101 * Gets the list of throws clauses as a list of {@code String}. 102 */ 103 List<String> getThrows(); 104 }