summaryrefslogtreecommitdiffstats
path: root/kdelirc/kdelirc/prototype.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kdelirc/kdelirc/prototype.cpp')
-rw-r--r--kdelirc/kdelirc/prototype.cpp67
1 files changed, 67 insertions, 0 deletions
diff --git a/kdelirc/kdelirc/prototype.cpp b/kdelirc/kdelirc/prototype.cpp
new file mode 100644
index 0000000..9b0a09b
--- /dev/null
+++ b/kdelirc/kdelirc/prototype.cpp
@@ -0,0 +1,67 @@
+//
+//
+// C++ Implementation: $MODULE$
+//
+// Description:
+//
+//
+// Author: Gav Wood <gav@kde.org>, (C) 2003
+//
+// Copyright: See COPYING file that comes with this distribution
+//
+//
+#include <qregexp.h>
+
+#include "prototype.h"
+
+Prototype::Prototype()
+{
+ original = "";
+}
+
+Prototype::Prototype(const QString &source)
+{
+ original = source;
+ parse();
+}
+
+Prototype::~Prototype()
+{
+}
+
+const QString Prototype::argumentList() const
+{
+ QString ret = "";
+ for(unsigned i = 0; i < theTypes.count(); i++)
+ ret += (i ? ", " : "") + theTypes[i] + " " + theNames[i];
+ return ret;
+}
+
+const QString Prototype::argumentListNN() const
+{
+ QString ret = "";
+ for(unsigned i = 0; i < theTypes.count(); i++)
+ ret += (i ? ", " : "") + theTypes[i];
+ return ret;
+}
+
+void Prototype::parse()
+{
+ theNames.clear();
+ theTypes.clear();
+
+ QRegExp main("^(.*) (\\w[\\d\\w]*)\\((.*)\\)");
+ QRegExp parameters("^\\s*([^,\\s]+)(\\s+(\\w[\\d\\w]*))?(,(.*))?$");
+
+ if(main.search(original) == -1) return;
+ theReturn = main.cap(1);
+ theName = main.cap(2);
+
+ QString args = main.cap(3);
+ while(parameters.search(args) != -1)
+ { theTypes += parameters.cap(1);
+ theNames += parameters.cap(3);
+ args = parameters.cap(5);
+ }
+}
+