Back to index

lightning-sunbird  0.9+nobinonly
nsLWBreakerFImp.cpp
Go to the documentation of this file.
00001 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
00002 /* ***** BEGIN LICENSE BLOCK *****
00003  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
00004  *
00005  * The contents of this file are subject to the Mozilla Public License Version
00006  * 1.1 (the "License"); you may not use this file except in compliance with
00007  * the License. You may obtain a copy of the License at
00008  * http://www.mozilla.org/MPL/
00009  *
00010  * Software distributed under the License is distributed on an "AS IS" basis,
00011  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
00012  * for the specific language governing rights and limitations under the
00013  * License.
00014  *
00015  * The Original Code is mozilla.org code.
00016  *
00017  * The Initial Developer of the Original Code is
00018  * Netscape Communications Corporation.
00019  * Portions created by the Initial Developer are Copyright (C) 1998
00020  * the Initial Developer. All Rights Reserved.
00021  *
00022  * Contributor(s):
00023  *
00024  * Alternatively, the contents of this file may be used under the terms of
00025  * either of the GNU General Public License Version 2 or later (the "GPL"),
00026  * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
00027  * in which case the provisions of the GPL or the LGPL are applicable instead
00028  * of those above. If you wish to allow use of your version of this file only
00029  * under the terms of either the GPL or the LGPL, and not to allow others to
00030  * use your version of this file under the terms of the MPL, indicate your
00031  * decision by deleting the provisions above and replace them with the notice
00032  * and other provisions required by the GPL or the LGPL. If you do not delete
00033  * the provisions above, a recipient may use your version of this file under
00034  * the terms of any one of the MPL, the GPL or the LGPL.
00035  *
00036  * ***** END LICENSE BLOCK ***** */
00037 
00038 #include "nsLWBreakerFImp.h"
00039 
00040 #include "nsLWBRKDll.h"
00041 
00042 #include "nsJISx4501LineBreaker.h"
00043 #include "nsSampleWordBreaker.h"
00044 
00045 nsLWBreakerFImp::nsLWBreakerFImp()
00046 {
00047 }
00048 nsLWBreakerFImp::~nsLWBreakerFImp()
00049 {
00050 }
00051 
00052 NS_IMPL_ISUPPORTS2(nsLWBreakerFImp,
00053                    nsILineBreakerFactory,
00054                    nsIWordBreakerFactory)
00055 
00056 static const PRUnichar gJaNoBegin[] =
00057 {
00058   0xfffd // to be changed
00059 };
00060 static const PRUnichar gJaNoEnd[] =
00061 {
00062   0xfffd // to be changed
00063 };
00064 static const PRUnichar gKoNoBegin[] =
00065 {
00066   0xfffd // to be changed
00067 };
00068 static const PRUnichar gKoNoEnd[] =
00069 {
00070   0xfffd // to be changed
00071 };
00072 static const PRUnichar gTwNoBegin[] =
00073 {
00074   0xfffd // to be changed
00075 };
00076 static const PRUnichar gTwNoEnd[] =
00077 {
00078   0xfffd // to be changed
00079 };
00080 static const PRUnichar gCnNoBegin[] =
00081 {
00082   0xfffd // to be changed
00083 };
00084 static const PRUnichar gCnNoEnd[] =
00085 {
00086   0xfffd // to be changed
00087 };
00088 
00089 nsresult
00090 nsLWBreakerFImp::GetBreaker(const nsAString& aParam, nsILineBreaker** oResult)
00091 {
00092   nsJISx4051LineBreaker *result;
00093   if( aParam.EqualsLiteral("ja") ) 
00094   {
00095      result = new nsJISx4051LineBreaker (
00096            gJaNoBegin, sizeof(gJaNoBegin)/sizeof(PRUnichar), 
00097            gJaNoEnd, sizeof(gJaNoEnd)/sizeof(PRUnichar));
00098   } 
00099   else if(aParam.EqualsLiteral("ko")) 
00100   {
00101      result = new nsJISx4051LineBreaker (
00102            gKoNoBegin, sizeof(gKoNoBegin)/sizeof(PRUnichar), 
00103            gKoNoEnd, sizeof(gKoNoEnd)/sizeof(PRUnichar));
00104   } 
00105   else if(aParam.EqualsLiteral("tw")) 
00106   {
00107      result = new nsJISx4051LineBreaker (
00108            gTwNoBegin, sizeof(gTwNoBegin)/sizeof(PRUnichar), 
00109            gTwNoEnd, sizeof(gTwNoEnd)/sizeof(PRUnichar));
00110   } 
00111   else if(aParam.EqualsLiteral("cn")) 
00112   {
00113      result = new nsJISx4051LineBreaker (
00114            gCnNoBegin, sizeof(gCnNoBegin)/sizeof(PRUnichar), 
00115            gCnNoEnd, sizeof(gCnNoEnd)/sizeof(PRUnichar));
00116   } 
00117   else 
00118   {
00119      result = new nsJISx4051LineBreaker (nsnull, 0, nsnull, 0);
00120   }
00121 
00122   if (!result)
00123     return NS_ERROR_OUT_OF_MEMORY;
00124 
00125   NS_ADDREF(result);
00126   *oResult = result;
00127 
00128   return NS_OK;
00129 }
00130 
00131 nsresult
00132 nsLWBreakerFImp::GetBreaker(const nsAString& aParam, nsIWordBreaker** oResult)
00133 {
00134   nsSampleWordBreaker *result = new nsSampleWordBreaker ();
00135   if (!result)
00136     return NS_ERROR_OUT_OF_MEMORY;
00137 
00138   NS_ADDREF(result);
00139   *oResult = result;
00140 
00141   return NS_OK;
00142 }
00143