diff options
Diffstat (limited to 'tools/source/string/tstring.cxx')
-rw-r--r-- | tools/source/string/tstring.cxx | 304 |
1 files changed, 304 insertions, 0 deletions
diff --git a/tools/source/string/tstring.cxx b/tools/source/string/tstring.cxx new file mode 100644 index 000000000000..9e8cda42b736 --- /dev/null +++ b/tools/source/string/tstring.cxx @@ -0,0 +1,304 @@ +/************************************************************************* + * + * $RCSfile: tstring.cxx,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 17:03:09 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (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.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#include <string.h> + +#ifndef _OSL_INTERLCK_H +#include <osl/interlck.h> +#endif +#ifndef _RTL_ALLOC_H +#include <rtl/alloc.h> +#endif +#ifndef _RTL_MEMORY_H +#include <rtl/memory.h> +#endif +#ifndef _RTL_TENCINFO_H +#include <rtl/tencinfo.h> +#endif + +#define private public +#include <string.hxx> +#undef private +#include <impstrg.hxx> + +// For shared byte convert tables +#ifndef _TOOLS_TOOLSIN_HXX +#include <toolsin.hxx> +#endif + +#include <debug.hxx> + +// ======================================================================= + +DBG_NAME( ByteString ); +DBG_NAMEEX( UniString ); + +// ----------------------------------------------------------------------- + +#define STRCODE sal_Char +#define STRING ByteString +#define STRINGDATA ByteStringData +#define DBGCHECKSTRING DbgCheckByteString + +// ----------------------------------------------------------------------- + +xub_StrLen ImplStringLen( const sal_Char* pStr ) +{ + const sal_Char* pTempStr = pStr; + while( *pTempStr ) + pTempStr++; + return (xub_StrLen)(pTempStr-pStr); +} + +// ----------------------------------------------------------------------- + +xub_StrLen ImplStringLen( const sal_Unicode* pStr ) +{ + const sal_Unicode* pTempStr = pStr; + while( *pTempStr ) + pTempStr++; + return (xub_StrLen)(pTempStr-pStr); +} + +// ----------------------------------------------------------------------- + +#include <strimp.cxx> +#include <strcvt.cxx> + +#ifndef NOOLDSTRING +#include <strold.cxx> +#endif + +// ----------------------------------------------------------------------- + +ByteString ByteString::CreateFromInt32( sal_Int32 n, sal_Int16 nRadix ) +{ + sal_Char aBuf[RTL_STR_MAX_VALUEOFINT32]; + return ByteString( aBuf, rtl_str_valueOfInt32( aBuf, n, nRadix ) ); +} + +// ----------------------------------------------------------------------- + +ByteString ByteString::CreateFromInt64( sal_Int64 n, sal_Int16 nRadix ) +{ + sal_Char aBuf[RTL_STR_MAX_VALUEOFINT64]; + return ByteString( aBuf, rtl_str_valueOfInt64( aBuf, n, nRadix ) ); +} + +// ----------------------------------------------------------------------- + +ByteString ByteString::CreateFromFloat( float f ) +{ + sal_Char aBuf[RTL_STR_MAX_VALUEOFFLOAT]; + return ByteString( aBuf, rtl_str_valueOfFloat( aBuf, f ) ); +} + +// ----------------------------------------------------------------------- + +ByteString ByteString::CreateFromDouble( double d ) +{ + sal_Char aBuf[RTL_STR_MAX_VALUEOFDOUBLE]; + return ByteString( aBuf, rtl_str_valueOfDouble( aBuf, d ) ); +} + +// ----------------------------------------------------------------------- + +sal_Int32 ByteString::ToInt32() const +{ + DBG_CHKTHIS( ByteString, DbgCheckByteString ); + + return atoi( mpData->maStr ); +} + +// ----------------------------------------------------------------------- + +sal_Int64 ByteString::ToInt64() const +{ + DBG_CHKTHIS( ByteString, DbgCheckByteString ); + + return atoi( mpData->maStr ); +} + +// ----------------------------------------------------------------------- + +float ByteString::ToFloat() const +{ + DBG_CHKTHIS( ByteString, DbgCheckByteString ); + + return 0; +} + +// ----------------------------------------------------------------------- + +double ByteString::ToDouble() const +{ + DBG_CHKTHIS( ByteString, DbgCheckByteString ); + + return 0; +} + +// ----------------------------------------------------------------------- + +BOOL ByteString::IsLowerAscii() const +{ + DBG_CHKTHIS( ByteString, DbgCheckByteString ); + + xub_StrLen nIndex = 0; + xub_StrLen nLen = mpData->mnLen; + const sal_Char* pStr = mpData->maStr; + while ( nIndex < nLen ) + { + if ( (*pStr >= 65) && (*pStr <= 90) ) + return FALSE; + + pStr++; + nIndex++; + } + + return TRUE; +} + +// ----------------------------------------------------------------------- + +BOOL ByteString::IsUpperAscii() const +{ + DBG_CHKTHIS( ByteString, DbgCheckByteString ); + + xub_StrLen nIndex = 0; + xub_StrLen nLen = mpData->mnLen; + const sal_Char* pStr = mpData->maStr; + while ( nIndex < nLen ) + { + if ( (*pStr >= 97) && (*pStr <= 122) ) + return FALSE; + + pStr++; + nIndex++; + } + + return TRUE; +} + +// ----------------------------------------------------------------------- + +BOOL ByteString::IsAlphaAscii() const +{ + DBG_CHKTHIS( ByteString, DbgCheckByteString ); + + xub_StrLen nIndex = 0; + xub_StrLen nLen = mpData->mnLen; + const sal_Char* pStr = mpData->maStr; + while ( nIndex < nLen ) + { + if ( !(((*pStr >= 97) && (*pStr <= 122)) || + ((*pStr >= 65) && (*pStr <= 90))) ) + return FALSE; + + pStr++; + nIndex++; + } + + return TRUE; +} + +// ----------------------------------------------------------------------- + +BOOL ByteString::IsNumericAscii() const +{ + DBG_CHKTHIS( ByteString, DbgCheckByteString ); + + xub_StrLen nIndex = 0; + xub_StrLen nLen = mpData->mnLen; + const sal_Char* pStr = mpData->maStr; + while ( nIndex < nLen ) + { + if ( !((*pStr >= 48) && (*pStr <= 57)) ) + return FALSE; + + pStr++; + nIndex++; + } + + return TRUE; +} + +// ----------------------------------------------------------------------- + +BOOL ByteString::IsAlphaNumericAscii() const +{ + DBG_CHKTHIS( ByteString, DbgCheckByteString ); + + xub_StrLen nIndex = 0; + xub_StrLen nLen = mpData->mnLen; + const sal_Char* pStr = mpData->maStr; + while ( nIndex < nLen ) + { + if ( !(((*pStr >= 97) && (*pStr <= 122)) || + ((*pStr >= 65) && (*pStr <= 90)) || + ((*pStr >= 48) && (*pStr <= 57))) ) + return FALSE; + + pStr++; + nIndex++; + } + + return TRUE; +} |