1/* valainterfacetype.vala 2 * 3 * Copyright (C) 2007-2008 Jürg Billeter 4 * 5 * This library is free software; you can redistribute it and/or 6 * modify it under the terms of the GNU Lesser General Public 7 * License as published by the Free Software Foundation; either 8 * version 2.1 of the License, or (at your option) any later version. 9 10 * This library is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 * Lesser General Public License for more details. 14 15 * You should have received a copy of the GNU Lesser General Public 16 * License along with this library; if not, write to the Free Software 17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 18 * 19 * Author: 20 * Jürg Billeter <j@bitron.ch> 21 */ 22 23using GLib; 24 25/** 26 * An interface type. 27 */ 28public class Vala.InterfaceType : ReferenceType { 29 /** 30 * The referred interface. 31 */ 32 public weak Interface interface_symbol { 33 get { 34 return (Interface) symbol; 35 } 36 } 37 38 public InterfaceType (Interface interface_symbol) { 39 base (interface_symbol); 40 } 41 42 public override DataType copy () { 43 var result = new InterfaceType (interface_symbol); 44 result.source_reference = source_reference; 45 result.value_owned = value_owned; 46 result.nullable = nullable; 47 result.is_dynamic = is_dynamic; 48 result.floating_reference = floating_reference; 49 50 foreach (DataType arg in get_type_arguments ()) { 51 result.add_type_argument (arg.copy ()); 52 } 53 54 return result; 55 } 56} 57