[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