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);
}
|