ultimatepp/uppdev/valgrind/valgrind.cpp
cxl 351994a6cc Adding uppdev....
git-svn-id: svn://ultimatepp.org/upp/trunk@328 f0d560ea-af0d-0410-9eb7-867de7ffcac7
2008-08-15 08:36:24 +00:00

193 lines
No EOL
3.9 KiB
C++

#include <Core/Core.h>
using namespace Upp;
static String s_ip = "ip";
static String s_obj = "obj";
static String s_fn = "fn";
static String s_dir = "dir";
static String s_file = "file";
static String s_line = "line";
static String s_stack = "stack";
static String s_frame = "frame";
void PS()
{
String txt = LoadFile(GetHomeDirFile("test.xml"));
for(int I = 0; I < 100; I++) {
RTIMING("Parse String");
XmlParser p(txt);
while(!p.IsTag())
p.Skip();
try {
p.PassTag("valgrindoutput");
while(!p.End()) {
if(p.Tag("error")) {
String hdr;
while(!p.End()) {
if(p.Tag("what")) {
hdr = p.ReadText();
p.SkipEnd();
}
else
if(p.Tag(s_stack)) {
while(!p.End()) {
String ip = "?";
String obj;
String fn;
String dir;
String file;
String line;
if(p.Tag(s_frame)) {
bool hasdir = false;
bool hasfile = false;
bool hasline = false;
bool haspos = false;
while(!p.End()) {
if(p.Tag(s_ip)) {
ip = p.ReadText();
p.SkipEnd();
}
else
if(p.Tag(s_obj)) {
obj = p.ReadText();
p.SkipEnd();
haspos = true;
}
else
if(p.Tag(s_fn)) {
fn = p.ReadText();
p.SkipEnd();
}
else
if(p.Tag(s_dir)) {
dir = p.ReadText();
p.SkipEnd();
hasdir = true;
}
else
if(p.Tag(s_file)) {
file = p.ReadText();
p.SkipEnd();
hasfile = true;
}
else
if(p.Tag(s_line)) {
line = p.ReadText();
p.SkipEnd();
hasline = true;
}
else
p.Skip();
}
}
else
p.Skip();
}
}
else
p.Skip();
}
}
else
p.Skip();
}
}
catch(XmlError) {
}
}
}
void PC()
{
String txt = LoadFile(GetHomeDirFile("test.xml"));
for(int I = 0; I < 100; I++) {
RTIMING("Parse char *");
XmlParser p(txt);
while(!p.IsTag())
p.Skip();
try {
p.PassTag("valgrindoutput");
while(!p.End()) {
if(p.Tag("error")) {
String hdr;
while(!p.End()) {
if(p.Tag("what")) {
hdr = p.ReadText();
p.SkipEnd();
}
else
if(p.Tag("stack")) {
while(!p.End()) {
String ip = "?";
String obj;
String fn;
String dir;
String file;
String line;
if(p.Tag("frame")) {
bool hasdir = false;
bool hasfile = false;
bool hasline = false;
bool haspos = false;
while(!p.End()) {
if(p.Tag("ip")) {
ip = p.ReadText();
p.SkipEnd();
}
else
if(p.Tag("obj")) {
obj = p.ReadText();
p.SkipEnd();
haspos = true;
}
else
if(p.Tag("fn")) {
fn = p.ReadText();
p.SkipEnd();
}
else
if(p.Tag("dir")) {
dir = p.ReadText();
p.SkipEnd();
hasdir = true;
}
else
if(p.Tag("file")) {
file = p.ReadText();
p.SkipEnd();
hasfile = true;
}
else
if(p.Tag("line")) {
line = p.ReadText();
p.SkipEnd();
hasline = true;
}
else
p.Skip();
}
}
else
p.Skip();
}
}
else
p.Skip();
}
}
else
p.Skip();
}
}
catch(XmlError) {
}
}
}
CONSOLE_APP_MAIN
{
PS();
PC();
}