[#96321] parent of TrueClass, FalseClass — "Ara.T.Howard" <Ara.T.Howard@...>

19 messages 2004/04/01
[#96356] Re: parent of TrueClass, FalseClass — matz@... (Yukihiro Matsumoto) 2004/04/02

Hi,

[#96404] Variable names — David King Landrith <dlandrith@...>

About a year ago, I wrote a simple type enforcement library that adds a

33 messages 2004/04/02
[#96406] Re: Variable names — ts <decoux@...> 2004/04/02

>>>>> "D" == David King Landrith <dlandrith@mac.com> writes:

[#96424] Re: Variable names — David King Landrith <dlandrith@...> 2004/04/02

[#96430] Re: Variable names — Dan Doel <djd15@...> 2004/04/02

On Friday 02 April 2004 2:43 pm, David King Landrith wrote:

[#96432] Re: Variable names — David King Landrith <dlandrith@...> 2004/04/02

On Apr 2, 2004, at 3:51 PM, Dan Doel wrote:

[#96447] Learning Ruby, was a C geek... — Nicholas Paul Johnson <nickjohnson@...>

Hello all,

17 messages 2004/04/02

[#96634] Where does the name Rite come from? — Michael Neumann <mneumann@...>

Hi,

15 messages 2004/04/06
[#96642] Re: Where does the name Rite come from? — matz@... (Yukihiro Matsumoto) 2004/04/06

Hi,

[#96652] Re: Where does the name Rite come from? — Eric Hodel <drbrain@...7.net> 2004/04/06

Yukihiro Matsumoto (matz@ruby-lang.org) wrote:

[#96697] Idea: Simplified GTK — Hal Fulton <hal9000@...>

Here's an idea. I've begun implementing it.

74 messages 2004/04/07
[#96699] Re: Idea: Simplified GTK — Chad Fowler <chad@...> 2004/04/07

[#96876] RedCloth bug and suggestion — Jim Menard <jimm@...>

_why_ and fellow RedCloth users,

15 messages 2004/04/09

[#96877] Instiki 0.3.0: Before the Storm — David Heinemeier Hansson <david@...>

What's new in Instiki 0.3.0?

12 messages 2004/04/09

[#97020] test / unit question: facility to mark some tests as "missing" or "incomplete" — "Its Me" <itsme213@...>

I often find myself with some unit tests that run, and several more test

14 messages 2004/04/12

[#97077] Instiki 0.5.0: Getting Serious — David Heinemeier Hansson <david@...>

What's new in Instiki 0.5.0?

16 messages 2004/04/13

[#97083] New Ruby questions... — Jeff Massung <jma@...>

I've just started Ruby a couple days ago (man this is cool). Coming from

14 messages 2004/04/13

[#97109] New Local Variable Scope rule — "Shashank Date" <sdate@...>

In one of Matz's slides at RubyConf ,

33 messages 2004/04/14

[#97134] BlueCloth: a Markdown implementation for Ruby — Michael Granger <ged@...>

Hi all,

17 messages 2004/04/14

[#97201] File locking, portably? — Hugh Sasse Staff Elec Eng <hgs@...>

Searching the web and books for information on this, I can't seem to

12 messages 2004/04/14

[#97277] Hash, ==, key-value comparison — walter@...

Ok,

20 messages 2004/04/15

[#97308] Instiki 0.6.0: Feeds, Exports, Safety, and Compatibility — David Heinemeier Hansson <david@...>

What's new in Instiki 0.6.0?

14 messages 2004/04/15

[#97351] "bad file descriptor" in Win32 DLL — "Christian Kaiser" <chk@...>

Using Ruby 1.81, the DLL (msvcrt-ruby18.dll) sometimes raises an exception

14 messages 2004/04/16

[#97363] BlueCloth 0.0.2 (beta) — Michael Granger <ged@...>

Hi,

18 messages 2004/04/16
[#97399] BlueCloth on Instiki (was Re: [ANN] BlueCloth 0.0.2 (beta)) — David Heinemeier Hansson <david@...> 2004/04/16

> Thanks to all of you that have offered your suggestions and code. I

[#97405] RubyConf 2004 — Ian Macdonald <ian@...>

Hello,

46 messages 2004/04/17
[#97409] Re: RubyConf 2004 — Chad Fowler <chad@...> 2004/04/17

[#97460] Re: RubyConf 2004 — Paul Duncan <pabs@...> 2004/04/17

* Chad Fowler (chad@chadfowler.com) wrote:

[#97465] Re: RubyConf 2004 — Hal Fulton <hal9000@...> 2004/04/17

Paul Duncan wrote:

[#97466] Re: RubyConf 2004 — Chad Fowler <chad@...> 2004/04/17

[#97486] Ruby Installer for Windows 1.8.1-12 — "Curt Hibbs" <curt@...> 2004/04/18

The Ruby Installer 1.8.1-12 for Windows has been released and is now

[#97418] Objects in perl6 (rubyish :) — gabriele renzi <surrender_it@...1.vip.ukl.yahoo.com>

Hi gurus and nubys,

20 messages 2004/04/17

[#97426] $0 is messed up — Simon Strandgaard <neoneye@...>

I have just upgraded to 1.9 16-apr-2004 from 1.9 7-apr-2004.

15 messages 2004/04/17

[#97473] convert yield to proc — Simon Strandgaard <neoneye@...>

How do you guys convert yield to block ?

21 messages 2004/04/18

[#97565] Gateway — "Robert Klemme" <bob.news@...>

34 messages 2004/04/19

[#97628] Instiki 0.7.0: Flavors of Expression — David Heinemeier Hansson <david@...>

What's new in Instiki 0.7.0?

15 messages 2004/04/19

[#97631] proposal: call_up() for use in redefined methods — Mark Hubbart <discord@...>

Hi all,

18 messages 2004/04/19

[#97640] Fox --> GTK ? — Hal Fulton <hal9000@...>

Who has experience converting Fox to GTK and might like to

29 messages 2004/04/19

[#97705] The quest for opensource database... — "Ruby Tuesdays" <NoSpamPlease_rubytuzdaiz@...>

Perhaps you database guru able to suggest what would be a good choice for

35 messages 2004/04/20

[#97743] Setting up a wiki when you don't have root — ptkwt@... (Phil Tomson)

12 messages 2004/04/20

[#97785] Creating bang methods — "Jon Hurst" <jon@...>

(newbie) I can't for my life figure out how to create bang methods. Please

20 messages 2004/04/21

[#97797] rexml: how to get element type? — "Its Me" <itsme213@...>

doc = REXML::Document.new <<EOF

14 messages 2004/04/21

[#97808] binding - how to get current script? — Szymon Drejewicz <drejewic@...>

18 messages 2004/04/21

[#97866] Is Ruby is better than PHP ... — "Useko Netsumi" <usenets_remote_this@...>

or perhaps Java for developing web application?

46 messages 2004/04/21

[#97873] Re: how to get ri/rdoc working for 1.8.1 on Windows? — "John W. Kennedy" <jwkenne@...>

Part 1 is to chdir \Ruby\bin and delete the five *.bat files

41 messages 2004/04/21
[#97910] Re: how to get ri/rdoc working for 1.8.1 on Windows? — "Its Me" <itsme213@...> 2004/04/21

[#97964] Re: how to get ri/rdoc working for [user-installed libraries] — Gavin Sinclair <gsinclair@...> 2004/04/21

On Thursday, April 22, 2004, 4:44:09 AM, Its wrote:

[#97984] Re: how to get ri/rdoc working for [user-installed libraries] — Dave Thomas <dave@...> 2004/04/22

[#98000] Re: how to get ri/rdoc working for [user-installed libraries] — "Gavin Sinclair" <gsinclair@...> 2004/04/22

>

[#97926] Re: how to get ri/rdoc working for 1.8.1 on Windows? — Lothar Scholz <mailinglists@...> 2004/04/21

Hello John,

[#97936] Re: how to get ri/rdoc working for 1.8.1 on Windows? — Dave Thomas <dave@...> 2004/04/21

[#97971] Re: how to get ri/rdoc working for 1.8.1 on Windows? — Jos Backus <jos@...> 2004/04/21

On Thu, Apr 22, 2004 at 05:50:40AM +0900, Dave Thomas wrote:

[#97985] Re: how to get ri/rdoc working for 1.8.1 on Windows? — Dave Thomas <dave@...> 2004/04/22

[#97997] RedCloth 2.0.7 -- A Textile Humane Web Text Generator — why the lucky stiff <ruby-talk@...>

more and more, you've seen it all before (i swear it's slowin down):

12 messages 2004/04/22
[#98008] Re: [ANN] RedCloth 2.0.7 -- A Textile Humane Web Text Generator — David Heinemeier Hansson <david@...> 2004/04/22

> I've wanted this feature to work right for awhile. It took a rewrite

[#98101] Extract all occurences from a text — Michael Weller <michael@...>

Hi!

11 messages 2004/04/23

[#98135] Problem assigning an Array object to an Array-subclass object — "Richard Lionheart" <NoOne@...>

[ I apologize if this is a second post. My earlier one seems to have gotten

29 messages 2004/04/23

[#98177] Psyco — Jim Moy <web@...>

Interesting stuff for Python, is any work like this being done in Ruby?

14 messages 2004/04/23

[#98181] Playing with sockets... — Hal Fulton <hal9000@...>

I'm writing a little expect-like piece of code and trying to test it

16 messages 2004/04/23

[#98281] String#unpack and null-terminated strings — Michael Neumann <mneumann@...>

Hi,

15 messages 2004/04/24

[#98362] How's ruby compare to it older brother python — "Hunn E. Balsiche" <hunnebal@...>

in term of its OO features, syntax consistencies, ease of use, and their

51 messages 2004/04/26
[#98597] Re: How's ruby compare to it older brother python — "Ken Hilton" <kenosis@...> 2004/04/28

Amen, brother.

[#98778] Re: How's ruby compare to it older brother python — "trevor andrade" <trevor.andrade@...> 2004/04/30

I agree that flaming the question is not appropriate and its also bad for

[#98789] Re: How's ruby compare to it older brother python — Dan Doel <djd15@...> 2004/04/30

I'm not saying the topic isn't appropriate. I don't mind the topic, and I find

[#98365] Introducing myself - Sascha Ebach — Sascha Ebach <se@...>

Hello dear Rubyists,

51 messages 2004/04/26
[#98568] Re: Introducing myself - Sascha Ebach — "Josef 'Jupp' Schugt" <jupp@...> 2004/04/27

Hello from Beethoven's home town,

[#98569] Re: Introducing myself - Sascha Ebach — Sascha Ebach <se@...> 2004/04/27

Hello Jupp

[#98570] Re: Introducing myself - Sascha Ebach — Simon Strandgaard <neoneye@...> 2004/04/27

Sascha Ebach <se@hexatex.de> wrote:

[#98753] Re: Introducing myself - Sascha Ebach — "Josef 'Jupp' Schugt" <jupp@...> 2004/04/29

Simon Strandgaard wrote:

[#98762] Re: Introducing myself - Sascha Ebach — Simon Strandgaard <neoneye@...> 2004/04/29

Josef 'Jupp' Schugt <jupp@gmx.de> wrote:

[#98817] Opportunities and pitfalls; was "Introducing myself - Sascha Ebach" — Mike Calder <ceo@...> 2004/04/30

A word of warning from a potential friend. Please don't take this negatively,

[#98847] Re: Opportunities and pitfalls; was "Introducing myself - Sascha Ebach" — Mark Hubbart <discord@...> 2004/04/30

[#98854] Re: Opportunities and pitfalls; was "Introducing myself - Sascha Ebach" — "Curt Hibbs" <curt@...> 2004/04/30

Mark Hubbart wrote:

[#98858] Re: Opportunities and pitfalls; was "Introducing myself - Sascha Ebach" — Mark Hubbart <discord@...> 2004/04/30

[#98366] How do I scale large Ruby web applications? — Sascha Ebach <se@...>

Hi there,

19 messages 2004/04/26

[#98409] Semantics of Multiple Values — Kristof Bastiaensen <kristof@...>

Hi liszt,

25 messages 2004/04/26

[#98435] Approaches to localization? — ptkwt@... (Phil Tomson)

I'm developing a GUI app using Ruby and FLTK. One of the requirements

22 messages 2004/04/26

[#98714] Ruby under Suse Linux — Mike Calder <ceo@...>

Hi.

14 messages 2004/04/29

[#98750] coerce(), what protocol to implement it — Jean-Hugues ROBERT <jean_hugues_robert@...>

Hi,

14 messages 2004/04/29

[#98758] File.expand_path(__FILE__) — John Platte <john.platte@...>

I'm having a problem with File.expand_path(__FILE__) after a chdir.

30 messages 2004/04/29

[#98796] SciTE Ruby Lexer — Kaspar Schiess <eule@...>

-----BEGIN PGP SIGNED MESSAGE-----

13 messages 2004/04/30

[#98820] ruby CVS can't use shared libs on NetBSD — Dick Davies <rasputnik@...>

11 messages 2004/04/30

[#98832] def [](v) xx; return yy; end # returned value is ignored !? — Jean-Hugues ROBERT <jean_hugues_robert@...>

Hi,

27 messages 2004/04/30

[#98851] Lazy evaluation — Michael Neumann <mneumann@...>

Hi,

51 messages 2004/04/30
[#98871] Re: Lazy evaluation — Jean-Hugues ROBERT <jean_hugues_robert@...> 2004/04/30

At 03:45 01/05/2004 +0900, you wrote:

[#98875] Re: Lazy evaluation — Florian Gross <flgr@...> 2004/04/30

Jean-Hugues ROBERT wrote:

[#98896] Re: Lazy evaluation (evil) — ptkwt@... (Phil Tomson) 2004/05/01

In article <c6uh31$gaq2i$1@ID-7468.news.uni-berlin.de>,

[#98913] Re: Lazy evaluation (evil) — Florian Gross <flgr@...> 2004/05/01

Phil Tomson wrote:

[#98917] Re: Lazy evaluation (evil) — ts <decoux@...> 2004/05/01

>>>>> "F" == Florian Gross <flgr@ccan.de> writes:

[#98919] Re: Lazy evaluation (evil) — Florian Gross <flgr@...> 2004/05/01

ts wrote:

Re: [Swig] my typemaps are (mostly) ignored in ruby

From: Sam Roberts <sroberts@...>
Date: 2004-04-19 14:13:03 UTC
List: ruby-talk #97597
Wrote Lyle Johnson <lyle@knology.net>, on Thu, Apr 15, 2004 at 09:11:02PM -0500:

Thank you for comments, I will read them carefully and try to implement
your suggestions. It will take me a few days to get to it, but you asked
me to clarify how I'm thinking some things should work, so I'll try to
do that now.

> On Apr 14, 2004, at 8:46 AM, Sam Roberts wrote:
> >// - creating opaque objects
> >//
> >// FIXME: This isn't working, Example::ParamsCreate in ruby still 
> >takes two
> >// arguments!
> >
> >int ParamsCreate(int i, Params* OUTPUT);
> 
> The typemaps.i library file provides OUTPUT typemaps for all of the 
> primitive types (e.g. ints, floats and such) but doesn't know about 
> your own types (like Params). For this to work you need to basically 
> follow the model shown in typemaps.i and apply that to the writing of 
> your own OUTPUT typemap(s).
> 
> Before we go down that road, however, I am curious about how you want 
> users to be able to call this method from their Ruby code. From the way 
> it's declared, I'm guessing its use in C code goes something like this:
> 
>   Params p;
>   if (ParamsCreate(i, &p)) {
>     /* success! */
>   }
> 
> Do you want the corresponding Ruby code going to go like this?
> 
>   return_code, params = ParamsCreate(i)

That was what I was expecting. What I'd really like is exception
mapping, so this looks like:

  params = ParamsCreate(i)

(where if result != 0, an exception was raised)

I'm not too attached to the syntax in ruby right now, I'll do anything
that works. Making it pretty is stage II.

> >// FIXME: can I turn all non-zero return values into a Ruby exception?
> >
> >int ParamsGet(Params p, int* OUTPUT);
> 
> Try this:
> 
>   %exception {
>     $action
>     if (result != 0) {
>       rb_raise(rb_eRuntimeError, "bleh");
>     }
>   }

Ok, tried this, but its halfway to what I was hoping for.

If return != 0 it throws an exception, but if return == 0, it returns
(for ParamsGet) an output array: [0, OUTPUT],  because return is
always 0 if an exception isn't raised.

I would like to not see the 0, and just have the single integer OUTPUT
value returned. Is that possible?

No problem if it isn't, I can wrap all swig-generated ruby APIs in ruby
to convert the first integer in the return array to an exception.

> The %exception directive is described in this chapter of the SWIG 
> documentation:
> 
>   http://www.swig.org/Doc1.3/Customization.html

Well, if you can pass on a comment to the writers of that chapter:

I'd read this, but I wasn't quite able to figure out how to apply this
to normal C APIs returning an error code (a very common case, I would
think).

It has two styles of example, one in which the C++ try/catch is called
(not my case), and the other where it appears to suggest rewriting C
APIs to return void, and cache the "exception" somewhere (but I want to
wrap C APIs, not rewrite them in C to be more swig-friendly).

Btw, your example above would make a great addition to section 22.5,
Simple Exception Handling.

> The problem is that SWIG's typemap matcher tries to be very specific if 
> you specify the parameter names in addition to their types.

It begins to make sense. I should be able to get this working my next
try.

> >int CtxGet(Ctx c, size_t* fooSz, unsigned char* foo);
> 
> I think I understand how it works in C, but (as before) tell me how 
> you'd like your users to call this from Ruby. What would the interface 
> look like?

I would like a String, foo, to be allocated and returned.

In C, this would look something like the following, in the
swig-generated code (hopefully):

  size_t fooSz;
  unsigned char* foo = 0;
  int err = CtxGet(c, &fooSz, 0);

  if(err)
    return err;

  foo = malloc(fooSz);

  if(!foo)
    return ENOMEM
  
  err = CtxGet(c, &fooSz, foo);

  if(err)
    return err;

  return ruby_make_str(foo, fooSz);

And on the ruby side, if I can't transform the return value into an
exception, I would call the swig-generated stuff in ruby with something
like:

 def CtxGet(ctx)
   out = Example.CtxGet(ctx)

   # out is: [ return (a Integer), foo (a String) ]

   if(out[0] != 0)
     raise ArgumentError, Example.ErrToStr(out[0])

   out[1]
 end

If I could get the exception handling to work as I described above, I
would be able to call this more directly as:
  
	foo = Example.CtxGet(ctx)

> >// Q5 - mutating buffers
> >//
> >// Is this considered bad practice? There are huge efficiency gains to 
> >be made
> >// when you don't force dynamic allocation for your output! It's like 
> >a ruby
> >// "!"-method.
> >
> >%typemap(in)(size_t sz, const unsigned char* in, unsigned char* out) {
> >  $1 = (size_t) RSTRING($input)->len;
> >  $2 = STR2CSTR($input);
> >  $3 = STR2CSTR($input);
> >}
> >
> >int CtxDo(Ctx c, size_t length, const unsigned char* in, unsigned 
> >char* out);
> 
> This looks dangerous to me, but then again I don't know how CtxDo() 
> works. I'll assume that it reads data from "in" and writes data to 
> "out", and it's OK if those two locations overlap in memory.

Exactly.

> Is it guaranteed that CtxDo() won't write a number of bytes that is
> larger than the capacity of the Ruby string?

Yes, the output is guaranteed to be the same size as the input (thats
why there is need for only one size_t argument, and theres is
no output "size_t*" aguments).

In ruby, I would think to call this like:

  input_output_string = "some txt"

  return_code = CtxDo(ctx, input_output_string)

If return_code is 0, then input_output_string would be mutated. By
transforming the triplet of (size_t, in ptr, out ptr) to a single
argument, I'm guaranteeing that the output buffer will always be as
large as the input buffer, since they are the same.

In the real APIs I want to wrap, these kind of APIs are for bulk
encryption. If you are reading and encrypting a 120M file in 4K chunks,
you don't want to have to allocate the output buffer for every chunk,
and you don't care about the unencrypted value of the chunk after you've
encrypted it, its fine to overwrite it with the encrypted value.

Maybe its silly to worry about performance in a dynamic language such as
ruby, where every read from a file results in a newly allocated string?

Thanks for your help, I really appreciate it.

Cheers,
Sam

-- 
Sam Roberts <sroberts@certicom.com>

In This Thread

Prev Next