## Xalan-C++ API Documentation

### The Xalan C++ XSLT Processor Version 1.9

Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members | Related Pages

# XalanFileUtility.hpp

Go to the documentation of this file.

    00001 /*
    00002  * Copyright 1999-2004 The Apache Software Foundation.
    00003  *
    00004  * Licensed under the Apache License, Version 2.0 (the "License");
    00005  * you may not use this file except in compliance with the License.
    00006  * You may obtain a copy of the License at
    00007  *
    00008  *     http://www.apache.org/licenses/LICENSE-2.0
    00009  *
    00010  * Unless required by applicable law or agreed to in writing, software
    00011  * distributed under the License is distributed on an "AS IS" BASIS,
    00012  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    00013  * See the License for the specific language governing permissions and
    00014  * limitations under the License.
    00015  */
    00016 #if !defined(XALAN_FILEUTILITY_HEADER_GUARD_1357924680)
    00017 #define XALAN_FILEUTILITY_HEADER_GUARD_1357924680
    00018
    00019
    00020
    00021 #include "xalanc/Harness/XalanHarnessDefinitions.hpp"
    00022
    00023
    00024 #include "xalanc/Include/XalanVector.hpp"
    00025
    00026
    00027 #if defined(XALAN_CLASSIC_IOSTREAMS)
    00028 #include <strstream.h>
    00029 #else
    00030 #include <strstream>
    00031 #endif
    00032
    00033
    00034
    00035 #include "xalanc/XalanDOM/XalanDOMString.hpp"
    00036
    00037
    00038
    00039 XALAN_CPP_NAMESPACE_BEGIN
    00040
    00041
    00042
    00043 class FormatterListener;
    00044 class PrintWriter;
    00045 class StylesheetRoot;
    00046 class XalanCompiledStylesheet;
    00047 class XalanDocument;
    00048 class XalanNode;
    00049 class XalanSourceTreeDocument;
    00050 class XalanTransformer;
    00051 class XalanXMLFileReporter;
    00052 class XSLTInputSource;
    00053
    00054
    00055
    00056 // This class is exported from the Harness.dll
    00057 class XALAN_HARNESS_EXPORT XalanFileUtility
    00058 {
    00059 public:
    00060
    00061 // A vector to hold directory names and file names.
    00062
    00063     typedef XalanVector<XalanDOMString>     FileNameVectorType;
    00064
    00065
    00066     struct XALAN_HARNESS_EXPORT reportStruct
    00067     {
    00068         XalanDOMString  theDrive;
    00069         XalanDOMString  testOrFile;
    00070         XalanDOMString  xmlFileURL;
    00071         XalanDOMString  xslFileURL;
    00072         XalanDOMString  xmlFormat;
    00073         const char*     msg;
    00074         XalanDOMString  currentNode;
    00075         XalanDOMString  actual;
    00076         XalanDOMString  expected;
    00077         int             pass;
    00078         int             fail;
    00079         int             nogold;
    00080
    00081         reportStruct(MemoryManagerType& theManager);
    00082
    00083         void
    00084         reset();
    00085     private:
    00086         //Not implemented
    00087         reportStruct();
    00088         reportStruct(const reportStruct&);
    00089
    00090     } data;
    00091
    00092     struct XALAN_HARNESS_EXPORT cmdParams
    00093     {
    00094     private:
    00095
    00096 #if defined(XALAN_NO_STD_NAMESPACE)
    00097         typedef ostrstream          StreamType;
    00098 #else
    00099         typedef std::ostrstream     StreamType;
    00100 #endif
    00101
    00102         StreamType  help;
    00103
    00104     public:
    00105
    00106         XalanDOMString  base;
    00107         XalanDOMString  output;
    00108         XalanDOMString  gold;
    00109         XalanDOMString  sub;
    00110         int             source;
    00111         bool            skip;
    00112         long            iters;
    00113
    00114
    00115         cmdParams(MemoryManagerType& theManager);
    00116
    00117         ~cmdParams()
    00118         {
    00119         }
    00120
    00121         const char*
    00122         getHelpMessage();
    00123
    00124         StreamType&
    00125         getHelpStream()
    00126         {
    00127             return help;
    00128         }
    00129     private:
    00130         //Not implemented
    00131         cmdParams();
    00132         cmdParams(const cmdParams&);
    00133
    00134     } args;
    00135
    00137     XalanFileUtility(MemoryManagerType& theManager);
    00138
    00139     ~XalanFileUtility();
    00140
    00146     XalanDOMString&
    00147     getDrive(XalanDOMString& theResult);
    00148
    00149     bool
    00150     getParams(
    00151             int             argc,
    00152             char*           argv[],
    00153             const char*     outDir,
    00154             bool            fsetGold = true);
    00155
    00156
    00157     FileNameVectorType&
    00158     getTestFileNames(
    00159             const XalanDOMString&   baseDir,
    00160             const XalanDOMString&   relDir,
    00161             bool                    useDirPrefix,
    00162             FileNameVectorType&     theFiles);
    00163
    00168     FileNameVectorType&
    00169     getDirectoryNames(const XalanDOMString&     rootDirectory,
    00170                       FileNameVectorType&       theFiles);
    00171
    00175     void
    00176     checkAndCreateDir(const XalanDOMString&     directory);
    00177
    00181     bool
    00182     checkDir(const XalanDOMString&  directory);
    00183
    00188     XalanDOMString&
    00189     getXSLFileName(const XalanDOMString&    theXMLFileName,
    00190                     XalanDOMString&         theResult);
    00191
    00196     XalanDOMString&
    00197     generateFileName(
    00198             const XalanDOMString&  theXMLFileName,
    00199             const char*             suffix,
    00200             XalanDOMString&         theResult,
    00201             bool*                   status = 0);
    00202
    00207     XalanDOMString&
    00208     generateUniqRunid(XalanDOMString& theResult);
    00209
    00214     XalanDOMString&
    00215     getXercesVersion(XalanDOMString& theResult);
    00216
    00217
    00218     void
    00219     checkResults(
    00220             const XalanDOMString&   outputFile,
    00221             const XalanDOMString&   goldFile,
    00222             XalanXMLFileReporter&   logfile);
    00223
    00224     void
    00225     checkAPIResults(
    00226             const XalanDOMString&   actual,
    00227             const XalanDOMString&   expected,
    00228             const char*             msg,
    00229             XalanXMLFileReporter&   logfile,
    00230             const XalanDOMString&   outputFile,
    00231             const XalanDOMString&   goldFile,
    00232             bool                    containsOnly = false);
    00233
    00234     void
    00235     checkAPIResults(
    00236             const char*             actual,
    00237             const char*             expected,
    00238             const char*             msg,
    00239             XalanXMLFileReporter&        logfile,
    00240             const XalanDOMString&   outputFile,
    00241             const XalanDOMString&   goldFile,
    00242             MemoryManagerType&      theManager,
    00243             bool                    containsOnly = false)
    00244     {
    00245         checkAPIResults(
    00246             XalanDOMString(actual, theManager),
    00247             XalanDOMString(expected, theManager),
    00248             msg,
    00249             logfile,
    00250             outputFile,
    00251             goldFile,
    00252             containsOnly);
    00253     }
    00254
    00260     void
    00261     checkDOMResults(
    00262             const XalanDOMString&           theOutputFile,
    00263             const XalanCompiledStylesheet*  compiledSS,
    00264             const XalanSourceTreeDocument*  dom,
    00265             const XSLTInputSource&          goldInputSource,
    00266             XalanXMLFileReporter&                logfile);
    00267
    00268     bool
    00269     compareSerializedResults(
    00270             const XalanDOMString&   transformResult,
    00271             const XalanDOMString&   goldInputSource);
    00277     FormatterListener*
    00278     getXMLFormatter(
    00279             PrintWriter&            resultWriter,
    00280             int                     indentAmount,
    00281             const XalanDOMString&   mimeEncoding,
    00282             const StylesheetRoot*   stylesheet);
    00283
    00284
    00285     bool
    00286     fileCompare(
    00287             const char*     goldFile,
    00288             const char*     outputFile);
    00289
    00294     bool
    00295     domCompare(const XalanNode& gold, const XalanNode& doc);
    00296
    00301     bool
    00302     domCompare(
    00303             const XalanDocument&    gold,
    00304             const XalanDocument&    doc);
    00305
    00310     bool
    00311     diffElement(const XalanNode& gold, const XalanNode& doc);
    00312
    00317     bool
    00318     diffNode(
    00319             const XalanNode&    gold,
    00320             const XalanNode&    doc);
    00321
    00326     bool
    00327     diffNode(
    00328             const XalanNode*    gold,
    00329             const XalanNode*    doc);
    00330
    00335     bool
    00336     diffElement2(
    00337             const XalanNode&    gold,
    00338             const XalanNode&    doc);
    00339
    00344     bool
    00345     diffAttr(const XalanNode* gAttr, const XalanNode* dAttr);
    00346
    00351     void
    00352     reportPassFail(XalanXMLFileReporter& logfile);
    00353
    00354     void
    00355     reportPassFail(XalanXMLFileReporter& logfile, const XalanDOMString& runid);
    00356
    00357     void
    00358     analyzeResults(XalanTransformer& xalan, const XalanDOMString& resultsFile);
    00359
    00360     static const XalanDOMChar   s_xmlSuffix[];
    00361
    00362     static const XalanDOMChar   s_pathSep[];
    00363
    00364 private:
    00365
    00366     static const XalanDOMString     s_emptyString;
    00367
    00368     XalanDOMString&
    00369     getProgramName(const char* fullName, XalanDOMString& theBuffer);
    00370
    00375     void
    00376     collectData(
    00377             const char*             errmsg,
    00378             const XalanDOMString&   currentnode,
    00379             const XalanDOMString&   actdata,
    00380             const XalanDOMString&   expdata);
    00381
    00386     void
    00387     reportError();
    00388
    00389 #if defined(NDEBUG)
    00390     void
    00391     debugNodeData(const XalanDOMString&     /* value */) const
    00392     {
    00393     }
    00394
    00395     void
    00396     debugNodeData(
    00397             const XalanDOMString&   /* node */,
    00398             const XalanDOMString&   /* value */) const
    00399     {
    00400     }
    00401
    00402     void
    00403     debugAttributeData(const XalanDOMString&    /* value */) const
    00404     {
    00405     }
    00406
    00407 #else
    00408
    00409     void
    00410     debugNodeData(const XalanDOMString&     value) const;
    00411
    00412     void
    00413     debugNodeData(
    00414             const XalanDOMString&   node,
    00415             const XalanDOMString&   value) const;
    00416
    00417     void
    00418     debugAttributeData(const XalanDOMString&    value) const;
    00419
    00420 #endif
    00421 private:
    00422     //Not implemented
    00423     XalanFileUtility();
    00424     XalanFileUtility(const XalanFileUtility&);
    00425
    00426 };        // end of class FileUtility
    00427
    00428
    00429
    00430 XALAN_CPP_NAMESPACE_END
    00431
    00432
    00433
    00434 #endif  // XALAN_FILEUTILITY_HEADER_GUARD_1357924680

Interpreting class diagrams

Doxygen and GraphViz are used to generate this API documentation from the Xalan-C header files.

Xalan-C++ XSLT Processor Version 1.9 Copyright © 1999-2004 The Apache Software Foundation. All Rights Reserved.