Line data Source code
1 : /* valastructvaluetype.vala
2 : *
3 : * Copyright (C) 2009 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 :
23 : using GLib;
24 :
25 : /**
26 : * A struct value type.
27 : */
28 1537 : public class Vala.StructValueType : ValueType {
29 2916879 : public StructValueType (Struct type_symbol, SourceReference? source_reference = null) {
30 972293 : base (type_symbol, source_reference);
31 : }
32 :
33 2 : public override bool is_invokable () {
34 2 : unowned Struct? st = type_symbol as Struct;
35 2 : if (st != null && st.default_construction_method != null) {
36 2 : return true;
37 : } else {
38 0 : return false;
39 : }
40 : }
41 :
42 4 : public override unowned DataType? get_return_type () {
43 4 : unowned Struct? st = type_symbol as Struct;
44 4 : if (st != null && st.default_construction_method != null) {
45 4 : return st.default_construction_method.return_type;
46 : } else {
47 0 : return null;
48 : }
49 : }
50 :
51 4 : public override unowned List<Parameter>? get_parameters () {
52 4 : unowned Struct? st = type_symbol as Struct;
53 4 : if (st != null && st.default_construction_method != null) {
54 4 : return st.default_construction_method.get_parameters ();
55 : } else {
56 0 : return null;
57 : }
58 : }
59 :
60 57154 : public override DataType copy () {
61 57154 : var result = new StructValueType ((Struct) type_symbol, source_reference);
62 57154 : result.value_owned = value_owned;
63 57154 : result.nullable = nullable;
64 :
65 73422 : foreach (DataType arg in get_type_arguments ()) {
66 8134 : result.add_type_argument (arg.copy ());
67 : }
68 :
69 57154 : return result;
70 : }
71 : }
|