@@ -5,4 +5,4 @@ Using Juce version 4 means we can use its GPL v2+ license. | |||
Starting from version 5, Juce uses GPLv3. | |||
Do not use this library in your own code! | |||
There are no plans to make it generic library or any support for its use outside of Carla. | |||
There are no plans to make it a generic library or give any support for its use outside of Carla. |
@@ -3,7 +3,7 @@ | |||
This file is part of the Water library. | |||
Copyright (c) 2016 ROLI Ltd. | |||
Copyright (C) 2017 Filipe Coelho <falktx@falktx.com> | |||
Copyright (C) 2017-2018 Filipe Coelho <falktx@falktx.com> | |||
Permission is granted to use this software under the terms of the ISC license | |||
http://www.isc.org/downloads/software-support-policy/isc-license/ | |||
@@ -398,11 +398,6 @@ bool File::isAChildOf (const File& potentialParent) const | |||
return getParentDirectory().isAChildOf (potentialParent); | |||
} | |||
#if 0 | |||
int File::hashCode() const { return fullPath.hashCode(); } | |||
int64 File::hashCode64() const { return fullPath.hashCode64(); } | |||
#endif | |||
//============================================================================== | |||
bool File::isAbsolutePath (StringRef path) | |||
{ | |||
@@ -3,7 +3,7 @@ | |||
This file is part of the Water library. | |||
Copyright (c) 2016 ROLI Ltd. | |||
Copyright (C) 2017 Filipe Coelho <falktx@falktx.com> | |||
Copyright (C) 2017-2018 Filipe Coelho <falktx@falktx.com> | |||
Permission is granted to use this software under the terms of the ISC license | |||
http://www.isc.org/downloads/software-support-policy/isc-license/ | |||
@@ -221,21 +221,6 @@ public: | |||
*/ | |||
String getFileNameWithoutExtension() const; | |||
//============================================================================== | |||
/** Returns a 32-bit hash-code that identifies this file. | |||
This is based on the filename. Obviously it's possible, although unlikely, that | |||
two files will have the same hash-code. | |||
*/ | |||
int hashCode() const; | |||
/** Returns a 64-bit hash-code that identifies this file. | |||
This is based on the filename. Obviously it's possible, although unlikely, that | |||
two files will have the same hash-code. | |||
*/ | |||
int64 hashCode64() const; | |||
//============================================================================== | |||
/** Returns a file that represents a relative (or absolute) sub-path of the current one. | |||
@@ -1,144 +0,0 @@ | |||
/* | |||
============================================================================== | |||
This file is part of the Water library. | |||
Copyright (c) 2015 ROLI Ltd. | |||
Copyright (C) 2017 Filipe Coelho <falktx@falktx.com> | |||
Permission is granted to use this software under the terms of the GNU | |||
General Public License as published by the Free Software Foundation; | |||
either version 2 of the License, or any later version. | |||
This program is distributed in the hope that it will be useful, but WITHOUT | |||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | |||
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. | |||
For a full copy of the GNU General Public License see the doc/GPL.txt file. | |||
============================================================================== | |||
*/ | |||
#ifndef WATER_AUDIOPLAYHEAD_H_INCLUDED | |||
#define WATER_AUDIOPLAYHEAD_H_INCLUDED | |||
#include "../water.h" | |||
namespace water { | |||
//============================================================================== | |||
/** | |||
A subclass of AudioPlayHead can supply information about the position and | |||
status of a moving play head during audio playback. | |||
One of these can be supplied to an AudioProcessor object so that it can find | |||
out about the position of the audio that it is rendering. | |||
@see AudioProcessor::setPlayHead, AudioProcessor::getPlayHead | |||
*/ | |||
class AudioPlayHead | |||
{ | |||
protected: | |||
//============================================================================== | |||
AudioPlayHead() {} | |||
public: | |||
virtual ~AudioPlayHead() {} | |||
//============================================================================== | |||
/** Frame rate types. */ | |||
enum FrameRateType | |||
{ | |||
fps24 = 0, | |||
fps25 = 1, | |||
fps2997 = 2, | |||
fps30 = 3, | |||
fps2997drop = 4, | |||
fps30drop = 5, | |||
fpsUnknown = 99 | |||
}; | |||
//============================================================================== | |||
/** This structure is filled-in by the AudioPlayHead::getCurrentPosition() method. | |||
*/ | |||
struct CurrentPositionInfo | |||
{ | |||
/** The tempo in BPM */ | |||
double bpm; | |||
/** Time signature numerator, e.g. the 3 of a 3/4 time sig */ | |||
int timeSigNumerator; | |||
/** Time signature denominator, e.g. the 4 of a 3/4 time sig */ | |||
int timeSigDenominator; | |||
/** The current play position, in samples from the start of the edit. */ | |||
int64 timeInSamples; | |||
/** The current play position, in seconds from the start of the edit. */ | |||
double timeInSeconds; | |||
/** For timecode, the position of the start of the edit, in seconds from 00:00:00:00. */ | |||
double editOriginTime; | |||
/** The current play position, in pulses-per-quarter-note. */ | |||
double ppqPosition; | |||
/** The position of the start of the last bar, in pulses-per-quarter-note. | |||
This is the time from the start of the edit to the start of the current | |||
bar, in ppq units. | |||
Note - this value may be unavailable on some hosts, e.g. Pro-Tools. If | |||
it's not available, the value will be 0. | |||
*/ | |||
double ppqPositionOfLastBarStart; | |||
/** The video frame rate, if applicable. */ | |||
FrameRateType frameRate; | |||
/** True if the transport is currently playing. */ | |||
bool isPlaying; | |||
/** True if the transport is currently recording. | |||
(When isRecording is true, then isPlaying will also be true). | |||
*/ | |||
bool isRecording; | |||
/** The current cycle start position in pulses-per-quarter-note. | |||
Note that not all hosts or plugin formats may provide this value. | |||
@see isLooping | |||
*/ | |||
double ppqLoopStart; | |||
/** The current cycle end position in pulses-per-quarter-note. | |||
Note that not all hosts or plugin formats may provide this value. | |||
@see isLooping | |||
*/ | |||
double ppqLoopEnd; | |||
/** True if the transport is currently looping. */ | |||
bool isLooping; | |||
//============================================================================== | |||
bool operator== (const CurrentPositionInfo& other) const noexcept; | |||
bool operator!= (const CurrentPositionInfo& other) const noexcept; | |||
void resetToDefault(); | |||
}; | |||
//============================================================================== | |||
/** Fills-in the given structure with details about the transport's | |||
position at the start of the current processing block. If this method returns | |||
false then the current play head position is not available and the given | |||
structure will be undefined. | |||
You can ONLY call this from your processBlock() method! Calling it at other | |||
times will produce undefined behaviour, as the host may not have any context | |||
in which a time would make sense, and some hosts will almost certainly have | |||
multithreading issues if it's not called on the audio thread. | |||
*/ | |||
virtual bool getCurrentPosition (CurrentPositionInfo& result) = 0; | |||
}; | |||
} | |||
#endif // WATER_AUDIOPLAYHEAD_H_INCLUDED |
@@ -3,7 +3,7 @@ | |||
This file is part of the Water library. | |||
Copyright (c) 2015 ROLI Ltd. | |||
Copyright (C) 2017 Filipe Coelho <falktx@falktx.com> | |||
Copyright (C) 2017-2018 Filipe Coelho <falktx@falktx.com> | |||
Permission is granted to use this software under the terms of the GNU | |||
General Public License as published by the Free Software Foundation; | |||
@@ -27,7 +27,6 @@ AudioProcessor::AudioProcessor() | |||
cachedTotalIns = 0; | |||
cachedTotalOuts = 0; | |||
// playHead = nullptr; | |||
currentSampleRate = 0; | |||
blockSize = 0; | |||
latencySamples = 0; | |||
@@ -41,11 +40,6 @@ AudioProcessor::~AudioProcessor() | |||
} | |||
//============================================================================== | |||
// void AudioProcessor::setPlayHead (AudioPlayHead* const newPlayHead) | |||
// { | |||
// playHead = newPlayHead; | |||
// } | |||
void AudioProcessor::setPlayConfigDetails (const int newNumIns, | |||
const int newNumOuts, | |||
const double newSampleRate, | |||
@@ -82,46 +76,10 @@ void AudioProcessor::suspendProcessing (const bool shouldBeSuspended) | |||
void AudioProcessor::reset() {} | |||
void AudioProcessor::processBypassed (AudioSampleBuffer& buffer, MidiBuffer&) | |||
void AudioProcessor::processBlockBypassed (AudioSampleBuffer& buffer, MidiBuffer&) | |||
{ | |||
for (int ch = getTotalNumInputChannels(); ch < getTotalNumOutputChannels(); ++ch) | |||
buffer.clear (ch, 0, buffer.getNumSamples()); | |||
} | |||
void AudioProcessor::processBlockBypassed (AudioSampleBuffer& buffer, MidiBuffer& midi) { processBypassed (buffer, midi); } | |||
#if 0 | |||
//============================================================================== | |||
bool AudioPlayHead::CurrentPositionInfo::operator== (const CurrentPositionInfo& other) const noexcept | |||
{ | |||
return timeInSamples == other.timeInSamples | |||
&& ppqPosition == other.ppqPosition | |||
&& editOriginTime == other.editOriginTime | |||
&& ppqPositionOfLastBarStart == other.ppqPositionOfLastBarStart | |||
&& frameRate == other.frameRate | |||
&& isPlaying == other.isPlaying | |||
&& isRecording == other.isRecording | |||
&& bpm == other.bpm | |||
&& timeSigNumerator == other.timeSigNumerator | |||
&& timeSigDenominator == other.timeSigDenominator | |||
&& ppqLoopStart == other.ppqLoopStart | |||
&& ppqLoopEnd == other.ppqLoopEnd | |||
&& isLooping == other.isLooping; | |||
} | |||
bool AudioPlayHead::CurrentPositionInfo::operator!= (const CurrentPositionInfo& other) const noexcept | |||
{ | |||
return ! operator== (other); | |||
} | |||
void AudioPlayHead::CurrentPositionInfo::resetToDefault() | |||
{ | |||
zerostruct (*this); | |||
timeSigNumerator = 4; | |||
timeSigDenominator = 4; | |||
bpm = 120; | |||
} | |||
#endif | |||
} |
@@ -3,7 +3,7 @@ | |||
This file is part of the Water library. | |||
Copyright (c) 2015 ROLI Ltd. | |||
Copyright (C) 2017 Filipe Coelho <falktx@falktx.com> | |||
Copyright (C) 2017-2018 Filipe Coelho <falktx@falktx.com> | |||
Permission is granted to use this software under the terms of the GNU | |||
General Public License as published by the Free Software Foundation; | |||
@@ -164,26 +164,6 @@ public: | |||
virtual void processBlockBypassed (AudioSampleBuffer& buffer, | |||
MidiBuffer& midiMessages); | |||
#if 0 | |||
//============================================================================== | |||
/** Returns the current AudioPlayHead object that should be used to find | |||
out the state and position of the playhead. | |||
You can ONLY call this from your processBlock() method! Calling it at other | |||
times will produce undefined behaviour, as the host may not have any context | |||
in which a time would make sense, and some hosts will almost certainly have | |||
multithreading issues if it's not called on the audio thread. | |||
The AudioPlayHead object that is returned can be used to get the details about | |||
the time of the start of the block currently being processed. But do not | |||
store this pointer or use it outside of the current audio callback, because | |||
the host may delete or re-use it. | |||
If the host can't or won't provide any time info, this will return nullptr. | |||
*/ | |||
AudioPlayHead* getPlayHead() const noexcept { return playHead; } | |||
#endif | |||
//============================================================================== | |||
/** Returns the total number of input channels. | |||
@@ -338,15 +318,6 @@ public: | |||
*/ | |||
virtual void setNonRealtime (bool isNonRealtime) noexcept; | |||
#if 0 | |||
//============================================================================== | |||
/** Tells the processor to use this playhead object. | |||
The processor will not take ownership of the object, so the caller must delete it when | |||
it is no longer being used. | |||
*/ | |||
virtual void setPlayHead (AudioPlayHead* newPlayHead); | |||
#endif | |||
//============================================================================== | |||
/** This is called by the processor to specify its details before being played. Use this | |||
version of the function if you are not interested in any sidechain and/or aux buses | |||
@@ -362,12 +333,6 @@ public: | |||
void setRateAndBufferSizeDetails (double sampleRate, int blockSize) noexcept; | |||
private: | |||
#if 0 | |||
//============================================================================== | |||
/** @internal */ | |||
AudioPlayHead* playHead; | |||
#endif | |||
//============================================================================== | |||
double currentSampleRate; | |||
int blockSize, latencySamples; | |||
@@ -379,8 +344,6 @@ private: | |||
int cachedTotalIns, cachedTotalOuts; | |||
void processBypassed (AudioSampleBuffer&, MidiBuffer&); | |||
CARLA_DECLARE_NON_COPY_CLASS (AudioProcessor) | |||
}; | |||
@@ -3,7 +3,7 @@ | |||
This file is part of the Water library. | |||
Copyright (c) 2016 ROLI Ltd. | |||
Copyright (C) 2017 Filipe Coelho <falktx@falktx.com> | |||
Copyright (C) 2017-2018 Filipe Coelho <falktx@falktx.com> | |||
Permission is granted to use this software under the terms of the ISC license | |||
http://www.isc.org/downloads/software-support-policy/isc-license/ | |||
@@ -24,14 +24,11 @@ | |||
*/ | |||
#include "FileInputSource.h" | |||
#include "../files/FileInputStream.h" | |||
namespace water { | |||
FileInputSource::FileInputSource (const File& f, bool useFileTimeInHash) | |||
: file (f), useFileTimeInHashGeneration (useFileTimeInHash) | |||
{ | |||
} | |||
FileInputSource::FileInputSource (const File& f) | |||
: file (f) {} | |||
FileInputSource::~FileInputSource() | |||
{ | |||
@@ -47,16 +44,4 @@ InputStream* FileInputSource::createInputStreamFor (const String& relatedItemPat | |||
return file.getSiblingFile (relatedItemPath).createInputStream(); | |||
} | |||
#if 0 | |||
int64 FileInputSource::hashCode() const | |||
{ | |||
int64 h = file.hashCode(); | |||
if (useFileTimeInHashGeneration) | |||
h ^= file.getLastModificationTime().toMilliseconds(); | |||
return h; | |||
} | |||
#endif | |||
} |
@@ -3,7 +3,7 @@ | |||
This file is part of the Water library. | |||
Copyright (c) 2016 ROLI Ltd. | |||
Copyright (C) 2017 Filipe Coelho <falktx@falktx.com> | |||
Copyright (C) 2017-2018 Filipe Coelho <falktx@falktx.com> | |||
Permission is granted to use this software under the terms of the ISC license | |||
http://www.isc.org/downloads/software-support-policy/isc-license/ | |||
@@ -26,7 +26,6 @@ | |||
#ifndef WATER_FILEINPUTSOURCE_H_INCLUDED | |||
#define WATER_FILEINPUTSOURCE_H_INCLUDED | |||
#include "InputSource.h" | |||
#include "../files/File.h" | |||
namespace water { | |||
@@ -37,28 +36,22 @@ namespace water { | |||
@see InputSource | |||
*/ | |||
class FileInputSource : public InputSource | |||
class FileInputSource | |||
{ | |||
public: | |||
//============================================================================== | |||
/** Creates a FileInputSource for a file. | |||
If the useFileTimeInHashGeneration parameter is true, then this object's | |||
hashCode() method will incorporate the file time into its hash code; if | |||
false, only the file name will be used for the hash. | |||
*/ | |||
FileInputSource (const File& file, bool useFileTimeInHashGeneration = false); | |||
/** Creates a FileInputSource for a file. */ | |||
FileInputSource (const File& file); | |||
/** Destructor. */ | |||
~FileInputSource(); | |||
InputStream* createInputStream(); | |||
InputStream* createInputStreamFor (const String& relatedItemPath); | |||
int64 hashCode() const; | |||
private: | |||
//============================================================================== | |||
const File file; | |||
bool useFileTimeInHashGeneration; | |||
CARLA_DECLARE_NON_COPY_CLASS (FileInputSource) | |||
}; | |||
@@ -1,76 +0,0 @@ | |||
/* | |||
============================================================================== | |||
This file is part of the Water library. | |||
Copyright (c) 2016 ROLI Ltd. | |||
Copyright (C) 2017 Filipe Coelho <falktx@falktx.com> | |||
Permission is granted to use this software under the terms of the ISC license | |||
http://www.isc.org/downloads/software-support-policy/isc-license/ | |||
Permission to use, copy, modify, and/or distribute this software for any | |||
purpose with or without fee is hereby granted, provided that the above | |||
copyright notice and this permission notice appear in all copies. | |||
THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH REGARD | |||
TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND | |||
FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, | |||
OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF | |||
USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER | |||
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE | |||
OF THIS SOFTWARE. | |||
============================================================================== | |||
*/ | |||
#ifndef WATER_INPUTSOURCE_H_INCLUDED | |||
#define WATER_INPUTSOURCE_H_INCLUDED | |||
#include "../water.h" | |||
namespace water { | |||
//============================================================================== | |||
/** | |||
A lightweight object that can create a stream to read some kind of resource. | |||
This may be used to refer to a file, or some other kind of source, allowing a | |||
caller to create an input stream that can read from it when required. | |||
@see FileInputSource | |||
*/ | |||
class InputSource | |||
{ | |||
public: | |||
//============================================================================== | |||
InputSource() noexcept {} | |||
/** Destructor. */ | |||
virtual ~InputSource() {} | |||
//============================================================================== | |||
/** Returns a new InputStream to read this item. | |||
@returns an inputstream that the caller will delete, or nullptr if | |||
the filename isn't found. | |||
*/ | |||
virtual InputStream* createInputStream() = 0; | |||
/** Returns a new InputStream to read an item, relative. | |||
@param relatedItemPath the relative pathname of the resource that is required | |||
@returns an inputstream that the caller will delete, or nullptr if | |||
the item isn't found. | |||
*/ | |||
virtual InputStream* createInputStreamFor (const String& relatedItemPath) = 0; | |||
#if 0 | |||
/** Returns a hash code that uniquely represents this item. | |||
*/ | |||
virtual int64 hashCode() const = 0; | |||
#endif | |||
}; | |||
} | |||
#endif // WATER_INPUTSOURCE_H_INCLUDED |
@@ -3,7 +3,7 @@ | |||
This file is part of the Water library. | |||
Copyright (c) 2016 ROLI Ltd. | |||
Copyright (C) 2017 Filipe Coelho <falktx@falktx.com> | |||
Copyright (C) 2017-2018 Filipe Coelho <falktx@falktx.com> | |||
Permission is granted to use this software under the terms of the ISC license | |||
http://www.isc.org/downloads/software-support-policy/isc-license/ | |||
@@ -23,7 +23,6 @@ | |||
============================================================================== | |||
*/ | |||
#include "InputSource.h" | |||
#include "InputStream.h" | |||
#include "../memory/ByteOrder.h" | |||
#include "../streams/MemoryOutputStream.h" | |||
@@ -3,7 +3,7 @@ | |||
This file is part of the Water library. | |||
Copyright (c) 2016 ROLI Ltd. | |||
Copyright (C) 2017 Filipe Coelho <falktx@falktx.com> | |||
Copyright (C) 2017-2018 Filipe Coelho <falktx@falktx.com> | |||
Permission is granted to use this software under the terms of the ISC license | |||
http://www.isc.org/downloads/software-support-policy/isc-license/ | |||
@@ -486,27 +486,6 @@ water_uchar String::operator[] (int index) const noexcept | |||
return text [index]; | |||
} | |||
template <typename Type> | |||
struct HashGenerator | |||
{ | |||
template <typename CharPointer> | |||
static Type calculate (CharPointer t) noexcept | |||
{ | |||
Type result = Type(); | |||
while (! t.isEmpty()) | |||
result = ((Type) multiplier) * result + (Type) t.getAndAdvance(); | |||
return result; | |||
} | |||
enum { multiplier = sizeof (Type) > 4 ? 101 : 31 }; | |||
}; | |||
int String::hashCode() const noexcept { return HashGenerator<int> ::calculate (text); } | |||
int64 String::hashCode64() const noexcept { return HashGenerator<int64> ::calculate (text); } | |||
size_t String::hash() const noexcept { return HashGenerator<size_t> ::calculate (text); } | |||
//============================================================================== | |||
bool operator== (const String& s1, const String& s2) noexcept { return s1.compare (s2) == 0; } | |||
bool operator!= (const String& s1, const String& s2) noexcept { return s1.compare (s2) != 0; } | |||
@@ -3,7 +3,7 @@ | |||
This file is part of the Water library. | |||
Copyright (c) 2016 ROLI Ltd. | |||
Copyright (C) 2017 Filipe Coelho <falktx@falktx.com> | |||
Copyright (C) 2017-2018 Filipe Coelho <falktx@falktx.com> | |||
Permission is granted to use this software under the terms of the ISC license | |||
http://www.isc.org/downloads/software-support-policy/isc-license/ | |||
@@ -120,15 +120,6 @@ public: | |||
typedef CharPointer_UTF8 CharPointerType; | |||
//============================================================================== | |||
/** Generates a probably-unique 32-bit hashcode from this string. */ | |||
int hashCode() const noexcept; | |||
/** Generates a probably-unique 64-bit hashcode from this string. */ | |||
int64 hashCode64() const noexcept; | |||
/** Generates a probably-unique hashcode from this string. */ | |||
size_t hash() const noexcept; | |||
/** Returns the number of characters in the string. */ | |||
int length() const noexcept; | |||
@@ -1,7 +1,7 @@ | |||
/* | |||
* Cross-platform C++ library for Carla, based on Juce v4 | |||
* Copyright (C) 2015 ROLI Ltd. | |||
* Copyright (C) 2017 Filipe Coelho <falktx@falktx.com> | |||
* Copyright (C) 2017-2018 Filipe Coelho <falktx@falktx.com> | |||
* | |||
* This program is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU General Public License as | |||
@@ -69,9 +69,9 @@ namespace water | |||
class AudioProcessor; | |||
class File; | |||
class FileInputStream; | |||
class FileInputSource; | |||
class FileOutputStream; | |||
class Identifier; | |||
class InputSource; | |||
class InputStream; | |||
class MidiBuffer; | |||
class MidiMessage; | |||
@@ -3,7 +3,7 @@ | |||
This file is part of the Water library. | |||
Copyright (c) 2016 ROLI Ltd. | |||
Copyright (C) 2017 Filipe Coelho <falktx@falktx.com> | |||
Copyright (C) 2017-2018 Filipe Coelho <falktx@falktx.com> | |||
Permission is granted to use this software under the terms of the ISC license | |||
http://www.isc.org/downloads/software-support-policy/isc-license/ | |||
@@ -68,7 +68,7 @@ XmlElement* XmlDocument::parse (const String& xmlData) | |||
return doc.getDocumentElement(); | |||
} | |||
void XmlDocument::setInputSource (InputSource* const newSource) noexcept | |||
void XmlDocument::setInputSource (FileInputSource* const newSource) noexcept | |||
{ | |||
inputSource = newSource; | |||
} | |||
@@ -3,7 +3,7 @@ | |||
This file is part of the Water library. | |||
Copyright (c) 2016 ROLI Ltd. | |||
Copyright (C) 2017 Filipe Coelho <falktx@falktx.com> | |||
Copyright (C) 2017-2018 Filipe Coelho <falktx@falktx.com> | |||
Permission is granted to use this software under the terms of the ISC license | |||
http://www.isc.org/downloads/software-support-policy/isc-license/ | |||
@@ -122,9 +122,9 @@ public: | |||
The object that is passed-in will be deleted automatically when no longer needed. | |||
@see InputSource | |||
@see FileInputSource | |||
*/ | |||
void setInputSource (InputSource* newSource) noexcept; | |||
void setInputSource (FileInputSource* newSource) noexcept; | |||
/** Sets a flag to change the treatment of empty text elements. | |||
@@ -158,7 +158,7 @@ private: | |||
String lastError, dtdText; | |||
StringArray tokenisedDTD; | |||
bool needToLoadDTD, ignoreEmptyTextElements; | |||
ScopedPointer<InputSource> inputSource; | |||
ScopedPointer<FileInputSource> inputSource; | |||
XmlElement* parseDocumentElement (String::CharPointerType, bool outer); | |||
void setLastError (const String&, bool carryOn); | |||