Julia Lawall <julia <at> diku.dk> writes:
> Could you send a small example of code you would like to be able to parse?
> With only toplevel functions.
Here is a nice example of C++-ish stuff for a start. I note that spatch works
fine on the function testclass() right now, so your suggestion of adding [:<>]
as supported characters might go a long way. For the sake of an argument I
included a .cocci file below.
Regards,
Michael
#### BEGIN C++ #####
#include <list>
#include <iostream>
using namespace std;
#define RETVAL(a) a
class myclass
{
private:
std::list<int> mylist;
int someval;
public:
myclass() : someval(1) {}
~myclass();
RETVAL(void) add(int val);
RETVAL(void) print(void);
RETVAL(void) excep(void);
};
myclass::~myclass()
{
mylist.clear();
}
RETVAL(void) myclass::add(int val)
{
mylist.push_back(val);
}
RETVAL(void) myclass::print(void)
{
for (std::list<int>::iterator it = mylist.begin(); it != mylist.end();
++it)
std::cout << "List element: " << *it << std::endl;
}
RETVAL(void) myclass::excep(void)
{
throw std::bad_alloc();
}
extern "C"{
void testclass(void);
}
void testclass(void)
{
myclass test;
test.add(1);
test.add(2);
test.print();
}
int main()
{
testclass();
return 0;
}
#### END C++ #####
#### BEGIN COCCI #####
@ r1 @
@@
-test.add(1)
+test.add(5)
@ r2 @
@@
mylist.push_back(val);
+mylist.push_back(0);
#### END COCCI #####
_______________________________________________
Cocci mailing list
[email protected]
http://lists.diku.dk/mailman/listinfo/cocci
(Web access from inside DIKUs LAN only)