Back to index

lightning-sunbird  0.9+nobinonly
nsUnicodeToSunIndic.h
Go to the documentation of this file.
00001 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
00002  * ucvhi : nsUnicodeToSunIndic.h
00003  *
00004  * ***** BEGIN LICENSE BLOCK *****
00005  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
00006  *
00007  * The contents of this file are subject to the Mozilla Public License Version
00008  * 1.1 (the "License"); you may not use this file except in compliance with
00009  * the License. You may obtain a copy of the License at
00010  * http://www.mozilla.org/MPL/
00011  *
00012  * Software distributed under the License is distributed on an "AS IS" basis,
00013  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
00014  * for the specific language governing rights and limitations under the
00015  * License.
00016  *
00017  * The Original Code is mozilla.org code. The Initial Developer of the Original Code is Sun Microsystems, Inc.  Portions created by SUN are Copyright (C) 2000 SUN Microsystems, Inc. All Rights Reserved.
00018  *
00019  * The Initial Developer of the Original Code is
00020  * Sun Microsystems, Inc.
00021  * Portions created by the Initial Developer are Copyright (C) 2000
00022  * the Initial Developer. All Rights Reserved.
00023  *
00024  * Contributor(s):
00025  *   Prabhat Hegde (prabhat.hegde@sun.com)
00026  *
00027  * Alternatively, the contents of this file may be used under the terms of
00028  * either of the GNU General Public License Version 2 or later (the "GPL"),
00029  * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
00030  * in which case the provisions of the GPL or the LGPL are applicable instead
00031  * of those above. If you wish to allow use of your version of this file only
00032  * under the terms of either the GPL or the LGPL, and not to allow others to
00033  * use your version of this file under the terms of the MPL, indicate your
00034  * decision by deleting the provisions above and replace them with the notice
00035  * and other provisions required by the GPL or the LGPL. If you do not delete
00036  * the provisions above, a recipient may use your version of this file under
00037  * the terms of any one of the MPL, the GPL or the LGPL.
00038  *
00039  * ***** END LICENSE BLOCK ***** */
00040 #ifndef nsUnicodeToSunIndic_h___
00041 #define nsUnicodeToSunIndic_h___
00042 
00043 #include "nspr.h"
00044 #include "nsIFactory.h"
00045 #include "nsIGenericFactory.h"
00046 #include "nsIServiceManager.h"
00047 #include "nsICharsetConverterManager.h"
00048 #include "nsIModule.h"
00049 #include "nsIUnicodeEncoder.h"
00050 #include "nsICharRepresentable.h"
00051 
00052 #include "nsILE.h"
00053 
00054 //----------------------------------------------------------------------
00055 // Class nsUnicodeToSunIndic [declaration]
00056 
00057 class nsUnicodeToSunIndic : public nsIUnicodeEncoder, public nsICharRepresentable
00058 {
00059 NS_DECL_ISUPPORTS
00060 
00061 public:
00062   nsUnicodeToSunIndic();
00063   virtual ~nsUnicodeToSunIndic();
00064 
00065   NS_IMETHOD Convert(const PRUnichar * aSrc, PRInt32 * aSrcLength,
00066                      char * aDest, PRInt32 * aDestLength);
00067 
00068   NS_IMETHOD Finish(char * aDest, PRInt32 * aDestLength);
00069 
00070   NS_IMETHOD GetMaxLength(const PRUnichar * aSrc, PRInt32 aSrcLength,
00071                           PRInt32 * aDestLength);
00072 
00073   NS_IMETHOD Reset();
00074 
00075   NS_IMETHOD SetOutputErrorBehavior(PRInt32 aBehavior,
00076                                     nsIUnicharEncoder * aEncoder,
00077                                     PRUnichar aChar);
00078 
00079   NS_IMETHOD FillInfo(PRUint32* aInfo);
00080 
00081 private:
00082   PRUint8 mState;
00083   PRInt32 mByteOff;
00084   PRInt32 mCharOff;
00085 
00086   nsCOMPtr<nsILE> mCtlObj;
00087 
00088   PRInt32 mErrBehavior;
00089   PRUnichar mErrChar;
00090   nsCOMPtr<nsIUnicharEncoder> mErrEncoder;
00091 };
00092 #endif /* !nsUnicodeToSunIndic_h___ */