[macruby-changes] [1212] MacRuby/branches/experimental
source_changes at macosforge.org
source_changes at macosforge.org
Fri Mar 27 13:20:01 PDT 2009
Revision: 1212
http://trac.macosforge.org/projects/ruby/changeset/1212
Author: lsansonetti at apple.com
Date: 2009-03-27 13:20:00 -0700 (Fri, 27 Mar 2009)
Log Message:
-----------
implemented last process status primitives
Modified Paths:
--------------
MacRuby/branches/experimental/include/ruby/ruby.h
MacRuby/branches/experimental/process.c
MacRuby/branches/experimental/roxor.cpp
Modified: MacRuby/branches/experimental/include/ruby/ruby.h
===================================================================
--- MacRuby/branches/experimental/include/ruby/ruby.h 2009-03-27 20:11:09 UTC (rev 1211)
+++ MacRuby/branches/experimental/include/ruby/ruby.h 2009-03-27 20:20:00 UTC (rev 1212)
@@ -1031,6 +1031,7 @@
RUBY_EXTERN VALUE rb_cNilClass;
RUBY_EXTERN VALUE rb_cNumeric;
RUBY_EXTERN VALUE rb_cProc;
+RUBY_EXTERN VALUE rb_cProcessStatus;
RUBY_EXTERN VALUE rb_cRange;
RUBY_EXTERN VALUE rb_cRational;
RUBY_EXTERN VALUE rb_cComplex;
Modified: MacRuby/branches/experimental/process.c
===================================================================
--- MacRuby/branches/experimental/process.c 2009-03-27 20:11:09 UTC (rev 1211)
+++ MacRuby/branches/experimental/process.c 2009-03-27 20:20:00 UTC (rev 1212)
@@ -216,29 +216,12 @@
* _stat_, we're referring to this 16 bit value.
*/
-static VALUE rb_cProcessStatus;
+VALUE rb_cProcessStatus;
-VALUE
-rb_last_status_get(void)
-{
- // TODO
- return Qnil;
-}
-
-void
-rb_last_status_set(int status, rb_pid_t pid)
-{
-#if 0 // TODO
- VALUE last_status = rb_obj_alloc(rb_cProcessStatus);
- rb_iv_set(vm->last_status, "status", INT2FIX(status));
- rb_iv_set(vm->last_status, "pid", PIDT2NUM(pid));
-#endif
-}
-
static void
rb_last_status_clear(void)
{
- // TODO
+ rb_last_status_set(0, -1);
}
/*
Modified: MacRuby/branches/experimental/roxor.cpp
===================================================================
--- MacRuby/branches/experimental/roxor.cpp 2009-03-27 20:11:09 UTC (rev 1211)
+++ MacRuby/branches/experimental/roxor.cpp 2009-03-27 20:20:00 UTC (rev 1212)
@@ -407,6 +407,7 @@
VALUE load_path;
VALUE backref;
VALUE broken_with;
+ VALUE last_status;
int safe_level;
std::map<NODE *, rb_vm_block_t *> blocks;
std::map<double, struct rb_float_cache *> float_cache;
@@ -1949,6 +1950,7 @@
backref = Qnil;
broken_with = Qundef;
+ last_status = Qnil;
current_block = NULL;
previous_block = NULL;
@@ -6149,6 +6151,33 @@
}
extern "C"
+VALUE
+rb_last_status_get(void)
+{
+ return GET_VM()->last_status;
+}
+
+extern "C"
+void
+rb_last_status_set(int status, rb_pid_t pid)
+{
+ if (GET_VM()->last_status != Qnil) {
+ rb_objc_release((void *)GET_VM()->last_status);
+ }
+ VALUE last_status;
+ if (pid == -1) {
+ last_status = Qnil;
+ }
+ else {
+ last_status = rb_obj_alloc(rb_cProcessStatus);
+ rb_iv_set(last_status, "status", INT2FIX(status));
+ rb_iv_set(last_status, "pid", PIDT2NUM(pid));
+ rb_objc_retain((void *)last_status);
+ }
+ GET_VM()->last_status = last_status;
+}
+
+extern "C"
const char *
rb_sourcefile(void)
{
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20090327/e8b1d03d/attachment-0001.html>
More information about the macruby-changes
mailing list