/xmlbench/trunk

To get this branch, use:
bzr branch http://darksoft.org/webbzr/xmlbench/trunk
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
#include <stdio.h>
#include <sys/time.h>

#include <iostream>
//-#include <strstream>
#include <fstream>
#include <sstream>

#include "include/util/reader.h"
#include "include/util/filereader.h"
#include "include/util/memoryreader.h"
#include "include/common/defines.h"
#include "include/common/types.h"
#include "include/common/source.h"
#include "include/common/exception.h"
#include "include/xpa/dom/dom.h"

#include "include/xslta/transform.h"
#include "include/util/memorywriter.h"
#include "include/util/filewriter.h"
#include "include/util/stdoutwriter.h"


//#define PARSE_DOM /* Slower */

#include "tools2.h"

INTEL_XML_NAMESPACE_USE
INTEL_XML_UTIL_NAMESPACE_USE
INTEL_XML_PARSE_DOM_NAMESPACE_USE
INTEL_XML_PACKAGE_NAMESPACE_USE_ALL


DOMImplementationFactory* domfactory;
DOMImplementation* domimpl;
DOMParser* parser;

TransformFactory* factory;
StreamSource    *stylesheet;
Templates*      templates;
Transformer*    transformer;

MemoryReader *xslbuffer;

#define outsize MAXOUTSIZE
char *out;


void initXML(struct TestData *td) {
    domfactory = DOMImplementationFactory::newInstance();
    domimpl = domfactory->getDOMImplementation();
    parser = domimpl->createDOMParser();
//    out = new char[outsize+1];
}

void initXML_Transformation(struct TestData *td) {
    factory = TransformFactory::newInstance();

    xslbuffer= MemoryReader::createMemoryReader(td->xsl,td->xsllen);
    stylesheet = new StreamSource(xslbuffer);

    templates = factory->newTemplates(stylesheet);
    transformer = templates->newTransformer();
}

void releaseXML(struct TestData *td) {
//    delete out;
    
    templates->releaseTransformer(transformer);
    factory->releaseTemplates(templates);
    delete xslbuffer;
    delete stylesheet;
    domimpl->releaseDOMParser(parser);
    DOMImplementationFactory::releaseInstance(domfactory);
}



void parseXML(struct TestData *td, unsigned long iter) {
    Document* doc = NULL;

    MemoryReader *buffer= MemoryReader::createMemoryReader(td->xml,td->xmllen);
    StreamSource *ss = new StreamSource(buffer);
    doc = parser->parse(ss);
    delete ss;
    delete buffer;

    domimpl->releaseDocument(doc);
}

void transformXML(struct TestData *td, unsigned long iter) {
    MemoryReader *buffer= MemoryReader::createMemoryReader(td->xml,td->xmllen);
    StreamSource *ss = new StreamSource(buffer);

    MemoryWriter *output = MemoryWriter::createMemoryWriter(out, outsize);
    StreamResult *os = new StreamResult(output);
    transformer->transform(ss, os);

    MemoryReader::releaseMemoryReader(buffer);
    delete ss;

//    if (iter==td->iterations) puts(out);

    delete os;
    MemoryWriter::releaseMemoryWriter(output);
}

int main(int argc, char *argv[]) {
    return Test(argc,argv);
}