summaryrefslogtreecommitdiff
path: root/src/libs/qtcreatorcdbext/qtcreatorcdbextension.cpp
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@digia.com>2013-01-31 14:24:39 +0100
committerhjk <hjk121@nokiamail.com>2013-01-31 15:48:31 +0100
commit72421c18c1f597755f9bd7a4d62751858a935c8b (patch)
tree46281231e1690cafc83e544089393cbc590dd1ac /src/libs/qtcreatorcdbext/qtcreatorcdbextension.cpp
parent9c96a5a971033e4e9124dd2068b14ded03b5f2da (diff)
downloadqt-creator-72421c18c1f597755f9bd7a4d62751858a935c8b.tar.gz
CDB: Pass settings maxStringLength and maxStackDepth to extension.
Change-Id: I602aa3758817026c8b4cbda1cc9fa9eff95fc691 Reviewed-by: hjk <hjk121@nokiamail.com>
Diffstat (limited to 'src/libs/qtcreatorcdbext/qtcreatorcdbextension.cpp')
-rw-r--r--src/libs/qtcreatorcdbext/qtcreatorcdbextension.cpp34
1 files changed, 32 insertions, 2 deletions
diff --git a/src/libs/qtcreatorcdbext/qtcreatorcdbextension.cpp b/src/libs/qtcreatorcdbext/qtcreatorcdbextension.cpp
index 87a98980dd..42293be33b 100644
--- a/src/libs/qtcreatorcdbext/qtcreatorcdbextension.cpp
+++ b/src/libs/qtcreatorcdbext/qtcreatorcdbextension.cpp
@@ -110,7 +110,8 @@ enum Command {
CmdAddWatch,
CmdWidgetAt,
CmdBreakPoints,
- CmdTest
+ CmdTest,
+ CmdSetParameter
};
static const CommandDescription commandDescriptions[] = {
@@ -172,7 +173,8 @@ static const CommandDescription commandDescriptions[] = {
{"addwatch","Add watch expression","<iname> <expression>"},
{"widgetat","Return address of widget at position","<x> <y>"},
{"breakpoints","List breakpoints with modules","[-h] [-v]"},
-{"test","Testing command","-T type | -w watch-expression"}
+{"test","Testing command","-T type | -w watch-expression"},
+{"setparameter","Set parameter","maxStringLength=value maxStackDepth=value"}
};
typedef std::vector<std::string> StringVector;
@@ -893,6 +895,34 @@ extern "C" HRESULT CALLBACK idle(CIDebugClient *client, PCSTR)
return S_OK;
}
+// Extension command 'setparameter':
+// Parse a list of parameters: 'key=value'
+
+extern "C" HRESULT CALLBACK setparameter(CIDebugClient *, PCSTR args)
+{
+ int token;
+ StringVector tokens = commandTokens<StringVector>(args, &token);
+ const size_t count = tokens.size();
+ size_t success = 0;
+ for (size_t i = 0; i < count; ++i) {
+ const std::string &token = tokens.at(i);
+ const std::string::size_type equalsPos = token.find('=');
+ if (equalsPos != std::string::npos) {
+ const std::string value = token.substr(equalsPos + 1, token.size() - 1 - equalsPos);
+ if (!token.compare(0, equalsPos, "maxStringLength")) {
+ if (integerFromString(value, &ExtensionContext::instance().parameters().maxStringLength))
+ ++success;
+ } else if (!token.compare(0, equalsPos, "maxStackDepth")) {
+ if (integerFromString(value, &ExtensionContext::instance().parameters().maxStackDepth))
+ ++success;
+ }
+ }
+ }
+ if (success != count)
+ DebugPrint() << "Errors parsing setparameters command '" << args << '\'';
+ return S_OK;
+}
+
// Extension command 'help':
// Display version