Giter VIP home page Giter VIP logo

drampower's Issues

Improvements to the intermediate stats generation.

Intermediate stats generation sequence:

Code:

void libDRAMPower::calcWindowEnergy(int64_t timestamp)
{
  doCommand(MemCommand::NOP, 0, timestamp);
  updateCounters(false, timestamp);
  mpm.power_calc(memSpec, counters, includeIoAndTermination);
  clearCounters(timestamp);
}
  1. Send a NOP command.
  2. Update counters using "false" (it's not the end of the simulation).
  3. Calculate energy.
  4. Reset internal counters.

-- Send a NOP command.

This seems to be a workaround (because of the NOP).

It computes the clock cycles since the last command considering the memory state (all banks precharged, at least one bank active, self-refresh, power-down). For this reason the code has a special treatment (with approx. 13 if-else statements) that seems to partially replicate some command handlers. The aim is to mitigate imprecision in the final energy / power.

It seems that NOP could be replaced by an END command with the same effect. If this assumption holds then it makes the code ambiguous.

In my opinion, NOPs should be treated as NOPs. If a NOP has to be sent for some reason (e.g., NOPs and DES are required for DDR4 power saving mode), it should be treated as a NOP and its I/O energy should be considered.

END should be renamed to reflect its function or removed. Maybe we don't need a special command to trigger the computation of residual clock cycles.

Even the same if-else chain that currently treats END and NOP commands could be a function. Such function could be called after evaluate() when generating statistics.

Reduce casting by changing unsigned to signed variables

Unsigned variables are evil, since they won't play with signed variables without casting. Without proper overflow/underflow checks they cannot be used in subtractions properly and there are issues with the max() function. And all you get in return is 1 extra bit worth if range, which you probably don't want to use anyway, since it puts you dangerously close to the overflow limit.

In short, our lives will be easier if we use only signed variables, and we should make sure they are 64-bit wide (int64_t) where required.

Energy and power measurements for WideIO

Hi,
While running the WideIO memspec for an OpenMP application like gesummv in Polybench benchmark, I noticed that DRAMPower WideIO memspec takes relatively more time to compute compared to other memspecs like DDR and HBM. In a larger trace file, when I run this command -

./drampower -m memspecs/JEDEC_256Mb_WIDEIO_SDR-200_128bit.xml -t ../gesummv/WideIO-config/std/* -r 

I get the following error :

../../cmd_traces/gesummv/WideIO-config/std/cmd-trace-chan-0-rank-0.cmdtrace
terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc
Aborted
../../cmd_traces/gesummv/WideIO-config/std/cmd-trace-chan-1-rank-0.cmdtrace
terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc
Aborted
../../cmd_traces/gesummv/WideIO-config/std/cmd-trace-chan-2-rank-0.cmdtrace
terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc
Aborted
../../cmd_traces/gesummv/WideIO-config/std/cmd-trace-chan-3-rank-0.cmdtrace
terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc
Aborted

Is there any flags that I have disabled and need to enable? Need some guidance, thank you

single bank power/energy simulation

Hi, I'm trying to do near memory computing at bank level parallelism and trying to simulate the power and energy of single bank. I've made the command trace to only bank 0. I'm trying to modify the nbrOfBanks to 1 in memspecs and found that there's no difference at the output when it's set to default 8 (I'm using LPDDR3 1600). Is there anything wrong here, or it's not supposed to be use like this? Thanks!

Does DRAMPower works on MAC OS ?

I have cloned the latest code and tried to run it my Macbook, but it failed to compile. Following is the error message:

bogon:DRAMPower shawnless$ make
g++ -O -W -pedantic-errors -Wextra -Werror -Wformat -Wformat-nonliteral -Wpointer-arith -Wcast-align -Wconversion -Wall -Werror -g   -std=c++0x -MMD -MF src/CmdScheduler.d -iquote src -o src/CmdScheduler.o -c src/CmdScheduler.cc
src/CmdScheduler.cc:87:16: error: implicit conversion changes signedness: 'long long' to 'size_type' (aka 'unsigned long')
      [-Werror,-Wsign-conversion]
  ACT.resize(2 * memSpec.memArchSpec.nbrOfBanks);
  ~~~        ~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/CmdScheduler.cc:88:17: error: implicit conversion changes signedness: 'long long' to 'size_type' (aka 'unsigned long')
      [-Werror,-Wsign-conversion]
  RDWR.resize(2 * memSpec.memArchSpec.nbrOfBanks);

My OS version is:

bogon:DRAMPower shawnless$ uname -a 
Darwin bogon 15.3.0 Darwin Kernel Version 15.3.0: Thu Dec 10 18:40:58 PST 2015; root:xnu-3248.30.4~1/RELEASE_X86_64 x86_64

and my g++ version is:

bogon:DRAMPower shawnless$ g++ --version
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 7.0.2 (clang-700.1.81)
Target: x86_64-apple-darwin15.3.0
Thread model: posix

Any suggestion ? Thanks a lot in advance.

Compare memory types to enum and not string representation

Instead of

memoryType == MemorySpecification::getMemoryTypeFromName("LPDDR2")

We can do:

memoryType == MemoryType::LPDDR2

Which is shorter and easier to read. It is also a micro optimization (int vs string compare), but that is not the main goal.

I/O Energy

I'm would like to know if DRAMPower include the DRAM I/O energy, or just the DRAM die?

Review clock cycle counters when exiting self-refresh.

The idea here is to review the counters of cock cycles in self-refresh power-up mode for all possible self-refresh exit contexts.

Both scenarios with and without DLL should be considered.

Other counters like "latest_pre_cycle" (which are assigned in the same context) should also be considered in the analysis.

Some code:

if (memSpec.memArchSpec.dll == false) {
   spup_cycles     += memSpec.memTimingSpec.XS - spup_pre;
   latest_pre_cycle = max(timestamp, timestamp +
                        memSpec.memTimingSpec.XS - spup_pre -
                        memSpec.memTimingSpec.RP);
} else {
  spup_cycles     += memSpec.memTimingSpec.XSDLL -
                     memSpec.memTimingSpec.RCD - spup_pre;
  latest_pre_cycle = max(timestamp, timestamp +
                     memSpec.memTimingSpec.XSDLL - memSpec.memTimingSpec.RCD -
                     spup_pre - memSpec.memTimingSpec.RP);
}

Additionally, there are useful comments in the pull-request #39.

It is also important to evaluate the relevance of these counters (spup_cycles and latest_pre_cycle). It seems that they are used to calculate some energy components which do not make part of the total trace / pattern energy (total_energy).
E.g.:
latest_pre_cycle --> idle_pre_update() --> idlecycles_pre --> energy.idle_energy_pre --> cout

The removal of irrelevant code chunks / variables (if any) would be beneficial to the code maintainability.

Command-grouping should be part of DRAMPower core

Moving the command-buffering (i.e. batching x-commands before sending it to the analysis) out of the library-specific code sounds like a good plan, since both the standalone executable and the library could benefit from this functionality, and thus it should probably be shared.

That is, assuming we still need it after we refactor CommandAnalysis.cc.

Reduce set of power-down / power-up commands

We currently have separate meta-commands for fast/slow precharge/active power down, which is quite different from the simple PDN / PDX commands that a DRAM supports. An effort can be made to reduce the number of different power-down commands we support:

  • A real DRAM selects the fast/slow mode at boot time. We can emulate this by adding a new boolean parameter to select fast or slow mode.
  • We can (and do) keep the state of the memory (active or precharged) already anyway, so there is no need to encode it in the command. This gets rid of the _F and _S distinction.

To summarize, we can remove these power-down meta-commands:
PDN_F_PRE
PDN_S_PRE
PDN_F_ACT
PDN_S_ACT
PUP_PRE
PUP_ACT

  • and add:
    PDN,
    PUP

And use the bank state to go into precharge or active power down.

The motivation behind this is to stick closer to the type of commands a dram controller actually issues, and reduce the command set.

DDR4 and LPDDR3 issues regarding two Voltage Domains and Termination

Hi,

I discovered that DDR4 is not listet in the function hasTwoVoltageDomains in MemorySpecification.h

 bool hasTwoVoltageDomains() const
  {
    return val == LPDDR ||
           val == LPDDR2 ||
           val == LPDDR3 ||
           val == WIDEIO_SDR;
  }

Furthermore, LPDDR3 has also termination and is not listed here:

  bool hasTermination() const
  {
    return val == DDR2 ||
           val == DDR3 ||
           val == DDR4;
  }

Is that assumption correct? Or do I get something wrong?

Regards
Matthias

make clean should remove all object / archives / dependency files

When switching between branches or pulling new versions, you want to rely on make clean to give you a clean slate. At the moment it will leave behind object files belonging to deleted / moved source files you might have compiled for a previous version.

An rm -rf *.o-like structure should work.

MemPowerSpec iddX specification effort reduction

MemPowerSpec iddX specification

This issue is related to a discussion that took place in an earlier email thread, so I'll copy-paste some relevant bits:

For the non-DDR2/3 memory types, the definition of the currents as defined in the vendor data sheets is not the same as the values we need to plug into the MemPowerSpec. This makes it hard to define new memspecs and to verify that the ones we currently have are correct.

Goal

It should be easy to create the spec (since that is a manual process) and the burden of calculating intermediate values or remapping variable names should sit in the tool / parser. The way it's done now is very error-prone, difficult to check and time consuming.

I would vote for a usage scheme like this:

User: [1) User reads datasheet 2) Inserts required currents as defined in the datasheet into memspec] --> Program: [ 3) uses given currents and memory type to derive model input variables, 4) Model uses variables and performs generic calculations]

This separates the concern of specification and modeling, and provides a cleaner and more intuitive interface for the users. Similarly, duplicating IDD2P0 into IDD2P1 for other memories could be done in this intermediate layer, if the model really requires this.

Datasheet to MemPowerSpec mappings

Feel free to extend this with other memories. It would also be good to have the list of required currents per memory type.

LPDDR2 mapping

This is what I think the mapping from LPDDR2 datasheet currents to MemPowerSpec variables is (written in the xml comments):

    <parameter id="idd0"    type="double" value="20.0"  /> <!-- IDD01 -->
    <parameter id="idd02"   type="double" value="53.0"  /> <!-- IDD02 = IDD02 + IDD0,in = 47 + 6 = 53 -->
    <parameter id="idd2n"   type="double" value="1.7"   /> <!-- IDD2N1 -->
    <parameter id="idd2n2"  type="double" value="21.0"  /> <!-- IDD2N2 + IDD2N,in = 15 + 6 -->
    <parameter id="idd2p0"  type="double" value="0.5"   /> <!-- IDD2P1 -->
    <parameter id="idd2p02" type="double" value="1.7"   /> <!-- IDD2P2 + IDD2P,in = 1600 + 100 = 1.7 -->
    <parameter id="idd2p1"  type="double" value="0.5"   /> <!-- IDD2PS1 -->
    <parameter id="idd2p12" type="double" value="1.7"   /> <!-- IDD2PS2 + IDD2PS,in = 1600 + 100 = 1.7 -->
    <parameter id="idd3n"   type="double" value="1.2"   /> <!-- IDD3N1 -->
    <parameter id="idd3n2"  type="double" value="29.0"  /> <!-- IDD3N2 + IDD3N,in = 23 + 6 = 29 -->
    <parameter id="idd3p0"  type="double" value="1.2"   /> <!-- IDD3P1 -->
    <parameter id="idd3p02" type="double" value="4.12"  /> <!-- IDD3P2 + IDD3P,in = 4 + 0.12 = 4.12 -->
    <parameter id="idd3p1"  type="double" value="1.2"   /> <!-- IDD3PS1 (?) -->
    <parameter id="idd3p12" type="double" value="4.12"  /> <!-- IDD3PS2 + IDD3PS,in = 4 + 0.12 = 4.12 -->
    <parameter id="idd4r"   type="double" value="5.0"   /> <!-- IDD4R1 -->
    <parameter id="idd4r2"  type="double" value="206.0" /> <!-- IDD4R2 + IDD4R,in = 200 + 6 = 206 -->
    <parameter id="idd4w"   type="double" value="10.0"  /> <!-- IDD4W1 -->
    <parameter id="idd4w2"  type="double" value="203.0" /> <!-- IDD4W2 + IDD4W,in = 175 + 28 = 203 -->
    <parameter id="idd5"    type="double" value="15.0"  /> <!-- IDD51 -->
    <parameter id="idd52"   type="double" value="136.0" /> <!-- IDD52 + IDD5,in = 130 + 6 = 136 -->
    <parameter id="idd6"    type="double" value="1.2"   /> <!-- IDD61 -->
    <parameter id="idd62"   type="double" value="2.6"   /> <!-- IDD62 + IDD6,in = 2.5 + 0.1 = 2.6 -->
    <parameter id="vdd"     type="double" value="1.8"   /> <!-- VDD1 -->
    <parameter id="vdd2"    type="double" value="1.2"   /> <!-- VDD2 -->

DDR2 mapping

# Format: xml value = datasheet value
idd0 = IDD0
idd2n = IDD2N
idd2p0 = IDD2P
idd2p1 = IDD2P
idd3n = IDD3N
idd3p0 = IDD3Ps
idd3p1 = IDD3Pf
idd4r = IDD4R
idd4w = IDD4W
idd5 = IDD5
idd6 = IDD6
vdd = VDD

energy of the memory

Hello

When I increase the clkMhz of the memory from memspecs, I noticed that the energy output is decrease. I think increasing the clkMhz shoud increase the energy.

Why increasing the clkMhz , decrease the energy ?

energy
frequency

Operator == for MemCommand ignores command timestamp

The definition of operator == for MemCommand ignores the timestamp. So it is possible that the wrong command is matched and acted upon when going over all command list.
For example. src/CommandAnalysis.cc, at line number 195 does this
list.erase(find(list.begin(), list.end(), cmd));
This ends up deleting the first command with the same bank and type as the actual intended deletion target..

Cherry-picking from my parallel CMake efforts

Perhaps somewhat unfortunate, but in my DRAMPower branch I've had CMake build support since 2017. I just spotted that you have adopted CMake yourself, but obviously our CMakeLists.txt files differ. There's a few features in my branch related to CMake that may be interesting to forward-port if you wish. These include:

  • Targets for a static library (.a) for both libdrampower and libdrampower_xml, and for the CLI tool,
  • Install directives for these libraries, such that CMake projects depending on DRAMPower can link using
    find_package(drampower REQUIRED)
    link_directories(${drampower_DIR})
    target_link_libraries([target] drampower)
  • An install directive for the XML files, for which the installation directory can be customised (using ccmake)
  • A new method that allows querying the install path of the XML files, such that external projects linking against DRAMPower do not need to hard-code this path when invoking the memspec parser.

Do you think any (or all) of these features are worth forward-porting to upstream?

Unused function isDDRFamily()

This function defined in MemorySpecification.h is not called anywhere in the DRAMPower source code. We could remove it if it is truly not required.

bool isDDRFamily() const
{
return val == DDR2 ||
val == DDR3 ||
val == DDR4;
}

Change the energy units from pJ to nJ to prevent overflow

For longer traces pJ might not be the best base to work from. An adaptive system would be great, although I don't think that we actually need (or have) the pJ-level accuracy, so switching to nJ completely is probably fine as well.

Unsafe reference to vector element

There's an instance of an unsafe reference to a vector element in src/CommandAnalysis.cc, line 176.
MemCommand& cmd = list[I];

We're pushing into the vector as well after this, which can possibly invalidate the reference and cause a SEGFAULT.

Memspec type attribute is not required

The type attribute (i.e. int, double, etc) assigned to parameters in memspec files is not used. Locally I have made its parsing optional but kept the dtd file compatible. I think we should remove it completely from the parser.

How to generate the .trace file?

According to my understanding, DRAMpower can calculate the power of a series commands in .trace file. Then , how can I generate my own .trace file? For example, I want to run a .py file and I want to calculate how much power DRAM costs when running this .py file. Could anyone tell me what should I do?

Get power of individual banks

I want to implement this, because I did this also in DRAMSys some time ago. However, I want to discuss with you how we can do this the best.

error in make file

Hello
When I install the DRAMPower-4.0 which is the latest version and build it using make -j4 it shows me like this.
How I can solve it?

John@John-VirtualBox:~/DRAMPower-4.0$ make -j4
g++ -O -W -pedantic-errors -Wextra -Werror -Wformat -Wformat-nonliteral -Wpointer-arith -Wcast-align -Wconversion -Wall -Werror -g -std=c++98 -MMD -MF src/xmlparser/MemSpecParser.d -iquote src -o src/xmlparser/MemSpecParser.o -c src/xmlparser/MemSpecParser.cc
In file included from /usr/include/c++/9/cstdint:35,
from /usr/include/xercesc/util/Xerces_autoconf_config.hpp:92,
from /usr/include/xercesc/util/XercesDefs.hpp:46,
from /usr/include/xercesc/sax2/ContentHandler.hpp:25,
from /usr/include/xercesc/sax2/DefaultHandler.hpp:25,
from src/xmlparser/XMLHandler.h:41,
from src/xmlparser/MemSpecParser.h:43,
from src/xmlparser/MemSpecParser.cc:38:
/usr/include/c++/9/bits/c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support must be enabled with the -std=c++11 or -std=gnu++11 compiler options.
32 | #error This file requires compiler and library support
| ^~~~~
In file included from /usr/include/xercesc/util/XercesDefs.hpp:46,
from /usr/include/xercesc/sax2/ContentHandler.hpp:25,
from /usr/include/xercesc/sax2/DefaultHandler.hpp:25,
from src/xmlparser/XMLHandler.h:41,
from src/xmlparser/MemSpecParser.h:43,
from src/xmlparser/MemSpecParser.cc:38:
/usr/include/xercesc/util/Xerces_autoconf_config.hpp:120:9: error: ‘char16_t’ does not name a type
120 | typedef XERCES_XMLCH_T XMLCh;
| ^~~~~~~~~~~~~~
In file included from /usr/include/xercesc/sax2/DefaultHandler.hpp:25,
from src/xmlparser/XMLHandler.h:41,
from src/xmlparser/MemSpecParser.h:43,
from src/xmlparser/MemSpecParser.cc:38:
/usr/include/xercesc/sax2/ContentHandler.hpp:105:17: error: ‘XMLCh’ does not name a type
105 | const XMLCh* const chars
| ^~~~~
/usr/include/xercesc/sax2/ContentHandler.hpp:139:9: error: ‘XMLCh’ does not name a type
139 | const XMLCh* const uri,
| ^~~~~
/usr/include/xercesc/sax2/ContentHandler.hpp:140:9: error: ‘XMLCh’ does not name a type
140 | const XMLCh* const localname,
| ^~~~~
/usr/include/xercesc/sax2/ContentHandler.hpp:141:9: error: ‘XMLCh’ does not name a type
141 | const XMLCh* const qname
| ^~~~~
/usr/include/xercesc/sax2/ContentHandler.hpp:169:17: error: ‘XMLCh’ does not name a type
169 | const XMLCh* const chars
| ^~~~~
/usr/include/xercesc/sax2/ContentHandler.hpp:192:17: error: ‘XMLCh’ does not name a type
192 | const XMLCh* const target
| ^~~~~
/usr/include/xercesc/sax2/ContentHandler.hpp:193:17: error: ‘XMLCh’ does not name a type
193 | , const XMLCh* const data
| ^~~~~
/usr/include/xercesc/sax2/ContentHandler.hpp:263:17: error: ‘XMLCh’ does not name a type
263 | const XMLCh* const uri,
| ^~~~~
/usr/include/xercesc/sax2/ContentHandler.hpp:264:17: error: ‘XMLCh’ does not name a type
264 | const XMLCh* const localname,
| ^~~~~
/usr/include/xercesc/sax2/ContentHandler.hpp:265:17: error: ‘XMLCh’ does not name a type
265 | const XMLCh* const qname,
| ^~~~~
/usr/include/xercesc/sax2/ContentHandler.hpp:283:9: error: ‘XMLCh’ does not name a type
283 | const XMLCh* const prefix,
| ^~~~~
/usr/include/xercesc/sax2/ContentHandler.hpp:284:9: error: ‘XMLCh’ does not name a type
284 | const XMLCh* const uri
| ^~~~~
/usr/include/xercesc/sax2/ContentHandler.hpp:300:9: error: ‘XMLCh’ does not name a type
300 | const XMLCh* const prefix
| ^~~~~
/usr/include/xercesc/sax2/ContentHandler.hpp:326:9: error: ‘XMLCh’ does not name a type
326 | const XMLCh* const name
| ^~~~~
In file included from /usr/include/xercesc/sax2/DefaultHandler.hpp:26,
from src/xmlparser/XMLHandler.h:41,
from src/xmlparser/MemSpecParser.h:43,
from src/xmlparser/MemSpecParser.cc:38:
/usr/include/xercesc/sax2/LexicalHandler.hpp:81:17: error: ‘XMLCh’ does not name a type
81 | const XMLCh* const chars
| ^~~~~
/usr/include/xercesc/sax2/LexicalHandler.hpp:117:35: error: ‘XMLCh’ does not name a type
117 | virtual void endEntity (const XMLCh* const name) = 0;
| ^~~~~
/usr/include/xercesc/sax2/LexicalHandler.hpp:144:17: error: ‘XMLCh’ does not name a type
144 | const XMLCh* const name
| ^~~~~
/usr/include/xercesc/sax2/LexicalHandler.hpp:145:19: error: ‘XMLCh’ does not name a type
145 | , const XMLCh* const publicId
| ^~~~~
/usr/include/xercesc/sax2/LexicalHandler.hpp:146:19: error: ‘XMLCh’ does not name a type
146 | , const XMLCh* const systemId
| ^~~~~
/usr/include/xercesc/sax2/LexicalHandler.hpp:159:37: error: ‘XMLCh’ does not name a type
159 | virtual void startEntity (const XMLCh* const name) = 0;
| ^~~~~
In file included from /usr/include/xercesc/sax2/DefaultHandler.hpp:27,
from src/xmlparser/XMLHandler.h:41,
from src/xmlparser/MemSpecParser.h:43,
from src/xmlparser/MemSpecParser.cc:38:
/usr/include/xercesc/sax2/DeclHandler.hpp:85:17: error: ‘XMLCh’ does not name a type
85 | const XMLCh* const name
| ^~~~~
/usr/include/xercesc/sax2/DeclHandler.hpp:86:17: error: ‘XMLCh’ does not name a type
86 | , const XMLCh* const model
| ^~~~~
In file included from /usr/include/xercesc/sax2/DefaultHandler.hpp:27,
from src/xmlparser/XMLHandler.h:41,
from src/xmlparser/MemSpecParser.h:43,
from src/xmlparser/MemSpecParser.cc:38:
/usr/include/xercesc/sax2/DeclHandler.hpp:108:17: error: ‘XMLCh’ does not name a type
108 | const XMLCh* const eName
| ^~~~~
/usr/include/xercesc/sax2/DeclHandler.hpp:109:17: error: ‘XMLCh’ does not name a type
109 | , const XMLCh* const aName
| ^~~~~
/usr/include/xercesc/sax2/DeclHandler.hpp:110:17: error: ‘XMLCh’ does not name a type
110 | , const XMLCh* const type
| ^~~~~
/usr/include/xercesc/sax2/DeclHandler.hpp:111:17: error: ‘XMLCh’ does not name a type
111 | , const XMLCh* const mode
| ^~~~~
/usr/include/xercesc/sax2/DeclHandler.hpp:112:17: error: ‘XMLCh’ does not name a type
112 | , const XMLCh* const value
| ^~~~~
/usr/include/xercesc/sax2/DeclHandler.hpp:129:17: error: ‘XMLCh’ does not name a type
129 | const XMLCh* const name
| ^~~~~
/usr/include/xercesc/sax2/DeclHandler.hpp:130:17: error: ‘XMLCh’ does not name a type
130 | , const XMLCh* const value
| ^~~~~
/usr/include/xercesc/sax2/DeclHandler.hpp:147:17: error: ‘XMLCh’ does not name a type
147 | const XMLCh* const name
| ^~~~~
/usr/include/xercesc/sax2/DeclHandler.hpp:148:17: error: ‘XMLCh’ does not name a type
148 | , const XMLCh* const publicId
| ^~~~~
/usr/include/xercesc/sax2/DeclHandler.hpp:149:17: error: ‘XMLCh’ does not name a type
149 | , const XMLCh* const systemId
| ^~~~~
In file included from /usr/include/xercesc/sax2/DefaultHandler.hpp:28,
from src/xmlparser/XMLHandler.h:41,
from src/xmlparser/MemSpecParser.h:43,
from src/xmlparser/MemSpecParser.cc:38:
/usr/include/xercesc/sax/DTDHandler.hpp:100:17: error: ‘XMLCh’ does not name a type
100 | const XMLCh* const name
| ^~~~~
/usr/include/xercesc/sax/DTDHandler.hpp:101:17: error: ‘XMLCh’ does not name a type
101 | , const XMLCh* const publicId
| ^~~~~
/usr/include/xercesc/sax/DTDHandler.hpp:102:17: error: ‘XMLCh’ does not name a type
102 | , const XMLCh* const systemId
| ^~~~~
/usr/include/xercesc/sax/DTDHandler.hpp:129:17: error: ‘XMLCh’ does not name a type
129 | const XMLCh* const name
| ^~~~~
/usr/include/xercesc/sax/DTDHandler.hpp:130:17: error: ‘XMLCh’ does not name a type
130 | , const XMLCh* const publicId
| ^~~~~
/usr/include/xercesc/sax/DTDHandler.hpp:131:17: error: ‘XMLCh’ does not name a type
131 | , const XMLCh* const systemId
| ^~~~~
/usr/include/xercesc/sax/DTDHandler.hpp:132:17: error: ‘XMLCh’ does not name a type
132 | , const XMLCh* const notationName
| ^~~~~
In file included from /usr/include/xercesc/sax2/DefaultHandler.hpp:29,
from src/xmlparser/XMLHandler.h:41,
from src/xmlparser/MemSpecParser.h:43,
from src/xmlparser/MemSpecParser.cc:38:
/usr/include/xercesc/sax/EntityResolver.hpp:145:17: error: ‘XMLCh’ does not name a type
145 | const XMLCh* const publicId
| ^~~~~
/usr/include/xercesc/sax/EntityResolver.hpp:146:17: error: ‘XMLCh’ does not name a type
146 | , const XMLCh* const systemId
| ^~~~~
In file included from /usr/include/xercesc/util/XMLExceptMsgs.hpp:7,
from /usr/include/xercesc/util/XMLException.hpp:27,
from /usr/include/xercesc/util/ArrayIndexOutOfBoundsException.hpp:25,
from /usr/include/xercesc/util/BaseRefVectorOf.hpp:25,
from /usr/include/xercesc/util/XMLString.hpp:25,
from /usr/include/xercesc/sax/SAXException.hpp:25,
from /usr/include/xercesc/sax/SAXParseException.hpp:25,
from /usr/include/xercesc/sax2/DefaultHandler.hpp:31,
from src/xmlparser/XMLHandler.h:41,
from src/xmlparser/MemSpecParser.h:43,
from src/xmlparser/MemSpecParser.cc:38:
/usr/include/xercesc/dom/DOMError.hpp:129:19: error: ‘XMLCh’ does not name a type
129 | virtual const XMLCh* getMessage() const = 0;
| ^~~~~
/usr/include/xercesc/dom/DOMError.hpp:159:19: error: ‘XMLCh’ does not name a type
159 | virtual const XMLCh* getType() const = 0;
| ^~~~~
In file included from /usr/include/xercesc/util/XMLException.hpp:28,
from /usr/include/xercesc/util/ArrayIndexOutOfBoundsException.hpp:25,
from /usr/include/xercesc/util/BaseRefVectorOf.hpp:25,
from /usr/include/xercesc/util/XMLString.hpp:25,
from /usr/include/xercesc/sax/SAXException.hpp:25,
from /usr/include/xercesc/sax/SAXParseException.hpp:25,
from /usr/include/xercesc/sax2/DefaultHandler.hpp:31,
from src/xmlparser/XMLHandler.h:41,
from src/xmlparser/MemSpecParser.h:43,
from src/xmlparser/MemSpecParser.cc:38:
/usr/include/xercesc/util/XMLUni.hpp:52:18: error: ‘XMLCh’ does not name a type
52 | static const XMLCh fgAnyString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:53:18: error: ‘XMLCh’ does not name a type
53 | static const XMLCh fgAttListString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:54:18: error: ‘XMLCh’ does not name a type
54 | static const XMLCh fgCommentString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:55:18: error: ‘XMLCh’ does not name a type
55 | static const XMLCh fgCDATAString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:56:18: error: ‘XMLCh’ does not name a type
56 | static const XMLCh fgDefaultString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:57:18: error: ‘XMLCh’ does not name a type
57 | static const XMLCh fgDocTypeString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:58:18: error: ‘XMLCh’ does not name a type
58 | static const XMLCh fgEBCDICEncodingString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:59:18: error: ‘XMLCh’ does not name a type
59 | static const XMLCh fgElemString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:60:18: error: ‘XMLCh’ does not name a type
60 | static const XMLCh fgEmptyString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:61:18: error: ‘XMLCh’ does not name a type
61 | static const XMLCh fgEncodingString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:62:18: error: ‘XMLCh’ does not name a type
62 | static const XMLCh fgEntitString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:63:18: error: ‘XMLCh’ does not name a type
63 | static const XMLCh fgEntityString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:64:18: error: ‘XMLCh’ does not name a type
64 | static const XMLCh fgEntitiesString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:65:18: error: ‘XMLCh’ does not name a type
65 | static const XMLCh fgEnumerationString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:66:18: error: ‘XMLCh’ does not name a type
66 | static const XMLCh fgExceptDomain[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:67:18: error: ‘XMLCh’ does not name a type
67 | static const XMLCh fgFixedString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:68:18: error: ‘XMLCh’ does not name a type
68 | static const XMLCh fgIBM037EncodingString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:69:18: error: ‘XMLCh’ does not name a type
69 | static const XMLCh fgIBM037EncodingString2[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:70:18: error: ‘XMLCh’ does not name a type
70 | static const XMLCh fgIBM1047EncodingString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:71:18: error: ‘XMLCh’ does not name a type
71 | static const XMLCh fgIBM1047EncodingString2[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:72:18: error: ‘XMLCh’ does not name a type
72 | static const XMLCh fgIBM1140EncodingString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:73:18: error: ‘XMLCh’ does not name a type
73 | static const XMLCh fgIBM1140EncodingString2[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:74:18: error: ‘XMLCh’ does not name a type
74 | static const XMLCh fgIBM1140EncodingString3[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:75:18: error: ‘XMLCh’ does not name a type
75 | static const XMLCh fgIBM1140EncodingString4[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:76:18: error: ‘XMLCh’ does not name a type
76 | static const XMLCh fgIESString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:77:18: error: ‘XMLCh’ does not name a type
77 | static const XMLCh fgIDString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:78:18: error: ‘XMLCh’ does not name a type
78 | static const XMLCh fgIDRefString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:79:18: error: ‘XMLCh’ does not name a type
79 | static const XMLCh fgIDRefsString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:80:18: error: ‘XMLCh’ does not name a type
80 | static const XMLCh fgImpliedString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:81:18: error: ‘XMLCh’ does not name a type
81 | static const XMLCh fgIgnoreString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:82:18: error: ‘XMLCh’ does not name a type
82 | static const XMLCh fgIncludeString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:83:18: error: ‘XMLCh’ does not name a type
83 | static const XMLCh fgISO88591EncodingString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:84:18: error: ‘XMLCh’ does not name a type
84 | static const XMLCh fgISO88591EncodingString2[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:85:18: error: ‘XMLCh’ does not name a type
85 | static const XMLCh fgISO88591EncodingString3[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:86:18: error: ‘XMLCh’ does not name a type
86 | static const XMLCh fgISO88591EncodingString4[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:87:18: error: ‘XMLCh’ does not name a type
87 | static const XMLCh fgISO88591EncodingString5[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:88:18: error: ‘XMLCh’ does not name a type
88 | static const XMLCh fgISO88591EncodingString6[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:89:18: error: ‘XMLCh’ does not name a type
89 | static const XMLCh fgISO88591EncodingString7[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:90:18: error: ‘XMLCh’ does not name a type
90 | static const XMLCh fgISO88591EncodingString8[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:91:18: error: ‘XMLCh’ does not name a type
91 | static const XMLCh fgISO88591EncodingString9[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:92:18: error: ‘XMLCh’ does not name a type
92 | static const XMLCh fgISO88591EncodingString10[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:93:18: error: ‘XMLCh’ does not name a type
93 | static const XMLCh fgISO88591EncodingString11[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:94:18: error: ‘XMLCh’ does not name a type
94 | static const XMLCh fgISO88591EncodingString12[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:95:18: error: ‘XMLCh’ does not name a type
95 | static const XMLCh fgLocalHostString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:96:18: error: ‘XMLCh’ does not name a type
96 | static const XMLCh fgNoString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:97:18: error: ‘XMLCh’ does not name a type
97 | static const XMLCh fgNotationString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:98:18: error: ‘XMLCh’ does not name a type
98 | static const XMLCh fgNDATAString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:99:18: error: ‘XMLCh’ does not name a type
99 | static const XMLCh fgNmTokenString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:100:18: error: ‘XMLCh’ does not name a type
100 | static const XMLCh fgNmTokensString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:101:18: error: ‘XMLCh’ does not name a type
101 | static const XMLCh fgPCDATAString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:102:18: error: ‘XMLCh’ does not name a type
102 | static const XMLCh fgPIString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:103:18: error: ‘XMLCh’ does not name a type
103 | static const XMLCh fgPubIDString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:104:18: error: ‘XMLCh’ does not name a type
104 | static const XMLCh fgRefString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:105:18: error: ‘XMLCh’ does not name a type
105 | static const XMLCh fgRequiredString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:106:18: error: ‘XMLCh’ does not name a type
106 | static const XMLCh fgStandaloneString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:107:18: error: ‘XMLCh’ does not name a type
107 | static const XMLCh fgVersion1[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:108:18: error: ‘XMLCh’ does not name a type
108 | static const XMLCh fgVersion1_0[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:109:18: error: ‘XMLCh’ does not name a type
109 | static const XMLCh fgVersion1_1[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:110:18: error: ‘XMLCh’ does not name a type
110 | static const XMLCh fgSysIDString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:111:18: error: ‘XMLCh’ does not name a type
111 | static const XMLCh fgUnknownURIName[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:112:18: error: ‘XMLCh’ does not name a type
112 | static const XMLCh fgUCS4EncodingString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:113:18: error: ‘XMLCh’ does not name a type
113 | static const XMLCh fgUCS4EncodingString2[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:114:18: error: ‘XMLCh’ does not name a type
114 | static const XMLCh fgUCS4EncodingString3[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:115:18: error: ‘XMLCh’ does not name a type
115 | static const XMLCh fgUCS4EncodingString4[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:116:18: error: ‘XMLCh’ does not name a type
116 | static const XMLCh fgUCS4EncodingString5[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:117:18: error: ‘XMLCh’ does not name a type
117 | static const XMLCh fgUCS4BEncodingString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:118:18: error: ‘XMLCh’ does not name a type
118 | static const XMLCh fgUCS4BEncodingString2[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:119:18: error: ‘XMLCh’ does not name a type
119 | static const XMLCh fgUCS4LEncodingString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:120:18: error: ‘XMLCh’ does not name a type
120 | static const XMLCh fgUCS4LEncodingString2[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:121:18: error: ‘XMLCh’ does not name a type
121 | static const XMLCh fgUSASCIIEncodingString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:122:18: error: ‘XMLCh’ does not name a type
122 | static const XMLCh fgUSASCIIEncodingString2[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:123:18: error: ‘XMLCh’ does not name a type
123 | static const XMLCh fgUSASCIIEncodingString3[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:124:18: error: ‘XMLCh’ does not name a type
124 | static const XMLCh fgUSASCIIEncodingString4[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:125:18: error: ‘XMLCh’ does not name a type
125 | static const XMLCh fgUTF8EncodingString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:126:18: error: ‘XMLCh’ does not name a type
126 | static const XMLCh fgUTF8EncodingString2[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:127:18: error: ‘XMLCh’ does not name a type
127 | static const XMLCh fgUTF16EncodingString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:128:18: error: ‘XMLCh’ does not name a type
128 | static const XMLCh fgUTF16EncodingString2[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:129:18: error: ‘XMLCh’ does not name a type
129 | static const XMLCh fgUTF16EncodingString3[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:130:18: error: ‘XMLCh’ does not name a type
130 | static const XMLCh fgUTF16EncodingString4[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:131:18: error: ‘XMLCh’ does not name a type
131 | static const XMLCh fgUTF16EncodingString5[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:132:18: error: ‘XMLCh’ does not name a type
132 | static const XMLCh fgUTF16EncodingString6[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:133:18: error: ‘XMLCh’ does not name a type
133 | static const XMLCh fgUTF16EncodingString7[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:134:18: error: ‘XMLCh’ does not name a type
134 | static const XMLCh fgUTF16BEncodingString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:135:18: error: ‘XMLCh’ does not name a type
135 | static const XMLCh fgUTF16BEncodingString2[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:136:18: error: ‘XMLCh’ does not name a type
136 | static const XMLCh fgUTF16LEncodingString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:137:18: error: ‘XMLCh’ does not name a type
137 | static const XMLCh fgUTF16LEncodingString2[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:138:18: error: ‘XMLCh’ does not name a type
138 | static const XMLCh fgVersionString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:139:18: error: ‘XMLCh’ does not name a type
139 | static const XMLCh fgValidityDomain[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:140:18: error: ‘XMLCh’ does not name a type
140 | static const XMLCh fgWin1252EncodingString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:141:18: error: ‘XMLCh’ does not name a type
141 | static const XMLCh fgXMLChEncodingString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:142:18: error: ‘XMLCh’ does not name a type
142 | static const XMLCh fgXMLDOMMsgDomain[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:143:18: error: ‘XMLCh’ does not name a type
143 | static const XMLCh fgXMLString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:144:18: error: ‘XMLCh’ does not name a type
144 | static const XMLCh fgXMLStringSpace[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:145:18: error: ‘XMLCh’ does not name a type
145 | static const XMLCh fgXMLStringHTab[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:146:18: error: ‘XMLCh’ does not name a type
146 | static const XMLCh fgXMLStringCR[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:147:18: error: ‘XMLCh’ does not name a type
147 | static const XMLCh fgXMLStringLF[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:148:18: error: ‘XMLCh’ does not name a type
148 | static const XMLCh fgXMLStringSpaceU[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:149:18: error: ‘XMLCh’ does not name a type
149 | static const XMLCh fgXMLStringHTabU[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:150:18: error: ‘XMLCh’ does not name a type
150 | static const XMLCh fgXMLStringCRU[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:151:18: error: ‘XMLCh’ does not name a type
151 | static const XMLCh fgXMLStringLFU[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:152:18: error: ‘XMLCh’ does not name a type
152 | static const XMLCh fgXMLDeclString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:153:18: error: ‘XMLCh’ does not name a type
153 | static const XMLCh fgXMLDeclStringSpace[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:154:18: error: ‘XMLCh’ does not name a type
154 | static const XMLCh fgXMLDeclStringHTab[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:155:18: error: ‘XMLCh’ does not name a type
155 | static const XMLCh fgXMLDeclStringLF[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:156:18: error: ‘XMLCh’ does not name a type
156 | static const XMLCh fgXMLDeclStringCR[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:157:18: error: ‘XMLCh’ does not name a type
157 | static const XMLCh fgXMLDeclStringSpaceU[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:158:18: error: ‘XMLCh’ does not name a type
158 | static const XMLCh fgXMLDeclStringHTabU[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:159:18: error: ‘XMLCh’ does not name a type
159 | static const XMLCh fgXMLDeclStringLFU[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:160:18: error: ‘XMLCh’ does not name a type
160 | static const XMLCh fgXMLDeclStringCRU[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:161:18: error: ‘XMLCh’ does not name a type
161 | static const XMLCh fgXMLNSString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:162:18: error: ‘XMLCh’ does not name a type
162 | static const XMLCh fgXMLNSColonString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:163:18: error: ‘XMLCh’ does not name a type
163 | static const XMLCh fgXMLNSURIName[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:164:18: error: ‘XMLCh’ does not name a type
164 | static const XMLCh fgXMLErrDomain[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:165:18: error: ‘XMLCh’ does not name a type
165 | static const XMLCh fgXMLURIName[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:166:18: error: ‘XMLCh’ does not name a type
166 | static const XMLCh fgInfosetURIName[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:167:18: error: ‘XMLCh’ does not name a type
167 | static const XMLCh fgYesString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:168:18: error: ‘XMLCh’ does not name a type
168 | static const XMLCh fgZeroLenString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:169:18: error: ‘XMLCh’ does not name a type
169 | static const XMLCh fgDTDEntityString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:170:18: error: ‘XMLCh’ does not name a type
170 | static const XMLCh fgAmp[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:171:18: error: ‘XMLCh’ does not name a type
171 | static const XMLCh fgLT[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:172:18: error: ‘XMLCh’ does not name a type
172 | static const XMLCh fgGT[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:173:18: error: ‘XMLCh’ does not name a type
173 | static const XMLCh fgQuot[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:174:18: error: ‘XMLCh’ does not name a type
174 | static const XMLCh fgApos[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:175:18: error: ‘XMLCh’ does not name a type
175 | static const XMLCh fgWFXMLScanner[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:176:18: error: ‘XMLCh’ does not name a type
176 | static const XMLCh fgIGXMLScanner[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:177:18: error: ‘XMLCh’ does not name a type
177 | static const XMLCh fgSGXMLScanner[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:178:18: error: ‘XMLCh’ does not name a type
178 | static const XMLCh fgDGXMLScanner[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:179:18: error: ‘XMLCh’ does not name a type
179 | static const XMLCh fgXSAXMLScanner[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:180:18: error: ‘XMLCh’ does not name a type
180 | static const XMLCh fgCDataStart[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:181:18: error: ‘XMLCh’ does not name a type
181 | static const XMLCh fgCDataEnd[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:184:18: error: ‘XMLCh’ does not name a type
184 | static const XMLCh fgArrayIndexOutOfBoundsException_Name[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:185:18: error: ‘XMLCh’ does not name a type
185 | static const XMLCh fgEmptyStackException_Name[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:186:18: error: ‘XMLCh’ does not name a type
186 | static const XMLCh fgIllegalArgumentException_Name[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:187:18: error: ‘XMLCh’ does not name a type
187 | static const XMLCh fgInvalidCastException_Name[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:188:18: error: ‘XMLCh’ does not name a type
188 | static const XMLCh fgIOException_Name[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:189:18: error: ‘XMLCh’ does not name a type
189 | static const XMLCh fgNoSuchElementException_Name[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:190:18: error: ‘XMLCh’ does not name a type
190 | static const XMLCh fgNullPointerException_Name[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:191:18: error: ‘XMLCh’ does not name a type
191 | static const XMLCh fgXMLPlatformUtilsException_Name[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:192:18: error: ‘XMLCh’ does not name a type
192 | static const XMLCh fgRuntimeException_Name[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:193:18: error: ‘XMLCh’ does not name a type
193 | static const XMLCh fgTranscodingException_Name[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:194:18: error: ‘XMLCh’ does not name a type
194 | static const XMLCh fgUnexpectedEOFException_Name[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:195:18: error: ‘XMLCh’ does not name a type
195 | static const XMLCh fgUnsupportedEncodingException_Name[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:196:18: error: ‘XMLCh’ does not name a type
196 | static const XMLCh fgUTFDataFormatException_Name[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:197:18: error: ‘XMLCh’ does not name a type
197 | static const XMLCh fgNetAccessorException_Name[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:198:18: error: ‘XMLCh’ does not name a type
198 | static const XMLCh fgMalformedURLException_Name[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:199:18: error: ‘XMLCh’ does not name a type
199 | static const XMLCh fgNumberFormatException_Name[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:200:18: error: ‘XMLCh’ does not name a type
200 | static const XMLCh fgParseException_Name[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:201:18: error: ‘XMLCh’ does not name a type
201 | static const XMLCh fgInvalidDatatypeFacetException_Name[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:202:18: error: ‘XMLCh’ does not name a type
202 | static const XMLCh fgInvalidDatatypeValueException_Name[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:203:18: error: ‘XMLCh’ does not name a type
203 | static const XMLCh fgSchemaDateTimeException_Name[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:204:18: error: ‘XMLCh’ does not name a type
204 | static const XMLCh fgXPathException_Name[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:205:18: error: ‘XMLCh’ does not name a type
205 | static const XMLCh fgXSerializationException_Name[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:206:18: error: ‘XMLCh’ does not name a type
206 | static const XMLCh fgXMLXIncludeException_Name[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:209:18: error: ‘XMLCh’ does not name a type
209 | static const XMLCh fgNegINFString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:210:18: error: ‘XMLCh’ does not name a type
210 | static const XMLCh fgNegZeroString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:211:18: error: ‘XMLCh’ does not name a type
211 | static const XMLCh fgPosZeroString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:212:18: error: ‘XMLCh’ does not name a type
212 | static const XMLCh fgPosINFString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:213:18: error: ‘XMLCh’ does not name a type
213 | static const XMLCh fgNaNString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:214:18: error: ‘XMLCh’ does not name a type
214 | static const XMLCh fgEString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:215:18: error: ‘XMLCh’ does not name a type
215 | static const XMLCh fgZeroString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:216:18: error: ‘XMLCh’ does not name a type
216 | static const XMLCh fgNullString[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:219:18: error: ‘XMLCh’ does not name a type
219 | static const XMLCh fgXercesDynamic[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:220:18: error: ‘XMLCh’ does not name a type
220 | static const XMLCh fgXercesSchema[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:221:18: error: ‘XMLCh’ does not name a type
221 | static const XMLCh fgXercesSchemaFullChecking[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:222:18: error: ‘XMLCh’ does not name a type
222 | static const XMLCh fgXercesLoadSchema[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:223:18: error: ‘XMLCh’ does not name a type
223 | static const XMLCh fgXercesIdentityConstraintChecking[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:224:18: error: ‘XMLCh’ does not name a type
224 | static const XMLCh fgXercesSchemaExternalSchemaLocation[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:225:18: error: ‘XMLCh’ does not name a type
225 | static const XMLCh fgXercesSchemaExternalNoNameSpaceSchemaLocation[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:226:18: error: ‘XMLCh’ does not name a type
226 | static const XMLCh fgXercesSecurityManager[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:227:18: error: ‘XMLCh’ does not name a type
227 | static const XMLCh fgXercesLoadExternalDTD[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:228:18: error: ‘XMLCh’ does not name a type
228 | static const XMLCh fgXercesContinueAfterFatalError[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:229:18: error: ‘XMLCh’ does not name a type
229 | static const XMLCh fgXercesValidationErrorAsFatal[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:230:18: error: ‘XMLCh’ does not name a type
230 | static const XMLCh fgXercesUserAdoptsDOMDocument[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:231:18: error: ‘XMLCh’ does not name a type
231 | static const XMLCh fgXercesCacheGrammarFromParse[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:232:18: error: ‘XMLCh’ does not name a type
232 | static const XMLCh fgXercesUseCachedGrammarInParse[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:233:18: error: ‘XMLCh’ does not name a type
233 | static const XMLCh fgXercesScannerName[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:234:18: error: ‘XMLCh’ does not name a type
234 | static const XMLCh fgXercesParserUseDocumentFromImplementation[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:235:18: error: ‘XMLCh’ does not name a type
235 | static const XMLCh fgXercesCalculateSrcOfs[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:236:18: error: ‘XMLCh’ does not name a type
236 | static const XMLCh fgXercesStandardUriConformant[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:237:18: error: ‘XMLCh’ does not name a type
237 | static const XMLCh fgXercesDOMHasPSVIInfo[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:238:18: error: ‘XMLCh’ does not name a type
238 | static const XMLCh fgXercesGenerateSyntheticAnnotations[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:239:18: error: ‘XMLCh’ does not name a type
239 | static const XMLCh fgXercesValidateAnnotations[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:240:18: error: ‘XMLCh’ does not name a type
240 | static const XMLCh fgXercesIgnoreCachedDTD[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:241:18: error: ‘XMLCh’ does not name a type
241 | static const XMLCh fgXercesIgnoreAnnotations[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:242:18: error: ‘XMLCh’ does not name a type
242 | static const XMLCh fgXercesDisableDefaultEntityResolution[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:243:18: error: ‘XMLCh’ does not name a type
243 | static const XMLCh fgXercesSkipDTDValidation[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:244:18: error: ‘XMLCh’ does not name a type
244 | static const XMLCh fgXercesEntityResolver[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:245:18: error: ‘XMLCh’ does not name a type
245 | static const XMLCh fgXercesHandleMultipleImports[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:246:18: error: ‘XMLCh’ does not name a type
246 | static const XMLCh fgXercesDoXInclude[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:247:18: error: ‘XMLCh’ does not name a type
247 | static const XMLCh fgXercesLowWaterMark[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:250:18: error: ‘XMLCh’ does not name a type
250 | static const XMLCh fgSAX2CoreValidation[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:251:18: error: ‘XMLCh’ does not name a type
251 | static const XMLCh fgSAX2CoreNameSpaces[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:252:18: error: ‘XMLCh’ does not name a type
252 | static const XMLCh fgSAX2CoreNameSpacePrefixes[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:256:18: error: ‘XMLCh’ does not name a type
256 | static const XMLCh fgDOMCanonicalForm[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:257:18: error: ‘XMLCh’ does not name a type
257 | static const XMLCh fgDOMCDATASections[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:258:18: error: ‘XMLCh’ does not name a type
258 | static const XMLCh fgDOMComments[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:259:18: error: ‘XMLCh’ does not name a type
259 | static const XMLCh fgDOMCharsetOverridesXMLEncoding[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:260:18: error: ‘XMLCh’ does not name a type
260 | static const XMLCh fgDOMCheckCharacterNormalization[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:261:18: error: ‘XMLCh’ does not name a type
261 | static const XMLCh fgDOMDatatypeNormalization[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:262:18: error: ‘XMLCh’ does not name a type
262 | static const XMLCh fgDOMDisallowDoctype[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:263:18: error: ‘XMLCh’ does not name a type
263 | static const XMLCh fgDOMElementContentWhitespace[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:264:18: error: ‘XMLCh’ does not name a type
264 | static const XMLCh fgDOMErrorHandler[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:265:18: error: ‘XMLCh’ does not name a type
265 | static const XMLCh fgDOMEntities[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:266:18: error: ‘XMLCh’ does not name a type
266 | static const XMLCh fgDOMIgnoreUnknownCharacterDenormalization[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:267:18: error: ‘XMLCh’ does not name a type
267 | static const XMLCh fgDOMInfoset[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:268:18: error: ‘XMLCh’ does not name a type
268 | static const XMLCh fgDOMNamespaces[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:269:18: error: ‘XMLCh’ does not name a type
269 | static const XMLCh fgDOMNamespaceDeclarations[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:270:18: error: ‘XMLCh’ does not name a type
270 | static const XMLCh fgDOMNormalizeCharacters[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:271:18: error: ‘XMLCh’ does not name a type
271 | static const XMLCh fgDOMResourceResolver[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:272:18: error: ‘XMLCh’ does not name a type
272 | static const XMLCh fgDOMSchemaLocation[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:273:18: error: ‘XMLCh’ does not name a type
273 | static const XMLCh fgDOMSchemaType[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:274:18: error: ‘XMLCh’ does not name a type
274 | static const XMLCh fgDOMSplitCDATASections[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:275:18: error: ‘XMLCh’ does not name a type
275 | static const XMLCh fgDOMSupportedMediatypesOnly[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:276:18: error: ‘XMLCh’ does not name a type
276 | static const XMLCh fgDOMValidate[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:277:18: error: ‘XMLCh’ does not name a type
277 | static const XMLCh fgDOMValidateIfSchema[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:278:18: error: ‘XMLCh’ does not name a type
278 | static const XMLCh fgDOMWellFormed[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:280:18: error: ‘XMLCh’ does not name a type
280 | static const XMLCh fgDOMXMLSchemaType[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:281:18: error: ‘XMLCh’ does not name a type
281 | static const XMLCh fgDOMDTDType[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:285:18: error: ‘XMLCh’ does not name a type
285 | static const XMLCh fgDOMWRTCanonicalForm[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:286:18: error: ‘XMLCh’ does not name a type
286 | static const XMLCh fgDOMWRTDiscardDefaultContent[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:287:18: error: ‘XMLCh’ does not name a type
287 | static const XMLCh fgDOMWRTEntities[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:288:18: error: ‘XMLCh’ does not name a type
288 | static const XMLCh fgDOMWRTFormatPrettyPrint[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:289:18: error: ‘XMLCh’ does not name a type
289 | static const XMLCh fgDOMWRTNormalizeCharacters[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:290:18: error: ‘XMLCh’ does not name a type
290 | static const XMLCh fgDOMWRTSplitCdataSections[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:291:18: error: ‘XMLCh’ does not name a type
291 | static const XMLCh fgDOMWRTValidation[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:292:18: error: ‘XMLCh’ does not name a type
292 | static const XMLCh fgDOMWRTWhitespaceInElementContent[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:293:18: error: ‘XMLCh’ does not name a type
293 | static const XMLCh fgDOMWRTBOM[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:294:18: error: ‘XMLCh’ does not name a type
294 | static const XMLCh fgDOMXMLDeclaration[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:295:18: error: ‘XMLCh’ does not name a type
295 | static const XMLCh fgDOMWRTXercesPrettyPrint[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:298:18: error: ‘XMLCh’ does not name a type
298 | static const XMLCh fgXercescInterfacePSVITypeInfo[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:299:18: error: ‘XMLCh’ does not name a type
299 | static const XMLCh fgXercescInterfaceDOMDocumentTypeImpl[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:300:18: error: ‘XMLCh’ does not name a type
300 | static const XMLCh fgXercescInterfaceDOMDocumentImpl[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:301:18: error: ‘XMLCh’ does not name a type
301 | static const XMLCh fgXercescInterfaceDOMMemoryManager[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:307:18: error: ‘XMLCh’ does not name a type
307 | static const XMLCh fgDefErrMsg[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:310:18: error: ‘XMLCh’ does not name a type
310 | static const XMLCh fgValueZero[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:311:18: error: ‘XMLCh’ does not name a type
311 | static const XMLCh fgNegOne[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:312:18: error: ‘XMLCh’ does not name a type
312 | static const XMLCh fgValueOne[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:313:18: error: ‘XMLCh’ does not name a type
313 | static const XMLCh fgLongMaxInc[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:314:18: error: ‘XMLCh’ does not name a type
314 | static const XMLCh fgLongMinInc[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:315:18: error: ‘XMLCh’ does not name a type
315 | static const XMLCh fgIntMaxInc[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:316:18: error: ‘XMLCh’ does not name a type
316 | static const XMLCh fgIntMinInc[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:317:18: error: ‘XMLCh’ does not name a type
317 | static const XMLCh fgShortMaxInc[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:318:18: error: ‘XMLCh’ does not name a type
318 | static const XMLCh fgShortMinInc[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:319:18: error: ‘XMLCh’ does not name a type
319 | static const XMLCh fgByteMaxInc[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:320:18: error: ‘XMLCh’ does not name a type
320 | static const XMLCh fgByteMinInc[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:321:18: error: ‘XMLCh’ does not name a type
321 | static const XMLCh fgULongMaxInc[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:322:18: error: ‘XMLCh’ does not name a type
322 | static const XMLCh fgUIntMaxInc[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:323:18: error: ‘XMLCh’ does not name a type
323 | static const XMLCh fgUShortMaxInc[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:324:18: error: ‘XMLCh’ does not name a type
324 | static const XMLCh fgUByteMaxInc[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:325:18: error: ‘XMLCh’ does not name a type
325 | static const XMLCh fgLangPattern[];
| ^~~~~
/usr/include/xercesc/util/XMLUni.hpp:327:18: error: ‘XMLCh’ does not name a type
327 | static const XMLCh fgBooleanValueSpace[][8];
| ^~~~~
In file included from /usr/include/xercesc/util/XMLException.hpp:29,
from /usr/include/xercesc/util/ArrayIndexOutOfBoundsException.hpp:25,
from /usr/include/xercesc/util/BaseRefVectorOf.hpp:25,
from /usr/include/xercesc/util/XMLString.hpp:25,
from /usr/include/xercesc/sax/SAXException.hpp:25,
from /usr/include/xercesc/sax/SAXParseException.hpp:25,
from /usr/include/xercesc/sax2/DefaultHandler.hpp:31,
from src/xmlparser/XMLHandler.h:41,
from src/xmlparser/MemSpecParser.h:43,
from src/xmlparser/MemSpecParser.cc:38:
/usr/include/xercesc/framework/XMLErrorReporter.hpp:119:17: error: ‘XMLCh’ does not name a type
119 | , const XMLCh* const errDomain
| ^~~~~
/usr/include/xercesc/framework/XMLErrorReporter.hpp:121:17: error: ‘XMLCh’ does not name a type
121 | , const XMLCh* const errorText
| ^~~~~
/usr/include/xercesc/framework/XMLErrorReporter.hpp:122:17: error: ‘XMLCh’ does not name a type
122 | , const XMLCh* const systemId
| ^~~~~
/usr/include/xercesc/framework/XMLErrorReporter.hpp:123:17: error: ‘XMLCh’ does not name a type
123 | , const XMLCh* const publicId
| ^~~~~
In file included from /usr/include/xercesc/util/ArrayIndexOutOfBoundsException.hpp:25,
from /usr/include/xercesc/util/BaseRefVectorOf.hpp:25,
from /usr/include/xercesc/util/XMLString.hpp:25,
from /usr/include/xercesc/sax/SAXException.hpp:25,
from /usr/include/xercesc/sax/SAXParseException.hpp:25,
from /usr/include/xercesc/sax2/DefaultHandler.hpp:31,
from src/xmlparser/XMLHandler.h:41,
from src/xmlparser/MemSpecParser.h:43,
from src/xmlparser/MemSpecParser.cc:38:
/usr/include/xercesc/util/XMLException.hpp:54:19: error: ‘XMLCh’ does not name a type
54 | virtual const XMLCh* getType() const = 0;
| ^~~~~
/usr/include/xercesc/util/XMLException.hpp:61:11: error: ‘XMLCh’ does not name a type
61 | const XMLCh* getMessage() const;
| ^~~~~
/usr/include/xercesc/util/XMLException.hpp:98:17: error: ‘XMLCh’ does not name a type
98 | , const XMLCh* const text1
| ^~~~~
/usr/include/xercesc/util/XMLException.hpp:99:17: error: ‘XMLCh’ does not name a type
99 | , const XMLCh* const text2 = 0
| ^~~~~
/usr/include/xercesc/util/XMLException.hpp:100:17: error: ‘XMLCh’ does not name a type
100 | , const XMLCh* const text3 = 0
| ^~~~~
/usr/include/xercesc/util/XMLException.hpp:101:17: error: ‘XMLCh’ does not name a type
101 | , const XMLCh* const text4 = 0
| ^~~~~
/usr/include/xercesc/util/XMLException.hpp:131:5: error: ‘XMLCh’ does not name a type
131 | XMLCh* fMsg;
| ^~~~~
/usr/include/xercesc/util/XMLException.hpp:145:14: error: ‘XMLCh’ does not name a type
145 | inline const XMLCh* XMLException::getMessage() const
| ^~~~~
/usr/include/xercesc/util/ArrayIndexOutOfBoundsException.hpp:29:1: error: ‘XMLCh’ does not name a type
29 | MakeXMLException(ArrayIndexOutOfBoundsException, XMLUTIL_EXPORT)
| ^~~~~~~~~~~~~~~~
/usr/include/xercesc/util/ArrayIndexOutOfBoundsException.hpp:29:1: error: ‘XMLCh’ does not name a type
29 | MakeXMLException(ArrayIndexOutOfBoundsException, XMLUTIL_EXPORT)
| ^~~~~~~~~~~~~~~~
/usr/include/xercesc/util/ArrayIndexOutOfBoundsException.hpp:29:1: error: ‘XMLCh’ does not name a type
29 | MakeXMLException(ArrayIndexOutOfBoundsException, XMLUTIL_EXPORT)
| ^~~~~~~~~~~~~~~~
/usr/include/xercesc/util/ArrayIndexOutOfBoundsException.hpp:29:1: error: ‘XMLCh’ does not name a type
29 | MakeXMLException(ArrayIndexOutOfBoundsException, XMLUTIL_EXPORT)
| ^~~~~~~~~~~~~~~~
/usr/include/xercesc/util/ArrayIndexOutOfBoundsException.hpp:29:1: error: ‘XMLCh’ does not name a type
29 | MakeXMLException(ArrayIndexOutOfBoundsException, XMLUTIL_EXPORT)
| ^~~~~~~~~~~~~~~~
In file included from /usr/include/xercesc/util/PlatformUtils.hpp:29,
from /usr/include/xercesc/util/BaseRefVectorOf.hpp:27,
from /usr/include/xercesc/util/XMLString.hpp:25,
from /usr/include/xercesc/sax/SAXException.hpp:25,
from /usr/include/xercesc/sax/SAXParseException.hpp:25,
from /usr/include/xercesc/sax2/DefaultHandler.hpp:31,
from src/xmlparser/XMLHandler.h:41,
from src/xmlparser/MemSpecParser.h:43,
from src/xmlparser/MemSpecParser.cc:38:
/usr/include/xercesc/util/XMLFileMgr.hpp:41:43: error: ‘XMLCh’ does not name a type
41 | virtual FileHandle fileOpen(const XMLCh* path, bool toWrite, MemoryManager* const manager) = 0;
| ^~~~~
/usr/include/xercesc/util/XMLFileMgr.hpp:55:17: error: ‘XMLCh’ does not name a type
55 | virtual XMLCh* getFullPath(const XMLCh* const srcPath, MemoryManager* const manager) = 0;
| ^~~~~
/usr/include/xercesc/util/XMLFileMgr.hpp:56:17: error: ‘XMLCh’ does not name a type
56 | virtual XMLCh* getCurrentDirectory(MemoryManager* const manager) = 0;
| ^~~~~
/usr/include/xercesc/util/XMLFileMgr.hpp:57:40: error: ‘XMLCh’ does not name a type
57 | virtual bool isRelative(const XMLCh* const toCheck, MemoryManager* const manager) = 0;
| ^~~~~
In file included from /usr/include/xercesc/util/BaseRefVectorOf.hpp:27,
from /usr/include/xercesc/util/XMLString.hpp:25,
from /usr/include/xercesc/sax/SAXException.hpp:25,
from /usr/include/xercesc/sax/SAXParseException.hpp:25,
from /usr/include/xercesc/sax2/DefaultHandler.hpp:31,
from src/xmlparser/XMLHandler.h:41,
from src/xmlparser/MemSpecParser.h:43,
from src/xmlparser/MemSpecParser.cc:38:
/usr/include/xercesc/util/PlatformUtils.hpp:340:38: error: ‘XMLCh’ does not name a type
340 | static FileHandle openFile(const XMLCh* const fileName
| ^~~~~
/usr/include/xercesc/util/PlatformUtils.hpp:366:45: error: ‘XMLCh’ does not name a type
366 | static FileHandle openFileToWrite(const XMLCh* const fileName
| ^~~~~
/usr/include/xercesc/util/PlatformUtils.hpp:465:12: error: ‘XMLCh’ does not name a type
465 | static XMLCh* getFullPath
| ^~~~~
/usr/include/xercesc/util/PlatformUtils.hpp:484:12: error: ‘XMLCh’ does not name a type
484 | static XMLCh* getCurrentDirectory
| ^~~~~
/usr/include/xercesc/util/PlatformUtils.hpp:498:35: error: ‘XMLCh’ has not been declared
498 | static inline bool isAnySlash(XMLCh c);
| ^~~~~
/usr/include/xercesc/util/PlatformUtils.hpp:509:34: error: ‘XMLCh’ has not been declared
509 | static void removeDotSlash(XMLCh* const srcPath
| ^~~~~
/usr/include/xercesc/util/PlatformUtils.hpp:522:37: error: ‘XMLCh’ has not been declared
522 | static void removeDotDotSlash(XMLCh* const srcPath
| ^~~~~
/usr/include/xercesc/util/PlatformUtils.hpp:538:34: error: ‘XMLCh’ does not name a type
538 | static bool isRelative(const XMLCh* const toCheck
| ^~~~~
/usr/include/xercesc/util/PlatformUtils.hpp:561:12: error: ‘XMLCh’ does not name a type
561 | static XMLCh* weavePaths
| ^~~~~
/usr/include/xercesc/util/PlatformUtils.hpp:653:43: error: ‘XMLCh’ does not name a type
653 | static XMLMsgLoader* loadMsgSet(const XMLCh* const msgDomain);
| ^~~~~
/usr/include/xercesc/util/PlatformUtils.hpp:723:44: error: ‘XMLCh’ does not name a type
723 | static XMLMsgLoader* loadAMsgSet(const XMLCh* const msgDomain);
| ^~~~~
/usr/include/xercesc/util/PlatformUtils.hpp:755:40: error: ‘XMLCh’ has not been declared
755 | static int searchSlashDotDotSlash(XMLCh* const srcPath);
| ^~~~~
In file included from /usr/include/xercesc/util/ArrayIndexOutOfBoundsException.hpp:25,
from /usr/include/xercesc/util/BaseRefVectorOf.hpp:25,
from /usr/include/xercesc/util/XMLString.hpp:25,
from /usr/include/xercesc/sax/SAXException.hpp:25,
from /usr/include/xercesc/sax/SAXParseException.hpp:25,
from /usr/include/xercesc/sax2/DefaultHandler.hpp:31,
from src/xmlparser/XMLHandler.h:41,
from src/xmlparser/MemSpecParser.h:43,
from src/xmlparser/MemSpecParser.cc:38:
/usr/include/xercesc/util/PlatformUtils.hpp:774:1: error: ‘XMLCh’ does not name a type
774 | MakeXMLException(XMLPlatformUtilsException, XMLUTIL_EXPORT)
| ^~~~~~~~~~~~~~~~
/usr/include/xercesc/util/PlatformUtils.hpp:774:1: error: ‘XMLCh’ does not name a type
774 | MakeXMLException(XMLPlatformUtilsException, XMLUTIL_EXPORT)
| ^~~~~~~~~~~~~~~~
/usr/include/xercesc/util/PlatformUtils.hpp:774:1: error: ‘XMLCh’ does not name a type
774 | MakeXMLException(XMLPlatformUtilsException, XMLUTIL_EXPORT)
| ^~~~~~~~~~~~~~~~
/usr/include/xercesc/util/PlatformUtils.hpp:774:1: error: ‘XMLCh’ does not name a type
774 | MakeXMLException(XMLPlatformUtilsException, XMLUTIL_EXPORT)
| ^~~~~~~~~~~~~~~~
/usr/include/xercesc/util/PlatformUtils.hpp:774:1: error: ‘XMLCh’ does not name a type
774 | MakeXMLException(XMLPlatformUtilsException, XMLUTIL_EXPORT)
| ^~~~~~~~~~~~~~~~
In file included from /usr/include/xercesc/util/XMLString.hpp:26,
from /usr/include/xercesc/sax/SAXException.hpp:25,
from /usr/include/xercesc/sax/SAXParseException.hpp:25,
from /usr/include/xercesc/sax2/DefaultHandler.hpp:31,
from src/xmlparser/XMLHandler.h:41,
from src/xmlparser/MemSpecParser.h:43,
from src/xmlparser/MemSpecParser.cc:38:
/usr/include/xercesc/framework/XMLBuffer.hpp:112:23: error: ‘XMLCh’ does not name a type
112 | void append(const XMLCh toAppend)
| ^~~~~
/usr/include/xercesc/framework/XMLBuffer.hpp:120:24: error: ‘XMLCh’ does not name a type
120 | void append (const XMLCh* const chars, const XMLSize_t count)
| ^~~~~
/usr/include/xercesc/framework/XMLBuffer.hpp:134:24: error: ‘XMLCh’ does not name a type
134 | void append (const XMLCh* const chars)
| ^~~~~
/usr/include/xercesc/framework/XMLBuffer.hpp:149:21: error: ‘XMLCh’ does not name a type
149 | void set (const XMLCh* const chars, const XMLSize_t count)
| ^~~~~
/usr/include/xercesc/framework/XMLBuffer.hpp:155:21: error: ‘XMLCh’ does not name a type
155 | void set (const XMLCh* const chars)
| ^~~~~
/usr/include/xercesc/framework/XMLBuffer.hpp:162:11: error: ‘XMLCh’ does not name a type
162 | const XMLCh* getRawBuffer() const
| ^~~~~
/usr/include/xercesc/framework/XMLBuffer.hpp:168:5: error: ‘XMLCh’ does not name a type
168 | XMLCh* getRawBuffer()
| ^~~~~
/usr/include/xercesc/framework/XMLBuffer.hpp:253:5: error: ‘XMLCh’ does not name a type
253 | XMLCh* fBuffer;
| ^~~~~
/usr/include/xercesc/framework/XMLBuffer.hpp: In constructor ‘xercesc_3_2::XMLBuffer::XMLBuffer(XMLSize_t, xercesc_3_2::MemoryManager*)’:
/usr/include/xercesc/framework/XMLBuffer.hpp:62:11: error: class ‘xercesc_3_2::XMLBuffer’ does not have any field named ‘fBuffer’
62 | , fBuffer(0)
| ^~~~~~~
/usr/include/xercesc/framework/XMLBuffer.hpp:65:9: error: ‘fBuffer’ was not declared in this scope; did you mean ‘XMLBuffer’?
65 | fBuffer = (XMLCh*) manager->allocate((capacity+1) * sizeof(XMLCh)); //new XMLCh[fCapacity+1];
| ^~~~~~~
| XMLBuffer
/usr/include/xercesc/framework/XMLBuffer.hpp:65:20: error: ‘XMLCh’ was not declared in this scope
65 | fBuffer = (XMLCh*) manager->allocate((capacity+1) * sizeof(XMLCh)); //new XMLCh[fCapacity+1];
| ^~~~~
/usr/include/xercesc/framework/XMLBuffer.hpp:65:26: error: expected primary-expression before ‘)’ token
65 | fBuffer = (XMLCh*) manager->allocate((capacity+1) * sizeof(XMLCh)); //new XMLCh[fCapacity+1];
| ^
/usr/include/xercesc/framework/XMLBuffer.hpp: In destructor ‘xercesc_3_2::XMLBuffer::~XMLBuffer()’:
/usr/include/xercesc/framework/XMLBuffer.hpp:76:36: error: ‘fBuffer’ was not declared in this scope; did you mean ‘XMLBuffer’?
76 | fMemoryManager->deallocate(fBuffer); //delete [] fBuffer;
| ^~~~~~~
| XMLBuffer
/usr/include/xercesc/framework/XMLBuffer.hpp: In member function ‘void xercesc_3_2::XMLBuffer::append(int)’:
/usr/include/xercesc/framework/XMLBuffer.hpp:117:9: error: ‘fBuffer’ was not declared in this scope; did you mean ‘XMLBuffer’?
117 | fBuffer[fIndex++] = toAppend;
| ^~~~~~~
| XMLBuffer
/usr/include/xercesc/framework/XMLBuffer.hpp: In member function ‘void xercesc_3_2::XMLBuffer::append(const int*, XMLSize_t)’:
/usr/include/xercesc/framework/XMLBuffer.hpp:126:21: error: ‘fBuffer’ was not declared in this scope; did you mean ‘XMLBuffer’?
126 | memcpy(&fBuffer[fIndex], chars, count * sizeof(XMLCh));
| ^~~~~~~
| XMLBuffer
/usr/include/xercesc/framework/XMLBuffer.hpp:126:60: error: ‘XMLCh’ was not declared in this scope
126 | memcpy(&fBuffer[fIndex], chars, count * sizeof(XMLCh));
| ^~~~~
/usr/include/xercesc/framework/XMLBuffer.hpp: In member function ‘void xercesc_3_2::XMLBuffer::append(const int*)’:
/usr/include/xercesc/framework/XMLBuffer.hpp:144:21: error: ‘fBuffer’ was not declared in this scope; did you mean ‘XMLBuffer’?
144 | memcpy(&fBuffer[fIndex], chars, count * sizeof(XMLCh));
| ^~~~~~~
| XMLBuffer
/usr/include/xercesc/framework/XMLBuffer.hpp:144:60: error: ‘XMLCh’ was not declared in this scope
144 | memcpy(&fBuffer[fIndex], chars, count * sizeof(XMLCh));
| ^~~~~
In file included from /usr/include/xercesc/sax/SAXException.hpp:25,
from /usr/include/xercesc/sax/SAXParseException.hpp:25,
from /usr/include/xercesc/sax2/DefaultHandler.hpp:31,
from src/xmlparser/XMLHandler.h:41,
from src/xmlparser/MemSpecParser.h:43,
from src/xmlparser/MemSpecParser.cc:38:
/usr/include/xercesc/util/XMLString.hpp: At global scope:
/usr/include/xercesc/util/XMLString.hpp:87:17: error: ‘XMLCh’ has not been declared
87 | XMLCh* const target
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:88:17: error: ‘XMLCh’ does not name a type
88 | , const XMLCh* const src
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:123:17: error: ‘XMLCh’ does not name a type
123 | const XMLCh* const str1
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:124:17: error: ‘XMLCh’ does not name a type
124 | , const XMLCh* const str2
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:140:17: error: ‘XMLCh’ does not name a type
140 | const XMLCh* const str1
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:141:17: error: ‘XMLCh’ does not name a type
141 | , const XMLCh* const str2
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:181:17: error: ‘XMLCh’ does not name a type
181 | const XMLCh* const str1
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:182:17: error: ‘XMLCh’ does not name a type
182 | , const XMLCh* const str2
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:223:17: error: ‘XMLCh’ does not name a type
223 | const XMLCh* const str1
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:224:17: error: ‘XMLCh’ does not name a type
224 | , const XMLCh* const str2
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:259:17: error: ‘XMLCh’ does not name a type
259 | const XMLCh* const str1
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:260:17: error: ‘XMLCh’ does not name a type
260 | , const XMLCh* const str2
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:273:17: error: ‘XMLCh’ does not name a type
273 | const XMLCh* str1
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:274:17: error: ‘XMLCh’ does not name a type
274 | , const XMLCh* str2
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:288:17: error: ‘XMLCh’ does not name a type
288 | const XMLCh* str1
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:289:17: error: ‘XMLCh’ does not name a type
289 | , const XMLCh* str2
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:343:17: error: ‘XMLCh’ does not name a type
343 | const XMLCh* const str1
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:345:17: error: ‘XMLCh’ does not name a type
345 | , const XMLCh* const str2
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:379:17: error: ‘XMLCh’ does not name a type
379 | const XMLCh* const str1
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:381:17: error: ‘XMLCh’ does not name a type
381 | , const XMLCh* const str2
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:417:17: error: ‘XMLCh’ has not been declared
417 | XMLCh* const target
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:418:17: error: ‘XMLCh’ does not name a type
418 | , const XMLCh* const src
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:435:17: error: ‘XMLCh’ has not been declared
435 | XMLCh* const target
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:436:17: error: ‘XMLCh’ does not name a type
436 | , const XMLCh* const src
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:463:17: error: ‘XMLCh’ does not name a type
463 | const XMLCh* const toHash
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:477:17: error: ‘XMLCh’ does not name a type
477 | const XMLCh* const toHash
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:504:30: error: ‘XMLCh’ does not name a type
504 | static int indexOf(const XMLCh* const toSearch, const XMLCh ch);
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:504:59: error: ‘XMLCh’ does not name a type
504 | static int indexOf(const XMLCh* const toSearch, const XMLCh ch);
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:538:17: error: ‘XMLCh’ does not name a type
538 | const XMLCh* const toSearch
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:539:17: error: ‘XMLCh’ does not name a type
539 | , const XMLCh chToFind
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:562:34: error: ‘XMLCh’ does not name a type
562 | static int lastIndexOf(const XMLCh* const toSearch, const XMLCh ch);
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:562:63: error: ‘XMLCh’ does not name a type
562 | static int lastIndexOf(const XMLCh* const toSearch, const XMLCh ch);
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:575:15: error: ‘XMLCh’ does not name a type
575 | const XMLCh ch
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:576:17: error: ‘XMLCh’ does not name a type
576 | , const XMLCh* const toSearch
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:612:17: error: ‘XMLCh’ does not name a type
612 | const XMLCh* const toSearch
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:613:17: error: ‘XMLCh’ does not name a type
613 | , const XMLCh ch
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:628:17: error: ‘XMLCh’ has not been declared
628 | XMLCh* const targetStr
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:629:17: error: ‘XMLCh’ does not name a type
629 | , const XMLCh* const srcStr
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:666:17: error: ‘XMLCh’ has not been declared
666 | XMLCh* const targetStr
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:667:17: error: ‘XMLCh’ does not name a type
667 | , const XMLCh* const srcStr
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:685:17: error: ‘XMLCh’ has not been declared
685 | XMLCh* const targetStr
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:686:17: error: ‘XMLCh’ does not name a type
686 | , const XMLCh* const srcStr
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:720:12: error: ‘XMLCh’ does not name a type
720 | static XMLCh* replicate(const XMLCh* const toRep,
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:747:17: error: ‘XMLCh’ does not name a type
747 | const XMLCh* const toTest
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:748:17: error: ‘XMLCh’ does not name a type
748 | , const XMLCh* const prefix
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:776:17: error: ‘XMLCh’ does not name a type
776 | const XMLCh* const toTest
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:777:17: error: ‘XMLCh’ does not name a type
777 | , const XMLCh* const prefix
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:788:17: error: ‘XMLCh’ does not name a type
788 | const XMLCh* const toTest
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:789:17: error: ‘XMLCh’ does not name a type
789 | , const XMLCh* const suffix
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:801:18: error: ‘XMLCh’ does not name a type
801 | static const XMLCh* findAny
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:815:12: error: ‘XMLCh’ does not name a type
815 | static XMLCh* findAny
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:829:17: error: ‘XMLCh’ does not name a type
829 | const XMLCh* const toSearch
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:830:17: error: ‘XMLCh’ does not name a type
830 | , const XMLCh* const pattern
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:843:38: error: ‘XMLCh’ does not name a type
843 | static XMLSize_t stringLen(const XMLCh* const src);
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:852:39: error: ‘XMLCh’ does not name a type
852 | static bool isValidNOTATION(const XMLCh* const name
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:860:38: error: ‘XMLCh’ does not name a type
860 | static bool isValidEncName(const XMLCh* const name);
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:868:25: error: ‘XMLCh’ has not been declared
868 | static bool isAlpha(XMLCh const theChar);
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:875:25: error: ‘XMLCh’ has not been declared
875 | static bool isDigit(XMLCh const theChar);
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:882:28: error: ‘XMLCh’ has not been declared
882 | static bool isAlphaNum(XMLCh const theChar);
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:889:23: error: ‘XMLCh’ has not been declared
889 | static bool isHex(XMLCh const theChar);
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:896:32: error: ‘XMLCh’ does not name a type
896 | static bool isInList(const XMLCh* const toFind, const XMLCh* const enumList);
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:896:59: error: ‘XMLCh’ does not name a type
896 | static bool isInList(const XMLCh* const toFind, const XMLCh* const enumList);
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:937:17: error: ‘XMLCh’ has not been declared
937 | , XMLCh* const toFill
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:977:17: error: ‘XMLCh’ has not been declared
977 | , XMLCh* const toFill
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:1017:17: error: ‘XMLCh’ has not been declared
1017 | , XMLCh* const toFill
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:1057:17: error: ‘XMLCh’ has not been declared
1057 | , XMLCh* const toFill
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:1097:17: error: ‘XMLCh’ has not been declared
1097 | , XMLCh* const toFill
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:1116:17: error: ‘XMLCh’ does not name a type
1116 | const XMLCh* const toConvert
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:1136:17: error: ‘XMLCh’ does not name a type
1136 | const XMLCh* const toConvert
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:1147:17: error: ‘XMLCh’ has not been declared
1147 | XMLCh* const toCutFrom
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:1164:17: error: ‘XMLCh’ does not name a type
1164 | const XMLCh* const toTranscode
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:1185:17: error: ‘XMLCh’ does not name a type
1185 | const XMLCh* const toTranscode
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:1202:12: error: ‘XMLCh’ does not name a type
1202 | static XMLCh* transcode
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:1221:17: error: ‘XMLCh’ has not been declared
1221 | , XMLCh* const toFill
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:1238:22: error: ‘XMLCh’ has not been declared
1238 | static void trim(XMLCh* const toTrim);
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:1247:28: error: ‘XMLCh’ was not declared in this scope
1247 | static BaseRefVectorOf* tokenizeString(const XMLCh* const tokenizeSrc
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:1247:33: error: template argument 1 is invalid
1247 | static BaseRefVectorOf* tokenizeString(const XMLCh* const tokenizeSrc
| ^
/usr/include/xercesc/util/XMLString.hpp:1247:57: error: ‘XMLCh’ does not name a type
1247 | static BaseRefVectorOf* tokenizeString(const XMLCh* const tokenizeSrc
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:1258:28: error: ‘XMLCh’ was not declared in this scope
1258 | static BaseRefVectorOf* tokenizeString(const XMLCh* const tokenizeSrc
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:1258:33: error: template argument 1 is invalid
1258 | static BaseRefVectorOf* tokenizeString(const XMLCh* const tokenizeSrc
| ^
/usr/include/xercesc/util/XMLString.hpp:1258:57: error: ‘XMLCh’ does not name a type
1258 | static BaseRefVectorOf* tokenizeString(const XMLCh* const tokenizeSrc
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:1259:43: error: ‘XMLCh’ has not been declared
1259 | , XMLCh delimiter
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:1273:12: error: ‘XMLCh’ does not name a type
1273 | static XMLCh* makeUName
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:1297:17: error: ‘XMLCh’ has not been declared
1297 | XMLCh* const errText
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:1299:17: error: ‘XMLCh’ does not name a type
1299 | , const XMLCh* const text1
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:1300:17: error: ‘XMLCh’ does not name a type
1300 | , const XMLCh* const text2
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:1301:17: error: ‘XMLCh’ does not name a type
1301 | , const XMLCh* const text3
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:1302:17: error: ‘XMLCh’ does not name a type
1302 | , const XMLCh* const text4
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:1310:27: error: ‘XMLCh’ has not been declared
1310 | static void upperCase(XMLCh* const toUpperCase);
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:1317:32: error: ‘XMLCh’ has not been declared
1317 | static void upperCaseASCII(XMLCh* const toUpperCase);
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:1323:27: error: ‘XMLCh’ has not been declared
1323 | static void lowerCase(XMLCh* const toLowerCase);
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:1330:32: error: ‘XMLCh’ has not been declared
1330 | static void lowerCaseASCII(XMLCh* const toLowerCase);
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:1335:36: error: ‘XMLCh’ does not name a type
1335 | static bool isWSReplaced(const XMLCh* const toCheck);
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:1340:37: error: ‘XMLCh’ does not name a type
1340 | static bool isWSCollapsed(const XMLCh* const toCheck);
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:1347:27: error: ‘XMLCh’ has not been declared
1347 | static void replaceWS(XMLCh* toConvert
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:1355:28: error: ‘XMLCh’ has not been declared
1355 | static void collapseWS(XMLCh* toConvert
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:1363:26: error: ‘XMLCh’ has not been declared
1363 | static void removeWS(XMLCh* toConvert
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:1372:34: error: ‘XMLCh’ does not name a type
1372 | static void removeChar(const XMLCh* const srcString
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:1373:34: error: ‘XMLCh’ does not name a type
1373 | , const XMLCh& toRemove
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:1383:30: error: ‘XMLCh’ does not name a type
1383 | static void fixURI(const XMLCh* const str, XMLCh* const target);
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:1383:48: error: ‘XMLCh’ has not been declared
1383 | static void fixURI(const XMLCh* const str, XMLCh* const target);
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:1410:9: error: ‘XMLCh’ has not been declared
1410 | XMLCh** buf
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:1439:35: error: ‘XMLCh’ does not name a type
1439 | static bool validateRegion(const XMLCh* const str1, const int offset1,
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:1440:13: error: ‘XMLCh’ does not name a type
1440 | const XMLCh* const str2, const int offset2,
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:1453:41: error: variable or field ‘moveChars’ declared void
1453 | inline void XMLString::moveChars( XMLCh* const targetStr
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:1453:41: error: ‘XMLCh’ was not declared in this scope
/usr/include/xercesc/util/XMLString.hpp:1453:48: error: expected primary-expression before ‘const’
1453 | inline void XMLString::moveChars( XMLCh* const targetStr
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:1454:35: error: expected primary-expression before ‘const’
1454 | , const XMLCh* const srcStr
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:1455:35: error: expected primary-expression before ‘const’
1455 | , const XMLSize_t count)
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:1460:45: error: ‘XMLCh’ does not name a type
1460 | inline XMLSize_t XMLString::stringLen(const XMLCh* const src)
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp: In static member function ‘static XMLSize_t xercesc_3_2::XMLString::stringLen(const int*)’:
/usr/include/xercesc/util/XMLString.hpp:1465:11: error: ‘XMLCh’ does not name a type
1465 | const XMLCh* pszTmp = src;
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:1467:13: error: ‘pszTmp’ was not declared in this scope
1467 | while (pszTmp++) ;
| ^~~~~~
/usr/include/xercesc/util/XMLString.hpp:1469:13: error: ‘pszTmp’ was not declared in this scope
1469 | return (pszTmp - src - 1);
| ^~~~~~
/usr/include/xercesc/util/XMLString.hpp: At global scope:
/usr/include/xercesc/util/XMLString.hpp:1472:8: error: ‘XMLCh’ does not name a type
1472 | inline XMLCh
XMLString::replicate(const XMLCh* const toRep,
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:1486:45: error: ‘XMLCh’ does not name a type
1486 | inline bool XMLString::startsWith( const XMLCh* const toTest
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:1487:45: error: ‘XMLCh’ does not name a type
1487 | , const XMLCh* const prefix)
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:1492:45: error: ‘XMLCh’ does not name a type
1492 | inline bool XMLString::startsWithI( const XMLCh* const toTest
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:1493:45: error: ‘XMLCh’ does not name a type
1493 | , const XMLCh* const prefix)
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:1498:39: error: ‘XMLCh’ does not name a type
1498 | inline bool XMLString::endsWith(const XMLCh* const toTest,
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:1499:39: error: ‘XMLCh’ does not name a type
1499 | const XMLCh* const suffix)
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:1508:45: error: ‘XMLCh’ does not name a type
1508 | inline bool XMLString::validateRegion(const XMLCh* const str1,
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:1510:18: error: ‘XMLCh’ does not name a type
1510 | const XMLCh* const str2,
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:1523:40: error: ‘XMLCh’ does not name a type
1523 | inline bool XMLString::equals( const XMLCh* str1
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:1524:40: error: ‘XMLCh’ does not name a type
1524 | , const XMLCh* str2)
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:1540:38: error: ‘XMLCh’ does not name a type
1540 | inline bool XMLString::equalsN(const XMLCh* str1,
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:1541:38: error: ‘XMLCh’ does not name a type
1541 | const XMLCh* str2,
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:1591:41: error: ‘XMLCh’ does not name a type
1591 | inline int XMLString::lastIndexOf(const XMLCh* const toSearch, const XMLCh ch)
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:1591:70: error: ‘XMLCh’ does not name a type
1591 | inline int XMLString::lastIndexOf(const XMLCh* const toSearch, const XMLCh ch)
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:1596:42: error: ‘XMLCh’ does not name a type
1596 | inline XMLSize_t XMLString::hash(const XMLCh* const tohash
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp: In static member function ‘static XMLSize_t xercesc_3_2::XMLString::hash(const int*, XMLSize_t)’:
/usr/include/xercesc/util/XMLString.hpp:1602:11: error: ‘XMLCh’ does not name a type
1602 | const XMLCh* curCh = tohash;
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:1603:38: error: ‘curCh’ was not declared in this scope
1603 | XMLSize_t hashVal = (XMLSize_t)(curCh++);
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp: At global scope:
/usr/include/xercesc/util/XMLString.hpp:1612:43: error: ‘XMLCh’ does not name a type
1612 | inline XMLSize_t XMLString::hashN(const XMLCh
const tohash
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp: In static member function ‘static XMLSize_t xercesc_3_2::XMLString::hashN(const int*, XMLSize_t, XMLSize_t)’:
/usr/include/xercesc/util/XMLString.hpp:1619:9: error: ‘XMLCh’ does not name a type
1619 | const XMLCh* curCh = tohash;
| ^~~~~
/usr/include/xercesc/util/XMLString.hpp:1620:36: error: ‘curCh’ was not declared in this scope
1620 | XMLSize_t hashVal = (XMLSize_t)(curCh++);
| ^~~~~
In file included from /usr/include/xercesc/sax/SAXParseException.hpp:25,
from /usr/include/xercesc/sax2/DefaultHandler.hpp:31,
from src/xmlparser/XMLHandler.h:41,
from src/xmlparser/MemSpecParser.h:43,
from src/xmlparser/MemSpecParser.cc:38:
/usr/include/xercesc/sax/SAXException.hpp: At global scope:
/usr/include/xercesc/sax/SAXException.hpp:74:24: error: ‘XMLCh’ does not name a type
74 | SAXException(const XMLCh
const msg,
| ^~~~~
/usr/include/xercesc/sax/SAXException.hpp:143:19: error: ‘XMLCh’ does not name a type
143 | virtual const XMLCh* getMessage() const
| ^~~~~
/usr/include/xercesc/sax/SAXException.hpp:157:5: error: ‘XMLCh’ does not name a type
157 | XMLCh* fMsg;
| ^~~~~
/usr/include/xercesc/sax/SAXException.hpp: In constructor ‘xercesc_3_2::SAXException::SAXException(xercesc_3_2::MemoryManager*)’:
/usr/include/xercesc/sax/SAXException.hpp:62:9: error: class ‘xercesc_3_2::SAXException’ does not have any field named ‘fMsg’
62 | fMsg(XMLString::replicate(XMLUni::fgZeroLenString, manager))
| ^~~~
/usr/include/xercesc/sax/SAXException.hpp:62:43: error: ‘fgZeroLenString’ is not a member of ‘xercesc_3_2::XMLUni’
62 | fMsg(XMLString::replicate(XMLUni::fgZeroLenString, manager))
| ^~~~~~~~~~~~~~~
/usr/include/xercesc/sax/SAXException.hpp: In constructor ‘xercesc_3_2::SAXException::SAXException(const int*, xercesc_3_2::MemoryManager*)’:
/usr/include/xercesc/sax/SAXException.hpp:77:9: error: class ‘xercesc_3_2::SAXException’ does not have any field named ‘fMsg’
77 | fMsg(XMLString::replicate(msg, manager))
| ^~~~
/usr/include/xercesc/sax/SAXException.hpp:77:35: error: cannot convert ‘const int* const’ to ‘const char*’
77 | fMsg(XMLString::replicate(msg, manager))
| ^~~
| |
| const int* const
In file included from /usr/include/xercesc/sax/SAXException.hpp:25,
from /usr/include/xercesc/sax/SAXParseException.hpp:25,
from /usr/include/xercesc/sax2/DefaultHandler.hpp:31,
from src/xmlparser/XMLHandler.h:41,
from src/xmlparser/MemSpecParser.h:43,
from src/xmlparser/MemSpecParser.cc:38:
/usr/include/xercesc/util/XMLString.hpp:707:46: note: initializing argument 1 of ‘static char* xercesc_3_2::XMLString::replicate(const char*, xercesc_3_2::MemoryManager*)’
707 | static char* replicate(const char* const toRep,
| ~~~~~~~~~~~~~~~~~~^~~~~
In file included from /usr/include/xercesc/sax/SAXParseException.hpp:25,
from /usr/include/xercesc/sax2/DefaultHandler.hpp:31,
from src/xmlparser/XMLHandler.h:41,
from src/xmlparser/MemSpecParser.h:43,
from src/xmlparser/MemSpecParser.cc:38:
/usr/include/xercesc/sax/SAXException.hpp: In constructor ‘xercesc_3_2::SAXException::SAXException(const char*, xercesc_3_2::MemoryManager*)’:
/usr/include/xercesc/sax/SAXException.hpp:92:9: error: class ‘xercesc_3_2::SAXException’ does not have any field named ‘fMsg’
92 | fMsg(XMLString::transcode(msg, manager))
| ^~~~
/usr/include/xercesc/sax/SAXException.hpp:92:47: error: no matching function for call to ‘xercesc_3_2::XMLString::transcode(const char* const&, xercesc_3_2::MemoryManager* const&)’
92 | fMsg(XMLString::transcode(msg, manager))
| ^
In file included from /usr/include/xercesc/sax/SAXException.hpp:25,
from /usr/include/xercesc/sax/SAXParseException.hpp:25,
from /usr/include/xercesc/sax2/DefaultHandler.hpp:31,
from src/xmlparser/XMLHandler.h:41,
from src/xmlparser/MemSpecParser.h:43,
from src/xmlparser/MemSpecParser.cc:38:
/usr/include/xercesc/util/XMLString.hpp:1162:18: note: candidate: ‘static char* xercesc_3_2::XMLString::transcode(const int*, xercesc_3_2::MemoryManager*)’
1162 | static char* transcode
| ^~~~~~~~~
/usr/include/xercesc/util/XMLString.hpp:1164:38: note: no known conversion for argument 1 from ‘const char* const’ to ‘const int*’
1164 | const XMLCh* const toTranscode
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~
/usr/include/xercesc/util/XMLString.hpp:1183:17: note: candidate: ‘static bool xercesc_3_2::XMLString::transcode(const int*, char*, XMLSize_t, xercesc_3_2::MemoryManager*)’
1183 | static bool transcode
| ^~~~~~~~~
/usr/include/xercesc/util/XMLString.hpp:1183:17: note: candidate expects 4 arguments, 2 provided
/usr/include/xercesc/util/XMLString.hpp:1218:17: note: candidate: ‘static bool xercesc_3_2::XMLString::transcode(const char*, int*, XMLSize_t, xercesc_3_2::MemoryManager*)’
1218 | static bool transcode
| ^~~~~~~~~
/usr/include/xercesc/util/XMLString.hpp:1218:17: note: candidate expects 4 arguments, 2 provided
In file included from /usr/include/xercesc/sax/SAXParseException.hpp:25,
from /usr/include/xercesc/sax2/DefaultHandler.hpp:31,
from src/xmlparser/XMLHandler.h:41,
from src/xmlparser/MemSpecParser.h:43,
from src/xmlparser/MemSpecParser.cc:38:
/usr/include/xercesc/sax/SAXException.hpp: In copy constructor ‘xercesc_3_2::SAXException::SAXException(const xercesc_3_2::SAXException&)’:
/usr/include/xercesc/sax/SAXException.hpp:104:11: error: class ‘xercesc_3_2::SAXException’ does not have any field named ‘fMsg’
104 | , fMsg(XMLString::replicate(toCopy.fMsg, toCopy.fMemoryManager))
| ^~~~
/usr/include/xercesc/sax/SAXException.hpp:104:44: error: ‘const class xercesc_3_2::SAXException’ has no member named ‘fMsg’
104 | , fMsg(XMLString::replicate(toCopy.fMsg, toCopy.fMemoryManager))
| ^~~~
/usr/include/xercesc/sax/SAXException.hpp: In destructor ‘virtual xercesc_3_2::SAXException::~SAXException()’:
/usr/include/xercesc/sax/SAXException.hpp:112:36: error: ‘fMsg’ was not declared in this scope
112 | fMemoryManager->deallocate(fMsg);//delete [] fMsg;
| ^~~~
/usr/include/xercesc/sax/SAXException.hpp: In member function ‘xercesc_3_2::SAXException& xercesc_3_2::SAXException::operator=(const xercesc_3_2::SAXException&)’:
/usr/include/xercesc/sax/SAXException.hpp:130:36: error: ‘fMsg’ was not declared in this scope
130 | fMemoryManager->deallocate(fMsg);//delete [] fMsg;
| ^~~~
/usr/include/xercesc/sax/SAXException.hpp:131:44: error: ‘const class xercesc_3_2::SAXException’ has no member named ‘fMsg’
131 | fMsg = XMLString::replicate(toCopy.fMsg, toCopy.fMemoryManager);
| ^~~~
/usr/include/xercesc/sax/SAXException.hpp: At global scope:
/usr/include/xercesc/sax/SAXException.hpp:174:36: error: ‘XMLCh’ does not name a type
174 | SAXNotSupportedException(const XMLCh* const msg,
| ^~~~~
/usr/include/xercesc/sax/SAXException.hpp:207:37: error: ‘XMLCh’ does not name a type
207 | SAXNotRecognizedException(const XMLCh* const msg,
| ^~~~~
In file included from /usr/include/xercesc/sax2/DefaultHandler.hpp:31,
from src/xmlparser/XMLHandler.h:41,
from src/xmlparser/MemSpecParser.h:43,
from src/xmlparser/MemSpecParser.cc:38:
/usr/include/xercesc/sax/SAXParseException.hpp:67:29: error: ‘XMLCh’ does not name a type
67 | SAXParseException(const XMLCh* const message, const Locator& locator,
| ^~~~~
/usr/include/xercesc/sax/SAXParseException.hpp:94:17: error: ‘XMLCh’ does not name a type
94 | const XMLCh* const message
| ^~~~~
/usr/include/xercesc/sax/SAXParseException.hpp:95:17: error: ‘XMLCh’ does not name a type
95 | , const XMLCh* const publicId
| ^~~~~
/usr/include/xercesc/sax/SAXParseException.hpp:96:17: error: ‘XMLCh’ does not name a type
96 | , const XMLCh* const systemId
| ^~~~~
/usr/include/xercesc/sax/SAXParseException.hpp:154:11: error: ‘XMLCh’ does not name a type
154 | const XMLCh* getPublicId() const;
| ^~~~~
/usr/include/xercesc/sax/SAXParseException.hpp:165:11: error: ‘XMLCh’ does not name a type
165 | const XMLCh* getSystemId() const;
| ^~~~~
/usr/include/xercesc/sax/SAXParseException.hpp:176:5: error: ‘XMLCh’ does not name a type
176 | XMLCh* fPublicId;
| ^~~~~
/usr/include/xercesc/sax/SAXParseException.hpp:178:5: error: ‘XMLCh’ does not name a type
178 | XMLCh* fSystemId;
| ^~~~~
In file included from src/xmlparser/XMLHandler.h:41,
from src/xmlparser/MemSpecParser.h:43,
from src/xmlparser/MemSpecParser.cc:38:
/usr/include/xercesc/sax2/DefaultHandler.hpp:89:17: error: ‘XMLCh’ does not name a type
89 | const XMLCh* const chars
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:124:9: error: ‘XMLCh’ does not name a type
124 | const XMLCh* const uri,
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:125:9: error: ‘XMLCh’ does not name a type
125 | const XMLCh* const localname,
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:126:9: error: ‘XMLCh’ does not name a type
126 | const XMLCh* const qname
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:146:17: error: ‘XMLCh’ does not name a type
146 | const XMLCh* const chars
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:167:17: error: ‘XMLCh’ does not name a type
167 | const XMLCh* const target
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:168:17: error: ‘XMLCh’ does not name a type
168 | , const XMLCh* const data
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:227:17: error: ‘XMLCh’ does not name a type
227 | const XMLCh* const uri,
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:228:17: error: ‘XMLCh’ does not name a type
228 | const XMLCh* const localname,
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:229:17: error: ‘XMLCh’ does not name a type
229 | const XMLCh* const qname
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:248:9: error: ‘XMLCh’ does not name a type
248 | const XMLCh* const prefix,
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:249:9: error: ‘XMLCh’ does not name a type
249 | const XMLCh* const uri
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:266:9: error: ‘XMLCh’ does not name a type
266 | const XMLCh* const prefix
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:288:9: error: ‘XMLCh’ does not name a type
288 | const XMLCh* const name
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:319:17: error: ‘XMLCh’ does not name a type
319 | const XMLCh* const publicId
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:320:17: error: ‘XMLCh’ does not name a type
320 | , const XMLCh* const systemId
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:406:17: error: ‘XMLCh’ does not name a type
406 | const XMLCh* const name
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:407:17: error: ‘XMLCh’ does not name a type
407 | , const XMLCh* const publicId
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:408:17: error: ‘XMLCh’ does not name a type
408 | , const XMLCh* const systemId
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:434:17: error: ‘XMLCh’ does not name a type
434 | const XMLCh* const name
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:435:17: error: ‘XMLCh’ does not name a type
435 | , const XMLCh* const publicId
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:436:17: error: ‘XMLCh’ does not name a type
436 | , const XMLCh* const systemId
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:437:17: error: ‘XMLCh’ does not name a type
437 | , const XMLCh* const notationName
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:461:17: error: ‘XMLCh’ does not name a type
461 | const XMLCh* const chars
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:497:35: error: ‘XMLCh’ does not name a type
497 | virtual void endEntity (const XMLCh* const name);
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:524:17: error: ‘XMLCh’ does not name a type
524 | const XMLCh* const name
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:525:19: error: ‘XMLCh’ does not name a type
525 | , const XMLCh* const publicId
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:526:19: error: ‘XMLCh’ does not name a type
526 | , const XMLCh* const systemId
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:539:37: error: ‘XMLCh’ does not name a type
539 | virtual void startEntity (const XMLCh* const name);
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:565:17: error: ‘XMLCh’ does not name a type
565 | const XMLCh* const name
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:566:17: error: ‘XMLCh’ does not name a type
566 | , const XMLCh* const model
| ^~~~~
In file included from src/xmlparser/XMLHandler.h:41,
from src/xmlparser/MemSpecParser.h:43,
from src/xmlparser/MemSpecParser.cc:38:
/usr/include/xercesc/sax2/DefaultHandler.hpp:585:17: error: ‘XMLCh’ does not name a type
585 | const XMLCh* const eName
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:586:17: error: ‘XMLCh’ does not name a type
586 | , const XMLCh* const aName
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:587:17: error: ‘XMLCh’ does not name a type
587 | , const XMLCh* const type
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:588:17: error: ‘XMLCh’ does not name a type
588 | , const XMLCh* const mode
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:589:17: error: ‘XMLCh’ does not name a type
589 | , const XMLCh* const value
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:606:17: error: ‘XMLCh’ does not name a type
606 | const XMLCh* const name
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:607:17: error: ‘XMLCh’ does not name a type
607 | , const XMLCh* const value
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:624:17: error: ‘XMLCh’ does not name a type
624 | const XMLCh* const name
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:625:17: error: ‘XMLCh’ does not name a type
625 | , const XMLCh* const publicId
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:626:17: error: ‘XMLCh’ does not name a type
626 | , const XMLCh* const systemId
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:646:48: error: ‘XMLCh’ does not name a type
646 | inline void DefaultHandler::characters(const XMLCh* const
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:655:46: error: ‘XMLCh’ does not name a type
655 | inline void DefaultHandler::endElement(const XMLCh* const
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:656:19: error: ‘XMLCh’ does not name a type
656 | , const XMLCh* const
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:657:19: error: ‘XMLCh’ does not name a type
657 | , const XMLCh* const)
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:671:46: error: ‘XMLCh’ does not name a type
671 | DefaultHandler::ignorableWhitespace( const XMLCh* const
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:676:52: error: ‘XMLCh’ does not name a type
676 | inline void DefaultHandler::notationDecl( const XMLCh* const
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:677:20: error: ‘XMLCh’ does not name a type
677 | , const XMLCh* const
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:678:20: error: ‘XMLCh’ does not name a type
678 | , const XMLCh* const)
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:683:48: error: ‘XMLCh’ does not name a type
683 | DefaultHandler::processingInstruction( const XMLCh* const
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:684:19: error: ‘XMLCh’ does not name a type
684 | , const XMLCh* const)
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:701:40: error: ‘XMLCh’ does not name a type
701 | DefaultHandler::resolveEntity( const XMLCh* const
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:702:17: error: ‘XMLCh’ does not name a type
702 | , const XMLCh* const)
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:708:44: error: ‘XMLCh’ does not name a type
708 | DefaultHandler::unparsedEntityDecl(const XMLCh* const
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:709:18: error: ‘XMLCh’ does not name a type
709 | , const XMLCh* const
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:710:18: error: ‘XMLCh’ does not name a type
710 | , const XMLCh* const
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:711:18: error: ‘XMLCh’ does not name a type
711 | , const XMLCh* const)
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:724:42: error: ‘XMLCh’ does not name a type
724 | DefaultHandler::startElement( const XMLCh* const
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:725:19: error: ‘XMLCh’ does not name a type
725 | , const XMLCh* const
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:726:19: error: ‘XMLCh’ does not name a type
726 | , const XMLCh* const
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:736:56: error: ‘XMLCh’ does not name a type
736 | inline void DefaultHandler::startPrefixMapping ( const XMLCh* const
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:737:20: error: ‘XMLCh’ does not name a type
737 | ,const XMLCh* const)
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:741:54: error: ‘XMLCh’ does not name a type
741 | inline void DefaultHandler::endPrefixMapping ( const XMLCh* const)
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:745:51: error: ‘XMLCh’ does not name a type
745 | inline void DefaultHandler::skippedEntity ( const XMLCh* const)
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:749:47: error: ‘XMLCh’ does not name a type
749 | inline void DefaultHandler::comment( const XMLCh* const
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:762:46: error: ‘XMLCh’ does not name a type
762 | inline void DefaultHandler::endEntity (const XMLCh* const)
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:770:48: error: ‘XMLCh’ does not name a type
770 | inline void DefaultHandler::startDTD( const XMLCh* const
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:771:51: error: ‘XMLCh’ does not name a type
771 | , const XMLCh* const
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:772:51: error: ‘XMLCh’ does not name a type
772 | , const XMLCh* const)
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:776:48: error: ‘XMLCh’ does not name a type
776 | inline void DefaultHandler::startEntity (const XMLCh* const)
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:780:49: error: ‘XMLCh’ does not name a type
780 | inline void DefaultHandler::attributeDecl(const XMLCh* const,
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:781:49: error: ‘XMLCh’ does not name a type
781 | const XMLCh* const,
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:782:49: error: ‘XMLCh’ does not name a type
782 | const XMLCh* const,
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:783:49: error: ‘XMLCh’ does not name a type
783 | const XMLCh* const,
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:784:49: error: ‘XMLCh’ does not name a type
784 | const XMLCh* const)
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:788:47: error: ‘XMLCh’ does not name a type
788 | inline void DefaultHandler::elementDecl(const XMLCh* const,
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:789:47: error: ‘XMLCh’ does not name a type
789 | const XMLCh* const)
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:793:54: error: ‘XMLCh’ does not name a type
793 | inline void DefaultHandler::externalEntityDecl(const XMLCh* const,
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:794:54: error: ‘XMLCh’ does not name a type
794 | const XMLCh* const,
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:795:54: error: ‘XMLCh’ does not name a type
795 | const XMLCh* const)
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:799:54: error: ‘XMLCh’ does not name a type
799 | inline void DefaultHandler::internalEntityDecl(const XMLCh* const,
| ^~~~~
/usr/include/xercesc/sax2/DefaultHandler.hpp:800:54: error: ‘XMLCh’ does not name a type
800 | const XMLCh* const)
| ^~~~~
In file included from src/xmlparser/MemSpecParser.h:43,
from src/xmlparser/MemSpecParser.cc:38:
src/xmlparser/XMLHandler.h:52:27: error: ‘XMLCh’ does not name a type
52 | void startElement(const XMLCh* const namespace_uri,
| ^~~~~
src/xmlparser/XMLHandler.h:53:27: error: ‘XMLCh’ does not name a type
53 | const XMLCh* const localname,
| ^~~~~
src/xmlparser/XMLHandler.h:54:27: error: ‘XMLCh’ does not name a type
54 | const XMLCh* const qname,
| ^~~~~
src/xmlparser/XMLHandler.h:57:25: error: ‘XMLCh’ does not name a type
57 | void endElement(const XMLCh* const namespace_uri,
| ^~~~~
src/xmlparser/XMLHandler.h:58:25: error: ‘XMLCh’ does not name a type
58 | const XMLCh* const localname,
| ^~~~~
src/xmlparser/XMLHandler.h:59:25: error: ‘XMLCh’ does not name a type
59 | const XMLCh* const qname);
| ^~~~~
src/xmlparser/XMLHandler.h:77:31: error: ‘XMLCh’ does not name a type
77 | std::string transcode(const XMLCh* const qname) const;
| ^~~~~
make: *** [Makefile:108: src/xmlparser/MemSpecParser.o] Error 1

Significant figures

We use current values from datasheets. These currents are measurements with a limited precision (usually 2 or 3 significant figures). They are used in a series of operations within the model to calculate the power results that look like this:

(...)
ACT Cmd Energy: 5843428.14 pJ
PRE Cmd Energy: 1917374.86 pJ
RD Cmd Energy: 2794383.49 pJ
WR Cmd Energy: 5795.12 pJ
ACT Stdby Energy: 5141651.03 pJ
(...)

I don't think we are allowed to present so many significant figures, since the inputs for the model just aren't that precise. An evaluation of the way we handle numbers and present them at the output may be useful (i.e. someone cound read http://en.wikipedia.org/wiki/Significance_arithmetic and see if what we do makes any sense).

commandSorter output has a compiler dependence

In my experiments with the mac build, I found that some of the tests failed. I tracked down the following issue:

  • CommandAnalysis::getCommands attempts to insert a PREA command at the start of every trace of commands.
  • This command is later sorted together with the other commands by CommandAnalysis::commandSorter, competing with other commands that happen at time t = 0
  • On ubuntu, the PREA command is sorted to the top of the list as expected. On mac, it is not. This causes a trace which starts with an ACT (at t=0) to open and then immediately close a bank.
  • We do not seem to need the PREA command at the start of the trace. I've updated the tests references which changed as a result. I still need to double check if this is correct.

Unit testing

We need more elaborate tests to make sure we are not breaking the tool when developing it. The easiest way is probably to run the default transaction trace through the tool for at least one memory if each generation. This verifies that both the transaction scheduler and the power estimation works as intended. This may not cover all possible power down modes, but it is more important to get basic tests up and running before we have perfect ones.

Deletion from vector while looping over the vector

In CommandAnalysis::getCommands, we're looping over the command list, and possibly deleting the elements as we go over the list and moving those elements to next_window_cmd_list.
So if the first element is a precharge that was inserted from the previous window in
if (!next_window_cmd_list.empty()) { list.insert(list.begin(), next_window_cmd_list.begin(), next_window_cmd_list.end()); next_window_cmd_list.clear(); }
In this case, element 0 gets deleted, so element 1 is at index 0 now, which gets skipped over. If that element is an ACT or RDA or WRA, this leads to an error.

CommandAnalysis.cc can use refactoring

CommandAnalysis.cc is written in a confusing manner; variables with non-descriptive are shared between the 3 main functions of the classe and code is duplicated. This can be improved.

Make XMLParser less picky about dtd grammar file locations

Custom memspecs might not sit in the same folder as the dtd file that is delivered with DRAMPower, causing the parser to fail. Locally I've fixed this by adding an EntityResolver to the parser, which attempts to load the dtd from a path that is:

  • relative to the xml file (default behavior)
  • relative to the current working directory
  • relative to an environmental variable (such that you can point it to the DRAMPower folder for example)

I propose to add this functionality in the official version as well, since it does no harm. Long term we might want to consider switching to a less wacky xml parser, and perhaps a grammarless structure (since we don't really rely on it anyway).

Slow-exit active power-down is not supported by any memory, but we model it anyway.

I think that in our efforts to be complete, we might have gone too far. We support:

Slow-exit precharged power-down
Fast-exit precharged power-down
Slow-exit active power-down
Fast-exit active power-down

As far as I can tell from the JEDEC / Micron specs, Slow-exit active power-down does not exist in DDR2/3/4 and LPDDR1/2/3. I propose we remove support for the PDN_S_ACT command.

Does a memspec correspond to a chip or a rank?

I see the memspecs each have 8 or 16 bit widths (or 128 for wide IO) and have Gb sizes, so I suppose the spec values are per-chip. Is that assumption correct?

In that case, a couple of questions:

  • Should the results just be multiplied by the number of chips (so for example with x8 chips rank, multiply energy results by 8? Similarly by 9 for an ECC rank?)
  • Why is the width limited to multiples of 8, since there are x4 chips?

Or if this assumption is incorrect:

  • does the model not take into account the number of chips?
  • should I specify 64 or 72 respectively as widths in the memspecs for ECC/non-ECC ranks?

Sorry if I missed this information in the documentation somwhere.

DRAMPower Library error in calculating intermediate results

We discovered an issue in the DRAMPower library when intermediate results are needed, e.g. to plot the power consumption over time or if an interactive simulation is conducted. Don't worry, the total energy consumption is still correct.

We do a simulation with DRAMSys and want to plot the current power consumption over time:

bildschirmfoto 2016-04-05 um 09 10 58

at time ~50000 we go into SREF and wake up at ~150000 and we get a big power peak.
in the self refresh time the calculated Energy is 0 and therefore also the current power consumption in the time intervals during SREF.
Obviously the area of this peak should be placed flatted in the interval of the SREF.

This is due to the fact that during the simulation we don’t tell DRAMPower to proceed with the simulation time e.g. during the SREF interval.

I had the idea of a simple workaround:

in our power calculation thread, which is triggered periodically (systemc) I send DRAMPower a NOP function to count up the time:

   ...
   // This Thread is only triggered when Power Simulation is enabled (e.g. every 1us).
   // It estimates the current average power which will be stored in the trace database for visualization purposes.
   void powerWindow()
   {
       double currentAveragePower = 0;
       double currentTotalEnergy = 0;

       do
       {              
            unsigned long long c = sc_time_stamp().value()/Configuration::getInstance().memSpec.clk.value();
            DRAMPower->doCommand(MemCommand::NOP, 0, c);

           DRAMPower->updateCounters(false);
           DRAMPower->calcEnergy();

           currentTotalEnergy = DRAMPower->getEnergy().total_energy - totalEnergy;
           currentAveragePower = currentTotalEnergy/powerWindowSize.value();
           totalEnergy = DRAMPower->getEnergy().total_energy;

           tlmRecorder->recordPower(sc_time_stamp(),currentAveragePower);
           printDebugMessage(string("\tCurrent Energy: \t") + to_string(currentTotalEnergy));
           printDebugMessage(string("\tAverage Power: \t") + to_string(currentAveragePower));

           wait(powerWindowSize);
       }
       while(true);
   }
   ...

However this results in a very strange behavior:

bildschirmfoto 2016-04-05 um 09 09 06

As you can see when we issue multiple NOPs to update the time in DRAM Power, the sref_cycles are accumulating because the beginning of the SREF (sref_cycle) is not updated or reset to the current timestamp.

Lets consider the SREF for now:

CommandAnalysis.cc Line 528

  } else if (type == MemCommand::END || type == MemCommand::NOP) {
      // May be optionally used at the end of memory trace for better accuracy
      // Update all counters based on completion of operations.
      if (num_active_banks > 0 && mem_state == 0) {
        actcycles += max(zero, timestamp - first_act_cycle);
        idle_act_update(memSpec, latest_read_cycle, latest_write_cycle,
                        latest_act_cycle, timestamp);
      } else if (num_active_banks == 0 && mem_state == 0) {
        precycles += max(zero, timestamp - last_pre_cycle);
        idle_pre_update(memSpec, timestamp, latest_pre_cycle);
      } else if (mem_state == CommandAnalysis::MS_PDN_F_ACT) {
        f_act_pdcycles += max(zero, timestamp - pdn_cycle);
      } else if (mem_state == CommandAnalysis::MS_PDN_S_ACT) {
        s_act_pdcycles += max(zero, timestamp - pdn_cycle);
      } else if (mem_state == CommandAnalysis::MS_PDN_F_PRE) {
        f_pre_pdcycles += max(zero, timestamp - pdn_cycle);
      } else if (mem_state == CommandAnalysis::MS_PDN_S_PRE) {
        s_pre_pdcycles += max(zero, timestamp - pdn_cycle);
      } else if (mem_state == CommandAnalysis::MS_SREF) {
        sref_cycles += max(zero, timestamp - sref_cycle); // <—————— this is the possible problem
      }
    }
  }
} // CommandAnalysis::evaluate

We changed the code a little bit below:

  } else if (type == MemCommand::END || type == MemCommand::NOP) {
      // May be optionally used at the end of memory trace for better accuracy
      // Update all counters based on completion of operations.
      if (num_active_banks > 0 && mem_state == 0) {
        actcycles += max(zero, timestamp - first_act_cycle);
        idle_act_update(memSpec, latest_read_cycle, latest_write_cycle,
                        latest_act_cycle, timestamp);
      } else if (num_active_banks == 0 && mem_state == 0) {
        precycles += max(zero, timestamp - last_pre_cycle);
        idle_pre_update(memSpec, timestamp, latest_pre_cycle);
      } else if (mem_state == CommandAnalysis::MS_PDN_F_ACT) {
        f_act_pdcycles += max(zero, timestamp - pdn_cycle);
      } else if (mem_state == CommandAnalysis::MS_PDN_S_ACT) {
        s_act_pdcycles += max(zero, timestamp - pdn_cycle);
      } else if (mem_state == CommandAnalysis::MS_PDN_F_PRE) {
        f_pre_pdcycles += max(zero, timestamp - pdn_cycle);
      } else if (mem_state == CommandAnalysis::MS_PDN_S_PRE) {
        s_pre_pdcycles += max(zero, timestamp - pdn_cycle);
      } else if (mem_state == CommandAnalysis::MS_SREF) {
        sref_cycles += max(zero, timestamp - sref_cycle);
        sref_cycle = timestamp; // RESET the sref_cycle
      }
    }
  }
} // CommandAnalysis::evaluate

We did the same for the other power down modes in the else if statements ...
And the result looks like this, which looks much better:

bildschirmfoto 2016-04-05 um 09 20 26

We are currently investigating and testing all the changes and we will come up with a pull request soon.
Moreover, we will adjust the library documentation and the example code.

CommandAnalysis.cc is a blob of code that needs refactoring.

After having reviewed a decent amount of pull requests in the past weeks, but not being involved in a lot of the coding, I've noticed that it is getting increasingly hard for me to read / understand what is happening in CommandAnalysis.cc. I don't think this is related to the new code, but rather the old code and style in which the file is written.

I intend to spend some time to re-structure DRAMPower, add some useful data structures where possible, and overall make things easier to read. The rough target is to make each function / method not be longer than 15 ~ 20 lines, as opposed to the monster evaluate() function which clocks in at 525 lines at the moment.

Common energy calculation function

Practically all energy calculation functions in the model use the form:
current * voltage * time. It would be nice to make that explicit, and it could also centralize the place where we cast time from an interger number of clock cycles into a double for the energy calculation.

At the very least we can turn:

//Activation energy estimation
double MemoryPowerModel::engy_act(double idd3n, double idd0, double vdd,
        int tras, double clk) {
    double act_engy;
    act_engy = (idd0 - idd3n) * tras * vdd * clk;
    return act_engy;
}

into:

//Activation energy estimation
double MemoryPowerModel::engy_act(double idd3n, double idd0, double vdd,
        int tras, double clk) {
    return (idd0 - idd3n) * tras * vdd * clk;
}

or (better imho):

//Activation energy estimation
double MemoryPowerModel::engy_act(double idd3n, double idd0, double vdd,
        int tras, double clk) {
    return energy(idd0 - idd3n, vdd, tras * clk);
}

compile Error

When i run the command "make -j4" it gives me this error
g++ -O -W -pedantic-errors -Wextra -Werror -Wformat -Wformat-
nonliteral -Wpointer-arith -Wcast-align -Wconversion -Wall -Werror -g
-std=c++0x -MMD -MF src/TraceParser.d -iquote src -o src/TraceParser.o
-c src/TraceParser.cc
g++ -O -W -pedantic-errors -Wextra -Werror -Wformat -Wformat-
nonliteral -Wpointer-arith -Wcast-align -Wall -Werror -g -std=c++0x
-MMD -MF src/CmdScheduler.d -iquote src -o src/CmdScheduler.o -c
src/CmdScheduler.cc
g++ -O -W -pedantic-errors -Wextra -Werror -Wformat -Wformat-
nonliteral -Wpointer-arith -Wcast-align -Wconversion -Wall -Werror -g
-std=c++0x -MMD -MF src/cli/drampower.d -iquote src -o
src/cli/drampower.o -c src/cli/drampower.cc
g++ -O -W -pedantic-errors -Wextra -Werror -Wformat -Wformat-
nonliteral -Wpointer-arith -Wcast-align -Wconversion -Wall -Werror -g
-std=c++0x -MMD -MF src/libdrampower/LibDRAMPower.d -iquote src -o
src/libdrampower/LibDRAMPower.o -c src/libdrampower/LibDRAMPower.cc
In file included from src/CommandAnalysis.h:55:0,
from src/TraceParser.h:46,
from src/TraceParser.cc:37:
src/Utils.h:49:1: error: dynamic exception specifications are
deprecated in C++11 [-Werror=deprecated]
throw(std::runtime_error)
^~~~~
In file included from src/CommandAnalysis.h:55:0,
from src/libdrampower/LibDRAMPower.h:48,
from src/libdrampower/LibDRAMPower.cc:42:
src/Utils.h:49:1: error: dynamic exception specifications are
deprecated in C++11 [-Werror=deprecated]
throw(std::runtime_error)
^~~~~
In file included from src/CmdScheduler.h:47:0,
from src/CmdScheduler.cc:37:
src/Utils.h:49:1: error: dynamic exception specifications are
deprecated in C++11 [-Werror=deprecated]
throw(std::runtime_error)
^~~~~
In file included from src/CommandAnalysis.h:55:0,
from src/MemoryPowerModel.h:49,
from src/cli/drampower.cc:44:
src/Utils.h:49:1: error: dynamic exception specifications are
deprecated in C++11 [-Werror=deprecated]
throw(std::runtime_error)
^~~~~
cc1plus: all warnings being treated as errors
Makefile:106: recipe for target 'src/libdrampower/LibDRAMPower.o'
failed
make: *** [src/libdrampower/LibDRAMPower.o] Error 1
make: *** Waiting for unfinished jobs....
cc1plus: all warnings being treated as errors
Makefile:106: recipe for target 'src/cli/drampower.o' failed
make: *** [src/cli/drampower.o] Error 1
cc1plus: all warnings being treated as errors
Makefile:106: recipe for target 'src/TraceParser.o' failed
make: *** [src/TraceParser.o] Error 1
cc1plus: all warnings being treated as errors
Makefile:102: recipe for target 'src/CmdScheduler.o' failed
make: *** [src/CmdScheduler.o] Error 1

Can anybody guide me as to what Mistake i am Making?? Thanks

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.