Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Ruby > Making a VALUE visible to multiple source files

Reply
Thread Tools

Making a VALUE visible to multiple source files

 
 
Daniel Berger
Guest
Posts: n/a
 
      02-25-2010
Hi,

I'm having some trouble pre-declaring some VALUE's. I've got a VALUE
cFoo I want to be visible to multiple source files. Say the layout is
something like this:

foo/ext/stuff/extconf.rb
foo/ext/stuff/foo.c
foo/ext/stuff/bar.c
foo/ext/stuff/baz.h
foo/ext/stuff/stuff.c

I want to define all the class VALUE's in the header file. I would
then like to be able to '#include "baz.h"' inside both foo.c and
bar.c. However, that causes an ld error when I try to build the source
files:

ld: duplicate symbol _cFoo in foo.o and bar.o

# extconf.rb
require 'mkmf'
create_makefile('stuff')

# Rakefile
require 'rake'
require 'rake/extensiontask'
Rake::ExtensionTask.new('stuff')

// baz.h
#ifndef BAZ_H_INCLUDED
#define BAZ_H_INCLUDED
#include <ruby.h>
VALUE cFoo;
VALUE cBar;
#endif

Why do I want to do this? In the long run, I'm trying to figure out
how to setup Check_Type calls for my own classes, e.g.
Check_Type(some_value, cFoo);

Regards,

Dan

 
Reply With Quote
 
 
 
 
Joel VanderWerf
Guest
Posts: n/a
 
      02-25-2010
Daniel Berger wrote:
> I want to define all the class VALUE's in the header file. I would
> then like to be able to '#include "baz.h"' inside both foo.c and
> bar.c. However, that causes an ld error when I try to build the source
> files:


Try "extern VALUE ..." in the headers, and "VALUE ..." in one source file.

 
Reply With Quote
 
 
 
 
Daniel Berger
Guest
Posts: n/a
 
      02-25-2010


On Feb 25, 1:08=A0pm, Ken Bloom <(E-Mail Removed)> wrote:
> Daniel Berger <(E-Mail Removed)> wrote:
> > Hi,

>
> > I'm having some trouble pre-declaring some VALUE's. I've got a VALUE
> > cFoo I want to be visible to multiple source files. Say the layout is
> > something like this:

>
> > foo/ext/stuff/extconf.rb
> > foo/ext/stuff/foo.c
> > foo/ext/stuff/bar.c
> > foo/ext/stuff/baz.h
> > foo/ext/stuff/stuff.c

>
> > I want to define all the class VALUE's in the header file. I would
> > then like to be able to '#include "baz.h"' inside both foo.c and
> > bar.c. However, that causes an ld error when I try to build the source
> > files:

>
> > ld: duplicate symbol _cFoo in foo.o and bar.o

>
> > # extconf.rb
> > require 'mkmf'
> > create_makefile('stuff')

>
> > # Rakefile
> > require 'rake'
> > require 'rake/extensiontask'
> > Rake::ExtensionTask.new('stuff')

>
> > // baz.h
> > #ifndef BAZ_H_INCLUDED
> > #define BAZ_H_INCLUDED
> > #include <ruby.h>
> > VALUE cFoo;
> > VALUE cBar;
> > #endif

>
> This is a pretty standard C technique:
>
> in baz.h:
>
> #ifndef BAZ_H_INCLUDED
> #define BAZ_H_INCLUDED
> #include <ruby.h>
> //these lines just say that these variables exist
> extern VALUE cFoo;
> extern VALUE cBar;
> #endif
>
> in *one* of your .c files (presumably baz.c)
>
> //these lines declare memory for these variables
> //and need to appear exactly once in your project
> VALUE cFoo;
> VALUE cBar;


Ken, Joel,

Thanks. I don't know why, but I had it in my head that I didn't have
to extern the values.

Regards,

Dan

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
making multiple elements visible libsfan01 Javascript 2 07-28-2006 06:40 PM
How to make a hyperlink Visible or not visible in DataList Patrick Olurotimi Ige ASP .Net 7 06-15-2005 12:01 PM
Sections visible and not visible tshad ASP .Net 4 01-31-2005 09:30 PM
button visible/not visible tshad ASP .Net 6 10-28-2004 10:02 PM
Panel.Visible = True also make child controls visible. spamfurnace ASP .Net 1 05-24-2004 03:07 AM



Advertisments