Tcl Source Code

Attachment Details
Login
Overview

Artifact ID: 398b9b439d67d7c129ddcc0f8de0c40db37ac12c
Ticket: 1437008fffffffffffffffffffffffffffffffff
Date: 2006-02-23 04:20:57
User: dkf
Artifact Attached: 352a4634f97038b651761676683a34841b8f1b16
Filename:TIP 261 - Technical realization.rtf
Description:Parts of original submission not suited to being a TIP
Content Appended
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
   100
   101
   102
   103
   104
   105
   106
   107
   108
   109
   110
   111
   112
   113
   114
   115
   116
   117
   118
   119
   120
   121
   122
   123
   124
   125
   126
   127
   128
   129
   130
   131
   132
   133
   134
   135
   136
   137
   138
   139
   140
   141
   142
   143
   144
   145
   146
   147
   148
   149
   150
   151
   152
   153
   154
   155
   156
   157
   158
   159
   160
   161
   162
   163
   164
   165
   166
   167
   168
   169
   170
   171
   172
   173
   174
   175
   176
   177
   178
   179
   180
{\rtf1\ansi\ansicpg1252\uc1\deff0\stshfdbch0\stshfloch0\stshfhich0\stshfbi0\deflang2057\deflangfe2057{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;}
{\f2\fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}{\f3\froman\fcharset2\fprq2{\*\panose 05050102010706020507}Symbol;}{\f37\froman\fcharset238\fprq2 Times New Roman CE;}{\f38\froman\fcharset204\fprq2 Times New Roman Cyr;}
{\f40\froman\fcharset161\fprq2 Times New Roman Greek;}{\f41\froman\fcharset162\fprq2 Times New Roman Tur;}{\f42\froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f43\froman\fcharset178\fprq2 Times New Roman (Arabic);}
{\f44\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f45\froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f47\fswiss\fcharset238\fprq2 Arial CE;}{\f48\fswiss\fcharset204\fprq2 Arial Cyr;}{\f50\fswiss\fcharset161\fprq2 Arial Greek;}
{\f51\fswiss\fcharset162\fprq2 Arial Tur;}{\f52\fswiss\fcharset177\fprq2 Arial (Hebrew);}{\f53\fswiss\fcharset178\fprq2 Arial (Arabic);}{\f54\fswiss\fcharset186\fprq2 Arial Baltic;}{\f55\fswiss\fcharset163\fprq2 Arial (Vietnamese);}
{\f57\fmodern\fcharset238\fprq1 Courier New CE;}{\f58\fmodern\fcharset204\fprq1 Courier New Cyr;}{\f60\fmodern\fcharset161\fprq1 Courier New Greek;}{\f61\fmodern\fcharset162\fprq1 Courier New Tur;}{\f62\fmodern\fcharset177\fprq1 Courier New (Hebrew);}
{\f63\fmodern\fcharset178\fprq1 Courier New (Arabic);}{\f64\fmodern\fcharset186\fprq1 Courier New Baltic;}{\f65\fmodern\fcharset163\fprq1 Courier New (Vietnamese);}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;
\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;
\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\ql \li0\ri0\sb120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f1\fs22\lang1031\langfe2057\cgrid\langnp1031\langfenp2057 \snext0 \styrsid12070315 Normal;}{
\s2\ql \li0\ri0\sb240\sa60\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \b\i\f1\fs28\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 \sbasedon0 \snext0 \styrsid12070315 heading 2;}{
\s3\ql \li0\ri0\sb240\sa60\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\itap0 \b\i\f1\fs24\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 \sbasedon0 \snext0 \styrsid12070315 heading 3;}{
\s4\ql \li0\ri0\sb240\sa60\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel3\adjustright\rin0\lin0\itap0 \b\f1\fs24\lang1031\langfe2057\cgrid\langnp1031\langfenp2057 \sbasedon0 \snext0 \styrsid12070315 heading 4;}{\*\cs10 \additive \ssemihidden 
Default Paragraph Font;}{\*\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv 
\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs20\lang1024\langfe1024\cgrid\langnp1024\langfenp1024 \snext11 \ssemihidden Normal Table;}{\s15\ql \li0\ri0\sb120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 
\f2\fs20\lang1031\langfe2057\cgrid\langnp1031\langfenp2057 \sbasedon0 \snext15 \styrsid12070315 Plain Text;}{\s16\qj \li0\ri0\sb120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f1\fs22\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 
\sbasedon0 \snext16 \styrsid12070315 Body Text 2;}{\s17\ql \li0\ri0\sb120\widctlpar\tqc\tx4536\tqr\tx9072\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f1\fs22\lang1031\langfe2057\cgrid\langnp1031\langfenp2057 \sbasedon0 \snext17 \styrsid12070315 
header;}{\s18\ql \li0\ri0\sb120\widctlpar\tqc\tx4536\tqr\tx9072\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f1\fs22\lang1031\langfe2057\cgrid\langnp1031\langfenp2057 \sbasedon0 \snext18 \styrsid12070315 footer;}{\*\cs19 \additive 
\sbasedon10 \styrsid12070315 page number;}}{\*\latentstyles\lsdstimax156\lsdlockeddef0}{\*\listtable{\list\listtemplateid67567617\listsimple{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat0\levelspace0\levelindent0
{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li360\jclisttab\tx360\lin360 }{\listname ;}\listid38820139}{\list\listtemplateid67567617\listsimple{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0
\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li360\jclisttab\tx360\lin360 }{\listname ;}\listid1730497838}{\list\listtemplateid67567617\listsimple{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1
\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li360\jclisttab\tx360\lin360 }{\listname ;}\listid1758360749}{\list\listtemplateid67567617\listsimple{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0
\levelstartat0\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li360\jclisttab\tx360\lin360 }{\listname ;}\listid2103066481}}{\*\listoverridetable{\listoverride\listid2103066481\listoverridecount0\ls1}
{\listoverride\listid38820139\listoverridecount0\ls2}{\listoverride\listid1758360749\listoverridecount0\ls3}{\listoverride\listid1730497838\listoverridecount0\ls4}}{\*\rsidtbl \rsid4733971\rsid12070315\rsid16601914}{\*\generator Microsoft Word 11.0.6502;}
{\info{\title 4}{\author Donal Fellows}{\operator Donal Fellows}{\creatim\yr2006\mo2\dy22\hr21\min11}{\revtim\yr2006\mo2\dy22\hr21\min16}{\version1}{\edmins4}{\nofpages5}{\nofwords1249}{\nofchars6878}{\nofcharsws9163}{\vern24579}}
\paperw11906\paperh16838\margl1152\margr1152\margt1417\margb1134 \widowctrl\ftnbj\aenddoc\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\formshade\horzdoc\dgmargin\dghspace180\dgvspace180\dghorigin1152\dgvorigin1417\dghshow1\dgvshow1
\jexpand\viewkind1\viewscale105\viewzk2\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\nobrkwrptbl\snaptogridincell\allowfieldendsel
\wrppunct\asianbrkrule\rsidroot12070315\newtblstyruls\nogrowautofit \fet0\sectd \linex0\endnhere\sectdefaultcl\sftnbj {\header \pard\plain \s17\ql \li0\ri0\sb120\widctlpar\tqc\tx4820\tqr\tx9639\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 
\f1\fs22\lang1031\langfe2057\cgrid\langnp1031\langfenp2057 {\cs19\lang2057\langfe2057\langnp2057\insrsid12070315 \'93}{\b\f2\insrsid12070315 namespace import}{\cs19\lang2057\langfe2057\langnp2057\insrsid12070315 \'94 change\tab \tab }{\field{\*\fldinst {
\cs19\lang2057\langfe2057\langnp2057\insrsid12070315  PAGE }}{\fldrslt {\cs19\lang1024\langfe1024\noproof\langnp2057\insrsid12070315 1}}}{\cs19\lang2057\langfe2057\langnp2057\insrsid12070315  / }{\field{\*\fldinst {
\cs19\lang2057\langfe2057\langnp2057\insrsid12070315  NUMPAGES }}{\fldrslt {\cs19\lang1024\langfe1024\noproof\langnp2057\insrsid12070315 5}}}{\lang2057\langfe2057\langnp2057\insrsid12070315 
\par }}{\footer \pard\plain \s18\ql \li0\ri0\sb120\widctlpar\tqc\tx4536\tqr\tx9639\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f1\fs22\lang1031\langfe2057\cgrid\langnp1031\langfenp2057 {\cs19\lang2057\langfe2057\langnp2057\insrsid12070315 
[email protected]\tab \tab }{\field{\*\fldinst {\cs19\lang2057\langfe2057\langnp2057\insrsid12070315  SAVEDATE \\@ "yyyy-MM-dd" \\* MERGEFORMAT }}{\fldrslt {\cs19\lang1024\langfe1024\noproof\insrsid2434487\charrsid2434487 2005-12-20}}}{
\cs19\lang2057\langfe2057\langnp2057\insrsid12070315  (last modified date)}{\insrsid12070315 
\par }}{\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}
{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8
\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain 
\s2\ql \li0\ri0\sb240\sa60\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0\pararsid12070315 \b\i\f1\fs28\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 {\insrsid12070315 4\tab Technical realization
\par }\pard\plain \s3\ql \li0\ri0\sb240\sa60\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\itap0\pararsid12070315 \b\i\f1\fs24\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 {\insrsid12070315 4.1\tab 
Variants in realizing this change of \'93namespace import\'94
\par }\pard\plain \s4\ql \li0\ri0\sb240\sa60\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel3\adjustright\rin0\lin0\itap0\pararsid12070315 \b\f1\fs24\lang1031\langfe2057\cgrid\langnp1031\langfenp2057 {\lang2057\langfe2057\langnp2057\insrsid12070315 4.1.1
\tab imported commands as list/array inside the Namespace structure
\par }\pard\plain \s16\qj \li0\ri0\sb120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid12070315 \f1\fs22\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 {\insrsid12070315 
On one hand it would be easy to install a new attribute in the Namespace structure, a list or an array of imported commands, similar to the array of exported ones.
\par }\pard\plain \s15\qj \li0\ri0\sb120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid12070315 \f2\fs20\lang1031\langfe2057\cgrid\langnp1031\langfenp2057 {\f1\fs22\lang2057\langfe2057\langnp2057\insrsid12070315 
This new attribute has to be maintained, so a "dynamic" list would perhabs the best. This could be done in a similar way like the function DoImport works with the }{\b\fs22\lang2057\langfe2057\langnp2057\insrsid12070315 ImportRef}{
\f1\fs22\lang2057\langfe2057\langnp2057\insrsid12070315  attribute of the }{\b\fs22\lang2057\langfe2057\langnp2057\insrsid12070315 Command}{\f1\fs22\lang2057\langfe2057\langnp2057\insrsid12070315  structure.
\par To maintain this list the related functions creating, importing, renaming, and deleting commands must be extended to grow or to shrink this list of imported commands of the current namespace.
\par }\pard \s15\ql \li0\ri0\sb120\keepn\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid12070315 {\f1\fs22\lang2057\langfe2057\langnp2057\insrsid12070315 Those functions are:
\par {\pntext\pard\plain\s15 \f3\fs20\insrsid12070315 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \s15\ql \fi-360\li360\ri0\sb120\keepn\widctlpar\jclisttab\tx360{\*\pn \pnlvlblt\ilvl0\ls3\pnrnot0\pnf3\pnstart1\pnindent360\pnsp120\pnhang {\pntxtb \'b7}}
\aspalpha\aspnum\faauto\ls3\adjustright\rin0\lin360\itap0\pararsid12070315 {\b\lang2057\langfe2057\langnp2057\insrsid12070315 Tcl_ProcObjCmd}{\lang2057\langfe2057\langnp2057\insrsid12070315  }{\f1\fs22\lang2057\langfe2057\langnp2057\insrsid12070315 (}{
\b\i\f1\fs22\lang2057\langfe2057\langnp2057\insrsid12070315 tclProc.c}{\f1\fs22\lang2057\langfe2057\langnp2057\insrsid12070315 )\line deleting an imported command element from that list (if existing),
\par {\pntext\pard\plain\s15 \f3\fs20\insrsid12070315 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \s15\ql \fi-360\li360\ri0\sb120\keepn\widctlpar\jclisttab\tx360{\*\pn \pnlvlblt\ilvl0\ls4\pnrnot0\pnf3\pnstart1\pnindent360\pnsp120\pnhang {\pntxtb \'b7}}
\aspalpha\aspnum\faauto\ls4\adjustright\rin0\lin360\itap0\pararsid12070315 {\b\lang2057\langfe2057\langnp2057\insrsid12070315 Tcl_Import}{\lang2057\langfe2057\langnp2057\insrsid12070315  }{\f1\fs22\lang2057\langfe2057\langnp2057\insrsid12070315 (}{
\b\i\f1\fs22\lang2057\langfe2057\langnp2057\insrsid12070315 tclNamesp.c}{\f1\fs22\lang2057\langfe2057\langnp2057\insrsid12070315 )\line creating an imported command element in that list,
\par {\pntext\pard\plain\s15 \f3\fs20\insrsid12070315 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \s15\ql \fi-360\li360\ri0\sb120\widctlpar\jclisttab\tx360{\*\pn \pnlvlblt\ilvl0\ls4\pnrnot0\pnf3\pnstart1\pnindent360\pnsp120\pnhang {\pntxtb \'b7}}
\aspalpha\aspnum\faauto\ls4\adjustright\rin0\lin360\itap0\pararsid12070315 {\b\lang2057\langfe2057\langnp2057\insrsid12070315 TclRenameCommand }{\f1\fs22\lang2057\langfe2057\langnp2057\insrsid12070315 (}{
\b\i\f1\fs22\lang2057\langfe2057\langnp2057\insrsid12070315 tclBasic.c}{\f1\fs22\lang2057\langfe2057\langnp2057\insrsid12070315 )\line deleting or changing an imported command element in that list
\par }\pard\plain \qj \li0\ri0\sb120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid12070315 \f1\fs22\lang1031\langfe2057\cgrid\langnp1031\langfenp2057 {\lang2057\langfe2057\langnp2057\insrsid12070315 
To get all imported commands of a namespace the "namespace\~import" command (}{\b\f2\lang2057\langfe2057\langnp2057\insrsid12070315 NamespaceImportCmd}{\lang2057\langfe2057\langnp2057\insrsid12070315  function) would return a kind o
f string representation of the elements of the list of imported commands (list of command names).
\par }\pard \ql \li0\ri0\sb120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid12070315 {\lang2057\langfe2057\langnp2057\insrsid12070315 The }{\b\f2\lang2057\langfe2057\langnp2057\insrsid12070315 ImportRef}{
\lang2057\langfe2057\langnp2057\insrsid12070315  structure could be reused as list of imported commands inside a namespace.
\par }\pard \qj \li0\ri0\sb120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid12070315 {\lang2057\langfe2057\langnp2057\insrsid12070315 The runtime consumption would increase in }{\b\f2\lang2057\langfe2057\langnp2057\insrsid12070315 
Tcl_ProcObjCmd}{\lang2057\langfe2057\langnp2057\insrsid12070315 , }{\b\f2\lang2057\langfe2057\langnp2057\insrsid12070315 Tcl_Import}{\lang2057\langfe2057\langnp2057\insrsid12070315 , }{\b\f2\lang2057\langfe2057\langnp2057\insrsid12070315 TclRenameCommand}
{\lang2057\langfe2057\langnp2057\insrsid12070315 , maintaining the list of imported commands.
\par Runtime consumption would be added to }{\b\f2\lang2057\langfe2057\langnp2057\insrsid12070315 NamespaceImportCmd}{\lang2057\langfe2057\langnp2057\insrsid12070315 .
\par }\pard\plain \s4\ql \li0\ri0\sb240\sa60\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel3\adjustright\rin0\lin0\itap0\pararsid12070315 \b\f1\fs24\lang1031\langfe2057\cgrid\langnp1031\langfenp2057 {\lang2057\langfe2057\langnp2057\insrsid12070315 4.1.2
\tab the imported commands knowing to be imported
\par }\pard\plain \qj \li0\ri0\sb120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid12070315 \f1\fs22\lang1031\langfe2057\cgrid\langnp1031\langfenp2057 {\lang2057\langfe2057\langnp2057\insrsid12070315 
On the other hand it would be more easy to maintain and more centralized, if only the command knows itself, if it is imported or not. Than only the function importing a command (}{\b\f2\lang2057\langfe2057\langnp2057\insrsid12070315 DoImport}{
\b\lang2057\langfe2057\langnp2057\insrsid12070315  }{\lang2057\langfe2057\langnp2057\insrsid12070315 in }{\b\i\lang2057\langfe2057\langnp2057\insrsid12070315 tclNamespc.h}{\lang2057\langfe2057\langnp2057\insrsid12070315 ) would have to set a kind of flag.

\par If a command is redefined, deleted (by renaming) than the "flagged" }{\b\f2\lang2057\langfe2057\langnp2057\insrsid12070315 Command}{\lang2057\langfe2057\langnp2057\insrsid12070315  structure will be deleted, so no maintainer will be needed.
\par To get all imported commands of a namespace the "namespace\~import" command (}{\b\f2\lang2057\langfe2057\langnp2057\insrsid12070315 NamespaceImportCmd}{\lang2057\langfe2057\langnp2057\insrsid12070315 
 function) would have to loop over all namespace commands asking for the imported state, collecting the names of the imported ones in a list.
\par The runtime consumption would increase in }{\b\f2\lang2057\langfe2057\langnp2057\insrsid12070315 DoImport}{\lang2057\langfe2057\langnp2057\insrsid12070315 , flagging the imported, newly created commands.
\par }\pard\plain \s4\ql \li0\ri0\sb240\sa60\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel3\adjustright\rin0\lin0\itap0\pararsid12070315 \b\f1\fs24\lang1031\langfe2057\cgrid\langnp1031\langfenp2057 {\lang2057\langfe2057\langnp2057\insrsid12070315 4.1.3
\tab the ways to signal a command was imported
\par }\pard\plain \s16\qj \li0\ri0\sb120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid12070315 \f1\fs22\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 {\insrsid12070315 
The Command structure is the place to signal if a command was imported, but there are different ways to achieve this (sorted by memory consumption and the chance for future enhancements):
\par {\pntext\pard\plain\f3\fs22\insrsid12070315 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard\plain \qj \fi-360\li360\ri0\sb120\widctlpar\jclisttab\tx360{\*\pn \pnlvlblt\ilvl0\ls2\pnrnot0\pnf3\pnindent360\pnsp120\pnhang {\pntxtb \'b7}}
\aspalpha\aspnum\faauto\ls2\adjustright\rin0\lin360\itap0\pararsid12070315 \f1\fs22\lang1031\langfe2057\cgrid\langnp1031\langfenp2057 {\lang2057\langfe2057\langnp2057\insrsid12070315 insert a new flag bit for commands }{
\b\f2\lang2057\langfe2057\langnp2057\insrsid12070315 CMD_IS_IMPORTED}{\lang2057\langfe2057\langnp2057\insrsid12070315  to be used in the }{\b\f2\lang2057\langfe2057\langnp2057\insrsid12070315 flags}{\lang2057\langfe2057\langnp2057\insrsid12070315 
 attribute of the }{\b\f2\lang2057\langfe2057\langnp2057\insrsid12070315 Command}{\lang2057\langfe2057\langnp2057\insrsid12070315  structure
\par {\pntext\pard\plain\f3\fs22\insrsid12070315 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \qj \fi-360\li360\ri0\sb120\widctlpar\jclisttab\tx360{\*\pn \pnlvlblt\ilvl0\ls1\pnrnot0\pnf3\pnindent360\pnsp120\pnhang {\pntxtb \'b7}}
\aspalpha\aspnum\faauto\ls1\adjustright\rin0\lin360\itap0\pararsid12070315 {\lang2057\langfe2057\langnp2057\insrsid12070315 insert a "boolean" integer as a new attribute of the }{\b\f2\lang2057\langfe2057\langnp2057\insrsid12070315 Command }{
\lang2057\langfe2057\langnp2057\insrsid12070315 structure
\par {\pntext\pard\plain\f3\fs22\insrsid12070315 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \qj \fi-360\li360\ri0\sb120\widctlpar\jclisttab\tx360{\*\pn \pnlvlblt\ilvl0\ls1\pnrnot0\pnf3\pnindent360\pnsp120\pnhang {\pntxtb \'b7}}
\aspalpha\aspnum\faauto\ls1\adjustright\rin0\lin360\itap0\pararsid12070315 {\lang2057\langfe2057\langnp2057\insrsid12070315 insert a }{\b\f2\lang2057\langfe2057\langnp2057\insrsid12070315 Namespace}{\lang2057\langfe2057\langnp2057\insrsid12070315 
 pointer to the exporting namespace as a new attribute of the }{\b\f2\lang2057\langfe2057\langnp2057\insrsid12070315 Command }{\lang2057\langfe2057\langnp2057\insrsid12070315 structure \endash  just to point to the \'93source\'94 namespace
\par {\pntext\pard\plain\f3\fs22\insrsid12070315 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \qj \fi-360\li360\ri0\sb120\widctlpar\jclisttab\tx360{\*\pn \pnlvlblt\ilvl0\ls1\pnrnot0\pnf3\pnindent360\pnsp120\pnhang {\pntxtb \'b7}}
\aspalpha\aspnum\faauto\ls1\adjustright\rin0\lin360\itap0\pararsid12070315 {\lang2057\langfe2057\langnp2057\insrsid12070315 insert a }{\b\f2\lang2057\langfe2057\langnp2057\insrsid12070315 Command}{\lang2057\langfe2057\langnp2057\insrsid12070315 
 pointer to the exported command as a new attribute of the }{\b\f2\lang2057\langfe2057\langnp2057\insrsid12070315 Command }{\lang2057\langfe2057\langnp2057\insrsid12070315 structure \endash  just to point to the \'93source\'94
 command (unnecessary, because an imported command has this pointer in his }{\b\f2\lang2057\langfe2057\langnp2057\insrsid12070315 ClientData}{\lang2057\langfe2057\langnp2057\insrsid12070315 
\par }\pard \qj \li0\ri0\sb120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid12070315 {\lang2057\langfe2057\langnp2057\insrsid12070315 
None of the four possibilities costs much in implementing and even the first would do its job, without changing the }{\b\f2\lang2057\langfe2057\langnp2057\insrsid12070315 Command}{\lang2057\langfe2057\langnp2057\insrsid12070315  structure at all, whi
ch is important to prevent changing the \'93fingerprint\'94 of this structure.
\par The introduction of a new command flag bit }{\b\f2\lang2057\langfe2057\langnp2057\insrsid12070315 CMD_IS_IMPORTED}{\lang2057\langfe2057\langnp2057\insrsid12070315  would add only a new define in }{\b\i\lang2057\langfe2057\langnp2057\insrsid12070315 
tclInt.h}{\lang2057\langfe2057\langnp2057\insrsid12070315 , and the set of this flag in the }{\b\f2\lang2057\langfe2057\langnp2057\insrsid12070315 DoImport}{\lang2057\langfe2057\langnp2057\insrsid12070315  function.
\par }\pard\plain \s3\ql \li0\ri0\sb240\sa60\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\itap0\pararsid12070315 \b\i\f1\fs24\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 {\insrsid12070315 4.2\tab Realization of the "}{
\i0\f2\insrsid12070315 namespace import}{\insrsid12070315 " command
\par }\pard\plain \s4\ql \li0\ri0\sb240\sa60\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel3\adjustright\rin0\lin0\itap0\pararsid12070315 \b\f1\fs24\lang1031\langfe2057\cgrid\langnp1031\langfenp2057 {\lang2057\langfe2057\langnp2057\insrsid12070315 4.2.1
\tab changes in }{\i\lang2057\langfe2057\langnp2057\insrsid12070315 tclInt.h}{\lang2057\langfe2057\langnp2057\insrsid12070315 
\par }\pard\plain \s16\qj \li0\ri0\sb120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid12070315 \f1\fs22\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 {\insrsid12070315 
Add the command flag bit right behind the definition of the Command structure and the two already exiting command flags.
\par 
\par }\pard\plain \s15\ql \li708\ri0\keep\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin708\itap0\pararsid12070315 \f2\fs20\lang1031\langfe2057\cgrid\langnp1031\langfenp2057 {\lang2057\langfe2057\langnp2057\insrsid12070315 /*\line 
 * Flag bits for commands. \line  *\line  * CMD_IS_DELETED -\tab \tab Means that the command is in the process\line  *\tab \tab \tab \tab of being deleted (its deleteProc is\line  *\tab \tab \tab \tab currently executing). Other attempts to\line  *\tab 
\tab \tab \tab delete the command should be ignored.\line  * CMD_TRACE_ACTIVE -\tab \tab 1 means that trace processing is currently\line  *\tab \tab \tab \tab underway for a rename/delete change.\line  *\tab \tab \tab \tab See
 the two flags below for which is\line  *\tab \tab \tab \tab currently being processed.\line  * CMD_HAS_EXEC_TRACES -\tab 1 means that this command has at least\line  *\tab \tab \tab \tab one execution trace (as opposed to simple\line  *\tab \tab \tab 
\tab delete/rename traces) in its tracePtr list.\line  * CMD_IS_IMPORT -\tab \tab 1 means that this command was imported\line  * TCL_TRACE_RENAME -\tab \tab A rename trace is in progress. Further\line  *\tab \tab \tab \tab 
recursive renames will not be traced.\line  * TCL_TRACE_DELETE -\tab \tab A delete trace is in progress. Further \line  *\tab \tab \tab \tab recursive deletes will not be traced.\line  * (these last two flags are defined in tcl.h)\line  */\line 
#define CMD_IS_DELETED\tab \tab 0x1\line #define CMD_TRACE_ACTIVE\tab 0x2\line #define CMD_HAS_EXEC_TRACES\tab 0x4\line }{\b\i\lang2057\langfe2057\langnp2057\insrsid12070315 #define CMD_IS_IMPORTED\tab \tab 0x8}{
\lang2057\langfe2057\langnp2057\insrsid12070315 
\par }\pard\plain \s4\ql \li0\ri0\sb240\sa60\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel3\adjustright\rin0\lin0\itap0\pararsid12070315 \b\f1\fs24\lang1031\langfe2057\cgrid\langnp1031\langfenp2057 {\lang2057\langfe2057\langnp2057\insrsid12070315 4.2.2
\tab changes in }{\i\lang2057\langfe2057\langnp2057\insrsid12070315 tclNamesp.c}{\lang2057\langfe2057\langnp2057\insrsid12070315 
\par }\pard\plain \s17\qj \li0\ri0\sb120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid12070315 \f1\fs22\lang1031\langfe2057\cgrid\langnp1031\langfenp2057 {\lang2057\langfe2057\langnp2057\insrsid12070315 The function }{
\b\f2\lang2057\langfe2057\langnp2057\insrsid12070315 DoImport}{\lang2057\langfe2057\langnp2057\insrsid12070315  has to be modified right behind creating the new imported command with }{\b\f2\lang2057\langfe2057\langnp2057\insrsid12070315 
Tcl_CreateObjCommand}{\lang2057\langfe2057\langnp2057\insrsid12070315 :
\par }\pard\plain \s15\ql \li708\ri0\sb120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin708\itap0\pararsid12070315 \f2\fs20\lang1031\langfe2057\cgrid\langnp1031\langfenp2057 {\lang2057\langfe2057\langnp2057\insrsid12070315 dataPtr\tab 
= (ImportedCmdData *) ckalloc(sizeof(ImportedCmdData));
\par }\pard \s15\ql \li709\ri0\keep\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin709\itap0\pararsid12070315 {\lang2057\langfe2057\langnp2057\insrsid12070315 importedCmd\tab = Tcl_CreateObjCommand(interp, \tab \tab 
Tcl_DStringValue(&ds), InvokeImportedCmd,\line \tab (ClientData) dataPtr, DeleteImportedCmd);
\par }{\b\i\lang2057\langfe2057\langnp2057\insrsid12070315 importedCmdPtr\tab \tab = (Command *) importedCmd;\line importedCmdPtr->flags\tab |= CMD_IS_IMPORTED;
\par }{\lang2057\langfe2057\langnp2057\insrsid12070315 dataPtr->realCmdPtr\tab = cmdPtr;
\par dataPtr->selfPtr\tab \tab = (Command *) importedCmd;
\par }\pard\plain \s17\qj \li0\ri0\sb120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid12070315 \f1\fs22\lang1031\langfe2057\cgrid\langnp1031\langfenp2057 {\lang2057\langfe2057\langnp2057\insrsid12070315 The function }{
\b\f2\lang2057\langfe2057\langnp2057\insrsid12070315 NamespaceImportCmd}{\lang2057\langfe2057\langnp2057\insrsid12070315  to react on having on arguments with return a list of imported commands. The new syntax would be:
\par }\pard \s17\qj \li708\ri0\sb120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin708\itap0\pararsid12070315 {\b\f2\lang2057\langfe2057\langnp2057\insrsid12070315 namespace import ?-origins | ?-force? pattern ?pattern ...??
\par }\pard \s17\qj \li0\ri0\sb120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid12070315 {\lang2057\langfe2057\langnp2057\insrsid12070315 The command \'93}{\b\f2\lang2057\langfe2057\langnp2057\insrsid12070315 namespace import}{
\lang2057\langfe2057\langnp2057\insrsid12070315 \'94 would return a list of absolute command names.
\par The option \'93}{\b\f2\lang2057\langfe2057\langnp2057\insrsid12070315 -origin}{\lang2057\langfe2057\langnp2057\insrsid12070315 \'94 would change the result list. Instead of the absolute command names the origin
s would be returned. The origins of the imported commands would be queryied with the function }{\b\f2\lang2057\langfe2057\langnp2057\insrsid12070315 TclGetOriginalCommand}{\lang2057\langfe2057\langnp2057\insrsid12070315 .
\par Here the changes in the function }{\b\f2\lang2057\langfe2057\langnp2057\insrsid12070315 NamespaceImportCmd}{\lang2057\langfe2057\langnp2057\insrsid12070315 :
\par }\pard\plain \s15\ql \li0\ri0\sb120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid12070315 \f2\fs20\lang1031\langfe2057\cgrid\langnp1031\langfenp2057 {\lang2057\langfe2057\langnp2057\insrsid12070315 
\par }\pard \s15\ql \li708\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin708\itap0\pararsid12070315 {\lang2057\langfe2057\langnp2057\insrsid12070315 static int\line   NamespaceImportCmd(dummy, interp, objc, objv)\line     ClientData dummy;\tab \tab 
/* Not used. */\line     Tcl_Interp *interp;\tab \tab /* Current interpreter. */\line     int objc;\tab \tab \tab /* Number of arguments. */\line     Tcl_Obj *CONST objv[];\tab /* Argument objects. */\line   \{\line     register int   i              = 0,
\line                    result         = TCL_OK;\line     int            allowOverwrite = 0,\line                    }{\b\i\lang2057\langfe2057\langnp2057\insrsid12070315 returnOrigins  = 0,\line }{\lang2057\langfe2057\langnp2057\insrsid12070315 
                   firstArg       = 2;\line     char           *string        = (char *) NULL,\line                    *pattern       = (char *) NULL;\line }{\b\i\insrsid12070315     Namespace      *currNsPtr     = (Namespace*) NULL;\line 
    Command        *command       = (Command *) NULL;\line     Tcl_HashSearch search;\line     Tcl_HashEntry  *hPtr          = (Tcl_HashEntry *) NULL;\line }{\b\i\lang2057\langfe2057\langnp2057\insrsid12070315 
    Tcl_Obj        *importedList  = (Tcl_Obj *) NULL;\line                    *cmdNameObj    = (Tcl_Obj *) NULL;\line }{\b\i\insrsid12070315     Tcl_Command    token;\line }{\lang2057\langfe2057\langnp2057\insrsid12070315 \line     if (objc < 2) \{\line 
\tab Tcl_WrongNumArgs(\line         interp,\line         2, objv,\line }{\b\i\lang2057\langfe2057\langnp2057\insrsid12070315  }{\lang2057\langfe2057\langnp2057\insrsid12070315       }{\b\i\lang2057\langfe2057\langnp2057\insrsid12070315 
 "?-origins | ?-force? pattern ?pattern...??"\line }{\lang2057\langfe2057\langnp2057\insrsid12070315       );\line \tab return TCL_ERROR;\line     \}\line \line }{\b\i\lang2057\langfe2057\langnp2057\insrsid12070315     /*\line 
     * Detect the optional arguments "-force" and "-origins"\line      * as the first argument.\line      */\line }{\lang2057\langfe2057\langnp2057\insrsid12070315     if (firstArg < objc) \{\line \tab string = TclGetString(objv[firstArg]);\line }{
\b\i\lang2057\langfe2057\langnp2057\insrsid12070315 \tab if (*string == '-') \{\line         if (strcmp(string, "-force") == 0) \{\line }{\lang2057\langfe2057\langnp2057\insrsid12070315       }{\b\i\lang2057\langfe2057\langnp2057\insrsid12070315 
    if ( objc <= 3 ) \{\line }{\lang2057\langfe2057\langnp2057\insrsid12070315       }{\b\i\lang2057\langfe2057\langnp2057\insrsid12070315 \tab Tcl_WrongNumArgs(\line   }{\lang2057\langfe2057\langnp2057\insrsid12070315             }{
\b\i\lang2057\langfe2057\langnp2057\insrsid12070315 interp,\line   }{\lang2057\langfe2057\langnp2057\insrsid12070315             }{\b\i\lang2057\langfe2057\langnp2057\insrsid12070315 3, objv,\line   }{\lang2057\langfe2057\langnp2057\insrsid12070315 
            }{\b\i\lang2057\langfe2057\langnp2057\insrsid12070315 NULL\line }{\lang2057\langfe2057\langnp2057\insrsid12070315             }{\b\i\lang2057\langfe2057\langnp2057\insrsid12070315 );\line \tab }{\lang2057\langfe2057\langnp2057\insrsid12070315 
      }{\b\i\lang2057\langfe2057\langnp2057\insrsid12070315 return TCL_ERROR;\line     }{\lang2057\langfe2057\langnp2057\insrsid12070315       }{\b\i\lang2057\langfe2057\langnp2057\insrsid12070315 \}\line \line }{
\lang2057\langfe2057\langnp2057\insrsid12070315 \tab     allowOverwrite = 1;\line           firstArg++;\line }{\b\i\lang2057\langfe2057\langnp2057\insrsid12070315         \} elseif (strcmp(string, "-origins") == 0) \{\line     }{
\lang2057\langfe2057\langnp2057\insrsid12070315       }{\b\i\lang2057\langfe2057\langnp2057\insrsid12070315 if ( objc != 3 ) \{\line \tab }{\lang2057\langfe2057\langnp2057\insrsid12070315       }{\b\i\lang2057\langfe2057\langnp2057\insrsid12070315 
Tcl_WrongNumArgs(\line   }{\lang2057\langfe2057\langnp2057\insrsid12070315             }{\b\i\lang2057\langfe2057\langnp2057\insrsid12070315 interp,\line   }{\lang2057\langfe2057\langnp2057\insrsid12070315             }{
\b\i\lang2057\langfe2057\langnp2057\insrsid12070315 3, objv,\line   }{\lang2057\langfe2057\langnp2057\insrsid12070315             }{\b\i\lang2057\langfe2057\langnp2057\insrsid12070315 NULL\line }{\lang2057\langfe2057\langnp2057\insrsid12070315 
            }{\b\i\lang2057\langfe2057\langnp2057\insrsid12070315 );\line \tab }{\lang2057\langfe2057\langnp2057\insrsid12070315       }{\b\i\lang2057\langfe2057\langnp2057\insrsid12070315 return TCL_ERROR;\line     }{
\lang2057\langfe2057\langnp2057\insrsid12070315       }{\b\i\lang2057\langfe2057\langnp2057\insrsid12070315 \}\line \line     }{\lang2057\langfe2057\langnp2057\insrsid12070315       }{\b\i\lang2057\langfe2057\langnp2057\insrsid12070315 returnOrigins = 1;
\line \tab   \} else \{\line     }{\lang2057\langfe2057\langnp2057\insrsid12070315       }{\b\i\lang2057\langfe2057\langnp2057\insrsid12070315 Tcl_ResetResult( interp );\line     }{\lang2057\langfe2057\langnp2057\insrsid12070315       }{
\b\i\lang2057\langfe2057\langnp2057\insrsid12070315 Tcl_SetAppendResult(\line       }{\lang2057\langfe2057\langnp2057\insrsid12070315       }{\b\i\lang2057\langfe2057\langnp2057\insrsid12070315 interp,\line       }{
\lang2057\langfe2057\langnp2057\insrsid12070315       }{\b\i\lang2057\langfe2057\langnp2057\insrsid12070315 "bad option \\"",\line       }{\lang2057\langfe2057\langnp2057\insrsid12070315       }{\b\i\lang2057\langfe2057\langnp2057\insrsid12070315 string,
\line       }{\lang2057\langfe2057\langnp2057\insrsid12070315       }{\b\i\lang2057\langfe2057\langnp2057\insrsid12070315 "\\": must be \endash force, -origins, or omitted"\line     }{\lang2057\langfe2057\langnp2057\insrsid12070315       }{
\b\i\lang2057\langfe2057\langnp2057\insrsid12070315 );\line     }{\lang2057\langfe2057\langnp2057\insrsid12070315       }{\b\i\lang2057\langfe2057\langnp2057\insrsid12070315 return TCL_ERROR;\line   }{\lang2057\langfe2057\langnp2057\insrsid12070315       
}{\b\i\lang2057\langfe2057\langnp2057\insrsid12070315 \}\line \tab \}\line     \}\line \line     if ((objc == 2) ||\line         ((objc == 3) && (returnOrigins == 1) \{\line       /* get the current namespace and the first command of this\line 
       * namespace\line        */\line }{\lang2057\langfe2057\langnp2057\insrsid12070315       }{\b\i\insrsid12070315 currNsPtr    = (Namespace*) Tcl_GetCurrentNamespace(interp)}{\b\i\lang2057\langfe2057\langnp2057\insrsid12070315 \line }{
\b\i\insrsid12070315 \tab hPtr         = Tcl_FirstHashEntry(currNsPtr->cmdTable, &search);\line \line       /* initialize the list of imported commands\line        */\line }{\lang2057\langfe2057\langnp2057\insrsid12070315       }{
\b\i\lang2057\langfe2057\langnp2057\insrsid12070315 importedList = Tcl_NewObj();\line \line }{\lang2057\langfe2057\langnp2057\insrsid12070315       }{\b\i\lang2057\langfe2057\langnp2057\insrsid12070315 /* loop over the commands of the current namespace
\line  }{\lang2057\langfe2057\langnp2057\insrsid12070315       }{\b\i\lang2057\langfe2057\langnp2057\insrsid12070315 * to test if they are imported and than, if so,\line  }{\lang2057\langfe2057\langnp2057\insrsid12070315       }{
\b\i\lang2057\langfe2057\langnp2057\insrsid12070315 * to get their absolute (original) names\line }{\lang2057\langfe2057\langnp2057\insrsid12070315       }{\b\i\lang2057\langfe2057\langnp2057\insrsid12070315  */\line }{\b\i\insrsid12070315 \tab 
for (; hPtr!= NULL ; hPtr=Tcl_NextHashEntry(&search)) \{\line   }{\lang2057\langfe2057\langnp2057\insrsid12070315       }{\b\i\insrsid12070315 token   = (Tcl_Command) Tcl_GetHashValue(hPtr);\line   }{\lang2057\langfe2057\langnp2057\insrsid12070315       }
{\b\i\insrsid12070315 command = (Command *) token;\line \line   }{\lang2057\langfe2057\langnp2057\insrsid12070315       }{\b\i\insrsid12070315 if (command->flags & CMD_IS_IMPORTED) \{\line }{\lang2057\langfe2057\langnp2057\insrsid12070315       }{
\b\i\insrsid12070315     if (returnOrigins == 1) \{\line       }{\lang2057\langfe2057\langnp2057\insrsid12070315       }{\b\i\insrsid12070315 /* get the origin of the imported namespace command\line }{\lang2057\langfe2057\langnp2057\insrsid12070315       
}{\b\i\insrsid12070315        */\line       }{\lang2057\langfe2057\langnp2057\insrsid12070315       }{\b\i\insrsid12070315 token = TclGetOriginalCommand(token);\line     }{\lang2057\langfe2057\langnp2057\insrsid12070315       }{\b\i\insrsid12070315 \}
\line \line     }{\lang2057\langfe2057\langnp2057\insrsid12070315       }{\b\i\insrsid12070315 /* get the absolute/full name of the imported\line      }{\lang2057\langfe2057\langnp2057\insrsid12070315       }{\b\i\insrsid12070315 * namespace command\line 
     }{\lang2057\langfe2057\langnp2057\insrsid12070315       }{\b\i\insrsid12070315 */\line     }{\lang2057\langfe2057\langnp2057\insrsid12070315       }{\b\i\insrsid12070315 cmdNameObj = Tcl_NewObj();\line \line     }{
\lang2057\langfe2057\langnp2057\insrsid12070315       }{\b\i\insrsid12070315 Tcl_GetCommandFullName(interp, token, cmdNameObj);\line \line     }{\lang2057\langfe2057\langnp2057\insrsid12070315       }{\b\i\insrsid12070315 
result = Tcl_ListObjAppendElement(\line       }{\lang2057\langfe2057\langnp2057\insrsid12070315       }{\b\i\insrsid12070315 interp, importedList, cmdNameObj\line     }{\lang2057\langfe2057\langnp2057\insrsid12070315       }{\b\i\insrsid12070315 );\line 
\line     }{\lang2057\langfe2057\langnp2057\insrsid12070315       }{\b\i\insrsid12070315 if (result == TCL_ERROR) \{\line }{\lang2057\langfe2057\langnp2057\insrsid12070315       }{\b\i\insrsid12070315       Tcl_DecrRefCount( importedList );\line       }{
\lang2057\langfe2057\langnp2057\insrsid12070315       }{\b\i\insrsid12070315 return TCL_ERROR;\line     }{\lang2057\langfe2057\langnp2057\insrsid12070315       }{\b\i\insrsid12070315 \}\line   }{\lang2057\langfe2057\langnp2057\insrsid12070315       }{
\b\i\insrsid12070315 \}\line }{\lang2057\langfe2057\langnp2057\insrsid12070315       }{\b\i\insrsid12070315 \}\line \line }{\lang2057\langfe2057\langnp2057\insrsid12070315       }{\b\i\insrsid12070315 Tcl_SetObjResult(interp, importedList);\line }{
\lang2057\langfe2057\langnp2057\insrsid12070315       }{\b\i\insrsid12070315 return TCL_OK;\line     \}\line }{\lang2057\langfe2057\langnp2057\insrsid12070315     \line     /* from here on the rest of NamespaceImportCmd */\line   \}\line 
\par }\pard\plain \ql \li0\ri0\sb120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f1\fs22\lang1031\langfe2057\cgrid\langnp1031\langfenp2057 {\insrsid16601914 
\par }}