#include <EResolver.h>
Public Member Functions | |
EResolver () | |
virtual | ~EResolver () |
virtual XERCES_CPP_NAMESPACE_QUALIFIER InputSource * | resolveEntity (XERCES_CPP_NAMESPACE_QUALIFIER XMLResourceIdentifier *xmlRI) |
void | clean () |
Private Member Functions | |
XERCES_CPP_NAMESPACE_QUALIFIER InputSource * | translateEnv (const XMLCh *id, const XMLCh *baseURI) |
Private Attributes | |
unsigned | m_nEntity |
std::vector< std::string * > | m_entities |
Definition at line 20 of file EResolver.h.
XERCES_CPP_NAMESPACE_USE xmlBase::EResolver::EResolver | ( | ) |
Definition at line 21 of file EResolver.cxx.
References m_entities.
00021 : m_nEntity(0) { 00022 m_entities.clear(); 00023 }
xmlBase::EResolver::~EResolver | ( | ) | [virtual] |
void xmlBase::EResolver::clean | ( | ) |
Definition at line 78 of file EResolver.cxx.
References genRecEmupikp::i, m_entities, and m_nEntity.
Referenced by xmlBase::XmlParser::parse(), and ~EResolver().
00078 { 00079 for (unsigned i = 0; i < m_entities.size(); i++) { 00080 delete m_entities[i]; 00081 } 00082 m_entities.clear(); 00083 m_nEntity = 0; 00084 }
InputSource * xmlBase::EResolver::resolveEntity | ( | XERCES_CPP_NAMESPACE_QUALIFIER XMLResourceIdentifier * | xmlRI | ) | [virtual] |
Definition at line 38 of file EResolver.cxx.
References translateEnv().
00038 { 00039 const XMLCh* publicId = xmlRI->getPublicId(); 00040 const XMLCh* systemId = xmlRI->getSystemId(); 00041 const XMLCh* baseURI = xmlRI->getBaseURI(); 00042 if (publicId != 0) { 00043 if (XMLString::stringLen(publicId) > 0) { 00044 return translateEnv(publicId, baseURI); 00045 } 00046 } 00047 return translateEnv(systemId, baseURI); 00048 }
InputSource * xmlBase::EResolver::translateEnv | ( | const XMLCh * | id, | |
const XMLCh * | baseURI | |||
) | [private] |
Definition at line 50 of file EResolver.cxx.
References m_entities, release, and deljobs::string.
Referenced by resolveEntity().
00051 { 00052 // Make a std::string out of the spec we're passed 00053 char* chId = XMLString::transcode(id); 00054 std::string *idStr = new std::string(chId); 00055 XMLString::release(&chId); 00056 int nSub = facilities::Util::expandEnvVar(idStr); 00057 00058 m_entities.push_back(idStr); 00059 00060 if (!nSub) return 0; 00061 else if (nSub < 0) { 00062 std::cout << "Bad entity name " << idStr << std::endl; 00063 return 0; 00064 } 00065 00066 // Otherwise something really did get translated, so make 00067 // a new InputSource 00068 XMLCh* realName = XMLString::transcode(idStr->c_str()); 00069 00070 // Apparently the InputSource already gets deleted by somebody else, 00071 // so we don't have to keep track of it 00072 LocalFileInputSource* src = new LocalFileInputSource(baseURI, realName); 00073 XMLString::release(&realName); 00074 return src; 00075 00076 }
std::vector<std::string*> xmlBase::EResolver::m_entities [private] |
unsigned xmlBase::EResolver::m_nEntity [private] |