--- parser3/src/classes/xdoc.C 2001/11/22 09:59:38 1.47 +++ parser3/src/classes/xdoc.C 2001/12/13 13:01:55 1.49 @@ -4,7 +4,7 @@ Copyright (c) 2001 ArtLebedev Group (http://www.artlebedev.com) Author: Alexander Petrosyan (http://paf.design.ru) - $Id: xdoc.C,v 1.47 2001/11/22 09:59:38 paf Exp $ + $Id: xdoc.C,v 1.49 2001/12/13 13:01:55 paf Exp $ */ #include "pa_types.h" #include "classes.h" @@ -17,6 +17,7 @@ #include "pa_vfile.h" #include "xnode.h" +#include #include #include #include @@ -395,7 +396,7 @@ static void param_option_over_output_opt static void create_optioned_listener( Pool& pool, const String& method_name, MethodParams *params, int index, VXdoc::Output_options& oo, Writer& writer, - FormatterListener *& listener) { + std::auto_ptr & listener) { /* XalanDOMString encoding; XalanDOMString mediaType; @@ -468,7 +469,7 @@ static void create_optioned_listener( if(strcmp(oo.method, XDOC_OUTPUT_METHOD_OPTION_VALUE_XML)==0) { if(oo.mediaType.empty()) oo.mediaType.append("text/xml"); - listener=new FormatterToXML(writer, + listener=std::auto_ptr(new FormatterToXML(writer, oo.version, oo.doIndent, XDOC_OUTPUT_DEFAULT_INDENT, // indent @@ -478,11 +479,11 @@ static void create_optioned_listener( oo.doctypePublic, oo.xmlDecl, oo.standalone - ); + )); } else if(strcmp(oo.method, XDOC_OUTPUT_METHOD_OPTION_VALUE_HTML)==0) { if(oo.mediaType.empty()) oo.mediaType.append("text/html"); - listener=new FormatterToHTML(writer, + listener=std::auto_ptr(new FormatterToHTML(writer, oo.encoding, oo.mediaType, oo.doctypeSystem, @@ -492,13 +493,13 @@ static void create_optioned_listener( oo.version, oo.standalone, oo.xmlDecl - ); + )); } else if(strcmp(oo.method, XDOC_OUTPUT_METHOD_OPTION_VALUE_TEXT)==0) { if(oo.mediaType.empty()) oo.mediaType.append("text/plain"); - listener=new FormatterToText(writer, + listener=std::auto_ptr(new FormatterToText(writer, oo.encoding - ); + )); } else throw Exception(0, 0, &method_name, @@ -506,8 +507,6 @@ static void create_optioned_listener( "'" XDOC_OUTPUT_METHOD_OPTION_VALUE_XML "', " "'" XDOC_OUTPUT_METHOD_OPTION_VALUE_HTML "', " "'" XDOC_OUTPUT_METHOD_OPTION_VALUE_TEXT "'"); - - // never reached } static void _save(Request& r, const String& method_name, MethodParams *params) { @@ -526,7 +525,7 @@ static void _save(Request& r, const Stri VXdoc::Output_options oo(vdoc.output_options); XalanFileOutputStream stream(XalanDOMString(filespec, strlen(filespec))); XalanOutputStreamPrintWriter writer(stream); - FormatterListener *formatterListener; + std::auto_ptr formatterListener; create_optioned_listener(pool, method_name, params, 1, oo, writer, formatterListener); FormatterTreeWalker treeWalker(*formatterListener); @@ -549,10 +548,10 @@ static void _string(Request& r, const St try { VXdoc::Output_options oo(vdoc.output_options); - String parserString=*new(pool) String(pool); + String& parserString=*new(pool) String(pool); ParserStringXalanOutputStream stream(parserString); XalanOutputStreamPrintWriter writer(stream); - FormatterListener *formatterListener; + std::auto_ptr formatterListener; create_optioned_listener(pool, method_name, params, 0, oo, writer, formatterListener); FormatterTreeWalker treeWalker(*formatterListener); @@ -579,7 +578,7 @@ static void _file(Request& r, const Stri String& parserString=*new(pool) String(pool); ParserStringXalanOutputStream stream(parserString); XalanOutputStreamPrintWriter writer(stream); - FormatterListener *formatterListener; + std::auto_ptr formatterListener; create_optioned_listener(pool, method_name, params, 0, oo, writer, formatterListener); FormatterTreeWalker treeWalker(*formatterListener); @@ -608,7 +607,7 @@ static void _file(Request& r, const Stri } static void _set(Request& r, const String& method_name, MethodParams *params) { - //_asm int 3; +// _asm int 3; Pool& pool=r.pool(); VXdoc& vdoc=*static_cast(r.self);