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 }}