xmlBase::EResolver Class Reference

#include <EResolver.h>

List of all members.

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


Detailed Description

Definition at line 20 of file EResolver.h.


Constructor & Destructor Documentation

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]

Definition at line 86 of file EResolver.cxx.

References clean().

00086                         {
00087     clean();
00088   }


Member Function Documentation

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   }


Member Data Documentation

std::vector<std::string*> xmlBase::EResolver::m_entities [private]

Definition at line 32 of file EResolver.h.

Referenced by clean(), EResolver(), and translateEnv().

unsigned xmlBase::EResolver::m_nEntity [private]

Definition at line 31 of file EResolver.h.

Referenced by clean().


Generated on Tue Nov 29 23:36:39 2016 for BOSS_7.0.2 by  doxygen 1.4.7