X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fpapers%2Fuse_case%2Fstats%2Fparse%2FDOMCount%2FDOMCount.hpp;fp=helm%2Fpapers%2Fuse_case%2Fstats%2Fparse%2FDOMCount%2FDOMCount.hpp;h=a394a3fbb0fcc7f11b52343922d9efd9a8277b03;hb=a84be8db90f3f27148074c22d80b21a2dcf58576;hp=0000000000000000000000000000000000000000;hpb=339504cd07bef1767536d6817953ba084e00855d;p=helm.git diff --git a/helm/papers/use_case/stats/parse/DOMCount/DOMCount.hpp b/helm/papers/use_case/stats/parse/DOMCount/DOMCount.hpp new file mode 100644 index 000000000..a394a3fbb --- /dev/null +++ b/helm/papers/use_case/stats/parse/DOMCount/DOMCount.hpp @@ -0,0 +1,170 @@ +/* + * Copyright 1999-2000,2004 The Apache Software Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Log$ + * Revision 1.1 2004/11/23 13:38:52 lpadovan + * * basic infrastructure for collecting statistics + * + * Revision 1.11 2004/09/08 13:55:31 peiyongz + * Apache License Version 2.0 + * + * Revision 1.10 2003/05/30 09:36:35 gareth + * Use new macros for iostream.h and std:: issues. + * + * Revision 1.9 2003/02/05 18:53:22 tng + * [Bug 11915] Utility for freeing memory. + * + * Revision 1.8 2002/11/05 21:46:19 tng + * Explicit code using namespace in application. + * + * Revision 1.7 2002/06/18 16:19:40 knoaman + * Replace XercesDOMParser with DOMBuilder for parsing XML documents. + * + * Revision 1.6 2002/02/01 22:35:01 peiyongz + * sane_include + * + * Revision 1.5 2000/10/20 22:00:35 andyh + * DOMCount sample Minor cleanup - rename error handler class to say that it is an error handler. + * + * Revision 1.4 2000/03/02 19:53:39 roddey + * This checkin includes many changes done while waiting for the + * 1.1.0 code to be finished. I can't list them all here, but a list is + * available elsewhere. + * + * Revision 1.3 2000/02/11 02:43:55 abagchi + * Removed StrX::transcode + * + * Revision 1.2 2000/02/06 07:47:17 rahulj + * Year 2K copyright swat. + * + * Revision 1.1.1.1 1999/11/09 01:09:52 twl + * Initial checkin + * + * Revision 1.5 1999/11/08 20:43:35 rahul + * Swat for adding in Product name and CVS comment log variable. + * + */ + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include +#include +#if defined(XERCES_NEW_IOSTREAMS) +#include +#else +#include +#endif + +XERCES_CPP_NAMESPACE_USE + +// --------------------------------------------------------------------------- +// Simple error handler deriviative to install on parser +// --------------------------------------------------------------------------- +class DOMCountErrorHandler : public DOMErrorHandler +{ +public: + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + DOMCountErrorHandler(); + ~DOMCountErrorHandler(); + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + bool getSawErrors() const; + + + // ----------------------------------------------------------------------- + // Implementation of the DOM ErrorHandler interface + // ----------------------------------------------------------------------- + bool handleError(const DOMError& domError); + void resetErrors(); + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DOMCountErrorHandler(const DOMCountErrorHandler&); + void operator=(const DOMCountErrorHandler&); + + + // ----------------------------------------------------------------------- + // Private data members + // + // fSawErrors + // This is set if we get any errors, and is queryable via a getter + // method. Its used by the main code to suppress output if there are + // errors. + // ----------------------------------------------------------------------- + bool fSawErrors; +}; + + +// --------------------------------------------------------------------------- +// This is a simple class that lets us do easy (though not terribly efficient) +// trancoding of XMLCh data to local code page for display. +// --------------------------------------------------------------------------- +class StrX +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + StrX(const XMLCh* const toTranscode) + { + // Call the private transcoding method + fLocalForm = XMLString::transcode(toTranscode); + } + + ~StrX() + { + XMLString::release(&fLocalForm); + } + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + const char* localForm() const + { + return fLocalForm; + } + +private : + // ----------------------------------------------------------------------- + // Private data members + // + // fLocalForm + // This is the local code page form of the string. + // ----------------------------------------------------------------------- + char* fLocalForm; +}; + +inline XERCES_STD_QUALIFIER ostream& operator<<(XERCES_STD_QUALIFIER ostream& target, const StrX& toDump) +{ + target << toDump.localForm(); + return target; +} + +inline bool DOMCountErrorHandler::getSawErrors() const +{ + return fSawErrors; +}