Back to index

lightning-sunbird  0.9+nobinonly
nsUnicodeToTIS620.h
Go to the documentation of this file.
00001 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
00002  * ucvth : nsUnicodeToTIS620.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 nsUnicodeToTIS620_h___
00041 #define nsUnicodeToTIS620_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 nsUnicodeToTIS620 [declaration]
00056 
00057 class nsUnicodeToTIS620 : public nsIUnicodeEncoder, public nsICharRepresentable
00058 {
00059 
00060 NS_DECL_ISUPPORTS
00061 
00062 public:
00066   nsUnicodeToTIS620();
00067   virtual ~nsUnicodeToTIS620();
00068 
00069   NS_IMETHOD Convert(const PRUnichar * aSrc, PRInt32 * aSrcLength,
00070                      char * aDest, PRInt32 * aDestLength);
00071 
00072   NS_IMETHOD Finish(char * aDest, PRInt32 * aDestLength);
00073 
00074   NS_IMETHOD GetMaxLength(const PRUnichar * aSrc, PRInt32 aSrcLength,
00075                           PRInt32 * aDestLength);
00076 
00077   NS_IMETHOD Reset();
00078 
00079   NS_IMETHOD SetOutputErrorBehavior(PRInt32 aBehavior,
00080                                     nsIUnicharEncoder * aEncoder, 
00081                                     PRUnichar aChar);
00082 
00083   NS_IMETHOD FillInfo(PRUint32* aInfo);
00084 
00085 private:
00086   PRUint8 mState;
00087   PRInt32 mByteOff;
00088   PRInt32 mCharOff;
00089 
00090   nsCOMPtr<nsILE> mCtlObj;
00091 };
00092 #endif /* !nsUnicodeToTIS620_h___ */