diff --git a/base.rs b/base.rs index 8004d58..8ad520f 100644 --- a/base.rs +++ b/base.rs @@ -13,8 +13,14 @@ native mod objc { #[test] fn test_nsapp() { - let klass = str::as_c_str("NSApplication") { |s| objc::objc_getClass(s) }; - let sel = str::as_c_str("sharedApplication") { |s| objc::sel_registerName(s) }; + let klass = str::as_c_str("NSApplication") { |s| + objc::objc_getClass(s) + }; + + let sel = str::as_c_str("sharedApplication") { |s| + objc::sel_registerName(s) + }; + let nsapp = objc::objc_msgSend(klass, sel); io::println(#fmt("nsapp: %d", (nsapp as int))); diff --git a/cocoa.rc b/cocoa.rc index cbaa591..16ebb76 100644 --- a/cocoa.rc +++ b/cocoa.rc @@ -11,4 +11,5 @@ use std; mod appkit; mod base; +mod foundation; diff --git a/foundation.rs b/foundation.rs new file mode 100644 index 0000000..b5b2d76 --- /dev/null +++ b/foundation.rs @@ -0,0 +1,23 @@ +import base::objc; + +#[nolink] +#[link_args="-framework Foundation"] +native mod foundation { +} + +enum NSAutoreleasePool { + NSAutoreleasePool_priv(base::id) +} + +fn NSAutoreleasePool() -> base::id { + let klass = str::as_c_str("NSAutoreleasePool") { |s| + objc::objc_getClass(s) + }; + + let alloc_sel = str::as_c_str("alloc") { |s| objc::sel_registerName(s) }; + let init_sel = str::as_c_str("init") { |s| objc::sel_registerName(s) }; + + let pool = objc::objc_msgSend(klass, alloc_sel); + ret objc::objc_msgSend(pool, init_sel); +} +