Lyle and Phil,

Thanks for the advice...it worked perfectly.

changing the way the method passes back a "CoolClientHandle" value for
*handle...
%apply int *OUTPUT { CoolClientHandle *handle };

and then in Ruby grabbing the handle output worked...
returnCode, handle = Cool.CoolConnect("myServer", 6667)

However, I now ran into a "char*** problem".

For example, I want to use the following method.

Here is what the header file looks like...

    extern DllDecl CoolReturnCode CoolGetRelChildren
	PROTO((CoolClientHandle		handle,
	       char			*relName,
	       int			*numChildren,
	       char			***children));


I'm pretty sure that char ***children is suppose to give me an array
of strings.

Unfortunately, I can't do "%apply char* *OUTPUT {char ***children}".
How do I get an array or some other type of object pointer back (like
a struct with many values and variables).

Is this where I start to use "typemap(out)" definition or
"typemap(varout)"?

I hope this does not seem too basic.
Thank you for getting me up an running.

P.S.  Where is the best starting place for someone with my background
(only using Java and Ruby) to start learning C?