From: Jürg Billeter Date: Sun, 25 Jul 2010 09:27:35 +0000 (+0200) Subject: Remove Member class X-Git-Tag: 0.9.4~8 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=11170a0962836e3d7ee79b4b92e58849a63c6e95;p=thirdparty%2Fvala.git Remove Member class --- diff --git a/codegen/valaccodebasemodule.vala b/codegen/valaccodebasemodule.vala index 05f8e93f4..4edeb1a88 100644 --- a/codegen/valaccodebasemodule.vala +++ b/codegen/valaccodebasemodule.vala @@ -733,7 +733,7 @@ public class Vala.CCodeBaseModule : CCodeModule { } } - public override void visit_member (Member m) { + public override void visit_member (Symbol m) { /* stuff meant for all lockable members */ if (m is Lockable && ((Lockable) m).get_lock_used ()) { CCodeExpression l = new CCodeIdentifier ("self"); @@ -3438,7 +3438,7 @@ public class Vala.CCodeBaseModule : CCodeModule { private CCodeExpression get_lock_expression (Statement stmt, Expression resource) { CCodeExpression l = null; var inner_node = ((MemberAccess)resource).inner; - var member = (Member)resource.symbol_reference; + var member = resource.symbol_reference; var parent = (TypeSymbol)resource.symbol_reference.parent_symbol; if (member.is_instance_member ()) { diff --git a/codegen/valaccodemodule.vala b/codegen/valaccodemodule.vala index 1afeac224..a7cb1120e 100644 --- a/codegen/valaccodemodule.vala +++ b/codegen/valaccodemodule.vala @@ -79,7 +79,7 @@ public abstract class Vala.CCodeModule { next.visit_delegate (d); } - public virtual void visit_member (Member m) { + public virtual void visit_member (Symbol m) { next.visit_member (m); } diff --git a/vala/Makefile.am b/vala/Makefile.am index e0a5f3876..1dc0ca857 100644 --- a/vala/Makefile.am +++ b/vala/Makefile.am @@ -94,7 +94,6 @@ libvalacore_la_VALASOURCES = \ valaloop.vala \ valamapliteral.vala \ valamarkupreader.vala \ - valamember.vala \ valamemberaccess.vala \ valamemberinitializer.vala \ valamethod.vala \ diff --git a/vala/valaconstant.vala b/vala/valaconstant.vala index e889e40d6..416ab22c8 100644 --- a/vala/valaconstant.vala +++ b/vala/valaconstant.vala @@ -25,7 +25,7 @@ using GLib; /** * Represents a type member with a constant value. */ -public class Vala.Constant : Member, Lockable { +public class Vala.Constant : Symbol, Lockable { /** * The data type of this constant. */ diff --git a/vala/valaenumvalue.vala b/vala/valaenumvalue.vala index 47f11ee19..0c3d0ea07 100644 --- a/vala/valaenumvalue.vala +++ b/vala/valaenumvalue.vala @@ -31,8 +31,6 @@ public class Vala.EnumValue : Symbol { */ public Expression value { get; set; } - public Comment comment { get; set; } - private string cname; /** diff --git a/vala/valafield.vala b/vala/valafield.vala index 82e48f1f0..85029d23b 100644 --- a/vala/valafield.vala +++ b/vala/valafield.vala @@ -25,7 +25,7 @@ using GLib; /** * Represents a type or namespace field. */ -public class Vala.Field : Member, Lockable { +public class Vala.Field : Symbol, Lockable { /** * The data type of this field. */ diff --git a/vala/valamember.vala b/vala/valamember.vala deleted file mode 100644 index 1d2a25903..000000000 --- a/vala/valamember.vala +++ /dev/null @@ -1,102 +0,0 @@ -/* valamember.vala - * - * Copyright (C) 2006-2008 Raffaele Sandrini, Jürg Billeter - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * Author: - * Raffaele Sandrini - */ - -using GLib; - -/** - * Represents a general class member. - */ -public abstract class Vala.Member : Symbol { - public Comment comment { get; set; } - - private List cheader_filenames = new ArrayList (); - - /** - * Specifies whether this method explicitly hides a member of a base - * type. - */ - public bool hides { get; set; } - - public Member (string? name, SourceReference? source_reference, Comment? comment = null) { - base (name, source_reference); - this.comment = comment; - } - - public override List get_cheader_filenames () { - if (cheader_filenames.size == 0 && parent_symbol != null) { - /* default to header filenames of the namespace */ - foreach (string filename in parent_symbol.get_cheader_filenames ()) { - add_cheader_filename (filename); - } - - if (cheader_filenames.size == 0 && source_reference != null && !external_package) { - // don't add default include directives for VAPI files - cheader_filenames.add (source_reference.file.get_cinclude_filename ()); - } - } - return cheader_filenames; - } - - - /** - * Adds a filename to the list of C header filenames users of this data - * type must include. - * - * @param filename a C header filename - */ - public void add_cheader_filename (string filename) { - cheader_filenames.add (filename); - } - - public Symbol? get_hidden_member () { - Symbol sym = null; - - if (parent_symbol is Class) { - var cl = ((Class) parent_symbol).base_class; - while (cl != null) { - sym = cl.scope.lookup (name); - if (sym != null && sym.access != SymbolAccessibility.PRIVATE) { - return sym; - } - cl = cl.base_class; - } - } else if (parent_symbol is Struct) { - var st = ((Struct) parent_symbol).base_struct; - while (st != null) { - sym = st.scope.lookup (name); - if (sym != null && sym.access != SymbolAccessibility.PRIVATE) { - return sym; - } - st = st.base_struct; - } - } - - return null; - } -} - -public enum MemberBinding { - INSTANCE, - CLASS, - STATIC -} - diff --git a/vala/valamethod.vala b/vala/valamethod.vala index 0319868ac..8b361066d 100644 --- a/vala/valamethod.vala +++ b/vala/valamethod.vala @@ -27,7 +27,7 @@ using GLib; /** * Represents a type or namespace method. */ -public class Vala.Method : Member { +public class Vala.Method : Symbol { List type_parameters = new ArrayList (); public const string DEFAULT_SENTINEL = "NULL"; diff --git a/vala/valanamespace.vala b/vala/valanamespace.vala index 1417f1006..e7b510958 100644 --- a/vala/valanamespace.vala +++ b/vala/valanamespace.vala @@ -41,8 +41,6 @@ public class Vala.Namespace : Symbol { private List cprefixes = new ArrayList (); private string lower_case_cprefix; - private List cheader_filenames = new ArrayList (); - private List namespaces = new ArrayList (); private List using_directives = new ArrayList (); @@ -517,30 +515,6 @@ public class Vala.Namespace : Symbol { this.lower_case_cprefix = cprefix; } - public override List get_cheader_filenames () { - return cheader_filenames; - } - - /** - * Sets the C header filename of this namespace to the specified - * filename. - * - * @param cheader_filename header filename - */ - public void set_cheader_filename (string cheader_filename) { - cheader_filenames = new ArrayList (); - cheader_filenames.add (cheader_filename); - } - - /** - * Adds a C header filename of this namespace. - * - * @param cheader_filename header filename - */ - public void add_cheader_filename (string cheader_filename) { - cheader_filenames.add (cheader_filename); - } - private void process_ccode_attribute (Attribute a) { if (a.has_argument ("cprefix")) { string value = a.get_string ("cprefix"); @@ -559,7 +533,7 @@ public class Vala.Namespace : Symbol { if (a.has_argument ("cheader_filename")) { var val = a.get_string ("cheader_filename"); foreach (string filename in val.split (",")) { - cheader_filenames.add (filename); + add_cheader_filename (filename); } } if (a.has_argument ("gir_namespace")) { diff --git a/vala/valaproperty.vala b/vala/valaproperty.vala index 3cb8afa72..4f31ae284 100644 --- a/vala/valaproperty.vala +++ b/vala/valaproperty.vala @@ -26,7 +26,7 @@ using GLib; /** * Represents a property declaration in the source code. */ -public class Vala.Property : Member, Lockable { +public class Vala.Property : Symbol, Lockable { /** * The property type. */ diff --git a/vala/valasignal.vala b/vala/valasignal.vala index 443f4b45a..87d2efe29 100644 --- a/vala/valasignal.vala +++ b/vala/valasignal.vala @@ -25,7 +25,7 @@ using GLib; /** * Represents an object signal. Signals enable objects to provide notifications. */ -public class Vala.Signal : Member, Lockable { +public class Vala.Signal : Symbol, Lockable { /** * The return type of handlers of this signal. */ diff --git a/vala/valasymbol.vala b/vala/valasymbol.vala index 8cb6e4348..2fb6c3a9b 100644 --- a/vala/valasymbol.vala +++ b/vala/valasymbol.vala @@ -95,6 +95,16 @@ public abstract class Vala.Symbol : CodeNode { */ public SymbolAccessibility access { get; set; } + public Comment? comment { get; set; } + + private List cheader_filenames = new ArrayList (); + + /** + * Specifies whether this method explicitly hides a member of a base + * type. + */ + public bool hides { get; set; } + /** * Check if this symbol is just internal API (and therefore doesn't need * to be listed in header files for instance) by traversing parent symbols @@ -153,9 +163,10 @@ public abstract class Vala.Symbol : CodeNode { private weak Scope _owner; private Scope _scope; - public Symbol (string? name, SourceReference? source_reference) { + public Symbol (string? name, SourceReference? source_reference, Comment? comment = null) { this.name = name; this.source_reference = source_reference; + this.comment = comment; _scope = new Scope (this); } @@ -229,7 +240,19 @@ public abstract class Vala.Symbol : CodeNode { * @return list of C header filenames for this symbol */ public virtual List get_cheader_filenames () { - return new ArrayList (); + // parent_symbol can be null on incremental parsing + if (cheader_filenames.size == 0 && parent_symbol != null) { + /* default to header filenames of the namespace */ + foreach (string filename in parent_symbol.get_cheader_filenames ()) { + add_cheader_filename (filename); + } + + if (cheader_filenames.size == 0 && source_reference != null && !external_package) { + // don't add default include directives for VAPI files + cheader_filenames.add (source_reference.file.get_cinclude_filename ()); + } + } + return cheader_filenames; } /** @@ -413,6 +436,53 @@ public abstract class Vala.Symbol : CodeNode { return false; } } + + /** + * Sets the C header filename of this namespace to the specified + * filename. + * + * @param cheader_filename header filename + */ + public void set_cheader_filename (string cheader_filename) { + cheader_filenames = new ArrayList (); + cheader_filenames.add (cheader_filename); + } + + /** + * Adds a filename to the list of C header filenames users of this data + * type must include. + * + * @param filename a C header filename + */ + public void add_cheader_filename (string filename) { + cheader_filenames.add (filename); + } + + public Symbol? get_hidden_member () { + Symbol sym = null; + + if (parent_symbol is Class) { + var cl = ((Class) parent_symbol).base_class; + while (cl != null) { + sym = cl.scope.lookup (name); + if (sym != null && sym.access != SymbolAccessibility.PRIVATE) { + return sym; + } + cl = cl.base_class; + } + } else if (parent_symbol is Struct) { + var st = ((Struct) parent_symbol).base_struct; + while (st != null) { + sym = st.scope.lookup (name); + if (sym != null && sym.access != SymbolAccessibility.PRIVATE) { + return sym; + } + st = st.base_struct; + } + } + + return null; + } } public enum Vala.SymbolAccessibility { @@ -422,3 +492,8 @@ public enum Vala.SymbolAccessibility { PUBLIC } +public enum MemberBinding { + INSTANCE, + CLASS, + STATIC +} diff --git a/vala/valatypesymbol.vala b/vala/valatypesymbol.vala index 996e5dcc8..956939b8e 100644 --- a/vala/valatypesymbol.vala +++ b/vala/valatypesymbol.vala @@ -29,13 +29,8 @@ using GLib; * code or imported from an external library with a Vala API file. */ public abstract class Vala.TypeSymbol : Symbol { - public Comment? comment { get; set; } - - private List cheader_filenames = new ArrayList (); - public TypeSymbol (string? name, SourceReference? source_reference = null, Comment? comment = null) { - base (name, source_reference); - this.comment = comment; + base (name, source_reference, comment); } /** @@ -227,32 +222,6 @@ public abstract class Vala.TypeSymbol : Symbol { return null; } - public override List get_cheader_filenames () { - // parent_symbol can be null on incremental parsing - if (cheader_filenames.size == 0 && parent_symbol != null) { - /* default to header filenames of the namespace */ - foreach (string filename in parent_symbol.get_cheader_filenames ()) { - add_cheader_filename (filename); - } - - if (cheader_filenames.size == 0 && source_reference != null && !external_package) { - // don't add default include directives for VAPI files - cheader_filenames.add (source_reference.file.get_cinclude_filename ()); - } - } - return cheader_filenames; - } - - /** - * Adds a filename to the list of C header filenames users of this data - * type must include. - * - * @param filename a C header filename - */ - public void add_cheader_filename (string filename) { - cheader_filenames.add (filename); - } - /** * Checks whether this data type is equal to or a subtype of the * specified data type.