From: Surendra S. <efu...@ne...> - 2006-03-21 13:12:34
|
Hello, William S Fulton <ws...@fu...> writes: > Surendra Singhi wrote: >> William S Fulton <ws...@fu...> wrote: >> >>>Surendra Singhi wrote: >>>> Hello, Is there any reason why SWIG parser doesn't associates a >>>> storage class with >>>>the variable, when parsing this code >>>> >>>>extern "C" { >>>> int x; >>>>} >>>> >>>>The storage class is associated if the code is written as >>>>extern int x; >>>> >>>> >>>The storage class should not be extern as >>> >>>extern "C" { >>> int x; >>>} >>> >>>is not the same as >>> >>>extern int x; >>> >>>In fact it is much the same as >>> >>>int x; >>> >>> it, just has C name mangling. If you look at the parse tree, you'll >>> see the extern "C" is there. Is there something you want to do with >>> this information? >>> >> Thanks for the help. extern "C" { >> int x; >> } >> When a variable is declared as above, it is exported in the dll >> file. So, while generating scripting code, I want to find out >> whether a variable is just a plain global variable or is it some >> variable which is exported (in which case there needs to be SWIG >> generated code in the scripting language file to access it)? How can >> I know this? >> > > I don't believe the storage class is of concern to you. Consider what > happens when a user parses a header file with the examples you have > given. Access to the variable is possible whether it is a global or > exported in a dll. OK. >What the storage is won't make any difference to > the wrappers being generated, as the variable is simply read or > written to. Why do you want to differentiate between these two? > In lisp programs, the interpreter first loads the foreign library DLL/.so, and then it can only access the variables which are exported by the DLL/.so. So, when SWIG language module parses the header files, it should be able to find out which are the variables which this header file wants to export in the dll/.so, and then accordingly generate lisp code for accessing those variables. This is what I want to achieve, and for functions I am able to do so using the storage class. I was wondering how to achieve the same for variables. Thanks. -- Surendra Singhi http://ssinghi.kreeti.com, http://www.kreeti.com Read my blog at: http://cuttingtheredtape.blogspot.com/ ,---- | "War is Peace! Freedom is Slavery! Ignorance is Strength!" | -- Orwell, 1984, 1948 `---- |