Commit fdf0ac23 authored by Dimitri van Heesch's avatar Dimitri van Heesch

Merge pull request #189 from wtschueller/master

Support more Tcl commands
parents 8389c41f 73e7c340
...@@ -534,6 +534,24 @@ static void tcl_name(const QCString &ns0, const QCString &name0, QCString &ns, Q ...@@ -534,6 +534,24 @@ static void tcl_name(const QCString &ns0, const QCString &name0, QCString &ns, Q
} }
} }
//! Check name. Strip namespace qualifiers from name0 if inside inlined code segment.
// @return 'ns' and 'name' of given current 'ns0' and 'name0'
static void tcl_name_SnippetAware(const QCString &ns0, const QCString &name0, QCString &ns, QCString &name)
{
// If we are inside an inlined code snippet then ns0
// already containes the complete namespace path.
// Any namespace qualifiers in name0 are redundant.
int i = name0.findRev("::");
if (i>=0 && tcl.memberdef)
{
tcl_name(ns0, name0.mid(i+2), ns, name);
}
else
{
tcl_name(ns0, name0, ns, name);
}
}
// Check and return namespace entry. // Check and return namespace entry.
// @return namespace entry // @return namespace entry
Entry* tcl_entry_namespace(const QCString ns) Entry* tcl_entry_namespace(const QCString ns)
...@@ -714,6 +732,40 @@ static void tcl_codify_cmd(const char *s,int i) ...@@ -714,6 +732,40 @@ static void tcl_codify_cmd(const char *s,int i)
{ {
tcl_codify(s,(*tcl.list_commandwords.at(i)).utf8()); tcl_codify(s,(*tcl.list_commandwords.at(i)).utf8());
} }
//! codify a string token
//
// codifies string according to type.
// Starts a new scan context if needed (*myScan==0 and type == "script").
// Returns NULL or the created scan context.
//
static tcl_scan *tcl_codify_token(tcl_scan *myScan, const QCString type, const QCString string)
{
if (myScan != NULL)
{
if (type != NULL)
{
myScan->after << type << string;
}
else
{
myScan->after << "NULL" << string;
}
}
else
{
if (qstrcmp(type, "script") == 0)
{
myScan = tcl.scan.at(0);
myScan = tcl_scan_start('?', string,
myScan->ns, myScan->entry_cl, myScan->entry_fn);
}
else
{
tcl_codify((const char*)type, string);
}
}
return myScan;
}
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
#undef YY_INPUT #undef YY_INPUT
...@@ -1716,14 +1768,7 @@ static tcl_scan *tcl_command_ARG(tcl_scan *myScan, unsigned int i, bool ignoreOu ...@@ -1716,14 +1768,7 @@ static tcl_scan *tcl_command_ARG(tcl_scan *myScan, unsigned int i, bool ignoreOu
if (i%2 != 0) if (i%2 != 0)
{ {
// handle white space // handle white space
if (myScan!=NULL) myScan = tcl_codify_token(myScan, "NULL", myName);
{
myScan->after << "NULL" << myName;
}
else
{
tcl_codify(NULL,myName);
}
} }
else else
{ {
...@@ -1766,29 +1811,13 @@ static tcl_scan *tcl_command_ARG(tcl_scan *myScan, unsigned int i, bool ignoreOu ...@@ -1766,29 +1811,13 @@ static tcl_scan *tcl_command_ARG(tcl_scan *myScan, unsigned int i, bool ignoreOu
{ {
// the first opening bracket, output what we have so far // the first opening bracket, output what we have so far
myStr+=c; myStr+=c;
if (myScan!=NULL) myScan = tcl_codify_token(myScan, "NULL", myStr);
{
myScan->after << "NULL" << myStr;
}
else
{
tcl_codify(NULL,myStr);
}
myStr=""; myStr="";
} }
else if (c==']' && !backslashed && insideBrackets==0 && insideBraces==0) else if (c==']' && !backslashed && insideBrackets==0 && insideBraces==0)
{ {
// the last closing bracket, start recursion, switch to deferred // the last closing bracket, start recursion, switch to deferred
if (myScan!=NULL) myScan = tcl_codify_token(myScan, "script", myStr);
{
myScan->after << "script" << myStr;
}
else
{
myScan=tcl.scan.at(0);
myScan = tcl_scan_start('?',myStr,
myScan->ns,myScan->entry_cl,myScan->entry_fn);
}
myStr=""; myStr="";
myStr+=c; myStr+=c;
} }
...@@ -1797,23 +1826,174 @@ static tcl_scan *tcl_command_ARG(tcl_scan *myScan, unsigned int i, bool ignoreOu ...@@ -1797,23 +1826,174 @@ static tcl_scan *tcl_command_ARG(tcl_scan *myScan, unsigned int i, bool ignoreOu
myStr+=c; myStr+=c;
} }
} }
if (myScan!=NULL) if (i == 0 && myScan == NULL)
{ {
myScan->after << "NULL" << myStr; tcl_codify_link(myStr);
} }
else else
{ {
if (i==0) myScan = tcl_codify_token(myScan, "NULL", myStr);
}
}
return (myScan);
}
//! Handle internal tcl commands.
// "eval arg ?arg ...?"
static void tcl_command_EVAL()
{
D
tcl_codify_cmd("keyword", 0);
tcl_scan *myScan = tcl.scan.at(0);
QCString myString = "";
// we simply rescan the line without the eval
// we include leading whitespace because tcl_scan_start will examine
// the first char. If it finds a bracket it will assume one expression in brackets.
// Example: eval [list set] [list NotInvoked] [Invoked NotInvoked]
for (unsigned int i = 1; i < tcl.list_commandwords.count(); i++)
{
myString += (*tcl.list_commandwords.at(i)).utf8();
}
myScan = tcl_scan_start('?', myString,
myScan->ns, myScan->entry_cl, myScan->entry_fn);
}
//! Handle internal tcl commands.
// switch ?options? string pattern body ?pattern body ...?
// switch ?options? string {pattern body ?pattern body ...?}
static void tcl_command_SWITCH()
{
D
tcl_codify_cmd("keyword",0);
tcl_codify_cmd(NULL,1);
tcl_scan *myScan=NULL;
unsigned int i;
QCString token;
// first: find the last option token
unsigned int lastOptionIndex = 0;
for (i = 2; i<tcl.list_commandwords.count(); i += 2)
{
token = (*tcl.list_commandwords.at(i)).utf8();
if (token == "--")
{
lastOptionIndex = i;
break;
}
if (token[0] == '-' && i - lastOptionIndex == 2)
{
// options start with dash and should form a continuous chain
lastOptionIndex = i;
}
}
// second: eat up options
for (i = 2; i <= lastOptionIndex; i++)
{
myScan = tcl_command_ARG(myScan, i, false);
}
// third: how many tokens are left?
if (tcl.list_commandwords.count() - lastOptionIndex == 5)
{
//printf("syntax: switch ?options? string {pattern body ?pattern body ...?}\n");
myScan = tcl_command_ARG(myScan, lastOptionIndex + 1, false);
myScan = tcl_command_ARG(myScan, lastOptionIndex + 2, false);
myScan = tcl_command_ARG(myScan, lastOptionIndex + 3, false);
// walk trough the list step by step
// this way we can preserve whitespace
bool inBraces = false;
bool nextIsPattern = true;
int size;
const char *elem;
const char *next;
token = (*tcl.list_commandwords.at(lastOptionIndex + 4)).utf8();
if (token[0] == '{')
{
inBraces = true;
token = token.mid(1, token.length() - 2);
myScan = tcl_codify_token(myScan, "NULL", QCString("{"));
}
// ToDo: check if multibyte chars are handled correctly
while (token.length() > 0)
{
TclFindElement((const char*)token, token.length(), &elem, &next, &size, NULL);
//printf("%s\nstart=%d, elem=%d, next=%d, size=%d, brace=%d\n",
// (const char*) token, (const char*) token, elem, next, size, brace);
//
// handle leading whitespace/opening brace/double quotes
if (elem - token > 0)
{ {
tcl_codify_link(myStr); myScan = tcl_codify_token(myScan, "NULL", token.left(elem - token));
} }
else // handle actual element without braces/double quotes
if (nextIsPattern)
{
myScan = tcl_codify_token(myScan, "NULL", token.mid(elem - token,size));
//printf("pattern=%s\n",(const char*) token.mid(elem - token, size));
}
else {
myScan = tcl_codify_token(myScan, "script", token.mid(elem - token, size));
//printf("script =%s\n", (const char*) token.mid(elem - token, size));
}
// handle trailing whitespace/closing brace/double quotes
if (next - elem - size > 0)
{ {
tcl_codify(NULL,myStr); myScan = tcl_codify_token(myScan, "NULL", token.mid(elem - token + size, next - elem - size));
} }
nextIsPattern = !nextIsPattern;
token = token.mid(next - token);
}
if (inBraces)
{
myScan = tcl_codify_token(myScan, "NULL", QCString("}"));
}
if (!nextIsPattern)
{
tcl_war("Invalid switch syntax: last token is not a list of even elements.\n");
//tcl_war("%s\n", tcl.list_commandwords.join(" ").ascii());
}
}
else if ((tcl.list_commandwords.count() - lastOptionIndex > 6) &&
((tcl.list_commandwords.count() - lastOptionIndex-3) % 4 == 0))
{
//printf("detected: switch ?options? string pattern body ?pattern body ...?\n");
myScan = tcl_command_ARG(myScan, lastOptionIndex + 1, false);
myScan = tcl_command_ARG(myScan, lastOptionIndex + 2, false);
//printf("value=%s\n",(const char*) (*tcl.list_commandwords.at(lastOptionIndex + 2)).utf8());
for (i = lastOptionIndex + 3; i < tcl.list_commandwords.count(); i += 4)
{
myScan = tcl_command_ARG(myScan, i + 0, false); // whitespace
myScan = tcl_command_ARG(myScan, i + 1, false); // pattern
myScan = tcl_command_ARG(myScan, i + 2, false); // whitespace
myScan = tcl_codify_token(myScan, "script", (*tcl.list_commandwords.at(i+3)).utf8()); // script
//printf("pattern=%s\n",(const char*) (*tcl.list_commandwords.at(i+1)).utf8());
//printf("script=%s\n",(const char*) (*tcl.list_commandwords.at(i+3)).utf8());
}
}
else
{
// not properly detected syntax
tcl_war("Invalid switch syntax: %d options followed by %d tokens.\n",
lastOptionIndex / 2, (tcl.list_commandwords.count() - 1) / 2 - lastOptionIndex / 2);
for (i = lastOptionIndex + 1; i <= tcl.list_commandwords.count(); i++)
{
myScan = tcl_command_ARG(myScan, i, false);
} }
} }
return (myScan); }
//! Handle internal tcl commands.
// "catch script ?resultVarName? ?optionsVarName?"
static void tcl_command_CATCH()
{
D
tcl_codify_cmd("keyword", 0);
tcl_codify_cmd(NULL, 1);
tcl_scan *myScan = tcl.scan.at(0);
myScan = tcl_scan_start('?', *tcl.list_commandwords.at(2),
myScan->ns, myScan->entry_cl, myScan->entry_fn);
for (unsigned int i = 3; i < tcl.list_commandwords.count(); i++)
{
myScan = tcl_command_ARG(myScan, i, false);
}
} }
//! Handle internal tcl commands. //! Handle internal tcl commands.
...@@ -1937,7 +2117,7 @@ D ...@@ -1937,7 +2117,7 @@ D
tcl_codify_cmd(NULL,3); tcl_codify_cmd(NULL,3);
tcl_codify_cmd(NULL,4); tcl_codify_cmd(NULL,4);
tcl_codify_cmd(NULL,5); tcl_codify_cmd(NULL,5);
tcl_name(myScan->ns,(*tcl.list_commandwords.at(2)).utf8(),myNs,myName); tcl_name_SnippetAware(myScan->ns,(*tcl.list_commandwords.at(2)).utf8(),myNs,myName);
if (myNs.length()) if (myNs.length())
{ {
myEntryNs = tcl_entry_namespace(myNs); myEntryNs = tcl_entry_namespace(myNs);
...@@ -2458,9 +2638,26 @@ tcl_inf("->\n"); ...@@ -2458,9 +2638,26 @@ tcl_inf("->\n");
} }
/* /*
* Start of internal tcl keywords * Start of internal tcl keywords
* Ready: if, for, foreach, while * Ready: switch, eval, catch, if, for, foreach, while
* TODO: switch, eval, ?
*/ */
if (myStr=="switch")
{
if (tcl.list_commandwords.count() < 5) {myLine=__LINE__;goto command_warn;}
tcl_command_SWITCH();
goto command_end;
}
if (myStr=="eval")
{
if (tcl.list_commandwords.count() < 3) {myLine=__LINE__;goto command_warn;}
tcl_command_EVAL();
goto command_end;
}
if (myStr=="catch")
{
if (tcl.list_commandwords.count() < 3) {myLine=__LINE__;goto command_warn;}
tcl_command_CATCH();
goto command_end;
}
if (myStr=="for") if (myStr=="for")
{ {
if (tcl.list_commandwords.count() != 9) {myLine=__LINE__;goto command_warn;} if (tcl.list_commandwords.count() != 9) {myLine=__LINE__;goto command_warn;}
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
</detaileddescription> </detaileddescription>
<inbodydescription> <inbodydescription>
</inbodydescription> </inbodydescription>
<location file="057_caller_graphs.tcl" bodystart="57" bodyend="59"/> <location file="057_caller_graphs.tcl" bodystart="59" bodyend="61"/>
</memberdef> </memberdef>
<memberdef kind="function" id="057__caller__graphs_8tcl_1ae4e1c2bb3adfdfbb71f52de84a8285b0" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> <memberdef kind="function" id="057__caller__graphs_8tcl_1ae4e1c2bb3adfdfbb71f52de84a8285b0" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/> <type/>
...@@ -37,8 +37,8 @@ ...@@ -37,8 +37,8 @@
</detaileddescription> </detaileddescription>
<inbodydescription> <inbodydescription>
</inbodydescription> </inbodydescription>
<location file="057_caller_graphs.tcl" bodystart="63" bodyend="65"/> <location file="057_caller_graphs.tcl" bodystart="65" bodyend="67"/>
<referencedby refid="namespace1_1a9722420639306872cea2593b83028a45" compoundref="057__caller__graphs_8tcl" startline="83" endline="86">1::test3</referencedby> <referencedby refid="namespace1_1a9722420639306872cea2593b83028a45" compoundref="057__caller__graphs_8tcl" startline="85" endline="88">1::test3</referencedby>
</memberdef> </memberdef>
<memberdef kind="function" id="057__caller__graphs_8tcl_1a3f808a00e1b937978455d707851ab33a" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> <memberdef kind="function" id="057__caller__graphs_8tcl_1a3f808a00e1b937978455d707851ab33a" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/> <type/>
...@@ -51,8 +51,36 @@ ...@@ -51,8 +51,36 @@
</detaileddescription> </detaileddescription>
<inbodydescription> <inbodydescription>
</inbodydescription> </inbodydescription>
<location file="057_caller_graphs.tcl" bodystart="100" bodyend="103"/> <location file="057_caller_graphs.tcl" bodystart="102" bodyend="105"/>
<references refid="namespace2_1a2839d9dea7f0d08f48958c3fc0cd00d3" compoundref="057__caller__graphs_8tcl" startline="104" endline="112">2::next</references> <references refid="namespace2_1a2839d9dea7f0d08f48958c3fc0cd00d3" compoundref="057__caller__graphs_8tcl" startline="106" endline="114">2::next</references>
</memberdef>
<memberdef kind="function" id="057__caller__graphs_8tcl_1a12acb916374f925e7b7ba302a1ca4efb" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>master</definition>
<argsstring>args</argsstring>
<name>master</name>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="057_caller_graphs.tcl" bodystart="136" bodyend="140"/>
<references refid="__057__caller__graphs_8tcl_1a7c3c8acee94bf61ba9e911dafe35adac" compoundref="__057__caller__graphs_8tcl" startline="1" endline="4">inFileB</references>
</memberdef>
<memberdef kind="function" id="057__caller__graphs_8tcl_1a7482c00c17357cf4846b0c1bd715979c" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>inFileA</definition>
<argsstring>args</argsstring>
<name>inFileA</name>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="057_caller_graphs.tcl" bodystart="141" bodyend="144"/>
<referencedby refid="__057__caller__graphs_8tcl_1a7c3c8acee94bf61ba9e911dafe35adac" compoundref="__057__caller__graphs_8tcl" startline="1" endline="4">inFileB</referencedby>
</memberdef> </memberdef>
</sectiondef> </sectiondef>
<briefdescription> <briefdescription>
......
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="">
<compounddef id="__057__caller__graphs_8tcl" kind="file">
<compoundname>_057_caller_graphs.tcl</compoundname>
<sectiondef kind="func">
<memberdef kind="function" id="__057__caller__graphs_8tcl_1a7c3c8acee94bf61ba9e911dafe35adac" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>inFileB</definition>
<argsstring>args</argsstring>
<name>inFileB</name>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="_057_caller_graphs.tcl" bodystart="1" bodyend="4"/>
<references refid="057__caller__graphs_8tcl_1a7482c00c17357cf4846b0c1bd715979c" compoundref="057__caller__graphs_8tcl" startline="141" endline="144">inFileA</references>
<referencedby refid="057__caller__graphs_8tcl_1a12acb916374f925e7b7ba302a1ca4efb" compoundref="057__caller__graphs_8tcl" startline="136" endline="140">master</referencedby>
</memberdef>
</sectiondef>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<location file="_057_caller_graphs.tcl"/>
</compounddef>
</doxygen>
...@@ -15,9 +15,9 @@ ...@@ -15,9 +15,9 @@
</detaileddescription> </detaileddescription>
<inbodydescription> <inbodydescription>
</inbodydescription> </inbodydescription>
<location file="057_caller_graphs.tcl" bodystart="60" bodyend="62"/> <location file="057_caller_graphs.tcl" bodystart="62" bodyend="64"/>
<referencedby refid="namespace1_1a4a8285288ee1994ac886e2039777339e" compoundref="057__caller__graphs_8tcl" startline="75" endline="78">test1</referencedby> <referencedby refid="namespace1_1a4a8285288ee1994ac886e2039777339e" compoundref="057__caller__graphs_8tcl" startline="77" endline="80">test1</referencedby>
<referencedby refid="namespace1_1a11615154d3c207ed4106dd0bcb0639e8" compoundref="057__caller__graphs_8tcl" startline="91" endline="94">test5</referencedby> <referencedby refid="namespace1_1a11615154d3c207ed4106dd0bcb0639e8" compoundref="057__caller__graphs_8tcl" startline="93" endline="96">test5</referencedby>
</memberdef> </memberdef>
<memberdef kind="function" id="namespace1_1ad58c8f16ad5f12178c71ca988865bb58" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> <memberdef kind="function" id="namespace1_1ad58c8f16ad5f12178c71ca988865bb58" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/> <type/>
...@@ -30,8 +30,8 @@ ...@@ -30,8 +30,8 @@
</detaileddescription> </detaileddescription>
<inbodydescription> <inbodydescription>
</inbodydescription> </inbodydescription>
<location file="057_caller_graphs.tcl" bodystart="66" bodyend="68"/> <location file="057_caller_graphs.tcl" bodystart="68" bodyend="70"/>
<referencedby refid="namespace1_1ae1e88bb7ddd332348d7e29ac4a211b00" compoundref="057__caller__graphs_8tcl" startline="79" endline="82">test2</referencedby> <referencedby refid="namespace1_1ae1e88bb7ddd332348d7e29ac4a211b00" compoundref="057__caller__graphs_8tcl" startline="81" endline="84">test2</referencedby>
</memberdef> </memberdef>
<memberdef kind="function" id="namespace1_1a4a8285288ee1994ac886e2039777339e" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> <memberdef kind="function" id="namespace1_1a4a8285288ee1994ac886e2039777339e" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/> <type/>
...@@ -44,8 +44,8 @@ ...@@ -44,8 +44,8 @@
</detaileddescription> </detaileddescription>
<inbodydescription> <inbodydescription>
</inbodydescription> </inbodydescription>
<location file="057_caller_graphs.tcl" bodystart="75" bodyend="78"/> <location file="057_caller_graphs.tcl" bodystart="77" bodyend="80"/>
<references refid="namespace1_1a5024a7bc323958c7230615f2fcaeaef8" compoundref="057__caller__graphs_8tcl" startline="60" endline="62">baz</references> <references refid="namespace1_1a5024a7bc323958c7230615f2fcaeaef8" compoundref="057__caller__graphs_8tcl" startline="62" endline="64">baz</references>
</memberdef> </memberdef>
<memberdef kind="function" id="namespace1_1ae1e88bb7ddd332348d7e29ac4a211b00" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> <memberdef kind="function" id="namespace1_1ae1e88bb7ddd332348d7e29ac4a211b00" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/> <type/>
...@@ -58,8 +58,8 @@ ...@@ -58,8 +58,8 @@
</detaileddescription> </detaileddescription>
<inbodydescription> <inbodydescription>
</inbodydescription> </inbodydescription>
<location file="057_caller_graphs.tcl" bodystart="79" bodyend="82"/> <location file="057_caller_graphs.tcl" bodystart="81" bodyend="84"/>
<references refid="namespace1_1ad58c8f16ad5f12178c71ca988865bb58" compoundref="057__caller__graphs_8tcl" startline="66" endline="68">bar</references> <references refid="namespace1_1ad58c8f16ad5f12178c71ca988865bb58" compoundref="057__caller__graphs_8tcl" startline="68" endline="70">bar</references>
</memberdef> </memberdef>
<memberdef kind="function" id="namespace1_1a9722420639306872cea2593b83028a45" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> <memberdef kind="function" id="namespace1_1a9722420639306872cea2593b83028a45" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/> <type/>
...@@ -72,8 +72,8 @@ ...@@ -72,8 +72,8 @@
</detaileddescription> </detaileddescription>
<inbodydescription> <inbodydescription>
</inbodydescription> </inbodydescription>
<location file="057_caller_graphs.tcl" bodystart="83" bodyend="86"/> <location file="057_caller_graphs.tcl" bodystart="85" bodyend="88"/>
<references refid="057__caller__graphs_8tcl_1ae4e1c2bb3adfdfbb71f52de84a8285b0" compoundref="057__caller__graphs_8tcl" startline="63" endline="65">bar</references> <references refid="057__caller__graphs_8tcl_1ae4e1c2bb3adfdfbb71f52de84a8285b0" compoundref="057__caller__graphs_8tcl" startline="65" endline="67">bar</references>
</memberdef> </memberdef>
<memberdef kind="function" id="namespace1_1addc9b30656419de5e2651e27a013db29" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> <memberdef kind="function" id="namespace1_1addc9b30656419de5e2651e27a013db29" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/> <type/>
...@@ -86,8 +86,8 @@ ...@@ -86,8 +86,8 @@
</detaileddescription> </detaileddescription>
<inbodydescription> <inbodydescription>
</inbodydescription> </inbodydescription>
<location file="057_caller_graphs.tcl" bodystart="87" bodyend="90"/> <location file="057_caller_graphs.tcl" bodystart="89" bodyend="92"/>
<references refid="namespace1_1_11_1acebecc4cb718010d00c3c150158b75ab" compoundref="057__caller__graphs_8tcl" startline="69" endline="71">1::1::bar</references> <references refid="namespace1_1_11_1acebecc4cb718010d00c3c150158b75ab" compoundref="057__caller__graphs_8tcl" startline="71" endline="73">1::1::bar</references>
</memberdef> </memberdef>
<memberdef kind="function" id="namespace1_1a11615154d3c207ed4106dd0bcb0639e8" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> <memberdef kind="function" id="namespace1_1a11615154d3c207ed4106dd0bcb0639e8" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/> <type/>
...@@ -100,8 +100,8 @@ ...@@ -100,8 +100,8 @@
</detaileddescription> </detaileddescription>
<inbodydescription> <inbodydescription>
</inbodydescription> </inbodydescription>
<location file="057_caller_graphs.tcl" bodystart="91" bodyend="94"/> <location file="057_caller_graphs.tcl" bodystart="93" bodyend="96"/>
<references refid="namespace1_1a5024a7bc323958c7230615f2fcaeaef8" compoundref="057__caller__graphs_8tcl" startline="60" endline="62">baz</references> <references refid="namespace1_1a5024a7bc323958c7230615f2fcaeaef8" compoundref="057__caller__graphs_8tcl" startline="62" endline="64">baz</references>
</memberdef> </memberdef>
</sectiondef> </sectiondef>
<briefdescription> <briefdescription>
......
...@@ -15,8 +15,8 @@ ...@@ -15,8 +15,8 @@
</detaileddescription> </detaileddescription>
<inbodydescription> <inbodydescription>
</inbodydescription> </inbodydescription>
<location file="057_caller_graphs.tcl" bodystart="69" bodyend="71"/> <location file="057_caller_graphs.tcl" bodystart="71" bodyend="73"/>
<referencedby refid="namespace1_1addc9b30656419de5e2651e27a013db29" compoundref="057__caller__graphs_8tcl" startline="87" endline="90">1::test4</referencedby> <referencedby refid="namespace1_1addc9b30656419de5e2651e27a013db29" compoundref="057__caller__graphs_8tcl" startline="89" endline="92">1::test4</referencedby>
</memberdef> </memberdef>
</sectiondef> </sectiondef>
<briefdescription> <briefdescription>
......
...@@ -14,13 +14,13 @@ ...@@ -14,13 +14,13 @@
</detaileddescription> </detaileddescription>
<inbodydescription> <inbodydescription>
</inbodydescription> </inbodydescription>
<location file="057_caller_graphs.tcl" bodystart="72" bodyend="74"/> <location file="057_caller_graphs.tcl" bodystart="74" bodyend="76"/>
</memberdef> </memberdef>
</sectiondef> </sectiondef>
<briefdescription> <briefdescription>
</briefdescription> </briefdescription>
<detaileddescription> <detaileddescription>
</detaileddescription> </detaileddescription>
<location file="057_caller_graphs.tcl" line="56" column="1"/> <location file="057_caller_graphs.tcl" line="58" column="1"/>
</compounddef> </compounddef>
</doxygen> </doxygen>
...@@ -15,10 +15,10 @@ ...@@ -15,10 +15,10 @@
</detaileddescription> </detaileddescription>
<inbodydescription> <inbodydescription>
</inbodydescription> </inbodydescription>
<location file="057_caller_graphs.tcl" bodystart="104" bodyend="112"/> <location file="057_caller_graphs.tcl" bodystart="106" bodyend="114"/>
<references refid="namespace2_1_12_1aceefa876cf364f44da1f523d3f7b0649" compoundref="057__caller__graphs_8tcl" startline="113" endline="116">2::2::next</references> <references refid="namespace2_1_12_1aceefa876cf364f44da1f523d3f7b0649" compoundref="057__caller__graphs_8tcl" startline="115" endline="118">2::2::next</references>
<referencedby refid="057__caller__graphs_8tcl_1a3f808a00e1b937978455d707851ab33a" compoundref="057__caller__graphs_8tcl" startline="100" endline="103">next</referencedby> <referencedby refid="057__caller__graphs_8tcl_1a3f808a00e1b937978455d707851ab33a" compoundref="057__caller__graphs_8tcl" startline="102" endline="105">next</referencedby>
<referencedby refid="namespace2_1_12_1_12_1_12_1_12_1ac07f64c62783fd8b44317389b4a711f8" compoundref="057__caller__graphs_8tcl" startline="125" endline="128">2::2::2::2::2::next</referencedby> <referencedby refid="namespace2_1_12_1_12_1_12_1_12_1ac07f64c62783fd8b44317389b4a711f8" compoundref="057__caller__graphs_8tcl" startline="127" endline="130">2::2::2::2::2::next</referencedby>
</memberdef> </memberdef>
</sectiondef> </sectiondef>
<briefdescription> <briefdescription>
......
...@@ -15,9 +15,9 @@ ...@@ -15,9 +15,9 @@
</detaileddescription> </detaileddescription>
<inbodydescription> <inbodydescription>
</inbodydescription> </inbodydescription>
<location file="057_caller_graphs.tcl" bodystart="113" bodyend="116"/> <location file="057_caller_graphs.tcl" bodystart="115" bodyend="118"/>
<references refid="namespace2_1_12_1_12_1a85524e2015e377d433cd8384335c11d6" compoundref="057__caller__graphs_8tcl" startline="117" endline="120">2::2::2::next</references> <references refid="namespace2_1_12_1_12_1a85524e2015e377d433cd8384335c11d6" compoundref="057__caller__graphs_8tcl" startline="119" endline="122">2::2::2::next</references>
<referencedby refid="namespace2_1a2839d9dea7f0d08f48958c3fc0cd00d3" compoundref="057__caller__graphs_8tcl" startline="104" endline="112">2::next</referencedby> <referencedby refid="namespace2_1a2839d9dea7f0d08f48958c3fc0cd00d3" compoundref="057__caller__graphs_8tcl" startline="106" endline="114">2::next</referencedby>
</memberdef> </memberdef>
</sectiondef> </sectiondef>
<briefdescription> <briefdescription>
......
...@@ -15,9 +15,9 @@ ...@@ -15,9 +15,9 @@
</detaileddescription> </detaileddescription>
<inbodydescription> <inbodydescription>
</inbodydescription> </inbodydescription>
<location file="057_caller_graphs.tcl" bodystart="117" bodyend="120"/> <location file="057_caller_graphs.tcl" bodystart="119" bodyend="122"/>
<references refid="namespace2_1_12_1_12_1_12_1a3ea6e2ce66f4a9c30009852e4c7da2fe" compoundref="057__caller__graphs_8tcl" startline="121" endline="124">2::2::2::2::next</references> <references refid="namespace2_1_12_1_12_1_12_1a3ea6e2ce66f4a9c30009852e4c7da2fe" compoundref="057__caller__graphs_8tcl" startline="123" endline="126">2::2::2::2::next</references>
<referencedby refid="namespace2_1_12_1aceefa876cf364f44da1f523d3f7b0649" compoundref="057__caller__graphs_8tcl" startline="113" endline="116">2::2::next</referencedby> <referencedby refid="namespace2_1_12_1aceefa876cf364f44da1f523d3f7b0649" compoundref="057__caller__graphs_8tcl" startline="115" endline="118">2::2::next</referencedby>
</memberdef> </memberdef>
</sectiondef> </sectiondef>
<briefdescription> <briefdescription>
......
...@@ -15,9 +15,9 @@ ...@@ -15,9 +15,9 @@
</detaileddescription> </detaileddescription>
<inbodydescription> <inbodydescription>
</inbodydescription> </inbodydescription>
<location file="057_caller_graphs.tcl" bodystart="121" bodyend="124"/> <location file="057_caller_graphs.tcl" bodystart="123" bodyend="126"/>
<references refid="namespace2_1_12_1_12_1_12_1_12_1ac07f64c62783fd8b44317389b4a711f8" compoundref="057__caller__graphs_8tcl" startline="125" endline="128">2::2::2::2::2::next</references> <references refid="namespace2_1_12_1_12_1_12_1_12_1ac07f64c62783fd8b44317389b4a711f8" compoundref="057__caller__graphs_8tcl" startline="127" endline="130">2::2::2::2::2::next</references>
<referencedby refid="namespace2_1_12_1_12_1a85524e2015e377d433cd8384335c11d6" compoundref="057__caller__graphs_8tcl" startline="117" endline="120">2::2::2::next</referencedby> <referencedby refid="namespace2_1_12_1_12_1a85524e2015e377d433cd8384335c11d6" compoundref="057__caller__graphs_8tcl" startline="119" endline="122">2::2::2::next</referencedby>
</memberdef> </memberdef>
</sectiondef> </sectiondef>
<briefdescription> <briefdescription>
......
...@@ -14,15 +14,15 @@ ...@@ -14,15 +14,15 @@
</detaileddescription> </detaileddescription>
<inbodydescription> <inbodydescription>
</inbodydescription> </inbodydescription>
<location file="057_caller_graphs.tcl" bodystart="125" bodyend="128"/> <location file="057_caller_graphs.tcl" bodystart="127" bodyend="130"/>
<references refid="namespace2_1a2839d9dea7f0d08f48958c3fc0cd00d3" compoundref="057__caller__graphs_8tcl" startline="104" endline="112">2::next</references> <references refid="namespace2_1a2839d9dea7f0d08f48958c3fc0cd00d3" compoundref="057__caller__graphs_8tcl" startline="106" endline="114">2::next</references>
<referencedby refid="namespace2_1_12_1_12_1_12_1a3ea6e2ce66f4a9c30009852e4c7da2fe" compoundref="057__caller__graphs_8tcl" startline="121" endline="124">2::2::2::2::next</referencedby> <referencedby refid="namespace2_1_12_1_12_1_12_1a3ea6e2ce66f4a9c30009852e4c7da2fe" compoundref="057__caller__graphs_8tcl" startline="123" endline="126">2::2::2::2::next</referencedby>
</memberdef> </memberdef>
</sectiondef> </sectiondef>
<briefdescription> <briefdescription>
</briefdescription> </briefdescription>
<detaileddescription> <detaileddescription>
</detaileddescription> </detaileddescription>
<location file="057_caller_graphs.tcl" line="99" column="1"/> <location file="057_caller_graphs.tcl" line="101" column="1"/>
</compounddef> </compounddef>
</doxygen> </doxygen>
...@@ -14,9 +14,9 @@ ...@@ -14,9 +14,9 @@
</detaileddescription> </detaileddescription>
<inbodydescription> <inbodydescription>
</inbodydescription> </inbodydescription>
<location file="057_caller_graphs.tcl" bodystart="27" bodyend="33"/> <location file="057_caller_graphs.tcl" bodystart="29" bodyend="35"/>
<references refid="namespacebar_1a3426cd3a2eebcffa0dc333bcf5e2fe5e" compoundref="057__caller__graphs_8tcl" startline="34" endline="37">baz</references> <references refid="namespacebar_1a3426cd3a2eebcffa0dc333bcf5e2fe5e" compoundref="057__caller__graphs_8tcl" startline="36" endline="39">baz</references>
<referencedby refid="namespacefoo_1a265acdcaea6da32c3bbd9afb5d0e32a4" compoundref="057__caller__graphs_8tcl" startline="42" endline="46">foo::master</referencedby> <referencedby refid="namespacefoo_1a265acdcaea6da32c3bbd9afb5d0e32a4" compoundref="057__caller__graphs_8tcl" startline="44" endline="48">foo::master</referencedby>
</memberdef> </memberdef>
<memberdef kind="function" id="namespacebar_1a3426cd3a2eebcffa0dc333bcf5e2fe5e" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> <memberdef kind="function" id="namespacebar_1a3426cd3a2eebcffa0dc333bcf5e2fe5e" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/> <type/>
...@@ -29,9 +29,9 @@ ...@@ -29,9 +29,9 @@
</detaileddescription> </detaileddescription>
<inbodydescription> <inbodydescription>
</inbodydescription> </inbodydescription>
<location file="057_caller_graphs.tcl" bodystart="34" bodyend="37"/> <location file="057_caller_graphs.tcl" bodystart="36" bodyend="39"/>
<references refid="namespacebar_1a88879545dee287d377e638b87cdf6dd7" compoundref="057__caller__graphs_8tcl" startline="38" endline="40">bazbaz</references> <references refid="namespacebar_1a88879545dee287d377e638b87cdf6dd7" compoundref="057__caller__graphs_8tcl" startline="40" endline="42">bazbaz</references>
<referencedby refid="namespacebar_1aa1678a9adb588c0b91b118de7cc38ddb" compoundref="057__caller__graphs_8tcl" startline="27" endline="33">slave</referencedby> <referencedby refid="namespacebar_1aa1678a9adb588c0b91b118de7cc38ddb" compoundref="057__caller__graphs_8tcl" startline="29" endline="35">slave</referencedby>
</memberdef> </memberdef>
<memberdef kind="function" id="namespacebar_1a88879545dee287d377e638b87cdf6dd7" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> <memberdef kind="function" id="namespacebar_1a88879545dee287d377e638b87cdf6dd7" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/> <type/>
...@@ -44,14 +44,14 @@ ...@@ -44,14 +44,14 @@
</detaileddescription> </detaileddescription>
<inbodydescription> <inbodydescription>
</inbodydescription> </inbodydescription>
<location file="057_caller_graphs.tcl" bodystart="38" bodyend="40"/> <location file="057_caller_graphs.tcl" bodystart="40" bodyend="42"/>
<referencedby refid="namespacebar_1a3426cd3a2eebcffa0dc333bcf5e2fe5e" compoundref="057__caller__graphs_8tcl" startline="34" endline="37">baz</referencedby> <referencedby refid="namespacebar_1a3426cd3a2eebcffa0dc333bcf5e2fe5e" compoundref="057__caller__graphs_8tcl" startline="36" endline="39">baz</referencedby>
</memberdef> </memberdef>
</sectiondef> </sectiondef>
<briefdescription> <briefdescription>
</briefdescription> </briefdescription>
<detaileddescription> <detaileddescription>
</detaileddescription> </detaileddescription>
<location file="057_caller_graphs.tcl" line="26" column="1"/> <location file="057_caller_graphs.tcl" line="28" column="1"/>
</compounddef> </compounddef>
</doxygen> </doxygen>
...@@ -14,14 +14,14 @@ ...@@ -14,14 +14,14 @@
</detaileddescription> </detaileddescription>
<inbodydescription> <inbodydescription>
</inbodydescription> </inbodydescription>
<location file="057_caller_graphs.tcl" bodystart="42" bodyend="46"/> <location file="057_caller_graphs.tcl" bodystart="44" bodyend="48"/>
<references refid="namespacebar_1aa1678a9adb588c0b91b118de7cc38ddb" compoundref="057__caller__graphs_8tcl" startline="27" endline="33">bar::slave</references> <references refid="namespacebar_1aa1678a9adb588c0b91b118de7cc38ddb" compoundref="057__caller__graphs_8tcl" startline="29" endline="35">bar::slave</references>
</memberdef> </memberdef>
</sectiondef> </sectiondef>
<briefdescription> <briefdescription>
</briefdescription> </briefdescription>
<detaileddescription> <detaileddescription>
</detaileddescription> </detaileddescription>
<location file="057_caller_graphs.tcl" line="41" column="1"/> <location file="057_caller_graphs.tcl" line="43" column="1"/>
</compounddef> </compounddef>
</doxygen> </doxygen>
#// objective: test for completeness and correctness of references/referencedby relations #// objective: test for completeness and correctness of references/referencedby relations
#// check: 057__caller__graphs_8tcl.xml #// check: 057__caller__graphs_8tcl.xml
#// check: __057__caller__graphs_8tcl.xml
#// check: namespacebar.xml #// check: namespacebar.xml
#// check: namespacefoo.xml #// check: namespacefoo.xml
#// check: namespace1.xml #// check: namespace1.xml
...@@ -14,6 +15,7 @@ ...@@ -14,6 +15,7 @@
#// config: INLINE_SOURCES = no #// config: INLINE_SOURCES = no
#// config: REFERENCED_BY_RELATION = yes #// config: REFERENCED_BY_RELATION = yes
#// config: REFERENCES_RELATION = yes #// config: REFERENCES_RELATION = yes
#// config: INPUT = 057_caller_graphs.tcl _057_caller_graphs.tcl
# config: HAVE_DOT = yes # config: HAVE_DOT = yes
# config: CALLER_GRAPH = yes # config: CALLER_GRAPH = yes
# config: CALL_GRAPH = yes # config: CALL_GRAPH = yes
...@@ -126,6 +128,20 @@ proc ::2::2::2::2::2::next args { ...@@ -126,6 +128,20 @@ proc ::2::2::2::2::2::next args {
array set info [info frame 0]; puts $info(proc) array set info [info frame 0]; puts $info(proc)
2::next 2::next
} }
#
# cross check with two files
# If doxygen did not do two passes, then xrefs would depend on file order
# and would be incomplete.
source _057_caller_graphs.tcl
proc master args {
array set info [info frame 0]; puts -nonewline ->$info(proc)
inFileB
return
}
proc inFileA args {
array set info [info frame 0]; puts -nonewline ->$info(proc)
return
}
# now, check with tcl what is called # now, check with tcl what is called
foo::master foo::master
puts "" puts ""
...@@ -134,5 +150,6 @@ foreach proc [lsort [info procs ::1::test?]] { ...@@ -134,5 +150,6 @@ foreach proc [lsort [info procs ::1::test?]] {
puts "" puts ""
} }
::next ::next
master
exit exit
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="">
<compounddef id="059__command__catch_8tcl" kind="file">
<compoundname>059_command_catch.tcl</compoundname>
<sectiondef kind="func">
<memberdef kind="function" id="059__command__catch_8tcl_1aa889853547f65a22ae133cd57ff89601" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>Invoked</definition>
<argsstring>args</argsstring>
<name>Invoked</name>
<briefdescription>
<para>should be reference by every proc below </para>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="059_command_catch.tcl" bodystart="10" bodyend="13"/>
<referencedby refid="059__command__catch_8tcl_1ab08ae027fc5777bc4f0629f1b60b35db" compoundref="059__command__catch_8tcl" startline="22" endline="25">a</referencedby>
<referencedby refid="059__command__catch_8tcl_1a68bdb74c144118d936931c46f75d4b3e" compoundref="059__command__catch_8tcl" startline="29" endline="32">b</referencedby>
<referencedby refid="059__command__catch_8tcl_1ab14f56bc3bd7680490ece4ad7815465f" compoundref="059__command__catch_8tcl" startline="33" endline="36">c</referencedby>
<referencedby refid="059__command__catch_8tcl_1af43f4b1f0064a33b2d662af9f06d3a00" compoundref="059__command__catch_8tcl" startline="37" endline="40">d</referencedby>
<referencedby refid="059__command__catch_8tcl_1aff65a51a703804e0ad1adbcfd76c86f8" compoundref="059__command__catch_8tcl" startline="41" endline="44">e</referencedby>
<referencedby refid="059__command__catch_8tcl_1af6830d2c644b45088ea8f1f74a46b778" compoundref="059__command__catch_8tcl" startline="45" endline="48">f</referencedby>
<referencedby refid="059__command__catch_8tcl_1af08b4b5bfa9edf0b0a7dee1c2b2c29e0" compoundref="059__command__catch_8tcl" startline="49" endline="54">g</referencedby>
<referencedby refid="059__command__catch_8tcl_1af96fd0966e32a310a0778d2e5c357700" compoundref="059__command__catch_8tcl" startline="56" endline="59">h</referencedby>
<referencedby refid="059__command__catch_8tcl_1a8c90afd4641b25be86bd09983c3cbee0" compoundref="059__command__catch_8tcl" startline="60" endline="63">i</referencedby>
<referencedby refid="059__command__catch_8tcl_1a2aaa92757686acea102cba3475f0c13b" compoundref="059__command__catch_8tcl" startline="75" endline="78">j</referencedby>
</memberdef>
<memberdef kind="function" id="059__command__catch_8tcl_1a3f55465410c57ed00ab28827a741b1c3" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>NotInvoked</definition>
<argsstring>args</argsstring>
<name>NotInvoked</name>
<briefdescription>
<para>must not be reference by every proc below </para>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="059_command_catch.tcl" bodystart="16" bodyend="19"/>
</memberdef>
<memberdef kind="function" id="059__command__catch_8tcl_1ab08ae027fc5777bc4f0629f1b60b35db" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>a</definition>
<argsstring>args</argsstring>
<name>a</name>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="059_command_catch.tcl" bodystart="22" bodyend="25"/>
<references refid="059__command__catch_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="059__command__catch_8tcl" startline="10" endline="13">Invoked</references>
</memberdef>
<memberdef kind="function" id="059__command__catch_8tcl_1a68bdb74c144118d936931c46f75d4b3e" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>b</definition>
<argsstring>args</argsstring>
<name>b</name>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="059_command_catch.tcl" bodystart="29" bodyend="32"/>
<references refid="059__command__catch_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="059__command__catch_8tcl" startline="10" endline="13">Invoked</references>
</memberdef>
<memberdef kind="function" id="059__command__catch_8tcl_1ab14f56bc3bd7680490ece4ad7815465f" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>c</definition>
<argsstring>args</argsstring>
<name>c</name>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="059_command_catch.tcl" bodystart="33" bodyend="36"/>
<references refid="059__command__catch_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="059__command__catch_8tcl" startline="10" endline="13">Invoked</references>
</memberdef>
<memberdef kind="function" id="059__command__catch_8tcl_1af43f4b1f0064a33b2d662af9f06d3a00" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>d</definition>
<argsstring>args</argsstring>
<name>d</name>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="059_command_catch.tcl" bodystart="37" bodyend="40"/>
<references refid="059__command__catch_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="059__command__catch_8tcl" startline="10" endline="13">Invoked</references>
</memberdef>
<memberdef kind="function" id="059__command__catch_8tcl_1aff65a51a703804e0ad1adbcfd76c86f8" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>e</definition>
<argsstring>args</argsstring>
<name>e</name>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="059_command_catch.tcl" bodystart="41" bodyend="44"/>
<references refid="059__command__catch_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="059__command__catch_8tcl" startline="10" endline="13">Invoked</references>
</memberdef>
<memberdef kind="function" id="059__command__catch_8tcl_1af6830d2c644b45088ea8f1f74a46b778" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>f</definition>
<argsstring>args</argsstring>
<name>f</name>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="059_command_catch.tcl" bodystart="45" bodyend="48"/>
<references refid="059__command__catch_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="059__command__catch_8tcl" startline="10" endline="13">Invoked</references>
</memberdef>
<memberdef kind="function" id="059__command__catch_8tcl_1af08b4b5bfa9edf0b0a7dee1c2b2c29e0" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>g</definition>
<argsstring>args</argsstring>
<name>g</name>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="059_command_catch.tcl" bodystart="49" bodyend="54"/>
<references refid="059__command__catch_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="059__command__catch_8tcl" startline="10" endline="13">Invoked</references>
</memberdef>
<memberdef kind="function" id="059__command__catch_8tcl_1af96fd0966e32a310a0778d2e5c357700" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>h</definition>
<argsstring>args</argsstring>
<name>h</name>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="059_command_catch.tcl" bodystart="56" bodyend="59"/>
<references refid="059__command__catch_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="059__command__catch_8tcl" startline="10" endline="13">Invoked</references>
</memberdef>
<memberdef kind="function" id="059__command__catch_8tcl_1a8c90afd4641b25be86bd09983c3cbee0" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>i</definition>
<argsstring>args</argsstring>
<name>i</name>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="059_command_catch.tcl" bodystart="60" bodyend="63"/>
<references refid="059__command__catch_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="059__command__catch_8tcl" startline="10" endline="13">Invoked</references>
</memberdef>
<memberdef kind="function" id="059__command__catch_8tcl_1a2aaa92757686acea102cba3475f0c13b" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>j</definition>
<argsstring>args</argsstring>
<name>j</name>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="059_command_catch.tcl" bodystart="75" bodyend="78"/>
<references refid="059__command__catch_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="059__command__catch_8tcl" startline="10" endline="13">Invoked</references>
</memberdef>
</sectiondef>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<location file="059_command_catch.tcl"/>
</compounddef>
</doxygen>
#// objective: tests processing of catch/eval, only references/referencedby relations are relevant
#// check: 059__command__catch_8tcl.xml
#// config: REFERENCED_BY_RELATION = yes
#// config: REFERENCES_RELATION = yes
#// config: EXTRACT_ALL = yes
#// config: INLINE_SOURCES = no
##
# \brief should be reference by every proc below
proc Invoked args {
puts "Procedure \"Invoked\" is invoked indeed. Ok."
return $args
}
##
# \brief must not be reference by every proc below
proc NotInvoked args {
puts "Procedure \"NotInvoked\" is invoked. Not Ok!"
return $args
}
#
# check if call references work at all
proc a args {
Invoked NotInvoked
return
}
#
# catch command
# Tcl8.5: catch script ?resultVarName? ?optionsVarName?
proc b args {
catch Invoked
return
}
proc c args {
catch Invoked NotInvoked
return
}
proc d args {
catch Invoked NotInvoked NotInvoked
return
}
proc e args {
set r [catch Invoked NotInvoked NotInvoked]
return
}
proc f args {
set r [catch {Invoked} NotInvoked NotInvoked]
return
}
proc g args {
set r [catch {
set x [Invoked]
} NotInvoked NotInvoked]
return
}
# eval arg ?arg ...?
proc h args {
eval Invoked NotInvoked
return
}
proc i args {
eval set NotInvoked [Invoked NotInvoked]
return
}
# This is a striped down example. Original:
#
# jpeg.tcl --
#
# Querying and modifying JPEG image files.
#
# Copyright (c) 2004 Aaron Faupell <afaupell@users.sourceforge.net>
#
# ...
# eval [list addComment $file] [lreplace $com 0 0 $comment]
# ...
proc j args {
eval [list set] [list NotInvoked] [Invoked NotInvoked]
return
}
#
# call all single letter procs
# let tcl check what is called and what is not called
foreach p [info procs ?] {
puts "Check procedure \"$p\""
$p
}
exit
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="">
<compounddef id="060__command__switch_8tcl" kind="file">
<compoundname>060_command_switch.tcl</compoundname>
<sectiondef kind="func">
<memberdef kind="function" id="060__command__switch_8tcl_1aa889853547f65a22ae133cd57ff89601" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>Invoked</definition>
<argsstring>args</argsstring>
<name>Invoked</name>
<briefdescription>
<para>should be reference by every proc below </para>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="060_command_switch.tcl" bodystart="10" bodyend="13"/>
<referencedby refid="060__command__switch_8tcl_1ab08ae027fc5777bc4f0629f1b60b35db" compoundref="060__command__switch_8tcl" startline="22" endline="25">a</referencedby>
<referencedby refid="060__command__switch_8tcl_1a68bdb74c144118d936931c46f75d4b3e" compoundref="060__command__switch_8tcl" startline="29" endline="36">b</referencedby>
<referencedby refid="060__command__switch_8tcl_1ab14f56bc3bd7680490ece4ad7815465f" compoundref="060__command__switch_8tcl" startline="37" endline="43">c</referencedby>
<referencedby refid="060__command__switch_8tcl_1af43f4b1f0064a33b2d662af9f06d3a00" compoundref="060__command__switch_8tcl" startline="44" endline="50">d</referencedby>
<referencedby refid="060__command__switch_8tcl_1aff65a51a703804e0ad1adbcfd76c86f8" compoundref="060__command__switch_8tcl" startline="51" endline="57">e</referencedby>
<referencedby refid="060__command__switch_8tcl_1af6830d2c644b45088ea8f1f74a46b778" compoundref="060__command__switch_8tcl" startline="58" endline="65">f</referencedby>
<referencedby refid="060__command__switch_8tcl_1af08b4b5bfa9edf0b0a7dee1c2b2c29e0" compoundref="060__command__switch_8tcl" startline="66" endline="73">g</referencedby>
<referencedby refid="060__command__switch_8tcl_1af96fd0966e32a310a0778d2e5c357700" compoundref="060__command__switch_8tcl" startline="74" endline="81">h</referencedby>
<referencedby refid="060__command__switch_8tcl_1a8c90afd4641b25be86bd09983c3cbee0" compoundref="060__command__switch_8tcl" startline="83" endline="94">i</referencedby>
<referencedby refid="060__command__switch_8tcl_1a2aaa92757686acea102cba3475f0c13b" compoundref="060__command__switch_8tcl" startline="95" endline="106">j</referencedby>
<referencedby refid="060__command__switch_8tcl_1a20363f854eb4098a446733d63d34dbc1" compoundref="060__command__switch_8tcl" startline="107" endline="118">k</referencedby>
<referencedby refid="060__command__switch_8tcl_1aff56f84b49947b84b2a304f51cf8e678" compoundref="060__command__switch_8tcl" startline="119" endline="129">l</referencedby>
<referencedby refid="060__command__switch_8tcl_1a78d127e8bda64d4471ac811ad512fbd9" compoundref="060__command__switch_8tcl" startline="130" endline="141">m</referencedby>
<referencedby refid="060__command__switch_8tcl_1acdde3cd86eb2421ce8dbb2e85227d368" compoundref="060__command__switch_8tcl" startline="142" endline="153">n</referencedby>
<referencedby refid="060__command__switch_8tcl_1a495e7a4ede0831107e9d435080a7c268" compoundref="060__command__switch_8tcl" startline="154" endline="165">o</referencedby>
<referencedby refid="060__command__switch_8tcl_1a15229b450f26d8fa1c10bea4f3279f4d" compoundref="060__command__switch_8tcl" startline="166" endline="175">p</referencedby>
<referencedby refid="060__command__switch_8tcl_1ab678a0a9a7e94bce5b17141f40220d88" compoundref="060__command__switch_8tcl" startline="176" endline="185">q</referencedby>
<referencedby refid="060__command__switch_8tcl_1a0a0bd3dc69dd06934c4e6362155e0ace" compoundref="060__command__switch_8tcl" startline="186" endline="195">r</referencedby>
<referencedby refid="060__command__switch_8tcl_1a011c73f2dbb87635a3b4206c72355f6e" compoundref="060__command__switch_8tcl" startline="196" endline="205">s</referencedby>
<referencedby refid="060__command__switch_8tcl_1a429306927a4581ad93fac620e605eec5" compoundref="060__command__switch_8tcl" startline="207" endline="210">x</referencedby>
<referencedby refid="060__command__switch_8tcl_1a32b6e5206a2cc75dbb8ed2eff74f5ce4" compoundref="060__command__switch_8tcl" startline="215" endline="229">y</referencedby>
</memberdef>
<memberdef kind="function" id="060__command__switch_8tcl_1a3f55465410c57ed00ab28827a741b1c3" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>NotInvoked</definition>
<argsstring>args</argsstring>
<name>NotInvoked</name>
<briefdescription>
<para>must not be reference by every proc below </para>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="060_command_switch.tcl" bodystart="16" bodyend="19"/>
<referencedby refid="060__command__switch_8tcl_1a32b6e5206a2cc75dbb8ed2eff74f5ce4" compoundref="060__command__switch_8tcl" startline="215" endline="229">y</referencedby>
</memberdef>
<memberdef kind="function" id="060__command__switch_8tcl_1ab08ae027fc5777bc4f0629f1b60b35db" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>a</definition>
<argsstring>args</argsstring>
<name>a</name>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="060_command_switch.tcl" bodystart="22" bodyend="25"/>
<references refid="060__command__switch_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="060__command__switch_8tcl" startline="10" endline="13">Invoked</references>
</memberdef>
<memberdef kind="function" id="060__command__switch_8tcl_1a68bdb74c144118d936931c46f75d4b3e" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>b</definition>
<argsstring>args</argsstring>
<name>b</name>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="060_command_switch.tcl" bodystart="29" bodyend="36"/>
<references refid="060__command__switch_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="060__command__switch_8tcl" startline="10" endline="13">Invoked</references>
</memberdef>
<memberdef kind="function" id="060__command__switch_8tcl_1ab14f56bc3bd7680490ece4ad7815465f" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>c</definition>
<argsstring>args</argsstring>
<name>c</name>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="060_command_switch.tcl" bodystart="37" bodyend="43"/>
<references refid="060__command__switch_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="060__command__switch_8tcl" startline="10" endline="13">Invoked</references>
</memberdef>
<memberdef kind="function" id="060__command__switch_8tcl_1af43f4b1f0064a33b2d662af9f06d3a00" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>d</definition>
<argsstring>args</argsstring>
<name>d</name>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="060_command_switch.tcl" bodystart="44" bodyend="50"/>
<references refid="060__command__switch_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="060__command__switch_8tcl" startline="10" endline="13">Invoked</references>
</memberdef>
<memberdef kind="function" id="060__command__switch_8tcl_1aff65a51a703804e0ad1adbcfd76c86f8" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>e</definition>
<argsstring>args</argsstring>
<name>e</name>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="060_command_switch.tcl" bodystart="51" bodyend="57"/>
<references refid="060__command__switch_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="060__command__switch_8tcl" startline="10" endline="13">Invoked</references>
</memberdef>
<memberdef kind="function" id="060__command__switch_8tcl_1af6830d2c644b45088ea8f1f74a46b778" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>f</definition>
<argsstring>args</argsstring>
<name>f</name>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="060_command_switch.tcl" bodystart="58" bodyend="65"/>
<references refid="060__command__switch_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="060__command__switch_8tcl" startline="10" endline="13">Invoked</references>
</memberdef>
<memberdef kind="function" id="060__command__switch_8tcl_1af08b4b5bfa9edf0b0a7dee1c2b2c29e0" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>g</definition>
<argsstring>args</argsstring>
<name>g</name>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="060_command_switch.tcl" bodystart="66" bodyend="73"/>
<references refid="060__command__switch_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="060__command__switch_8tcl" startline="10" endline="13">Invoked</references>
</memberdef>
<memberdef kind="function" id="060__command__switch_8tcl_1af96fd0966e32a310a0778d2e5c357700" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>h</definition>
<argsstring>args</argsstring>
<name>h</name>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="060_command_switch.tcl" bodystart="74" bodyend="81"/>
<references refid="060__command__switch_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="060__command__switch_8tcl" startline="10" endline="13">Invoked</references>
</memberdef>
<memberdef kind="function" id="060__command__switch_8tcl_1a8c90afd4641b25be86bd09983c3cbee0" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>i</definition>
<argsstring>args</argsstring>
<name>i</name>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="060_command_switch.tcl" bodystart="83" bodyend="94"/>
<references refid="060__command__switch_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="060__command__switch_8tcl" startline="10" endline="13">Invoked</references>
</memberdef>
<memberdef kind="function" id="060__command__switch_8tcl_1a2aaa92757686acea102cba3475f0c13b" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>j</definition>
<argsstring>args</argsstring>
<name>j</name>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="060_command_switch.tcl" bodystart="95" bodyend="106"/>
<references refid="060__command__switch_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="060__command__switch_8tcl" startline="10" endline="13">Invoked</references>
</memberdef>
<memberdef kind="function" id="060__command__switch_8tcl_1a20363f854eb4098a446733d63d34dbc1" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>k</definition>
<argsstring>args</argsstring>
<name>k</name>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="060_command_switch.tcl" bodystart="107" bodyend="118"/>
<references refid="060__command__switch_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="060__command__switch_8tcl" startline="10" endline="13">Invoked</references>
</memberdef>
<memberdef kind="function" id="060__command__switch_8tcl_1aff56f84b49947b84b2a304f51cf8e678" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>l</definition>
<argsstring>args</argsstring>
<name>l</name>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="060_command_switch.tcl" bodystart="119" bodyend="129"/>
<references refid="060__command__switch_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="060__command__switch_8tcl" startline="10" endline="13">Invoked</references>
</memberdef>
<memberdef kind="function" id="060__command__switch_8tcl_1a78d127e8bda64d4471ac811ad512fbd9" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>m</definition>
<argsstring>args</argsstring>
<name>m</name>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="060_command_switch.tcl" bodystart="130" bodyend="141"/>
<references refid="060__command__switch_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="060__command__switch_8tcl" startline="10" endline="13">Invoked</references>
</memberdef>
<memberdef kind="function" id="060__command__switch_8tcl_1acdde3cd86eb2421ce8dbb2e85227d368" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>n</definition>
<argsstring>args</argsstring>
<name>n</name>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="060_command_switch.tcl" bodystart="142" bodyend="153"/>
<references refid="060__command__switch_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="060__command__switch_8tcl" startline="10" endline="13">Invoked</references>
</memberdef>
<memberdef kind="function" id="060__command__switch_8tcl_1a495e7a4ede0831107e9d435080a7c268" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>o</definition>
<argsstring>args</argsstring>
<name>o</name>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="060_command_switch.tcl" bodystart="154" bodyend="165"/>
<references refid="060__command__switch_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="060__command__switch_8tcl" startline="10" endline="13">Invoked</references>
</memberdef>
<memberdef kind="function" id="060__command__switch_8tcl_1a15229b450f26d8fa1c10bea4f3279f4d" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>p</definition>
<argsstring>args</argsstring>
<name>p</name>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="060_command_switch.tcl" bodystart="166" bodyend="175"/>
<references refid="060__command__switch_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="060__command__switch_8tcl" startline="10" endline="13">Invoked</references>
</memberdef>
<memberdef kind="function" id="060__command__switch_8tcl_1ab678a0a9a7e94bce5b17141f40220d88" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>q</definition>
<argsstring>args</argsstring>
<name>q</name>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="060_command_switch.tcl" bodystart="176" bodyend="185"/>
<references refid="060__command__switch_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="060__command__switch_8tcl" startline="10" endline="13">Invoked</references>
</memberdef>
<memberdef kind="function" id="060__command__switch_8tcl_1a0a0bd3dc69dd06934c4e6362155e0ace" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>r</definition>
<argsstring>args</argsstring>
<name>r</name>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="060_command_switch.tcl" bodystart="186" bodyend="195"/>
<references refid="060__command__switch_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="060__command__switch_8tcl" startline="10" endline="13">Invoked</references>
</memberdef>
<memberdef kind="function" id="060__command__switch_8tcl_1a011c73f2dbb87635a3b4206c72355f6e" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>s</definition>
<argsstring>args</argsstring>
<name>s</name>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="060_command_switch.tcl" bodystart="196" bodyend="205"/>
<references refid="060__command__switch_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="060__command__switch_8tcl" startline="10" endline="13">Invoked</references>
</memberdef>
<memberdef kind="function" id="060__command__switch_8tcl_1a429306927a4581ad93fac620e605eec5" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>x</definition>
<argsstring>args</argsstring>
<name>x</name>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="060_command_switch.tcl" bodystart="207" bodyend="210"/>
<references refid="060__command__switch_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="060__command__switch_8tcl" startline="10" endline="13">Invoked</references>
</memberdef>
<memberdef kind="function" id="060__command__switch_8tcl_1a32b6e5206a2cc75dbb8ed2eff74f5ce4" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>y</definition>
<argsstring>args</argsstring>
<name>y</name>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="060_command_switch.tcl" bodystart="215" bodyend="229"/>
<references refid="060__command__switch_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="060__command__switch_8tcl" startline="10" endline="13">Invoked</references>
<references refid="060__command__switch_8tcl_1a3f55465410c57ed00ab28827a741b1c3" compoundref="060__command__switch_8tcl" startline="16" endline="19">NotInvoked</references>
</memberdef>
</sectiondef>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<location file="060_command_switch.tcl"/>
</compounddef>
</doxygen>
#// objective: tests processing of switch, only references/referencedby relations are relevant
#// check: 060__command__switch_8tcl.xml
#// config: REFERENCED_BY_RELATION = yes
#// config: REFERENCES_RELATION = yes
#// config: EXTRACT_ALL = yes
#// config: INLINE_SOURCES = no
##
# \brief should be reference by every proc below
proc Invoked args {
puts "Procedure \"Invoked\" is invoked indeed. Ok."
return $args
}
##
# \brief must not be reference by every proc below
proc NotInvoked args {
puts "Procedure \"NotInvoked\" is invoked. Not Ok!"
return $args
}
#
# check if call references work at all
proc a args {
Invoked NotInvoked
return
}
#
# switch command
# switch ?options? string pattern body ?pattern body ...?
proc b args {
switch value NotInvoked {
} NotInvoked {
} default {
Invoked
}
return
}
proc c args {
switch value NotInvoked {
} [Invoked] {
} default {
}
return
}
proc d args {
switch NotInvoked pattern {
} [Invoked] {
} default {
}
return
}
proc e args {
switch [Invoked] pattern {
} NotInvoked {
} default {
}
return
}
proc f args {
switch -exact value pattern {
} NotInvoked {
} default {
Invoked
}
return
}
proc g args {
switch -exact -- value pattern {
} NotInvoked {
} default {
Invoked
}
return
}
proc h args {
switch -exact -- -value pattern {
} NotInvoked {
} default {
Invoked
}
return
}
# switch ?options? string {pattern body ?pattern body ...?}
proc i args {
switch value {
NotInvoked {
}
NotInvoked {
}
default {
Invoked
}
}
return
}
proc j args {
switch vale {
NotInvoked {
}
[NotInvoked] {
}
default {
Invoked
}
}
return
}
proc k args {
switch NotInvoked {
[NotInvoked] {
}
NotInvoked {
Invoked
}
default {
}
}
return
}
proc l args {
switch [Invoked] {
pattern {
}
NotInvoked {
}
default {
}
}
return
}
proc m args {
switch -exact value {
pattern {
}
NotInvoked {
}
default {
Invoked
}
}
return
}
proc n args {
switch -exact -- value {
pattern {
}
NotInvoked {
}
default {
Invoked
}
}
return
}
proc o args {
switch -exact -- -value {
pattern {
}
NotInvoked {
}
default {
Invoked
}
}
return
}
proc p args {
switch -exact -- inquotes {
"inquotes" {
Invoked
}
default {
}
}
return
}
proc q args {
switch -exact -- "in quotes" {
"in quotes" {
Invoked
}
default {
}
}
return
}
proc r args {
switch -exact -- inbraces {
{inbraces} {
Invoked
}
default {
}
}
return
}
proc s args {
switch -exact -- {in braces} {
{in braces} {
Invoked
}
default {
}
}
return
}
# wrong syntax
proc x args {
catch {switch -exact -- [Invoked] pattern1 NotInvoked pattern2}
return
}
# The current version does not check the last argument beforehand.
# Therefore, all script elements are evaluated as scripts before
# the parser detects the dangling pattern. It throws a warning, at the very least.
# Anyway, for working code the documentation will be correct.
proc y args {
catch {switch -exact -- [Invoked] {
pattern {
NotInvoked
}
NotInvoked {
NotInvoked
}
default {
NotInvoked
}
pattern
}}
return
}
#
# call all single letter procs
# let tcl check what is called and what is not called
foreach p [info procs ?] {
puts "Check procedure \"$p\""
$p
}
exit
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="">
<compounddef id="namespacen1" kind="namespace">
<compoundname>n1</compoundname>
<innernamespace refid="namespacen1_1_1n1">n1::n1</innernamespace>
<sectiondef kind="func">
<memberdef kind="function" id="namespacen1_1a9f23d7a7f141915457e8e26023d70cb4" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>n1::p1</definition>
<argsstring>args</argsstring>
<name>p1</name>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="062_namespace_resolution.tcl" bodystart="12" bodyend="16"/>
<references refid="namespacen1_1a0bff29f718fa43e49b7ca79985afb5fa" compoundref="062__namespace__resolution_8tcl" startline="17" endline="20">p2</references>
</memberdef>
<memberdef kind="function" id="namespacen1_1a0bff29f718fa43e49b7ca79985afb5fa" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>n1::p2</definition>
<argsstring>args</argsstring>
<name>p2</name>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="062_namespace_resolution.tcl" bodystart="17" bodyend="20"/>
<referencedby refid="namespacen1_1a9f23d7a7f141915457e8e26023d70cb4" compoundref="062__namespace__resolution_8tcl" startline="12" endline="16">p1</referencedby>
</memberdef>
</sectiondef>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<location file="062_namespace_resolution.tcl" line="11" column="1"/>
</compounddef>
</doxygen>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="">
<compounddef id="namespacen2" kind="namespace">
<compoundname>n2</compoundname>
<innernamespace refid="namespacen2_1_1n2">n2::n2</innernamespace>
<sectiondef kind="func">
<memberdef kind="function" id="namespacen2_1a74950c0185232e374220a0707b4903c6" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>n2::p1</definition>
<argsstring>args</argsstring>
<name>p1</name>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="062_namespace_resolution.tcl" bodystart="31" bodyend="35"/>
<references refid="namespacen2_1a49fadfbefa795204a3c566ec76ff632f" compoundref="062__namespace__resolution_8tcl" startline="36" endline="39">p2</references>
</memberdef>
<memberdef kind="function" id="namespacen2_1a49fadfbefa795204a3c566ec76ff632f" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>n2::p2</definition>
<argsstring>args</argsstring>
<name>p2</name>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="062_namespace_resolution.tcl" bodystart="36" bodyend="39"/>
<referencedby refid="namespacen2_1a74950c0185232e374220a0707b4903c6" compoundref="062__namespace__resolution_8tcl" startline="31" endline="35">p1</referencedby>
</memberdef>
</sectiondef>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<location file="062_namespace_resolution.tcl" line="29" column="1"/>
</compounddef>
</doxygen>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="">
<compounddef id="namespacen3" kind="namespace">
<compoundname>n3</compoundname>
<innernamespace refid="namespacen3_1_1n3">n3::n3</innernamespace>
<sectiondef kind="func">
<memberdef kind="function" id="namespacen3_1ae7e87e49507bd56dad087cffecd35b29" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>n3::p1</definition>
<argsstring>args</argsstring>
<name>p1</name>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="062_namespace_resolution.tcl" bodystart="47" bodyend="51"/>
<references refid="namespacen3_1a14e9fe1b27a6d36db9ace2eef4509979" compoundref="062__namespace__resolution_8tcl" startline="52" endline="55">p2</references>
</memberdef>
<memberdef kind="function" id="namespacen3_1a14e9fe1b27a6d36db9ace2eef4509979" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>n3::p2</definition>
<argsstring>args</argsstring>
<name>p2</name>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="062_namespace_resolution.tcl" bodystart="52" bodyend="55"/>
<referencedby refid="namespacen3_1ae7e87e49507bd56dad087cffecd35b29" compoundref="062__namespace__resolution_8tcl" startline="47" endline="51">p1</referencedby>
</memberdef>
</sectiondef>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<location file="062_namespace_resolution.tcl" line="45" column="1"/>
</compounddef>
</doxygen>
#// objective: tests correct namespace resolution, only references/referencedby relations are relevant
#// check: namespacen1.xml
#// check: namespacen2.xml
#// check: namespacen3.xml
#// config: REFERENCED_BY_RELATION = yes
#// config: REFERENCES_RELATION = yes
#// config: EXTRACT_ALL = yes
#// config: INLINE_SOURCES = yes
# now: combine namespace eval and qualified names
namespace eval n1 {
proc p1 args {
array set info [info frame 0]; puts -nonewline ->$info(proc)
p2
return
}
proc p2 args {
array set info [info frame 0]; puts -nonewline ->$info(proc)
return
}
namespace eval n1 {
proc p1 args {
array set info [info frame 0]; puts -nonewline ->$info(proc)
return
}
}
}
# same thing, but fully qualified proc names
namespace eval ::n2 {}
namespace eval ::n2::n2 {}
proc ::n2::p1 args {
array set info [info frame 0]; puts -nonewline ->$info(proc)
p2
return
}
proc ::n2::p2 args {
array set info [info frame 0]; puts -nonewline ->$info(proc)
return
}
proc ::n2::n2::p2 args {
array set info [info frame 0]; puts -nonewline ->$info(proc)
return
}
# same thing, without leading ::
namespace eval n3 {}
namespace eval n3::n3 {}
proc n3::p1 args {
array set info [info frame 0]; puts -nonewline ->$info(proc)
p2
return
}
proc n3::p2 args {
array set info [info frame 0]; puts -nonewline ->$info(proc)
return
}
proc n3::n3::p2 args {
array set info [info frame 0]; puts -nonewline ->$info(proc)
return
}
# now, check with tcl what is called
n1::p1
puts ""
n2::p1
puts ""
n3::p1
puts ""
exit
proc inFileB args {
array set info [info frame 0]; puts -nonewline ->$info(proc)
inFileA
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment