/xmlbench/trunk

To get this branch, use:
bzr branch http://darksoft.org/webbzr/xmlbench/trunk

« back to all changes in this revision

Viewing changes to xmlgen/xmark.h

  • Committer: Suren A. Chilingaryan
  • Date: 2009-02-16 09:27:17 UTC
  • Revision ID: csa@dside.dyndns.org-20090216092717-wipyvaaw2srxhgns
Initial import

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#include "unix.h"
 
2
 
 
3
#define xmark_kb_size 20000
 
4
#define xmark_kb_min  250000
 
5
 
 
6
static char *xmarkBuffer=NULL, *xmarkBufferPtr=NULL;
 
7
static void *xmarkSave=NULL;
 
8
 
 
9
int xmark_printf(FILE *stream, const char *format, ...) {
 
10
    va_list ap;
 
11
    va_start(ap, format);
 
12
    xmarkBufferPtr+=vsprintf(xmarkBufferPtr,format,ap);
 
13
    va_end(ap);
 
14
}
 
15
 
 
16
static ObjDesc *xmarkRoot;
 
17
 
 
18
char *xmark_init(unsigned long size) {
 
19
    scale_factor=(1.*size/10000);
 
20
    if (correction) scale_factor=correction(scale_factor);
 
21
 
 
22
    xmlprintf=xmark_printf;
 
23
    
 
24
    size*=xmark_kb_size;
 
25
    if (size<xmark_kb_min) size=xmark_kb_min;
 
26
    xmarkBuffer = (char*)malloc(size*sizeof(char));
 
27
    xmarkSave = malloc(sizeof(objs));
 
28
    if ((!xmarkBuffer)||(!xmarkSave)) {
 
29
        fprintf(stderr,"Can't allocate memory!");
 
30
        exit(1);
 
31
    }
 
32
    memcpy(xmarkSave,objs,sizeof(objs));
 
33
 
 
34
    return xmarkBuffer;
 
35
}
 
36
 
 
37
void xmark_deinit() {
 
38
    if (xmarkBuffer) free(xmarkBuffer);
 
39
    if (xmarkSave) free(xmarkSave);
 
40
}
 
41
 
 
42
int xmark(int dtd) {
 
43
    int document_type;
 
44
    if (dtd) document_type=2;
 
45
    else document_type=1;
 
46
    xmarkBufferPtr=xmarkBuffer;
 
47
 
 
48
    memcpy(objs,xmarkSave,sizeof(objs));
 
49
    AlignObjs();
 
50
    xmarkRoot=objs+1;
 
51
 
 
52
    FixSetSize(xmarkRoot);
 
53
    ClearFlags();
 
54
    FixReferenceSets(xmarkRoot);
 
55
    ClearFlags();
 
56
    CheckRecursion();
 
57
    ClearFlags();
 
58
    if (InitHook) InitHook();
 
59
    Preamble(document_type);
 
60
    GenSubtree(xmarkRoot);
 
61
    return xmarkBufferPtr-xmarkBuffer;
 
62
}
 
63
 
 
64
/* main are here, 
 
65
Functions: Usage should be removed 
 
66
Symbols: Debug should be removed
 
67
*/