[paludis-commits] r4081 - trunk/ruby
rbrown at svn.pioto.org
rbrown at svn.pioto.org
Sat Dec 15 23:17:26 UTC 2007
Author: rbrown
Date: 2007-12-15 23:17:25 +0000 (Sat, 15 Dec 2007)
New Revision: 4081
Modified:
trunk/ruby/metadata_key.cc
trunk/ruby/repository.cc
Log:
Partial commit
Modified: trunk/ruby/metadata_key.cc
===================================================================
--- trunk/ruby/metadata_key.cc 2007-12-15 21:52:28 UTC (rev 4080)
+++ trunk/ruby/metadata_key.cc 2007-12-15 23:17:25 UTC (rev 4081)
@@ -45,6 +45,7 @@
static VALUE c_metadata_iuse_flag_set_key;
static VALUE c_metadata_string_set_key;
static VALUE c_metadata_package_id_sequence_key;
+ static VALUE c_metadata_fsentry_key;
static VALUE c_metadata_fsentry_sequence_key;
static VALUE c_metadata_key_type;
static VALUE c_metadata_provide_spec_tree_key;
@@ -120,7 +121,8 @@
void visit(const MetadataFSEntryKey &)
{
- value = Qnil;
+ value = Data_Wrap_Struct(c_metadata_fsentry_key, 0, &Common<tr1::shared_ptr<const MetadataKey> >::free,
+ new tr1::shared_ptr<const MetadataKey>(mm));
}
void visit(const MetadataSectionKey &)
@@ -244,6 +246,14 @@
}
VALUE
+ metadata_fsentry_key_value(VALUE self)
+ {
+ tr1::shared_ptr<const MetadataKey> * self_ptr;
+ Data_Get_Struct(self, tr1::shared_ptr<const MetadataKey>, self_ptr);
+ return rb_str_new2(stringify((tr1::static_pointer_cast<const MetadataFSEntryKey>(*self_ptr))->value()).c_str());
+ }
+
+ VALUE
metadata_time_key_value(VALUE self)
{
tr1::shared_ptr<const MetadataKey> * self_ptr;
@@ -368,6 +378,14 @@
rb_define_method(c_metadata_string_key, "value", RUBY_FUNC_CAST(&metadata_string_key_value), 0);
/*
+ * Document-class: Paludis::MetadataFSEntryKey
+ *
+ * Metadata class for FSEntry
+ */
+ c_metadata_fsentry_key = rb_define_class_under(paludis_module(), "MetadataFSEntryKey", c_metadata_key);
+ rb_define_method(c_metadata_fsentry_key, "value", RUBY_FUNC_CAST(&metadata_fsentry_key_value), 0);
+
+ /*
* Document-class: Paludis::MetadataTimeKey
*
* Metadata class for Time
Modified: trunk/ruby/repository.cc
===================================================================
--- trunk/ruby/repository.cc 2007-12-15 21:52:28 UTC (rev 4080)
+++ trunk/ruby/repository.cc 2007-12-15 23:17:25 UTC (rev 4081)
@@ -872,6 +872,18 @@
return Qnil;
}
+ template <typename T_, const tr1::shared_ptr<const T_> (Repository::* m_) () const>
+ struct RepositoryKey
+ {
+ static VALUE
+ fetch(VALUE self)
+ {
+ tr1::shared_ptr<Repository> * self_ptr;
+ Data_Get_Struct(self, tr1::shared_ptr<Repository>, self_ptr);
+ return metadata_key_to_value(((**self_ptr).*m_)());
+ }
+ };
+
void do_register_repository()
{
/*
@@ -929,6 +941,10 @@
rb_define_method(c_repository, "check_qa", RUBY_FUNC_CAST(&repository_check_qa),5);
rb_define_method(c_repository, "each_metadata", RUBY_FUNC_CAST(&repository_each_metadata), 0);
+ rb_define_method(c_repository, "format_key",
+ RUBY_FUNC_CAST((&RepositoryKey<MetadataStringKey, &Repository::format_key>::fetch)), 0);
+ rb_define_method(c_repository, "installed_root_key",
+ RUBY_FUNC_CAST((&RepositoryKey<MetadataFSEntryKey, &Repository::installed_root_key>::fetch)), 0);
/*
* Document-class: Paludis::ProfilesDescLine
More information about the paludis-commits
mailing list