Laurent Sansonetti
lsans****@apple*****
Tue Feb 27 05:40:01 JST 2007
Hi Hisa-sensei, This looks correct to me. Thanks for the detailed work, this might help my company providing better documentation. Laurent On Feb 26, 2007, at 1:56 PM, Fujimoto Hisa wrote: > hi guys > > I've committed implementation of the following initialize/load API > spec for the RubyCocoa 1.0. Would you satisfactorily come to this API? > I hope it's enough for you. Could you tell us if you have something of > comment/idea about this. Notice we should freeze the api spec soon > maybe. > > thanks > -- > hisa > > url for the original written by Japanese (my native language): > http://www.fobj.com/hisa/d/20070226.html#p01 > > Summary for Initialize/Loading API (OBjective-C side) > ----------------------------------------------------- > > * RBBundleInit -- Ruby program loader for a bundle > * RBApplicationInit -- Ruby program loader for a command/application > * RBRubyCocoaInit -- initialize only RubyCocoa (for compatibility) > * RBApplicationMain -- Ruby program loader for command/application > (for compatibility) > > > Summary for Initialize/Loading API (Ruby side) > ---------------------------------------------- > > * OSX.init_for_bundle -- utility for initialize Ruby program > * OSX.require_framework -- loading framework > > > RBBundleInit -- Ruby program loader for a bundle > ------------------------------------------------ > > #import <RubyCocoa/RubyCocoa.h> > int RBBundleInit (const char* path_to_ruby_program, > Class objc_class, > id additional_param); > > Initialize Ruby and RubyCocoa, and then load Ruby program. Return 0 if > success loading. The Ruby program is evaluated under the bundle which > is related with the objc_class; the mainBundle may be seleccted when > the objc_class is nil. The additional_param is for arbitrary > usage. It's passed for a block argument of OSX.init_for_bundle (later > mention). > > usage example: > > @implementation MyBundle > + (void) load() { > RBBundleInit("my_ruby_loader.rb", self, nil); > } > @end > > > RBApplicationInit -- Ruby program loader for a command/application > ------------------------------------------------------------------ > > #import <RubyCocoa/RubyCocoa.h> > int RBApplicationInit (const char* path_to_ruby_program, > int argc, > const char* argv[], > id additional_param); > > This API is almost same as RBBundleInit. The Ruby program is evaluated > under the mainBundle. The value of the argv[0] is set in $0 (global > variable of Ruby). The array of values between argv[1] to argv[argc-1] > is set in ARGV. > > usage example: > > int main(int argc, const char* argv[]) { > RBApplicationInit("my_ruby_loader.rb", argc, argv, nil); > return NSApplicationMain(argc, argv); > } > > > RBRubyCocoaInit (for compatibility) > ----------------------------------- > > #import <RubyCocoa/RubyCocoa.h> > void RBRubyCocoaInit(); > > Initialize RubyCocoa on assuming that initialization for ruby is > done. This API is for compatibility. Using this may be rare. > > > RBApplicationMain (for compatibility) > ------------------------------------- > > #import <RubyCocoa/RubyCocoa.h> > int > RBApplicationMain (const char* path_to_ruby_program, > int argc, > const char* argv[]); > > Initialize Ruby and RubyCocoa, and then load Ruby program. Return 0 > always. The Ruby program is evaluated under the mainBundle. argc and > argv are parsed by the parser same as the ruby command named > ruby_options. This API is for compatibility. The spec will be changed > in the future. > > > OSX.init_for_bundle -- utility for initialize Ruby program > ------------------------------------------------------------ > > require 'osx/cocoa' > OSX.init_for_bundle { |bundle, additional_param, logger| ... } > > Run the ruby program in the given block. When using this method in the > Ruby program which is passed for RBBundleInit or RBApplicationInit, > related bundle and additional_param passed as the block arguments. > the logger is the simple logger for NSLog which has two methods: > > logger.info(fmt, *args) > logger.error(err) > > usage example: > > require 'osx/cocoa' > OSX.init_for_bundle do |bundle, param, logger| > require 'MyController' > OSX::NSBundle. > objc_send :loadNibNamed, 'MyView.nib', > :owner, MyController.alloc.init > logger.info("done.") > end > > > OSX.require_framework -- loading framework > ------------------------------------------ > > require 'osx/cocoa' > OSX.require_framework FRAMEWORK > > _______________________________________________ > Rubycocoa-devel mailing list > Rubyc****@lists***** > http://lists.sourceforge.jp/mailman/listinfo/rubycocoa-devel