[macruby-changes] [1440] MacRuby/branches/experimental

source_changes at macosforge.org source_changes at macosforge.org
Tue Apr 21 22:10:45 PDT 2009


Revision: 1440
          http://trac.macosforge.org/projects/ruby/changeset/1440
Author:   lsansonetti at apple.com
Date:     2009-04-21 22:10:44 -0700 (Tue, 21 Apr 2009)
Log Message:
-----------
more work on incoming structs

Modified Paths:
--------------
    MacRuby/branches/experimental/roxor.cpp
    MacRuby/branches/experimental/spec/frozen/macruby/fixtures/method.m
    MacRuby/branches/experimental/spec/frozen/macruby/method_spec.rb

Modified: MacRuby/branches/experimental/roxor.cpp
===================================================================
--- MacRuby/branches/experimental/roxor.cpp	2009-04-22 02:29:55 UTC (rev 1439)
+++ MacRuby/branches/experimental/roxor.cpp	2009-04-22 05:10:44 UTC (rev 1440)
@@ -5095,7 +5095,6 @@
 
 	for (unsigned i = 0; i < bs_boxed->as.s->fields_count; i++) {
 	    buf[i] = data[i];
-printf("buf[%d] = %p\n", i, (void *)data[i]);
 	}	
     }
 }
@@ -5196,31 +5195,30 @@
 
 		    compile_get_struct_fields(val, fields, bs_boxed);
 
-		    //Value *struct_val = new LoadInst(slot, "", bb);
-
 		    for (unsigned i = 0; i < bs_boxed->as.s->fields_count;
 			    i++) {
 
 			const char *ftype = bs_boxed->as.s->fields[i].type;
-			//const Type *llvm_ftype = convert_type(ftype);
 
+			// Load field VALUE.
 			Value *fval = GetElementPtrInst::Create(fields,
 				ConstantInt::get(Type::Int32Ty, i), "", bb);
 			fval = new LoadInst(fval, "", bb);
 
-			//Value *fslot = new AllocaInst(llvm_ftype, "", bb);
-
+			// Get a pointer to the struct field. The extra 0 is
+			// needed because we are dealing with a pointer to the
+			// structure.
+			std::vector<Value *> slot_idx;
+			slot_idx.push_back(ConstantInt::get(Type::Int32Ty, 0));
+			slot_idx.push_back(ConstantInt::get(Type::Int32Ty, i));
 			Value *fslot = GetElementPtrInst::Create(slot,
-				ConstantInt::get(Type::Int32Ty, i), "", bb);
+				slot_idx.begin(), slot_idx.end(), "", bb);
 
-			/*Value *fcval =*/ RoxorCompiler::compile_conversion_to_c(
-				ftype, fval, fslot);
-
-			//InsertValueInst::Create(struct_val, fcval, i, "", bb);
+			RoxorCompiler::compile_conversion_to_c(ftype, fval,
+				fslot);
 		    }
 
 		    return new LoadInst(slot, "", bb);
-		    //return struct_val;
 		}
 	    }
 	    break;

Modified: MacRuby/branches/experimental/spec/frozen/macruby/fixtures/method.m
===================================================================
--- MacRuby/branches/experimental/spec/frozen/macruby/fixtures/method.m	2009-04-22 02:29:55 UTC (rev 1439)
+++ MacRuby/branches/experimental/spec/frozen/macruby/fixtures/method.m	2009-04-22 05:10:44 UTC (rev 1440)
@@ -273,7 +273,6 @@
 
 - (BOOL)methodAcceptingNSPoint:(NSPoint)p
 {
-NSLog(@" -> %@", NSStringFromPoint(p));
     return p.x == 1 && p.y == 2;
 }
 

Modified: MacRuby/branches/experimental/spec/frozen/macruby/method_spec.rb
===================================================================
--- MacRuby/branches/experimental/spec/frozen/macruby/method_spec.rb	2009-04-22 02:29:55 UTC (rev 1439)
+++ MacRuby/branches/experimental/spec/frozen/macruby/method_spec.rb	2009-04-22 05:10:44 UTC (rev 1440)
@@ -411,34 +411,36 @@
     lambda { o.methodAcceptingDouble(Object.new) }.should raise_error(TypeError) 
   end
 
-=begin
   it "accepting an NSPoint, NSSize, NSRange or NSRect object as 'NSPoint', 'NSSize', 'NSRange' or 'NSRect' should receive the C structure" do
     o = TestMethod.new
     p = o.methodReturningNSPoint
     o.methodAcceptingNSPoint(p).should == 1
     p = o.methodReturningNSSize
     o.methodAcceptingNSSize(p).should == 1
+=begin
     p = o.methodReturningNSRect
     o.methodAcceptingNSRect(p).should == 1
+=end
     p = o.methodReturningNSRange
     o.methodAcceptingNSRange(p).should == 1
 
     lambda { o.methodAcceptingNSPoint(nil) }.should raise_error(TypeError)
     lambda { o.methodAcceptingNSPoint(123) }.should raise_error(TypeError)
     lambda { o.methodAcceptingNSPoint(Object.new) }.should raise_error(TypeError)
-    lambda { o.methodAcceptingNSPoint(o.methodAcceptingNSSize) }.should raise_error(TypeError)
+    lambda { o.methodAcceptingNSPoint(o.methodReturningNSSize) }.should raise_error(TypeError)
     lambda { o.methodAcceptingNSSize(nil) }.should raise_error(TypeError)
     lambda { o.methodAcceptingNSSize(123) }.should raise_error(TypeError)
     lambda { o.methodAcceptingNSSize(Object.new) }.should raise_error(TypeError)
-    lambda { o.methodAcceptingNSSize(o.methodAcceptingNSPoint) }.should raise_error(TypeError)
+    lambda { o.methodAcceptingNSSize(o.methodReturningNSPoint) }.should raise_error(TypeError)
+=begin
     lambda { o.methodAcceptingNSRect(nil) }.should raise_error(TypeError)
     lambda { o.methodAcceptingNSRect(123) }.should raise_error(TypeError)
     lambda { o.methodAcceptingNSRect(Object.new) }.should raise_error(TypeError)
-    lambda { o.methodAcceptingNSRect(o.methodAcceptingNSPoint) }.should raise_error(TypeError)
+    lambda { o.methodAcceptingNSRect(o.methodReturningNSPoint) }.should raise_error(TypeError)
+=end
     lambda { o.methodAcceptingNSRange(nil) }.should raise_error(TypeError)
     lambda { o.methodAcceptingNSRange(123) }.should raise_error(TypeError)
     lambda { o.methodAcceptingNSRange(Object.new) }.should raise_error(TypeError)
-    lambda { o.methodAcceptingNSRange(o.methodAcceptingNSPoint) }.should raise_error(TypeError)
+    lambda { o.methodAcceptingNSRange(o.methodReturningNSPoint) }.should raise_error(TypeError)
   end
-=end
 end
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20090421/f7ff2a40/attachment-0001.html>


More information about the macruby-changes mailing list