[glibmm/gmmproc-refactor] Add possibility to return several girdirs.



commit 68218435812e95e32130bb7112483513b451b3b3
Author: Krzesimir Nowak <qdlacz gmail com>
Date:   Sun Apr 15 03:22:39 2012 +0200

    Add possibility to return several girdirs.

 tools/pm/Gir/Config.pm.in |    4 ++--
 tools/pm/Gir/Parser.pm    |   21 ++++++++++++++++++++-
 tools/pm/TODO             |    3 +++
 3 files changed, 25 insertions(+), 3 deletions(-)
---
diff --git a/tools/pm/Gir/Config.pm.in b/tools/pm/Gir/Config.pm.in
index 94c948e..070952c 100644
--- a/tools/pm/Gir/Config.pm.in
+++ b/tools/pm/Gir/Config.pm.in
@@ -23,9 +23,9 @@ package Gir::Config;
 use strict;
 use warnings;
 
-sub get_girdir ()
+sub get_girdirs ()
 {
-  return '@GIRDIR@';
+  return ['@GIRDIR@'];
 }
 
 1; # indicate proper module load.
diff --git a/tools/pm/Gir/Parser.pm b/tools/pm/Gir/Parser.pm
index 6bd8b47..ef77f52 100644
--- a/tools/pm/Gir/Parser.pm
+++ b/tools/pm/Gir/Parser.pm
@@ -261,7 +261,26 @@ sub parse_file ($$)
 
   unless (exists $parsed_girs->{$filename})
   {
-    my $real_filename = File::Spec->catfile (Gir::Config::get_girdir, $filename);
+    my $girdirs = Gir::Config::get_girdirs;
+    my $real_filename = undef;
+
+    foreach my $girdir (@{$girdirs})
+    {
+      my $maybe_real_filename = File::Spec->catfile (Gir::Config::get_girdir, $filename);
+
+      if (-r $maybe_real_filename)
+      {
+        $real_filename = $maybe_real_filename;
+        last;
+      }
+    }
+
+    unless (defined $real_filename)
+    {
+# TODO: throw a runtime error.
+      die; # with horrible death!
+    }
+
     my $xml_parser = $self->_create_xml_parser;
     my $new_state = Gir::State->new ($real_filename, $xml_parser);
     my $states_stack = $self->{'states_stack'};
diff --git a/tools/pm/TODO b/tools/pm/TODO
index 2d5d120..9e661eb 100644
--- a/tools/pm/TODO
+++ b/tools/pm/TODO
@@ -219,6 +219,9 @@
 - Add a test C code and its C++ wrapper templates to check
   wrapping correctness.
 
+- Gir::Config::get_girdir should return an array of paths.
+  VERIFY.
+
 - git grep -n 'TODO' tools/pm
 
 - Cleanup this TODO. :-)



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