You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucy.apache.org by lo...@apache.org on 2012/01/08 00:09:16 UTC

[lucy-commits] svn commit: r1228757 - /incubator/lucy/trunk/clownfish/ruby/ext/Clownfish/CFC.c

Author: logie
Date: Sat Jan  7 23:09:16 2012
New Revision: 1228757

URL: http://svn.apache.org/viewvc?rev=1228757&view=rev
Log:
LUCY-202
1. Added Clownfish::CFC::Binding module. 
2. Added Clownfish::CFC::Binding::Core class.
3. Created new and write_all_modified methods for the Core class.

Ruby Implementation Examples:
cf = Clownfish::CFC::Hierarchy.new("./cfsource","./cfdest")
cf.build
b = Clownfish::CFC::Binding::Core.new(cf,"./cfdest","","")
b.write_all_modified
b.write_all_modified(true)


Modified:
    incubator/lucy/trunk/clownfish/ruby/ext/Clownfish/CFC.c

Modified: incubator/lucy/trunk/clownfish/ruby/ext/Clownfish/CFC.c
URL: http://svn.apache.org/viewvc/incubator/lucy/trunk/clownfish/ruby/ext/Clownfish/CFC.c?rev=1228757&r1=1228756&r2=1228757&view=diff
==============================================================================
--- incubator/lucy/trunk/clownfish/ruby/ext/Clownfish/CFC.c (original)
+++ incubator/lucy/trunk/clownfish/ruby/ext/Clownfish/CFC.c Sat Jan  7 23:09:16 2012
@@ -17,10 +17,43 @@
 #include "ruby.h"
 #include "CFC.h"
 
+static VALUE mBinding;
 static VALUE mClownfish;
 static VALUE mCFC;
+static VALUE cBindCore;
 static VALUE cHierarchy;
 
+static VALUE cfc_binding_core_alloc(VALUE klass) {
+    CFCBindCore *self = CFCBindCore_allocate();
+
+    VALUE self_rb = Data_Wrap_Struct(klass, 0, CFCBindCore_destroy, self);
+
+    return self_rb;
+}
+
+static VALUE cfc_binding_core_init(VALUE self_rb, VALUE hierarchy, VALUE dest, VALUE header, VALUE footer) {
+    CFCHierarchy* hierarchy_obj;
+    CFCBindCore *self;
+
+    Data_Get_Struct(hierarchy,CFCHierarchy,hierarchy_obj);
+    Data_Get_Struct(self_rb, CFCBindCore, self);
+
+    CFCBindCore_init(self, hierarchy_obj, StringValuePtr(dest), StringValuePtr(header), StringValuePtr(footer));
+
+    return self_rb;
+}
+
+static VALUE cfc_binding_core_write_all_modified(int argc, VALUE *argv, VALUE self_rb) {
+    CFCBindCore *self;
+
+    int modified = argc > 0 && RTEST(argv[0]) ? 1 : 0;
+
+    Data_Get_Struct(self_rb, CFCBindCore, self);
+    CFCBindCore_write_all_modified(self,modified);
+
+    return Qnil;
+}
+
 static VALUE cfc_hierarchy_alloc(VALUE klass) {
     CFCHierarchy *self = CFCHierarchy_allocate();
 
@@ -53,11 +86,16 @@ static VALUE cfc_hierarchy_build(VALUE s
 void Init_CFC() { 
     mClownfish  = rb_define_module("Clownfish");
     mCFC        = rb_define_module_under(mClownfish, "CFC");
+    mBinding    = rb_define_module_under(mCFC, "Binding");
     cHierarchy  = rb_define_class_under(mCFC, "Hierarchy", rb_cObject);
+    cBindCore   = rb_define_class_under(mBinding, "Core", rb_cObject);
 
     rb_define_alloc_func(cHierarchy, cfc_hierarchy_alloc);
-
     rb_define_method(cHierarchy, "initialize", cfc_hierarchy_init, 2);
     rb_define_method(cHierarchy, "build", cfc_hierarchy_build, 0);
+
+    rb_define_alloc_func(cBindCore, cfc_binding_core_alloc);
+    rb_define_method(cBindCore, "initialize", cfc_binding_core_init, 4);
+    rb_define_method(cBindCore, "write_all_modified", cfc_binding_core_write_all_modified, -1);
 }