[valadoc] Api: Introduce Visitor and refactor Valadoc.Doclet



commit 2887e595606e3c62b77cebf9c10ec51cd113214f
Author: Didier 'Ptitjes <ptitjes free fr>
Date:   Fri Oct 16 21:44:14 2009 +0200

    Api: Introduce Visitor and refactor Valadoc.Doclet

 src/doclets/devhelp/doclet/doclet.vala            |   16 ++--
 src/doclets/htm/doclet/doclet.vala                |   16 ++--
 src/doclets/htmlhelpers/doclet/doclet.vala        |   10 ++-
 src/libvaladoc/Makefile.am                        |    1 +
 src/libvaladoc/api/class.vala                     |    8 +--
 src/libvaladoc/api/classhandler.vala              |    4 +-
 src/libvaladoc/api/constant.vala                  |    8 +--
 src/libvaladoc/api/constanthandler.vala           |    4 +-
 src/libvaladoc/api/constructionmethodhandler.vala |    4 +-
 src/libvaladoc/api/delegate.vala                  |    8 +--
 src/libvaladoc/api/delegatehandler.vala           |    6 +-
 src/libvaladoc/api/enum.vala                      |   12 +--
 src/libvaladoc/api/enumhandler.vala               |    4 +-
 src/libvaladoc/api/enumvalue.vala                 |    8 +--
 src/libvaladoc/api/errorcode.vala                 |    8 +--
 src/libvaladoc/api/errordomain.vala               |   12 +--
 src/libvaladoc/api/errordomainhandler.vala        |    4 +-
 src/libvaladoc/api/field.vala                     |    8 +--
 src/libvaladoc/api/fieldhandler.vala              |    4 +-
 src/libvaladoc/api/formalparameter.vala           |    3 +-
 src/libvaladoc/api/interface.vala                 |    8 +--
 src/libvaladoc/api/interfacehandler.vala          |    4 +-
 src/libvaladoc/api/method.vala                    |    8 +--
 src/libvaladoc/api/methodhandler.vala             |    6 +-
 src/libvaladoc/api/namespace.vala                 |    8 +--
 src/libvaladoc/api/namespacehandler.vala          |    6 +-
 src/libvaladoc/api/node.vala                      |   10 ++--
 src/libvaladoc/api/package.vala                   |    8 +--
 src/libvaladoc/api/property.vala                  |    8 +--
 src/libvaladoc/api/propertyaccessor.vala          |    2 +-
 src/libvaladoc/api/propertyhandler.vala           |    6 +-
 src/libvaladoc/api/signal.vala                    |    8 +--
 src/libvaladoc/api/signalhandler.vala             |    5 +-
 src/libvaladoc/api/struct.vala                    |    8 +--
 src/libvaladoc/api/structhandler.vala             |    5 +-
 src/libvaladoc/api/tree.vala                      |    4 +-
 src/libvaladoc/api/typeparameter.vala             |    3 +-
 src/libvaladoc/api/visitor.vala                   |   81 +++++++++++++++++++++
 src/libvaladoc/doclet.vala                        |   22 +-----
 src/valadoc/valadoc.vala                          |    2 +-
 40 files changed, 180 insertions(+), 180 deletions(-)
---
diff --git a/src/doclets/devhelp/doclet/doclet.vala b/src/doclets/devhelp/doclet/doclet.vala
index bb198ed..4d02cf6 100755
--- a/src/doclets/devhelp/doclet/doclet.vala
+++ b/src/doclets/devhelp/doclet/doclet.vala
@@ -211,7 +211,7 @@ public class Valadoc.Devhelp.Doclet : Valadoc.Html.BasicDoclet {
 		return GLib.Path.build_filename ( this.settings.path, this.package_dir_name, element.full_name () + ".html" );
 	}
 
