summaryrefslogtreecommitdiffstats
path: root/tdelirc/tdelirc/prototype.cpp
blob: 8e2eedf4fec8e27bb1af3b15d9cf5a5fdb6e6455 (plain)
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
//
//
// C++ Implementation: $MODULE$
//
// Description:
//
//
// Author: Gav Wood <gav@kde.org>, (C) 2003
//
// Copyright: See COPYING file that comes with this distribution
//
//
#include <tqregexp.h>

#include "prototype.h"

Prototype::Prototype()
{
	original = "";
}

Prototype::Prototype(const TQString &source)
{
	original = source;
	parse();
}

Prototype::~Prototype()
{
}

const TQString Prototype::argumentList() const
{
	TQString ret = "";
	for(unsigned i = 0; i < theTypes.count(); i++)
		ret += (i ? ", " : "") + theTypes[i] + " " + theNames[i];
	return ret;
}

const TQString Prototype::argumentListNN() const
{
	TQString ret = "";
	for(unsigned i = 0; i < theTypes.count(); i++)
		ret += (i ? ", " : "") + theTypes[i];
	return ret;
}

void Prototype::parse()
{
	theNames.clear();
	theTypes.clear();

	TQRegExp main("^(.*) (\\w[\\d\\w]*)\\((.*)\\)");
	TQRegExp parameters("^\\s*([^,\\s]+)(\\s+(\\w[\\d\\w]*))?(,(.*))?$");

	if(main.search(original) == -1) return;
	theReturn = main.cap(1);
	theName = main.cap(2);

	TQString args = main.cap(3);
	while(parameters.search(args) != -1)
	{	theTypes += parameters.cap(1);
		theNames += parameters.cap(3);
		args = parameters.cap(5);
	}
}