I'm using Tcl 8.4.6 but it seems to exists also in later versions.
My system is Linux 2.6.8.1, Slackware Current, Duron 800.
I'm maintaining TCL module for Polish Instant Messager called
Kadu. I want to use namespaces to separate loaded scripts from
each other. I define [on] command at C++ level and I need to
know what is the current namespace, while executing this
command, so I use Tcl_GetCurrentNamespace() to get it, but it
always returns "::".
Now, you'll propably ask - why I'm sure that it SHOULD be different
namespace than "::"? Well, I load script which is only one line and
looks like:
on connected some_proc
and my module loads it by code:
int status = Tcl_VarEval(interp,
"namespace eval ", last, " {",
data,
"}", NULL);
where 'last' is char* type and contains namespace for this script,
'data' is also char* type and contains script code data, which is the
above line in this case. So, when I call [on] in this one line, I
should get 'last' value by calling Tcl_GetCurrentNamespace inside
of [on], am I right? It returns to me "::". That's the point.
Googie, my e-mail is boogie (at) scripts.one.pl
Logged In: YES
user_id=80530
please attach a test program
that demonstrates the problem.
Logged In: NO
Whole module? It would be difficult, couse Kadu (the IM) takes 700kb and
TCL module for it takes about 250 kb :)
Logged In: YES
user_id=80530
no. just a small example program
that demonstrates the problem.
Logged In: NO
Ok, I'll do it but I don't promis that it will be done for a moment... I think I'll
upload it in few (1-3) days.
Logged In: NO
Deam >:[ It seems to be my foult. I've wrote very simple application and
here it works correctly. But I don't understeand... The way of using
namespaces in my module is quiet simple too and it doesn't work there ;(
Anyway, I'm so sorry for littering this place :/
Logged In: YES
user_id=80530
Many pathways to script evaluation
force evaluation in the global namespace
(script bound tk Tk events come to mind).
Perhaps in your module things are passing
through one of them.
Closing this report.