You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucy.apache.org by ma...@apache.org on 2010/03/19 22:46:01 UTC

svn commit: r925446 - in /lucene/lucy/trunk/core/Lucy: Object/Num.bp Object/Num.c Test/Object/TestNum.c

Author: marvin
Date: Fri Mar 19 21:46:01 2010
New Revision: 925446

URL: http://svn.apache.org/viewvc?rev=925446&view=rev
Log:
Implement Mimic() for all the Num classes.

Modified:
    lucene/lucy/trunk/core/Lucy/Object/Num.bp
    lucene/lucy/trunk/core/Lucy/Object/Num.c
    lucene/lucy/trunk/core/Lucy/Test/Object/TestNum.c

Modified: lucene/lucy/trunk/core/Lucy/Object/Num.bp
URL: http://svn.apache.org/viewvc/lucene/lucy/trunk/core/Lucy/Object/Num.bp?rev=925446&r1=925445&r2=925446&view=diff
==============================================================================
--- lucene/lucy/trunk/core/Lucy/Object/Num.bp (original)
+++ lucene/lucy/trunk/core/Lucy/Object/Num.bp Fri Mar 19 21:46:01 2010
@@ -76,6 +76,9 @@ class Lucy::Object::Float32 extends Lucy
 
     public incremented Float32*
     Clone(Float32 *self);
+
+    public void
+    Mimic(Float32 *self, Obj *other);
 }
 
 /** Double precision floating point number.
@@ -116,6 +119,9 @@ class Lucy::Object::Float64 extends Lucy
 
     public incremented Float64*
     Clone(Float64 *self);
+
+    public void
+    Mimic(Float64 *self, Obj *other);
 }
 
 /** 32-bit signed integer.
@@ -157,6 +163,9 @@ class Lucy::Object::Integer32 cnick Int3
 
     public incremented Integer32*
     Clone(Integer32 *self);
+
+    public void
+    Mimic(Integer32 *self, Obj *other);
 }
 
 /**
@@ -202,6 +211,9 @@ class Lucy::Object::Integer64 cnick Int6
 
     public incremented Integer64*
     Clone(Integer64 *self);
+
+    public void
+    Mimic(Integer64 *self, Obj *other);
 }
 
 /* Copyright 2009 The Apache Software Foundation

Modified: lucene/lucy/trunk/core/Lucy/Object/Num.c
URL: http://svn.apache.org/viewvc/lucene/lucy/trunk/core/Lucy/Object/Num.c?rev=925446&r1=925445&r2=925446&view=diff
==============================================================================
--- lucene/lucy/trunk/core/Lucy/Object/Num.c (original)
+++ lucene/lucy/trunk/core/Lucy/Object/Num.c Fri Mar 19 21:46:01 2010
@@ -128,6 +128,13 @@ Float32_clone(Float32 *self)
 }
 
 void
+Float32_mimic(Float32 *self, Obj *other)
+{
+    Float32 *evil_twin = (Float32*)CERTIFY(other, FLOAT32);
+    self->value = evil_twin->value;
+}
+
+void
 Float32_serialize(Float32 *self, OutStream *outstream)
 {
     OutStream_Write_F32(outstream, self->value);
@@ -179,6 +186,13 @@ Float64_clone(Float64 *self)
     return Float64_new(self->value);
 }
 
+void
+Float64_mimic(Float64 *self, Obj *other)
+{
+    Float64 *evil_twin = (Float64*)CERTIFY(other, FLOAT64);
+    self->value = evil_twin->value;
+}
+
 i32_t
 Float64_hash_code(Float64 *self)
 {
@@ -238,6 +252,13 @@ Int32_clone(Integer32 *self)
     return Int32_new(self->value);
 }
 
+void
+Int32_mimic(Integer32 *self, Obj *other)
+{
+    Integer32 *evil_twin = (Integer32*)CERTIFY(other, INTEGER32);
+    self->value = evil_twin->value;
+}
+
 i32_t
 Int32_hash_code(Integer32 *self)
 {
@@ -296,6 +317,13 @@ Int64_clone(Integer64 *self)
     return Int64_new(self->value);
 }
 
+void
+Int64_mimic(Integer64 *self, Obj *other)
+{
+    Integer64 *evil_twin = (Integer64*)CERTIFY(other, INTEGER64);
+    self->value = evil_twin->value;
+}
+
 i32_t
 Int64_hash_code(Integer64 *self)
 {

Modified: lucene/lucy/trunk/core/Lucy/Test/Object/TestNum.c
URL: http://svn.apache.org/viewvc/lucene/lucy/trunk/core/Lucy/Test/Object/TestNum.c?rev=925446&r1=925445&r2=925446&view=diff
==============================================================================
--- lucene/lucy/trunk/core/Lucy/Test/Object/TestNum.c (original)
+++ lucene/lucy/trunk/core/Lucy/Test/Object/TestNum.c Fri Mar 19 21:46:01 2010
@@ -169,6 +169,39 @@ test_Clone(TestBatch *batch)
 }
 
 static void
+test_Mimic(TestBatch *batch)
+{
+    Float32   *f32 = Float32_new(1.33f);
+    Float64   *f64 = Float64_new(1.33);
+    Integer32 *i32 = Int32_new(I32_MAX);
+    Integer64 *i64 = Int64_new(I64_MAX);
+    Float32   *f32_dupe = Float32_new(0.0f);
+    Float64   *f64_dupe = Float64_new(0.0);
+    Integer32 *i32_dupe = Int32_new(0);
+    Integer64 *i64_dupe = Int64_new(0);
+    Float32_Mimic(f32_dupe, (Obj*)f32);
+    Float64_Mimic(f64_dupe, (Obj*)f64);
+    Int32_Mimic(i32_dupe, (Obj*)i32);
+    Int64_Mimic(i64_dupe, (Obj*)i64);
+    ASSERT_TRUE(batch, Float32_Equals(f32, (Obj*)f32_dupe), 
+        "Float32 Mimic");
+    ASSERT_TRUE(batch, Float64_Equals(f64, (Obj*)f64_dupe),
+        "Float64 Mimic");
+    ASSERT_TRUE(batch, Int32_Equals(i32, (Obj*)i32_dupe), 
+        "Integer32 Mimic");
+    ASSERT_TRUE(batch, Int64_Equals(i64, (Obj*)i64_dupe),
+        "Integer64 Mimic");
+    DECREF(i64_dupe);
+    DECREF(i32_dupe);
+    DECREF(f64_dupe);
+    DECREF(f32_dupe);
+    DECREF(i64);
+    DECREF(i32);
+    DECREF(f64);
+    DECREF(f32);
+}
+
+static void
 test_serialization(TestBatch *batch)
 {
     Float32   *f32 = Float32_new(1.33f);
@@ -202,13 +235,14 @@ test_serialization(TestBatch *batch)
 void
 TestNum_run_tests()
 {
-    TestBatch *batch = TestBatch_new(38);
+    TestBatch *batch = TestBatch_new(42);
     TestBatch_Plan(batch);
 
     test_To_String(batch);
     test_accessors(batch);
     test_Equals_and_Compare_To(batch);
     test_Clone(batch);
+    test_Mimic(batch);
     test_serialization(batch);
     
     DECREF(batch);