}
}
- 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");
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 ()) {
next.visit_delegate (d);
}
- public virtual void visit_member (Member m) {
+ public virtual void visit_member (Symbol m) {
next.visit_member (m);
}
valaloop.vala \
valamapliteral.vala \
valamarkupreader.vala \
- valamember.vala \
valamemberaccess.vala \
valamemberinitializer.vala \
valamethod.vala \
/**
* 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.
*/
*/
public Expression value { get; set; }
- public Comment comment { get; set; }
-
private string cname;
/**
/**
* Represents a type or namespace field.
*/
-public class Vala.Field : Member, Lockable {
+public class Vala.Field : Symbol, Lockable {
/**
* The data type of this field.
*/
+++ /dev/null
-/* 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 <raffaele@sandrini.ch>
- */
-
-using GLib;
-
-/**
- * Represents a general class member.
- */
-public abstract class Vala.Member : Symbol {
- public Comment comment { get; set; }
-
- private List<string> cheader_filenames = new ArrayList<string> ();
-
- /**
- * 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<string> 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
-}
-
/**
* Represents a type or namespace method.
*/
-public class Vala.Method : Member {
+public class Vala.Method : Symbol {
List<TypeParameter> type_parameters = new ArrayList<TypeParameter> ();
public const string DEFAULT_SENTINEL = "NULL";
private List<string> cprefixes = new ArrayList<string> ();
private string lower_case_cprefix;
- private List<string> cheader_filenames = new ArrayList<string> ();
-
private List<Namespace> namespaces = new ArrayList<Namespace> ();
private List<UsingDirective> using_directives = new ArrayList<UsingDirective> ();
this.lower_case_cprefix = cprefix;
}
- public override List<string> 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<string> ();
- 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");
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")) {
/**
* Represents a property declaration in the source code.
*/
-public class Vala.Property : Member, Lockable {
+public class Vala.Property : Symbol, Lockable {
/**
* The property type.
*/
/**
* 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.
*/
*/
public SymbolAccessibility access { get; set; }
+ public Comment? comment { get; set; }
+
+ private List<string> cheader_filenames = new ArrayList<string> ();
+
+ /**
+ * 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
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);
}
* @return list of C header filenames for this symbol
*/
public virtual List<string> get_cheader_filenames () {
- return new ArrayList<string> ();
+ // 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;
}
/**
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<string> ();
+ 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 {
PUBLIC
}
+public enum MemberBinding {
+ INSTANCE,
+ CLASS,
+ STATIC
+}
* 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<string> cheader_filenames = new ArrayList<string> ();
-
public TypeSymbol (string? name, SourceReference? source_reference = null, Comment? comment = null) {
- base (name, source_reference);
- this.comment = comment;
+ base (name, source_reference, comment);
}
/**
return null;
}
- public override List<string> 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.