xmlreaderimpl/support/StxXercesInputStream.cpp
author Jan Vrany <jan.vrany@fit.cvut.cz>
Mon, 25 Jan 2016 16:35:43 +0000
changeset 298 9696f76605bd
parent 296 ea3dbc023c80
permissions -rw-r--r--
Added C:\MINGW\MSYS\1.0\bin to PATH when building expat. Some systems have it installed there (such as SWING Jenkins servers)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
78
56c9c2a8ee0d Xerces support refactored
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
/*
56c9c2a8ee0d Xerces support refactored
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
 * StxXercesInputStream.cpp
56c9c2a8ee0d Xerces support refactored
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
 *
56c9c2a8ee0d Xerces support refactored
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
 *  Created on: Dec 8, 2008
56c9c2a8ee0d Xerces support refactored
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
 *      Author: honza
56c9c2a8ee0d Xerces support refactored
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
 */
56c9c2a8ee0d Xerces support refactored
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
56c9c2a8ee0d Xerces support refactored
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
#include "string.h"
56c9c2a8ee0d Xerces support refactored
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
#include "assert.h"
56c9c2a8ee0d Xerces support refactored
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
#include "StxXercesInputStream.hpp"
56c9c2a8ee0d Xerces support refactored
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
56c9c2a8ee0d Xerces support refactored
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
#define CHUNK_SIZE 4096
56c9c2a8ee0d Xerces support refactored
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
#define MIN(a,b) (a < b ? a : b)
56c9c2a8ee0d Xerces support refactored
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
56c9c2a8ee0d Xerces support refactored
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
StxXercesInputStream::StxXercesInputStream(OBJ stx_stream) {
91
760f18117fee Added PSVI handling to XercesCXMLParser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    16
 
78
56c9c2a8ee0d Xerces support refactored
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
  stx_stream_refcell = (OBJ*)malloc(sizeof ( OBJ*) );
56c9c2a8ee0d Xerces support refactored
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
  *stx_stream_refcell = stx_stream;
56c9c2a8ee0d Xerces support refactored
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
  __ADD_REFCELL_CPP(stx_stream_refcell);
56c9c2a8ee0d Xerces support refactored
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
56c9c2a8ee0d Xerces support refactored
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
  /* Create buffer (instance of ByteArray) */
56c9c2a8ee0d Xerces support refactored
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
  stx_buffer_refcell = (OBJ*)malloc(sizeof ( OBJ*) );
56c9c2a8ee0d Xerces support refactored
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
  *stx_buffer_refcell = __BYTEARRAY_UNINITIALIZED_NEW_INT_CPP(CHUNK_SIZE);  
56c9c2a8ee0d Xerces support refactored
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
  __ADD_REFCELL_CPP(stx_buffer_refcell);
56c9c2a8ee0d Xerces support refactored
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
56c9c2a8ee0d Xerces support refactored
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
56c9c2a8ee0d Xerces support refactored
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
  /* Create nextBytes:into: symbol */
56c9c2a8ee0d Xerces support refactored
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
  stx_symbol_refcell = (OBJ*)malloc(sizeof ( OBJ*) );
56c9c2a8ee0d Xerces support refactored
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
  *stx_symbol_refcell = __MKSYMBOL_CPP("nextBytes:into:");
56c9c2a8ee0d Xerces support refactored
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
  __ADD_REFCELL_CPP(stx_symbol_refcell);
56c9c2a8ee0d Xerces support refactored
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
56c9c2a8ee0d Xerces support refactored
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
  
56c9c2a8ee0d Xerces support refactored
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
}
56c9c2a8ee0d Xerces support refactored
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
91
760f18117fee Added PSVI handling to XercesCXMLParser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    35
StxXercesInputStream::~StxXercesInputStream() {  
78
56c9c2a8ee0d Xerces support refactored
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
  __REMOVE_REFCELL_CPP ( stx_stream_refcell );
56c9c2a8ee0d Xerces support refactored
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    37
  free ( stx_stream_refcell );
56c9c2a8ee0d Xerces support refactored
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    38
  
56c9c2a8ee0d Xerces support refactored
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
  /* Free buffer */
56c9c2a8ee0d Xerces support refactored
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
  __REMOVE_REFCELL_CPP ( stx_buffer_refcell );
56c9c2a8ee0d Xerces support refactored
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
  free ( stx_buffer_refcell );
56c9c2a8ee0d Xerces support refactored
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
56c9c2a8ee0d Xerces support refactored
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
  /* Free nextBytes:into: symbol */
56c9c2a8ee0d Xerces support refactored
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
  __REMOVE_REFCELL_CPP ( stx_symbol_refcell );
56c9c2a8ee0d Xerces support refactored
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
  free ( stx_symbol_refcell );
56c9c2a8ee0d Xerces support refactored
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
}
56c9c2a8ee0d Xerces support refactored
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
56c9c2a8ee0d Xerces support refactored
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
unsigned int StxXercesInputStream::curPos() const {
56c9c2a8ee0d Xerces support refactored
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
  //TODO
56c9c2a8ee0d Xerces support refactored
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
  return 0;
56c9c2a8ee0d Xerces support refactored
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
}
56c9c2a8ee0d Xerces support refactored
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
56c9c2a8ee0d Xerces support refactored
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
91
760f18117fee Added PSVI handling to XercesCXMLParser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    54
unsigned int StxXercesInputStream::readBytes(XMLByte* const toFill, const unsigned int maxToRead) {  
78
56c9c2a8ee0d Xerces support refactored
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
  OBJ bytesRead;
56c9c2a8ee0d Xerces support refactored
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
  bytesRead = __SSEND2_CPP(*stx_stream_refcell, *stx_symbol_refcell, 0, __MKINT_CPP(MIN(CHUNK_SIZE, maxToRead)), *stx_buffer_refcell);
56c9c2a8ee0d Xerces support refactored
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
  strncpy((char*)toFill, (char*)(__ByteArrayInstPtr(*stx_buffer_refcell)->ba_element), __intVal(bytesRead));  
56c9c2a8ee0d Xerces support refactored
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
  return __intVal(bytesRead);
56c9c2a8ee0d Xerces support refactored
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
}
56c9c2a8ee0d Xerces support refactored
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
56c9c2a8ee0d Xerces support refactored
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
// takto implementovana by mela postacovat
56c9c2a8ee0d Xerces support refactored
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
const XMLCh* StxXercesInputStream::getContentType() const {
56c9c2a8ee0d Xerces support refactored
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
  return 0;
56c9c2a8ee0d Xerces support refactored
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
}