[vala/wip/dbusgen: 5/6] Clean up
- From: Rico Tzschichholz <ricotz src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [vala/wip/dbusgen: 5/6] Clean up
- Date: Thu, 23 Nov 2017 14:58:57 +0000 (UTC)
commit 0f98aefd57ca92c156afc3be00631a2e127b169f
Author: Rico Tzschichholz <ricotz ubuntu com>
Date: Thu Nov 23 15:21:48 2017 +0100
Clean up
configure.ac | 3 +-
dbusgen/.gitignore | 2 +-
dbusgen/Makefile.am | 33 +++---
dbusgen/{dbusgen.pc.in => valadbusgen.pc.in} | 6 +-
dbusgen/valadbusgen.vala | 47 ++++-----
dbusgen/valadbusnamespacestrategy.vala | 7 +-
dbusgen/valadbusparser.vala | 138 ++++++++++++-------------
dbusgen/valadbusvariantmodule.vala | 29 +++---
8 files changed, 124 insertions(+), 141 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index 379dbfd..416e78f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -153,6 +153,8 @@ AC_CONFIG_FILES([Makefile
doc/manual/Makefile
doc/manual/version.xml
gobject-introspection/Makefile
+ dbusgen/valadbusgen.pc
+ dbusgen/Makefile
vapigen/vapigen.pc
vapigen/Makefile
vapigen/vala-gen-introspect/Makefile
@@ -167,7 +169,6 @@ AC_CONFIG_FILES([Makefile
valadoc/doclets/gtkdoc/Makefile
valadoc/icons/Makefile
valadoc/tests/Makefile
- dbusgen/Makefile
])
AC_OUTPUT
diff --git a/dbusgen/.gitignore b/dbusgen/.gitignore
index e932362..a5294aa 100644
--- a/dbusgen/.gitignore
+++ b/dbusgen/.gitignore
@@ -1 +1 @@
-dbusgen
+valadbusgen
diff --git a/dbusgen/Makefile.am b/dbusgen/Makefile.am
index 1ef577b..d5175eb 100644
--- a/dbusgen/Makefile.am
+++ b/dbusgen/Makefile.am
@@ -9,25 +9,25 @@ AM_CPPFLAGS = \
$(NULL)
bin_PROGRAMS = \
- dbusgen \
+ valadbusgen \
$(NULL)
-BUILT_SOURCES = dbusgen.vala.stamp
+BUILT_SOURCES = valadbusgen.vala.stamp
-dbusgen_VALASOURCES = \
+valadbusgen_VALASOURCES = \
valadbusgen.vala \
valadbusparser.vala \
valadbusvariantmodule.vala \
valadbusnamespacestrategy.vala \
$(NULL)
-dbusgen_SOURCES = \
- dbusgen.vala.stamp \
- $(dbusgen_VALASOURCES:.vala=.c) \
+valadbusgen_SOURCES = \
+ valadbusgen.vala.stamp \
+ $(valadbusgen_VALASOURCES:.vala=.c) \
$(NULL)
-dbusgen.vala.stamp: $(dbusgen_VALASOURCES)
+valadbusgen.vala.stamp: $(valadbusgen_VALASOURCES)
$(VALA_V)$(VALAC) \
$(VALAFLAGS) \
-C \
@@ -39,35 +39,34 @@ dbusgen.vala.stamp: $(dbusgen_VALASOURCES)
@touch $@
-dbusgen_LDADD = \
+valadbusgen_LDADD = \
$(GLIB_LIBS) \
$(top_builddir)/vala/libvala@PACKAGE_SUFFIX@.la \
$(NULL)
pkgconfigdir = $(libdir)/pkgconfig
-pkgconfig_DATA = dbusgen@PACKAGE_SUFFIX@.pc
+pkgconfig_DATA = valadbusgen@PACKAGE_SUFFIX@.pc
-dbusgen@PACKAGE_SUFFIX@.pc: dbusgen.pc
+valadbusgen@PACKAGE_SUFFIX@.pc: valadbusgen.pc
cp $< $@
EXTRA_DIST = \
- $(dbusgen_VALASOURCES) \
- dbusgen.vala.stamp \
- vapicheck.vala.stamp \
+ $(valadbusgen_VALASOURCES) \
+ valadbusgen.vala.stamp \
$(NULL)
CLEANFILES = \
- dbusgen@PACKAGE_SUFFIX@.pc
+ valadbusgen@PACKAGE_SUFFIX@.pc
$(NULL)
if ENABLE_UNVERSIONED
install-exec-hook:
- cd $(DESTDIR)$(bindir) && $(LN_S) -f dbusgen@PACKAGE_SUFFIX@$(EXEEXT) dbusgen$(EXEEXT)
+ cd $(DESTDIR)$(bindir) && $(LN_S) -f valadbusgen@PACKAGE_SUFFIX@$(EXEEXT) valadbusgen$(EXEEXT)
install-data-hook:
- cd $(DESTDIR)$(pkgconfigdir) && $(LN_S) -f dbusgen@PACKAGE_SUFFIX@.pc dbusgen.pc
+ cd $(DESTDIR)$(pkgconfigdir) && $(LN_S) -f valadbusgen@PACKAGE_SUFFIX@.pc valadbusgen.pc
endif
MAINTAINERCLEANFILES = \
- $(dbusgen_VALASOURCES:.vala=.c) \
+ $(valadbusgen_VALASOURCES:.vala=.c) \
$(NULL)
diff --git a/dbusgen/dbusgen.pc.in b/dbusgen/valadbusgen.pc.in
similarity index 69%
rename from dbusgen/dbusgen.pc.in
rename to dbusgen/valadbusgen.pc.in
index ecd54ce..4a286a0 100644
--- a/dbusgen/dbusgen.pc.in
+++ b/dbusgen/valadbusgen.pc.in
@@ -6,10 +6,10 @@ datarootdir=@datarootdir@
datadir=@datadir@
includedir=@includedir@
-vapigen=${bindir}/vapigen@PACKAGE_SUFFIX@
+vapigen=${bindir}/valadbusgen@PACKAGE_SUFFIX@
vapidir=${datadir}/vala/vapi
vapidir_versioned=${datadir}/vala@PACKAGE_SUFFIX@/vapi
-Name: vapigen
-Description: Vala API Generator
+Name: valadbusgen
+Description: Vala DBus Interface Generator
Version: @VERSION@
diff --git a/dbusgen/valadbusgen.vala b/dbusgen/valadbusgen.vala
index 1a18b68..441045d 100644
--- a/dbusgen/valadbusgen.vala
+++ b/dbusgen/valadbusgen.vala
@@ -24,17 +24,16 @@
using GLib;
-public class Vala.DBUSGen {
-
-
+public class Vala.DBusGen {
+
public class ConcatenationStrategy : NamespaceStrategy {
-
+
public override string? get_namespace (string ns) {
return null;
}
-
+
public override string get_name (string ns) {
-
+
string[] parts = ns.split(".");
StringBuilder capitalized_name = new StringBuilder();
foreach (string part in parts) {
@@ -47,7 +46,7 @@ public class Vala.DBUSGen {
}
}
-
+
static string directory;
static bool version;
static bool quiet_mode = false;
@@ -75,7 +74,7 @@ public class Vala.DBUSGen {
{ "", 0, 0, OptionArg.FILENAME_ARRAY, ref sources, null, "FILE..." },
{ null }
};
-
+
private int quit () {
if (context.report.get_errors () == 0) {
if (!quiet_mode) {
@@ -89,7 +88,7 @@ public class Vala.DBUSGen {
return 1;
}
}
-
+
private int run () {
context = new CodeContext ();
@@ -97,7 +96,7 @@ public class Vala.DBUSGen {
context.vapi_directories = vapi_directories;
context.report.set_verbose_errors (!quiet_mode);
CodeContext.push (context);
-
+
context.profile = Profile.GOBJECT;
context.add_define ("GOBJECT");
context.target_glib_major = 2;
@@ -107,7 +106,6 @@ public class Vala.DBUSGen {
context.add_define ("GLIB_2_%d".printf (i));
}
-
context.add_external_package ("glib-2.0");
context.add_external_package ("gobject-2.0");
@@ -117,11 +115,10 @@ public class Vala.DBUSGen {
}
packages = null;
}
-
+
if (context.report.get_errors () > 0) {
return quit ();
}
-
var valaparser = new Parser ();
valaparser.parse (context);
@@ -130,7 +127,6 @@ public class Vala.DBUSGen {
return quit ();
}
-
foreach (string source in sources) {
if (FileUtils.test (source, FileTest.EXISTS) && source.has_suffix (".xml")) {
var source_file = new SourceFile (context, SourceFileType.SOURCE, source);
@@ -140,7 +136,7 @@ public class Vala.DBUSGen {
Report.error (null, "%s not found".printf (source));
}
}
-
+
if (context.report.get_errors () > 0) {
return quit ();
}
@@ -149,23 +145,22 @@ public class Vala.DBUSGen {
parser.dbus_timeout = dbus_timeout;
parser.namespace_strategy = new ConcatenationStrategy ();
parser.parse (context);
-
+
if (context.report.get_errors () > 0) {
return quit ();
- }
+ }
context.check ();
-
+
if (context.report.get_errors () > 0) {
return quit ();
- }
+ }
var interface_writer = new CodeWriter (CodeWriterType.FAST);
-
-
+
foreach (SourceFile source in context.get_source_files ()) {
string filename = Path.get_basename (source.filename);
-
+
if (filename.has_suffix (".xml")) {
if (directory != null) {
filename = Path.build_path ("/", directory, filename + ".vala");
@@ -176,7 +171,7 @@ public class Vala.DBUSGen {
return quit ();
}
-
+
static int main (string[] args) {
Intl.setlocale (LocaleCategory.ALL, "");
try {
@@ -199,8 +194,8 @@ public class Vala.DBUSGen {
stderr.printf ("No source file specified.\n");
return 1;
}
-
- var vapigen = new DBUSGen ();
- return vapigen.run ();
+
+ var DBusGen = new DBusGen ();
+ return DBusGen.run ();
}
}
diff --git a/dbusgen/valadbusnamespacestrategy.vala b/dbusgen/valadbusnamespacestrategy.vala
index b200856..3c95f1b 100644
--- a/dbusgen/valadbusnamespacestrategy.vala
+++ b/dbusgen/valadbusnamespacestrategy.vala
@@ -19,11 +19,10 @@
* Author:
* Chris Daley <chebizarro gmail com>
*/
-
+
public abstract class Vala.NamespaceStrategy {
-
+
public abstract string? get_namespace (string ns);
-
+
public abstract string get_name (string ns);
-
}
diff --git a/dbusgen/valadbusparser.vala b/dbusgen/valadbusparser.vala
index 5029d35..b1649bd 100644
--- a/dbusgen/valadbusparser.vala
+++ b/dbusgen/valadbusparser.vala
@@ -28,26 +28,26 @@ using GLib;
public class Vala.DBusParser : CodeVisitor {
private CodeContext context;
-
+
private DBusVariantModule dbus_module;
-
+
private SourceFile current_source_file;
-
+
private CodeNode current_node;
private Namespace current_ns;
private Interface current_iface;
private Callable current_method;
private Parameter current_param;
private Property current_property;
-
+
private MarkupReader reader;
-
+
private MarkupTokenType current_token;
private SourceLocation begin;
private SourceLocation end;
-
+
public int dbus_timeout { get; set; }
-
+
public NamespaceStrategy namespace_strategy { get; set; }
/**
@@ -60,9 +60,9 @@ public class Vala.DBusParser : CodeVisitor {
this.context = context;
current_ns = context.root;
-
+
dbus_module = new DBusVariantModule (context);
-
+
context.accept (this);
}
@@ -71,7 +71,7 @@ public class Vala.DBusParser : CodeVisitor {
parse_file (source_file);
}
}
-
+
private void parse_file (SourceFile source_file) {
this.current_source_file = source_file;
@@ -82,22 +82,22 @@ public class Vala.DBusParser : CodeVisitor {
next ();
next ();
next ();
-
+
parse_node ();
this.current_source_file = null;
-
+
this.reader = null;
-
+
}
-
+
private void parse_node () {
start_element ("node");
-
+
next ();
while (current_token == MarkupTokenType.START_ELEMENT) {
-
- switch (reader.name) {
+
+ switch (reader.name) {
case "interface":
parse_namespace ();
parse_interface ();
@@ -110,62 +110,60 @@ public class Vala.DBusParser : CodeVisitor {
break;
}
}
-
+
end_element ("node");
}
-
private void parse_namespace () {
string? name = reader.get_attribute ("name");
-
+
if (name == null) {
Report.error (get_current_src (), "Interface declarations require a name attribute");
return;
}
string? ns_name = namespace_strategy.get_namespace (name);
-
+
if (ns_name != null) {
var ns = new Namespace (ns_name, get_current_src ());
current_ns.add_namespace (ns);
current_ns = ns;
- }
+ }
}
-
+
private void parse_interface () {
start_element ("interface");
string? name = reader.get_attribute ("name");
-
+
if (name == null) {
Report.error (get_current_src (), "Interface declarations require a name attribute");
return;
}
-
+
string iface_name = namespace_strategy.get_name (name);
-
+
current_node = current_iface = new Interface (iface_name, get_current_src ());
-
-
+
current_iface.access = SymbolAccessibility.PUBLIC;
current_iface.add_prerequisite (new ObjectType ((ObjectTypeSymbol) dbus_module.gobject_type));
current_iface.set_attribute_string ("DBus", "name", name);
current_iface.set_attribute_integer ("DBus", "timeout", dbus_timeout);
-
+
current_ns.add_interface (current_iface);
-
+
next ();
-
+
parse_interface_body ();
-
+
end_element ("interface");
-
+
}
private void parse_interface_body () {
-
+
while (current_token == MarkupTokenType.START_ELEMENT) {
-
+
switch (reader.name) {
case "annotation":
parse_annotation ();
@@ -188,16 +186,16 @@ public class Vala.DBusParser : CodeVisitor {
private void parse_annotation () {
start_element ("annotation");
-
+
string? anno = reader.get_attribute ("name");
if (anno == null) {
Report.error (get_current_src (), "Annotations require a name attribute");
return;
}
-
+
switch (anno) {
-
+
case "org.freedesktop.DBus.Deprecated":
current_node.set_attribute_bool ("Version", "deprecated", true);
string? replaced_by = reader.get_attribute ("replaced-by");
@@ -215,46 +213,46 @@ public class Vala.DBusParser : CodeVisitor {
current_node.set_attribute_bool ("DBus", "no_reply", true);
}
break;
- default:
+ default:
break;
}
-
+
next ();
-
+
end_element ("annotation");
}
private void parse_method () {
start_element ("method");
string? name = reader.get_attribute ("name");
-
+
SourceReference src = new SourceReference (current_source_file, begin, end);
if (name == null) {
Report.error (src, "Interface method declarations require a name attribute");
return;
}
-
+
DataType return_type = new VoidType ();
-
+
current_node = current_method = new Method (name, return_type, src);
current_iface.add_method ((Method)current_method);
((Method)current_method).is_abstract = true;
((Method)current_method).access = SymbolAccessibility.PUBLIC;
-
+
next ();
-
+
parse_method_body ();
-
+
end_element ("method");
}
private void parse_property () {
-
+
start_element ("property");
Map<string,string> attribs = reader.get_attributes ();
-
+
if (attribs["name"] == null) {
Report.error (get_current_src (), "Interface property declarations require a name
attribute");
return;
@@ -267,7 +265,6 @@ public class Vala.DBusParser : CodeVisitor {
DataType type = dbus_module.get_dbus_type (attribs["type"]);
-
PropertyAccessor get_access = null;
PropertyAccessor set_access = null;
@@ -277,11 +274,11 @@ public class Vala.DBusParser : CodeVisitor {
if (attribs["access"] == "write" || attribs["access"] == "readwrite") {
set_access = new PropertyAccessor (false, true, false, type, null, get_current_src
());
}
-
+
current_node = current_property = new Property (attribs["name"], type, get_access,
set_access, get_current_src ());
current_property.is_abstract = true;
current_iface.add_property (current_property);
-
+
next ();
while (current_token == MarkupTokenType.START_ELEMENT) {
@@ -291,13 +288,13 @@ public class Vala.DBusParser : CodeVisitor {
}
end_element ("property");
-
+
}
-
+
private void parse_method_body () {
-
+
while (current_token == MarkupTokenType.START_ELEMENT) {
-
+
switch (reader.name) {
case "annotation":
parse_annotation ();
@@ -314,41 +311,41 @@ public class Vala.DBusParser : CodeVisitor {
private void parse_arg () {
start_element ("arg");
-
+
Map<string,string> attribs = reader.get_attributes ();
-
+
if (attribs["name"] == null) {
Report.error (get_current_src () , "Formal Parameters require names");
return;
}
-
+
var type = dbus_module.get_dbus_type (attribs["type"]);
type.value_owned = false;
current_node = current_param = new Parameter (attribs["name"], type, get_current_src ());
-
+
current_method.add_parameter (current_param);
-
+
if (current_method is Method) {
if (attribs["direction"] != null && attribs["direction"] == "out") {
current_param.direction = ParameterDirection.OUT;
type.value_owned = true;
}
}
-
+
next ();
end_element ("arg");
}
-
+
private void parse_extension () {
next ();
}
private void parse_signal () {
start_element ("signal");
-
+
string? name = reader.get_attribute ("name");
-
+
if (name == null) {
Report.error (get_current_src (), "Interface signal declarations require a name
attribute");
return;
@@ -359,19 +356,18 @@ public class Vala.DBusParser : CodeVisitor {
((Signal)current_node).access = SymbolAccessibility.PUBLIC;
next ();
-
+
parse_method_body ();
-
+
end_element ("signal");
}
-
private void next () {
current_token = reader.read_token (out begin, out end);
}
-
+
private void start_element (string name) {
-
+
if (current_token != MarkupTokenType.START_ELEMENT || reader.name != name) {
// error
Report.error (get_current_src (), "expected start element of `%s'".printf (name));
@@ -386,7 +382,6 @@ public class Vala.DBusParser : CodeVisitor {
next ();
}
-
private SourceReference get_current_src () {
return new SourceReference (this.current_source_file, begin, end);
}
@@ -408,5 +403,4 @@ public class Vala.DBusParser : CodeVisitor {
}
}
-
}
diff --git a/dbusgen/valadbusvariantmodule.vala b/dbusgen/valadbusvariantmodule.vala
index a01803c..d4f2046 100644
--- a/dbusgen/valadbusvariantmodule.vala
+++ b/dbusgen/valadbusvariantmodule.vala
@@ -21,9 +21,9 @@
*/
public class Vala.DBusVariantModule {
-
+
private CodeContext context;
-
+
public Symbol root_symbol;
public DataType void_type = new VoidType ();
@@ -75,13 +75,12 @@ public class Vala.DBusVariantModule {
public TypeSymbol type_module_type;
public TypeSymbol dbus_proxy_type;
-
public DBusVariantModule (CodeContext context) {
-
+
this.context = context;
root_symbol = context.root;
-
+
bool_type = new BooleanType ((Struct) root_symbol.scope.lookup ("bool"));
char_type = new IntegerType ((Struct) root_symbol.scope.lookup ("char"));
uchar_type = new IntegerType ((Struct) root_symbol.scope.lookup ("uchar"));
@@ -135,8 +134,7 @@ public class Vala.DBusVariantModule {
mutex_type = grecmutex_type;
}
-
-
+
public DataType? get_dbus_type (string type) {
if (VariantType.string_is_valid (type)) {
VariantType vrnt = new VariantType (type);
@@ -146,12 +144,11 @@ public class Vala.DBusVariantModule {
string emessage = "The Variant Type string: %s is invalid".printf (type);
Report.error (null, emessage);
return null;
- }
+ }
}
-
+
private DataType get_variant_type (VariantType type) {
-
-
+
if (type.equal (VariantType.BOOLEAN)) {
return bool_type;
} else if (type.equal (VariantType.BYTE)) {
@@ -179,19 +176,18 @@ public class Vala.DBusVariantModule {
} else if (type.equal (VariantType.VARIANT) || type.equal (VariantType.ANY) || type.equal
(VariantType.BASIC) || type.equal (VariantType.MAYBE) || type.equal (VariantType.TUPLE)) {
return new ObjectType ((ObjectTypeSymbol) gvariant_type);
}
-
+
return new ObjectType ((ObjectTypeSymbol) gvariant_type);
-
if (type.equal (VariantType.UNIT)) {
return string_type;
} else if (type.equal (VariantType.MAYBE)) {
return string_type;
} else if (type.equal (VariantType.OBJECT_PATH_ARRAY) || type.equal (VariantType.ARRAY) ||
type.equal (VariantType.STRING_ARRAY) || type.equal (VariantType.BYTESTRING_ARRAY)) {
-
+
var element = new ObjectType ((ObjectTypeSymbol) gvariant_type); //get_variant_type
(type.element ());
return new ArrayType (element, 0, null);
-
+
} else if (type.equal (VariantType.DICT_ENTRY)) {
return string_type;
} else if (type.equal (VariantType.DICTIONARY)) {
@@ -203,8 +199,7 @@ public class Vala.DBusVariantModule {
} else if (type.equal (VariantType.HANDLE)) {
return string_type;
}
-
-
+
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]