Subject: Re: [sv-cc] Updated extern/exports proposal - NULL & $root scope
From: Andrzej Litwiniuk (Andrzej.Litwiniuk@synopsys.com)
Date: Wed Mar 12 2003 - 11:00:28 PST
> DOUG:
> [...] questions about equating NULL svScope with extern declarations in $root.
>
> I oppose using NULL for this job. There are two reasons:
>
> 1) $root is a valid scope. In the future, a concept of
> "namespace" may be added to the language, in which
> $root would just be the default namespace. We would
> need to distinguish between external functions
> implemented in such namespaces, NULL won't do.
>
> 2) NULL is convenient for users to recognize error scenarios.
> Let's reserve its use for that purpose.
Doug,
I agree with your both points. Joao's proposal didn't explicitly address
the scope of $root, so I simply guessed that perhaps NULL would play that role.
But you are right that it's better to have NULL represent erroneous situations.
Questions (Joao?):
- what would be the effect of calling svPutScope(NULL) ? Error?
- The initial value of context, i.e. prior to any call of context function,
is NULL, right?
- context will be automatically reset at the return from context function;
to what value? NULL?
Or the previous context? (pushed on a stack)
Consider the scenario: SV --> C --> SV --> C --> ...
where SV code calls context functions and C code calls exported functions.
Say: sv_foo1 calls c_foo2,
c_foo2 calls sv_foo3,
sv_foo3 calls c_foo4,
etc,
then control returns from c_foo4 to sv_foo3 and then to c_foo2.
What will be the context then? NULL or a context that allows for more
calls from c_foo2?
Another issue: default/initial value of user data.
svGetUserData() should return NULL if svSetUserData() has not been called
for a specific instance.
Andrzej
svGetUserData
This archive was generated by hypermail 2b28 : Wed Mar 12 2003 - 11:01:56 PST