-	public override void initialisation ( Settings settings, Api.Tree tree ) {
+	public override void process (Settings settings, Api.Tree tree) {
 		this.settings = settings;
 		this.tree = tree;
 
@@ -223,7 +223,7 @@ public class Valadoc.Devhelp.Doclet : Valadoc.Html.BasicDoclet {
 
 		Gee.Collection<Package> packages = tree.get_package_list ();
 		foreach ( Package pkg in packages ) {
-			pkg.visit ( this );
+			pkg.accept (this);
 		}
 	}
 
@@ -419,7 +419,7 @@ public class Valadoc.Devhelp.Doclet : Valadoc.Html.BasicDoclet {
 		file = null;
 	}
 
-	public override void visit_constant ( Constant constant, ConstantHandler parent ) {
+	public override void visit_constant (Constant constant) {
 		string rpath = this.get_real_path ( constant );
 		string path = this.get_path ( constant );
 
@@ -428,12 +428,12 @@ public class Valadoc.Devhelp.Doclet : Valadoc.Html.BasicDoclet {
 
 		GLib.FileStream file = GLib.FileStream.open ( rpath, "w");
 		this.write_file_header ( file, this.css_path, constant.full_name() );
-		this.write_constant_content ( file, constant, parent );
+		this.write_constant_content (file, constant);
 		this.write_file_footer ( file );
 		file = null;
 	}
 
-	public override void visit_field ( Field field, FieldHandler parent ) {
+	public override void visit_field (Field field) {
 		string rpath = this.get_real_path ( field );
 		string path = this.get_path ( field );
 
@@ -442,7 +442,7 @@ public class Valadoc.Devhelp.Doclet : Valadoc.Html.BasicDoclet {
 
 		GLib.FileStream file = GLib.FileStream.open ( rpath, "w");
 		this.write_file_header ( file, this.css_path, field.full_name() );
-		this.write_field_content ( file, field, parent );
+		this.write_field_content (file, field);
 		this.write_file_footer ( file );
 		file = null;
 	}
@@ -481,7 +481,7 @@ public class Valadoc.Devhelp.Doclet : Valadoc.Html.BasicDoclet {
 		file = null;
 	}
 
-	public override void visit_method ( Method m, Api.MethodHandler parent ) {
+	public override void visit_method (Method m) {
 		string rpath = this.get_real_path ( m );
 		string path = this.get_path ( m );
 
@@ -490,7 +490,7 @@ public class Valadoc.Devhelp.Doclet : Valadoc.Html.BasicDoclet {
 
 		GLib.FileStream file = GLib.FileStream.open ( rpath, "w");
 		this.write_file_header ( file, this.css_path, m.full_name() );
-		this.write_method_content ( file, m, parent );
+		this.write_method_content (file, m);
 		this.write_file_footer ( file );
 		file = null;
 	}
diff --git a/src/doclets/htm/doclet/doclet.vala b/src/doclets/htm/doclet/doclet.vala
index 5ddcb66..e446218 100755
--- a/src/doclets/htm/doclet/doclet.vala
+++ b/src/doclets/htm/doclet/doclet.vala
@@ -108,7 +108,7 @@ public class Valadoc.HtmlDoclet : Valadoc.Html.BasicDoclet {
 		return GLib.Path.build_filename ( this.settings.path, element.package.name, element.full_name () + ".html" );
 	}
 
-	public override void initialisation ( Settings settings, Api.Tree tree ) {
+	public override void process (Settings settings, Api.Tree tree) {
 		this.settings = settings;
 
 		DirUtils.create ( this.settings.path, 0777 );
@@ -125,7 +125,7 @@ public class Valadoc.HtmlDoclet : Valadoc.Html.BasicDoclet {
 
 		Gee.Collection<Package> packages = tree.get_package_list ();
 		foreach ( Package pkg in packages ) {
-			pkg.visit ( this );
+			pkg.accept (this);
 		}
 	}
 
@@ -268,24 +268,24 @@ public class Valadoc.HtmlDoclet : Valadoc.Html.BasicDoclet {
 		file = null;
 	}
 
-	public override void visit_constant ( Constant constant, ConstantHandler parent ) {
+	public override void visit_constant (Constant constant) {
 		string rpath = this.get_real_path ( constant );
 
 		GLib.FileStream file = GLib.FileStream.open ( rpath, "w");
 		this.write_file_header ( file, this.css_path, constant.full_name() );
 		this.write_navi_constant ( file, constant );
-		this.write_constant_content ( file, constant, parent );
+		this.write_constant_content (file, constant);
 		this.write_file_footer ( file );
 		file = null;
 	}
 
-	public override void visit_field ( Field field, FieldHandler parent ) {
+	public override void visit_field (Field field) {
 		string rpath = this.get_real_path ( field );
 
 		GLib.FileStream file = GLib.FileStream.open ( rpath, "w");
 		this.write_file_header ( file, this.css_path, field.full_name() );
 		this.write_navi_field ( file, field );
-		this.write_field_content ( file, field, parent );
+		this.write_field_content (file, field);
 		this.write_file_footer ( file );
 		file = null;
 	}
@@ -318,13 +318,13 @@ public class Valadoc.HtmlDoclet : Valadoc.Html.BasicDoclet {
 		file = null;
 	}
 
-	public override void visit_method ( Method m, Api.MethodHandler parent ) {
+	public override void visit_method (Method m) {
 		string rpath = this.get_real_path ( m );
 
 		GLib.FileStream file = GLib.FileStream.open ( rpath, "w");
 		this.write_file_header ( file, this.css_path, m.full_name() );
 		this.write_navi_method ( file, m );
-		this.write_method_content ( file, m, parent );
+		this.write_method_content (file, m);
 		this.write_file_footer ( file );
 		file = null;
 	}
diff --git a/src/doclets/htmlhelpers/doclet/doclet.vala b/src/doclets/htmlhelpers/doclet/doclet.vala
index c66ab4f..98da9d9 100755
--- a/src/doclets/htmlhelpers/doclet/doclet.vala
+++ b/src/doclets/htmlhelpers/doclet/doclet.vala
@@ -21,7 +21,7 @@ using GLib;
 using Valadoc.Content;
 using Valadoc.Api;
 
-public abstract class Valadoc.Html.BasicDoclet : Valadoc.Doclet {
+public abstract class Valadoc.Html.BasicDoclet : Api.Visitor, Doclet {
 	protected Settings settings;
 	protected HtmlRenderer _renderer;
 
@@ -29,6 +29,8 @@ public abstract class Valadoc.Html.BasicDoclet : Valadoc.Doclet {
 		_renderer = new HtmlRenderer (this);
 	}
 
+	public abstract void process (Settings settings, Api.Tree tree);
+
 	protected string? get_link ( Api.Node element, Api.Node? pos ) {
 		return get_html_link ( this.settings, element, pos );
 	}
@@ -759,7 +761,7 @@ public abstract class Valadoc.Html.BasicDoclet : Valadoc.Doclet {
 		file.puts ( "\t\t\t</div>\n" );
 	}
 
-	public void write_method_content ( GLib.FileStream file, Method m , Api.MethodHandler parent ) {
+	public void write_method_content (GLib.FileStream file, Method m) {
 		string full_name = m.full_name ( );
 		file.printf ( "\t\t\t<div class=\"%s\">\n", css_style_content );
 		file.printf ( "\t\t\t\t<h1 class=\"%s\">%s:</h1>\n", css_title, full_name );
@@ -839,7 +841,7 @@ public abstract class Valadoc.Html.BasicDoclet : Valadoc.Doclet {
 		file.puts ( "\t\t\t</div>\n" );
 	}
 
-	public void write_field_content ( GLib.FileStream file, Field field, FieldHandler parent ) {
+	public void write_field_content (GLib.FileStream file, Field field) {
 		string full_name = field.full_name ( );
 		file.printf ( "\t\t\t<div class=\"%s\">\n", css_style_content );
 		file.printf ( "\t\t\t\t<h1 class=\"%s\">%s:</h1>\n", css_title, full_name );
@@ -862,7 +864,7 @@ public abstract class Valadoc.Html.BasicDoclet : Valadoc.Doclet {
 		file.puts ( "\t\t\t</div>\n" );
 	}
 
-	public void write_constant_content ( GLib.FileStream file, Constant constant, ConstantHandler parent ) {
+	public void write_constant_content (GLib.FileStream file, Constant constant) {
 		string full_name = constant.full_name ( );
 		file.printf ( "\t\t\t<div class=\"%s\">\n", css_style_content );
 		file.printf ( "\t\t\t\t<h1 class=\"%s\">%s:</h1>\n", css_title, full_name );
diff --git a/src/libvaladoc/Makefile.am b/src/libvaladoc/Makefile.am
index 5ace867..ed4534f 100644
--- a/src/libvaladoc/Makefile.am
+++ b/src/libvaladoc/Makefile.am
@@ -81,6 +81,7 @@ libvaladoc_la_VALASOURCES = \
 	api/typereference.vala \
 	api/typesymbol.vala \
 	api/visitable.vala \
+	api/visitor.vala \
 	content/block.vala \
 	content/blockcontent.vala \
 	content/comment.vala \
diff --git a/src/libvaladoc/api/class.vala b/src/libvaladoc/api/class.vala
index ad08764..9d5bd75 100644
--- a/src/libvaladoc/api/class.vala
+++ b/src/libvaladoc/api/class.vala
@@ -60,14 +60,10 @@ public class Valadoc.Api.Class : TypeSymbol, ClassHandler, StructHandler, Signal
 		}
 	}
 
-	public void visit ( Doclet doclet ) {
-		doclet.visit_class ( this );
-	}
-
 	public override NodeType node_type { get { return NodeType.CLASS; } }
 
-	public override void accept (Doclet doclet) {
-		visit (doclet);
+	public override void accept (Visitor visitor) {
+		visitor.visit_class (this);
 	}
 
 	private void set_parent_type_references (Tree root, Vala.Collection<Vala.DataType> lst) {
diff --git a/src/libvaladoc/api/classhandler.vala b/src/libvaladoc/api/classhandler.vala
index 065d112..4a61b66 100644
--- a/src/libvaladoc/api/classhandler.vala
+++ b/src/libvaladoc/api/classhandler.vala
@@ -39,8 +39,8 @@ public interface Valadoc.Api.ClassHandler : Node {
 		return get_children_by_type (NodeType.CLASS);
 	}
 
-	public void visit_classes (Doclet doclet) {
-		accept_children_by_type (NodeType.CLASS, doclet);
+	public void visit_classes (Visitor visitor) {
+		accept_children_by_type (NodeType.CLASS, visitor);
 	}
 }
 
diff --git a/src/libvaladoc/api/constant.vala b/src/libvaladoc/api/constant.vala
index 916d6b8..dd48b35 100644
--- a/src/libvaladoc/api/constant.vala
+++ b/src/libvaladoc/api/constant.vala
@@ -57,13 +57,9 @@ public class Valadoc.Api.Constant : Member, ReturnTypeHandler {
 			.get ();
 	}
 
-	public void visit (Doclet doclet, ConstantHandler? parent) {
-		doclet.visit_constant (this, parent);
-	}
-
 	public override NodeType node_type { get { return NodeType.CONSTANT; } }
 
-	public override void accept (Doclet doclet) {
-		visit (doclet, (ConstantHandler)parent);
+	public override void accept (Visitor visitor) {
+		visitor.visit_constant (this);
 	}
 }
diff --git a/src/libvaladoc/api/constanthandler.vala b/src/libvaladoc/api/constanthandler.vala
index ab44e89..a3975c3 100644
--- a/src/libvaladoc/api/constanthandler.vala
+++ b/src/libvaladoc/api/constanthandler.vala
@@ -25,7 +25,7 @@ public interface Valadoc.Api.ConstantHandler : Node {
 		return get_children_by_type (NodeType.CONSTANT);
 	}
 
-	public void visit_constants (Doclet doclet) {
-		accept_children_by_type (NodeType.CONSTANT, doclet);
+	public void visit_constants (Visitor visitor) {
+		accept_children_by_type (NodeType.CONSTANT, visitor);
 	}
 }
diff --git a/src/libvaladoc/api/constructionmethodhandler.vala b/src/libvaladoc/api/constructionmethodhandler.vala
index 46d96ea..63f3f94 100644
--- a/src/libvaladoc/api/constructionmethodhandler.vala
+++ b/src/libvaladoc/api/constructionmethodhandler.vala
@@ -25,8 +25,8 @@ public interface Valadoc.Api.ConstructionMethodHandler : Node {
 		return get_children_by_type (NodeType.CREATION_METHOD);
 	}
 
-	public void visit_construction_methods ( Doclet doclet ) {
-		accept_children_by_type (NodeType.CREATION_METHOD, doclet);
+	public void visit_construction_methods (Visitor visitor) {
+		accept_children_by_type (NodeType.CREATION_METHOD, visitor);
 	}
 }
 
diff --git a/src/libvaladoc/api/delegate.vala b/src/libvaladoc/api/delegate.vala
index 5991362..36debeb 100644
--- a/src/libvaladoc/api/delegate.vala
+++ b/src/libvaladoc/api/delegate.vala
@@ -41,14 +41,10 @@ public class Valadoc.Api.Delegate : TypeSymbol, ParameterListHandler, ReturnType
 		get;
 	}
 
-	public void visit (Doclet doclet) {
-		doclet.visit_delegate (this);
-	}
-
 	public override NodeType node_type { get { return NodeType.DELEGATE; } }
 
-	public override void accept (Doclet doclet) {
-		visit (doclet);
+	public override void accept (Visitor visitor) {
+		visitor.visit_delegate (this);
 	}
 
 	public bool is_static {
diff --git a/src/libvaladoc/api/delegatehandler.vala b/src/libvaladoc/api/delegatehandler.vala
index f93c377..70201f5 100644
--- a/src/libvaladoc/api/delegatehandler.vala
+++ b/src/libvaladoc/api/delegatehandler.vala
@@ -19,14 +19,12 @@
 
 using Gee;
 
-
 public interface Valadoc.Api.DelegateHandler : Node {
 	public Gee.Collection<Delegate> get_delegate_list () {
 		return get_children_by_type (NodeType.DELEGATE);
 	}
 
-	public void visit_delegates (Doclet doclet) {
-		accept_children_by_type (NodeType.DELEGATE, doclet);
+	public void visit_delegates (Visitor visitor) {
+		accept_children_by_type (NodeType.DELEGATE, visitor);
 	}
 }
-
diff --git a/src/libvaladoc/api/enum.vala b/src/libvaladoc/api/enum.vala
index 2fe59c9..4beade8 100644
--- a/src/libvaladoc/api/enum.vala
+++ b/src/libvaladoc/api/enum.vala
@@ -35,18 +35,14 @@ public class Valadoc.Api.Enum : TypeSymbol, MethodHandler {
 		return get_children_by_type (NodeType.ENUM_VALUE);
 	}
 
-	public void visit_enum_values (Doclet doclet) {
-		accept_children_by_type (NodeType.ENUM_VALUE, doclet);
-	}
-
-	public void visit (Doclet doclet) {
-		doclet.visit_enum (this);
+	public void visit_enum_values (Visitor visitor) {
+		accept_children_by_type (NodeType.ENUM_VALUE, visitor);
 	}
 
 	public override NodeType node_type { get { return NodeType.ENUM; } }
 
-	public override void accept (Doclet doclet) {
-		visit (doclet);
+	public override void accept (Visitor visitor) {
+		visitor.visit_enum (this);
 	}
 
 	private Vala.Enum venum;
diff --git a/src/libvaladoc/api/enumhandler.vala b/src/libvaladoc/api/enumhandler.vala
index a62a4aa..f6e8080 100644
--- a/src/libvaladoc/api/enumhandler.vala
+++ b/src/libvaladoc/api/enumhandler.vala
@@ -25,8 +25,8 @@ public interface Valadoc.Api.EnumHandler : Node {
 		return get_children_by_type (NodeType.ENUM);
 	}
 
-	public void visit_enums (Doclet doclet) {
-		accept_children_by_type (NodeType.ENUM, doclet);
+	public void visit_enums (Visitor visitor) {
+		accept_children_by_type (NodeType.ENUM, visitor);
 	}
 }
 
diff --git a/src/libvaladoc/api/enumvalue.vala b/src/libvaladoc/api/enumvalue.vala
index 94c005d..ba4c807 100644
--- a/src/libvaladoc/api/enumvalue.vala
+++ b/src/libvaladoc/api/enumvalue.vala
@@ -45,14 +45,10 @@ public class Valadoc.Api.EnumValue: Symbol {
 		return this.venval == venval;
 	}
 
-	public void visit (Doclet doclet) {
-		doclet.visit_enum_value (this);
-	}
-
 	public override NodeType node_type { get { return NodeType.ENUM_VALUE; } }
 
-	public override void accept (Doclet doclet) {
-		visit (doclet);
+	public override void accept (Visitor visitor) {
+		visitor.visit_enum_value (this);
 	}
 
 	protected override Inline build_signature () {
diff --git a/src/libvaladoc/api/errorcode.vala b/src/libvaladoc/api/errorcode.vala
index bf0f592..e113d0a 100644
--- a/src/libvaladoc/api/errorcode.vala
+++ b/src/libvaladoc/api/errorcode.vala
@@ -36,14 +36,10 @@ public class Valadoc.Api.ErrorCode : TypeSymbol {
 		return this.verrcode == verrcode;
 	}
 
-	public void visit (Doclet doclet) {
-		doclet.visit_error_code (this);
-	}
-
 	public override NodeType node_type { get { return NodeType.ERROR_CODE; } }
 
-	public override void accept (Doclet doclet) {
-		visit (doclet);
+	public override void accept (Visitor visitor) {
+		visitor.visit_error_code (this);
 	}
 
 	protected override Inline build_signature () {
diff --git a/src/libvaladoc/api/errordomain.vala b/src/libvaladoc/api/errordomain.vala
index 28c3265..3019bd1 100644
--- a/src/libvaladoc/api/errordomain.vala
+++ b/src/libvaladoc/api/errordomain.vala
@@ -33,22 +33,18 @@ public class Valadoc.Api.ErrorDomain : TypeSymbol, MethodHandler {
 		return this.verrdom.get_cname();
 	}
 
-	public void visit_error_codes (Doclet doclet) {
-		accept_children_by_type (NodeType.ERROR_CODE, doclet);
+	public void visit_error_codes (Visitor visitor) {
+		accept_children_by_type (NodeType.ERROR_CODE, visitor);
 	}
 
 	public Collection<ErrorCode> get_error_code_list () {
 		return get_children_by_type (NodeType.ERROR_CODE);
 	}
 
-	public void visit (Doclet doclet) {
-		doclet.visit_error_domain (this);
-	}
-
 	public override NodeType node_type { get { return NodeType.ERROR_DOMAIN; } }
 
-	public override void accept (Doclet doclet) {
-		visit (doclet);
+	public override void accept (Visitor visitor) {
+		visitor.visit_error_domain (this);
 	}
 
 	protected override Inline build_signature () {
diff --git a/src/libvaladoc/api/errordomainhandler.vala b/src/libvaladoc/api/errordomainhandler.vala
index d1cff91..a42b538 100644
--- a/src/libvaladoc/api/errordomainhandler.vala
+++ b/src/libvaladoc/api/errordomainhandler.vala
@@ -25,7 +25,7 @@ public interface Valadoc.Api.ErrorDomainHandler : Node {
 		return get_children_by_type (NodeType.ERROR_DOMAIN);
 	}
 
-	public void visit_error_domains (Doclet doclet) {
-		accept_children_by_type (NodeType.ERROR_DOMAIN, doclet);
+	public void visit_error_domains (Visitor visitor) {
+		accept_children_by_type (NodeType.ERROR_DOMAIN, visitor);
 	}
 }
diff --git a/src/libvaladoc/api/field.vala b/src/libvaladoc/api/field.vala
index 20707b4..a3272a3 100644
--- a/src/libvaladoc/api/field.vala
+++ b/src/libvaladoc/api/field.vala
@@ -78,13 +78,9 @@ public class Valadoc.Api.Field : Member, ReturnTypeHandler {
 		return signature.get ();
 	}
 
-	public void visit (Doclet doclet, FieldHandler? parent) {
-		doclet.visit_field (this, parent);
-	}
-
 	public override NodeType node_type { get { return NodeType.FIELD; } }
 
-	public override void accept (Doclet doclet) {
-		visit (doclet, (FieldHandler) parent);
+	public override void accept (Visitor visitor) {
+		visitor.visit_field (this);
 	}
 }
diff --git a/src/libvaladoc/api/fieldhandler.vala b/src/libvaladoc/api/fieldhandler.vala
index c599566..4f54010 100644
--- a/src/libvaladoc/api/fieldhandler.vala
+++ b/src/libvaladoc/api/fieldhandler.vala
@@ -25,7 +25,7 @@ public interface Valadoc.Api.FieldHandler : Node {
 		return get_children_by_type (NodeType.FIELD);
 	}
 
-	public void visit_fields (Doclet doclet) {
-		accept_children_by_type (NodeType.FIELD, doclet);
+	public void visit_fields (Visitor visitor) {
+		accept_children_by_type (NodeType.FIELD, visitor);
 	}
 }
diff --git a/src/libvaladoc/api/formalparameter.vala b/src/libvaladoc/api/formalparameter.vala
index c7ca7ff..478fc7c 100644
--- a/src/libvaladoc/api/formalparameter.vala
+++ b/src/libvaladoc/api/formalparameter.vala
@@ -62,7 +62,8 @@ public class Valadoc.Api.FormalParameter : Symbol, ReturnTypeHandler {
 
 	public override NodeType node_type { get { return NodeType.FORMAL_PARAMETER; } }
 
-	public override void accept (Doclet doclet) {
+	public override void accept (Visitor visitor) {
+		visitor.visit_formal_parameter (this);
 	}
 
 	protected override void resolve_type_references (Tree root) {
diff --git a/src/libvaladoc/api/interface.vala b/src/libvaladoc/api/interface.vala
index c4c44c5..17030f0 100644
--- a/src/libvaladoc/api/interface.vala
+++ b/src/libvaladoc/api/interface.vala
@@ -43,14 +43,10 @@ public class Valadoc.Api.Interface : TypeSymbol, SignalHandler, PropertyHandler,
 
 	private Vala.Interface vinterface;
 
-	public void visit (Doclet doclet) {
-		doclet.visit_interface (this);
-	}
-
 	public override NodeType node_type { get { return NodeType.INTERFACE; } }
 
-	public override void accept (Doclet doclet) {
-		visit (doclet);
+	public override void accept (Visitor visitor) {
+		visitor.visit_interface (this);
 	}
 
 	private void set_prerequisites (Tree root, Vala.Collection<Vala.DataType> lst) {
diff --git a/src/libvaladoc/api/interfacehandler.vala b/src/libvaladoc/api/interfacehandler.vala
index 695e782..a4c323a 100644
--- a/src/libvaladoc/api/interfacehandler.vala
+++ b/src/libvaladoc/api/interfacehandler.vala
@@ -25,7 +25,7 @@ public interface Valadoc.Api.InterfaceHandler : Node {
 		return get_children_by_type (NodeType.INTERFACE);
 	}
 
-	public void visit_interfaces (Doclet doclet) {
-		accept_children_by_type (NodeType.INTERFACE, doclet);
+	public void visit_interfaces (Visitor visitor) {
+		accept_children_by_type (NodeType.INTERFACE, visitor);
 	}
 }
diff --git a/src/libvaladoc/api/method.vala b/src/libvaladoc/api/method.vala
index 7329c4b..377c89d 100644
--- a/src/libvaladoc/api/method.vala
+++ b/src/libvaladoc/api/method.vala
@@ -193,17 +193,13 @@ public class Valadoc.Api.Method : Member, ParameterListHandler, ExceptionHandler
 		return signature.get ();
 	}
 
-	public void visit (Doclet doclet, Valadoc.Api.MethodHandler in_type) {
-		doclet.visit_method (this, in_type);
-	}
-
 	public override NodeType node_type {
 		get {
 			return is_constructor ? NodeType.CREATION_METHOD : NodeType.METHOD;
 		}
 	}
 
-	public override void accept (Doclet doclet) {
-		visit (doclet, (MethodHandler) parent);
+	public override void accept (Visitor visitor) {
+		visitor.visit_method (this);
 	}
 }
diff --git a/src/libvaladoc/api/methodhandler.vala b/src/libvaladoc/api/methodhandler.vala
index b7b23d9..a5899ee 100644
--- a/src/libvaladoc/api/methodhandler.vala
+++ b/src/libvaladoc/api/methodhandler.vala
@@ -19,14 +19,12 @@
 
 using Gee;
 
-
 public interface Valadoc.Api.MethodHandler : Node {
-	public void visit_methods (Doclet doclet) {
-		accept_children_by_type (NodeType.METHOD, doclet);
+	public void visit_methods (Visitor visitor) {
+		accept_children_by_type (NodeType.METHOD, visitor);
 	}
 
 	public Collection<Method> get_method_list () {
 		return get_children_by_type (NodeType.METHOD);
 	}
 }
-
diff --git a/src/libvaladoc/api/namespace.vala b/src/libvaladoc/api/namespace.vala
index eb23187..1253e10 100644
--- a/src/libvaladoc/api/namespace.vala
+++ b/src/libvaladoc/api/namespace.vala
@@ -57,14 +57,10 @@ public class Valadoc.Api.Namespace : Symbol, MethodHandler, FieldHandler, Namesp
 			.get ();
 	}
 
-	public void visit (Doclet doclet) {
-		doclet.visit_namespace (this);
-	}
-
 	public override NodeType node_type { get { return NodeType.NAMESPACE; } }
 
-	public override void accept (Doclet doclet) {
-		visit (doclet);
+	public override void accept (Visitor visitor) {
+		visitor.visit_namespace (this);
 	}
 
 	public Vala.Namespace vnspace {
diff --git a/src/libvaladoc/api/namespacehandler.vala b/src/libvaladoc/api/namespacehandler.vala
index 34796ab..f21bd3e 100644
--- a/src/libvaladoc/api/namespacehandler.vala
+++ b/src/libvaladoc/api/namespacehandler.vala
@@ -19,14 +19,13 @@
 
 using Gee;
 
-
 public interface Valadoc.Api.NamespaceHandler : Node {
 	public Collection<Namespace> get_namespace_list (bool filtered = true) {
 		return get_children_by_type (NodeType.NAMESPACE, filtered);
 	}
 
-	public void visit_namespaces (Doclet doclet) {
-		accept_children_by_type (NodeType.NAMESPACE, doclet);
+	public void visit_namespaces (Visitor visitor) {
+		accept_children_by_type (NodeType.NAMESPACE, visitor);
 	}
 
 	private ArrayList<Vala.Namespace> create_parent_vnamespace_list (Vala.Symbol vsymbol) {
@@ -117,4 +116,3 @@ public interface Valadoc.Api.NamespaceHandler : Node {
 		return this.find_vnamespace_helper (vnspaces, vnspaces.index_of (vns));
 	}
 }
-
diff --git a/src/libvaladoc/api/node.vala b/src/libvaladoc/api/node.vala
index 4b37283..9b458a6 100644
--- a/src/libvaladoc/api/node.vala
+++ b/src/libvaladoc/api/node.vala
@@ -64,7 +64,7 @@ public abstract class Valadoc.Api.Node : Item, Visitable, Documentation {
 		per_type_children = new HashMap<NodeType?, Gee.List<Node>> (int_hash, int_equal);
 	}
 
-	public abstract void accept (Doclet doclet);
+	public abstract void accept (Visitor visitor);
 
 	public abstract bool is_visitor_accessible (Settings settings);
 
@@ -122,20 +122,20 @@ public abstract class Valadoc.Api.Node : Item, Visitable, Documentation {
 		return children.read_only_view;
 	}
 
-	public void accept_children_by_type (NodeType type, Doclet doclet) {
+	public void accept_children_by_type (NodeType type, Visitor visitor) {
 		Gee.List<Node> all_children = per_type_children.get (type);
 		if (all_children != null) {
 			foreach (Node node in all_children) {
 				if (node.do_document) {
-					node.accept (doclet);
+					node.accept (visitor);
 				}
 			}
 		}
 	}
 
-	public void accept_children (NodeType[] types, Doclet doclet) {
+	public void accept_children (NodeType[] types, Visitor visitor) {
 		foreach (NodeType type in types) {
-			accept_children_by_type (type, doclet);
+			accept_children_by_type (type, visitor);
 		}
 	}
 
diff --git a/src/libvaladoc/api/package.vala b/src/libvaladoc/api/package.vala
index 5b2ba70..583031d 100644
--- a/src/libvaladoc/api/package.vala
+++ b/src/libvaladoc/api/package.vala
@@ -99,14 +99,10 @@ public class Valadoc.Api.Package : Node, NamespaceHandler {
 		return !( this.is_package && settings.with_deps == false );
 	}
 
-	public void visit ( Doclet doclet ) {
-		doclet.visit_package ( this );
-	}
-
 	public override NodeType node_type { get { return NodeType.PACKAGE; } }
 
-	public override void accept (Doclet doclet) {
-		visit (doclet);
+	public override void accept (Visitor visitor) {
+		visitor.visit_package (this);
 	}
 
 	protected override Inline build_signature () {
diff --git a/src/libvaladoc/api/property.vala b/src/libvaladoc/api/property.vala
index ba95a5b..f42a8fe 100644
--- a/src/libvaladoc/api/property.vala
+++ b/src/libvaladoc/api/property.vala
@@ -135,13 +135,9 @@ public class Valadoc.Api.Property : Member, ReturnTypeHandler {
 		return signature.get ();
 	}
 
-	public void visit (Doclet doclet) {
-		doclet.visit_property (this);
-	}
-
 	public override NodeType node_type { get { return NodeType.PROPERTY; } }
 
-	public override void accept (Doclet doclet) {
-		visit (doclet);
+	public override void accept (Visitor visitor) {
+		visitor.visit_property (this);
 	}
 }
diff --git a/src/libvaladoc/api/propertyaccessor.vala b/src/libvaladoc/api/propertyaccessor.vala
index 2151ac6..dd164c7 100644
--- a/src/libvaladoc/api/propertyaccessor.vala
+++ b/src/libvaladoc/api/propertyaccessor.vala
@@ -30,7 +30,7 @@ public class Valadoc.Api.PropertyAccessor : Symbol {
 
 	public override NodeType node_type { get { return NodeType.PROPERTY_ACCESSOR; } }
 
-	public override void accept (Doclet doclet) {
+	public override void accept (Visitor visitor) {
 	}
 
 	public bool is_construct {
diff --git a/src/libvaladoc/api/propertyhandler.vala b/src/libvaladoc/api/propertyhandler.vala
index e81d88c..f4445ca 100644
--- a/src/libvaladoc/api/propertyhandler.vala
+++ b/src/libvaladoc/api/propertyhandler.vala
@@ -19,7 +19,6 @@
 
 using Gee;
 
-
 public interface Valadoc.Api.PropertyHandler : Node {
 	protected bool is_overwritten_property (Property prop) {
 		foreach (Property p in get_property_list ()) {
@@ -40,8 +39,7 @@ public interface Valadoc.Api.PropertyHandler : Node {
 		return get_children_by_type (NodeType.PROPERTY);
 	}
 
-	public void visit_properties (Doclet doclet) {
-		accept_children_by_type (NodeType.PROPERTY, doclet);
+	public void visit_properties (Visitor visitor) {
+		accept_children_by_type (NodeType.PROPERTY, visitor);
 	}
 }
-
diff --git a/src/libvaladoc/api/signal.vala b/src/libvaladoc/api/signal.vala
index dde91c5..7fdf206 100644
--- a/src/libvaladoc/api/signal.vala
+++ b/src/libvaladoc/api/signal.vala
@@ -79,13 +79,9 @@ public class Valadoc.Api.Signal : Member, ParameterListHandler, ReturnTypeHandle
 		return signature.get ();
 	}
 
-	public void visit (Doclet doclet) {
-		doclet.visit_signal (this);
-	}
-
 	public override NodeType node_type { get { return NodeType.SIGNAL; } }
 
-	public override void accept (Doclet doclet) {
-		visit (doclet);
+	public override void accept (Visitor visitor) {
+		visitor.visit_signal (this);
 	}
 }
diff --git a/src/libvaladoc/api/signalhandler.vala b/src/libvaladoc/api/signalhandler.vala
index 013519f..3110913 100644
--- a/src/libvaladoc/api/signalhandler.vala
+++ b/src/libvaladoc/api/signalhandler.vala
@@ -19,10 +19,9 @@
 
 using Gee;
 
-
 public interface Valadoc.Api.SignalHandler : Node {
-	public void visit_signals (Doclet doclet) {
-		accept_children_by_type (NodeType.SIGNAL, doclet);
+	public void visit_signals (Visitor visitor) {
+		accept_children_by_type (NodeType.SIGNAL, visitor);
 	}
 
 	public Collection<Signal> get_signal_list () {
diff --git a/src/libvaladoc/api/struct.vala b/src/libvaladoc/api/struct.vala
index 7c15cdf..21d74dd 100644
--- a/src/libvaladoc/api/struct.vala
+++ b/src/libvaladoc/api/struct.vala
@@ -37,14 +37,10 @@ public class Valadoc.Api.Struct : TypeSymbol, MethodHandler, ConstructionMethodH
 		return this.vstruct.get_cname();
 	}
 
-	public void visit ( Doclet doclet ) {
-		doclet.visit_struct (this);
-	}
-
 	public override NodeType node_type { get { return NodeType.STRUCT; } }
 
-	public override void accept (Doclet doclet) {
-		visit (doclet);
+	public override void accept (Visitor visitor) {
+		visitor.visit_struct (this);
 	}
 
 	private void set_parent_references (Tree root) {
diff --git a/src/libvaladoc/api/structhandler.vala b/src/libvaladoc/api/structhandler.vala
index 13e7d51..0a2c922 100644
--- a/src/libvaladoc/api/structhandler.vala
+++ b/src/libvaladoc/api/structhandler.vala
@@ -19,13 +19,12 @@
 
 using Gee;
 
-
 public interface Valadoc.Api.StructHandler : Node {
 	public Collection<Struct> get_struct_list () {
 		return get_children_by_type (NodeType.STRUCT);
 	}
 
-	public void visit_structs (Doclet doclet) {
-		accept_children_by_type (NodeType.STRUCT, doclet);
+	public void visit_structs (Visitor visitor) {
+		accept_children_by_type (NodeType.STRUCT, visitor);
 	}
 }
diff --git a/src/libvaladoc/api/tree.vala b/src/libvaladoc/api/tree.vala
index 8a2977f..41b954e 100644
--- a/src/libvaladoc/api/tree.vala
+++ b/src/libvaladoc/api/tree.vala
@@ -52,8 +52,8 @@ public class Valadoc.Api.Tree {
 		}
 	}
 
-	public void visit (Doclet doclet) {
-		doclet.initialisation (this.settings, this);
+	public void accept (Visitor visitor) {
+		visitor.visit_tree (this);
 	}
 
 	private Node? search_relative_to (Node element, string[] path) {
diff --git a/src/libvaladoc/api/typeparameter.vala b/src/libvaladoc/api/typeparameter.vala
index d74806c..450b1e0 100644
--- a/src/libvaladoc/api/typeparameter.vala
+++ b/src/libvaladoc/api/typeparameter.vala
@@ -39,6 +39,7 @@ public class Valadoc.Api.TypeParameter : Symbol, ReturnTypeHandler {
 
 	public override NodeType node_type { get { return NodeType.TYPE_PARAMETER; } }
 
-	public override void accept (Doclet doclet) {
+	public override void accept (Visitor visitor) {
+		visitor.visit_type_parameter (this);
 	}
 }
diff --git a/src/libvaladoc/api/visitor.vala b/src/libvaladoc/api/visitor.vala
new file mode 100755
index 0000000..65085f7
--- /dev/null
+++ b/src/libvaladoc/api/visitor.vala
@@ -0,0 +1,81 @@
+/* visitor.vala
+ *
+ * Valadoc.Api.- a documentation tool for vala.
+ * Copyright (C) 2008-2009 Florian Brosch, Didier Villevalois
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License.
+ * 
+ * This program 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 General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ * Author:
+ * 	Didier 'Ptitjes Villevalois <ptitjes free fr>
+ */
+
+public abstract class Valadoc.Api.Visitor : GLib.Object {
+	public virtual void visit_tree (Tree item) {
+	}
+
+	public virtual void visit_package (Package item) {
+	}
+
+	public virtual void visit_namespace (Namespace item) {
+	}
+
+	public virtual void visit_interface (Interface item) {
+	}
+
+	public virtual void visit_class (Class item) {
+	}
+
+	public virtual void visit_struct (Struct item) {
+	}
+
+	public virtual void visit_property (Property item) {
+	}
+
+	public virtual void visit_field (Field item) {
+	}
+
+	public virtual void visit_constant (Constant item) {
+	}
+
+	public virtual void visit_delegate (Delegate item) {
+	}
+
+	public virtual void visit_signal (Signal item) {
+	}
+
+	public virtual void visit_creation_method (Method item) {
+	}
+
+	public virtual void visit_method (Method item) {
+	}
+
+	public virtual void visit_type_parameter (TypeParameter item) {
+	}
+
+	public virtual void visit_formal_parameter (FormalParameter item) {
+	}
+
+	public virtual void visit_error_domain (ErrorDomain item) {
+	}
+
+	public virtual void visit_error_code (ErrorCode item) {
+	}
+
+	public virtual void visit_enum (Enum item) {
+	}
+
+	public virtual void visit_enum_value (EnumValue item) {
+	}
+}
diff --git a/src/libvaladoc/doclet.vala b/src/libvaladoc/doclet.vala
index c207c58..517aeae 100755
--- a/src/libvaladoc/doclet.vala
+++ b/src/libvaladoc/doclet.vala
@@ -18,25 +18,9 @@
  */
 
 using Gee;
-using Valadoc.Api;
 
-public static delegate Type Valadoc.DocletRegisterFunction ();
+public static delegate Type Valadoc.DocletRegisterFunction ( );
 
-public abstract class Valadoc.Doclet : GLib.Object {
-	public abstract void initialisation (Settings settings, Api.Tree tree);
-	public abstract void visit_package (Api.Package pkg);
-	public abstract void visit_namespace (Api.Namespace ns);
-	public abstract void visit_interface (Api.Interface iface);
-	public abstract void visit_class (Api.Class cl);
-	public abstract void visit_struct (Api.Struct stru);
-	public abstract void visit_error_domain (Api.ErrorDomain errdom);
-	public abstract void visit_enum (Api.Enum en);
-	public abstract void visit_property (Api.Property prop);
-	public abstract void visit_field (Api.Field field, Api.FieldHandler parent);
-	public abstract void visit_constant (Api.Constant constant, Api.ConstantHandler parent);
-	public abstract void visit_error_code (Api.ErrorCode errcode);
-	public abstract void visit_enum_value (Api.EnumValue enval);
-	public abstract void visit_delegate (Api.Delegate del);
-	public abstract void visit_signal (Api.Signal sig);
-	public abstract void visit_method (Api.Method m, Api.MethodHandler parent);
+public interface Valadoc.Doclet : GLib.Object {
+	public abstract void process (Settings settings, Api.Tree tree);
 }
diff --git a/src/valadoc/valadoc.vala b/src/valadoc/valadoc.vala
index c9c17e3..0cd6055 100755
--- a/src/valadoc/valadoc.vala
+++ b/src/valadoc/valadoc.vala
@@ -203,7 +203,7 @@ public class ValaDoc : Object {
 		if (reporter.errors > 0)
 			return quit (reporter);
 
-		doctree.visit (modules.doclet);
+		modules.doclet.process (settings, doctree);
 		return quit (reporter);
 	}
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]