Main Page   Class Hierarchy   Compound List   File List   Compound Members  

XMLMsgLoader.hpp

00001 /*
00002  * The Apache Software License, Version 1.1
00003  * 
00004  * Copyright (c) 1999-2000 The Apache Software Foundation.  All rights
00005  * reserved.
00006  * 
00007  * Redistribution and use in source and binary forms, with or without
00008  * modification, are permitted provided that the following conditions
00009  * are met:
00010  * 
00011  * 1. Redistributions of source code must retain the above copyright
00012  *    notice, this list of conditions and the following disclaimer. 
00013  * 
00014  * 2. Redistributions in binary form must reproduce the above copyright
00015  *    notice, this list of conditions and the following disclaimer in
00016  *    the documentation and/or other materials provided with the
00017  *    distribution.
00018  * 
00019  * 3. The end-user documentation included with the redistribution,
00020  *    if any, must include the following acknowledgment:  
00021  *       "This product includes software developed by the
00022  *        Apache Software Foundation (http://www.apache.org/)."
00023  *    Alternately, this acknowledgment may appear in the software itself,
00024  *    if and wherever such third-party acknowledgments normally appear.
00025  * 
00026  * 4. The names "Xerces" and "Apache Software Foundation" must
00027  *    not be used to endorse or promote products derived from this
00028  *    software without prior written permission. For written 
00029  *    permission, please contact apache\@apache.org.
00030  * 
00031  * 5. Products derived from this software may not be called "Apache",
00032  *    nor may "Apache" appear in their name, without prior written
00033  *    permission of the Apache Software Foundation.
00034  * 
00035  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
00036  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
00037  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
00038  * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
00039  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
00040  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
00041  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
00042  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
00043  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
00044  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
00045  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
00046  * SUCH DAMAGE.
00047  * ====================================================================
00048  * 
00049  * This software consists of voluntary contributions made by many
00050  * individuals on behalf of the Apache Software Foundation, and was
00051  * originally based on software copyright (c) 1999, International
00052  * Business Machines, Inc., http://www.ibm.com .  For more information
00053  * on the Apache Software Foundation, please see
00054  * <http://www.apache.org/>.
00055  */
00056 
00057 /*
00058  * $Log: XMLMsgLoader.hpp,v $
00059  * Revision 1.1  2002/05/11 21:19:35  bhavani
00060  * CR#CR062582# adding xercesc 1.7 file
00061  *
00062  * Revision 1.1.1.1  2002/02/01 22:22:15  peiyongz
00063  * sane_include
00064  *
00065  * Revision 1.5  2000/03/28 19:43:20  roddey
00066  * Fixes for signed/unsigned warnings. New work for two way transcoding
00067  * stuff.
00068  *
00069  * Revision 1.4  2000/03/02 19:54:49  roddey
00070  * This checkin includes many changes done while waiting for the
00071  * 1.1.0 code to be finished. I can't list them all here, but a list is
00072  * available elsewhere.
00073  *
00074  * Revision 1.3  2000/02/24 20:05:26  abagchi
00075  * Swat for removing Log from API docs
00076  *
00077  * Revision 1.2  2000/02/06 07:48:05  rahulj
00078  * Year 2K copyright swat.
00079  *
00080  * Revision 1.1.1.1  1999/11/09 01:05:47  twl
00081  * Initial checkin
00082  *
00083  * Revision 1.2  1999/11/08 20:45:20  rahul
00084  * Swat for adding in Product name and CVS comment log variable.
00085  *
00086  */
00087 
00088 
00089 #if !defined(XMLMSGLOADER_HPP)
00090 #define XMLMSGLOADER_HPP
00091 
00092 #include <xercesc/util/XercesDefs.hpp>
00093 
00094 //
00095 //  This header defines an abstract message loading API. This is the API via
00096 //  which the parser system loads translatable text, and there can be multiple
00097 //  actual implementations of this mechanism. The API is very simple because
00098 //  there can be many kinds of underlying systems on which implementations are
00099 //  based and we don't want to get into portability trouble by being overly
00100 //  smart.
00101 //
00102 //  Each instance of the message loader loads a file of messages, which are
00103 //  accessed by key and which are associated with a particular language. The
00104 //  actual source information may be in many forms, but by the time it is
00105 //  extracted for use it will be in Unicode format. The language is always
00106 //  the default language for the local machine.
00107 //
00108 //  Msg loader derivatives are not required to be thread safe. The parser will
00109 //  never use a single instance in more than one thread.
00110 //
00111 class XMLUTIL_EXPORT XMLMsgLoader
00112 {
00113 public :
00114     // -----------------------------------------------------------------------
00115     //  Class specific types
00116     //
00117     //  XMLMsgId
00118     //      A simple typedef to give us flexibility about the representation
00119     //      of a message id.
00120     // -----------------------------------------------------------------------
00121     typedef unsigned int    XMLMsgId;
00122 
00123 
00124     // -----------------------------------------------------------------------
00125     //  Public Constructors and Destructor
00126     // -----------------------------------------------------------------------
00127     virtual ~XMLMsgLoader();
00128 
00129 
00130     // -----------------------------------------------------------------------
00131     //  The virtual message loader API
00132     // -----------------------------------------------------------------------
00133     virtual bool loadMsg
00134     (
00135         const   XMLMsgId        msgToLoad
00136         ,       XMLCh* const    toFill
00137         , const unsigned int    maxChars
00138     ) = 0;
00139 
00140     virtual bool loadMsg
00141     (
00142         const   XMLMsgId        msgToLoad
00143         ,       XMLCh* const    toFill
00144         , const unsigned int    maxChars
00145         , const XMLCh* const    repText1
00146         , const XMLCh* const    repText2 = 0
00147         , const XMLCh* const    repText3 = 0
00148         , const XMLCh* const    repText4 = 0
00149     ) = 0;
00150 
00151     virtual bool loadMsg
00152     (
00153         const   XMLMsgId        msgToLoad
00154         ,       XMLCh* const    toFill
00155         , const unsigned int    maxChars
00156         , const char* const     repText1
00157         , const char* const     repText2 = 0
00158         , const char* const     repText3 = 0
00159         , const char* const     repText4 = 0
00160     ) = 0;
00161 
00162 
00163     // -----------------------------------------------------------------------
00164     //  Getter methods
00165     // -----------------------------------------------------------------------
00166     const XMLCh* getLanguageName() const;
00167 
00168 
00169 protected :
00170     // -----------------------------------------------------------------------
00171     //  Hidden Constructors
00172     // -----------------------------------------------------------------------
00173     XMLMsgLoader();
00174 
00175 
00176     // -----------------------------------------------------------------------
00177     //  Protected helper methods
00178     // -----------------------------------------------------------------------
00179     void setLanguageName(XMLCh* const nameToAdopt);
00180 
00181 
00182 private :
00183     // -----------------------------------------------------------------------
00184     //  Unimplemented constructors and operators
00185     // -----------------------------------------------------------------------
00186     XMLMsgLoader(const XMLMsgLoader&);
00187     void operator=(const XMLMsgLoader&);
00188 
00189 
00190     // -----------------------------------------------------------------------
00191     //  Private data members
00192     //
00193     //  fLanguage
00194     //      This is the language that is represented by this instance of the
00195     //      loader. The derived class must pass this through for storage and
00196     //      we adopt it and delete it when we go.
00197     // -----------------------------------------------------------------------
00198     XMLCh*  fLanguage;
00199 };
00200 
00201 
00202 // ---------------------------------------------------------------------------
00203 //  XMLMsgLoader: Public Constructors and Destructor
00204 // ---------------------------------------------------------------------------
00205 inline XMLMsgLoader::~XMLMsgLoader()
00206 {
00207     delete [] fLanguage;
00208 }
00209 
00210 
00211 // ---------------------------------------------------------------------------
00212 //  XMLMsgLoader: Hidden Constructors
00213 // ---------------------------------------------------------------------------
00214 inline XMLMsgLoader::XMLMsgLoader() :
00215 
00216     fLanguage(0)
00217 {
00218 }
00219 
00220 
00221 // ---------------------------------------------------------------------------
00222 //  XMLMsgLoader: Getter methods
00223 // ---------------------------------------------------------------------------
00224 inline const XMLCh* XMLMsgLoader::getLanguageName() const
00225 {
00226     return fLanguage;
00227 }
00228 
00229 
00230 // ---------------------------------------------------------------------------
00231 //  XMLMsgLoader: Protected helper methods
00232 // ---------------------------------------------------------------------------
00233 inline void XMLMsgLoader::setLanguageName(XMLCh* const nameToAdopt)
00234 {
00235     delete [] fLanguage;
00236     fLanguage = nameToAdopt;
00237 }
00238 
00239 #endif

Generated on Tue Nov 19 09:36:35 2002 by doxygen1.3-rc1