neilg       2003/12/01 12:43:32

  Modified:    c/src/xercesc/framework XMLFormatter.cpp
  Log:
  fix for constructor added for compatibility with Xerces 2.2; thanks to David Cargill
  
  Revision  Changes    Path
  1.17      +92 -13    xml-xerces/c/src/xercesc/framework/XMLFormatter.cpp
  
  Index: XMLFormatter.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/xercesc/framework/XMLFormatter.cpp,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- XMLFormatter.cpp  10 Oct 2003 02:06:09 -0000      1.16
  +++ XMLFormatter.cpp  1 Dec 2003 20:43:32 -0000       1.17
  @@ -287,13 +287,54 @@
                               , const EscapeFlags             escapeFlags
                               , const UnRepFlags              unrepFlags
                               ,       MemoryManager* const    manager)
  +    : fEscapeFlags(escapeFlags)
  +    , fOutEncoding(0)
  +    , fTarget(target)
  +    , fUnRepFlags(unrepFlags)
  +    , fXCoder(0)  
  +    , fAposRef(0)
  +    , fAposLen(0)
  +    , fAmpRef(0)    
  +    , fAmpLen(0)    
  +    , fGTRef(0)
  +    , fGTLen(0)
  +    , fLTRef(0)
  +    , fLTLen(0)
  +    , fQuoteRef(0)
  +    , fQuoteLen(0) 
  +    , fIsXML11(false)
  +    , fMemoryManager(manager)
   {
  -    XMLFormatter(outEncoding
  -               , "1.0"
  -               , target
  -               , escapeFlags
  -               , unrepFlags
  -               , manager);
  +    // this constructor uses "1.0" for the docVersion
  +
  +    // Transcode the encoding string
  +    fOutEncoding = XMLString::transcode(outEncoding, fMemoryManager);
  +
  +    // Try to create a transcoder for this encoding
  +    XMLTransService::Codes resCode;
  +    fXCoder = XMLPlatformUtils::fgTransService->makeNewTranscoderFor
  +    (
  +        fOutEncoding
  +        , resCode
  +        , kTmpBufSize
  +        , fMemoryManager
  +    );
  +
  +    if (!fXCoder)
  +    {
  +        fMemoryManager->deallocate(fOutEncoding); //delete [] fOutEncoding;
  +        ThrowXML1
  +        (
  +            TranscodingException
  +            , XMLExcepts::Trans_CantCreateCvtrFor
  +            , outEncoding
  +        );
  +    }
  +
  +    //XMLCh* const tmpDocVer = XMLString::transcode("1.0", fMemoryManager);
  +    //ArrayJanitor<XMLCh> jname(tmpDocVer, fMemoryManager);
  +    //fIsXML11 = XMLString::equals(tmpDocVer, XMLUni::fgVersion1_1);
  +    fIsXML11 = false;  // docVersion 1.0 is not 1.1!
   }
   
   
  @@ -302,13 +343,51 @@
                               , const EscapeFlags             escapeFlags
                               , const UnRepFlags              unrepFlags
                               ,       MemoryManager* const    manager)
  +    : fEscapeFlags(escapeFlags)
  +    , fOutEncoding(0)
  +    , fTarget(target)
  +    , fUnRepFlags(unrepFlags)
  +    , fXCoder(0)  
  +    , fAposRef(0)
  +    , fAposLen(0)
  +    , fAmpRef(0)    
  +    , fAmpLen(0)    
  +    , fGTRef(0)
  +    , fGTLen(0)
  +    , fLTRef(0)
  +    , fLTLen(0)
  +    , fQuoteRef(0)
  +    , fQuoteLen(0) 
  +    , fIsXML11(false)
  +    , fMemoryManager(manager)
   {
  -    XMLFormatter(outEncoding
  -               , XMLUni::fgVersion1_0
  -               , target
  -               , escapeFlags
  -               , unrepFlags
  -               , manager);
  +    // this constructor uses XMLUni::fgVersion1_0 for the docVersion
  +
  +    // Try to create a transcoder for this encoding
  +    XMLTransService::Codes resCode;
  +    fXCoder = XMLPlatformUtils::fgTransService->makeNewTranscoderFor
  +    (
  +        outEncoding
  +        , resCode
  +        , kTmpBufSize
  +        , fMemoryManager
  +    );
  +
  +    if (!fXCoder)
  +    {
  +        ThrowXML1
  +        (
  +            TranscodingException
  +            , XMLExcepts::Trans_CantCreateCvtrFor
  +            , outEncoding
  +        );
  +    }
  +
  +    // Copy the encoding string
  +    fOutEncoding = XMLString::replicate(outEncoding, fMemoryManager);
  +
  +    //fIsXML11 = XMLString::equals(docVersion, XMLUni::fgVersion1_1);
  +    fIsXML11 = false;  // docVersion 1.0 is not 1.1!
   }
   
   XMLFormatter::~XMLFormatter()
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to