epoc32/include/STRNG.INL
author William Roberts <williamr@symbian.org>
Tue, 16 Mar 2010 16:12:26 +0000
branchSymbian2
changeset 2 2fe1408b6811
permissions -rw-r--r--
Final list of Symbian^2 public API header files
williamr@2
     1
// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
williamr@2
     2
// All rights reserved.
williamr@2
     3
// This component and the accompanying materials are made available
williamr@2
     4
// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
williamr@2
     5
// which accompanies this distribution, and is available
williamr@2
     6
// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
williamr@2
     7
//
williamr@2
     8
// Initial Contributors:
williamr@2
     9
// Nokia Corporation - initial contribution.
williamr@2
    10
//
williamr@2
    11
// Contributors:
williamr@2
    12
//
williamr@2
    13
// Description:
williamr@2
    14
// Header STRNG.INL
williamr@2
    15
// 
williamr@2
    16
//
williamr@2
    17
williamr@2
    18
inline String::String()
williamr@2
    19
 :	iLength(0), iText(NULL)
williamr@2
    20
	{
williamr@2
    21
	}
williamr@2
    22
williamr@2
    23
inline String::String(const char* aText)
williamr@2
    24
 :	iLength(0), iText(NULL)
williamr@2
    25
	{
williamr@2
    26
	if (aText && CreateText(strlen(aText)))
williamr@2
    27
		{
williamr@2
    28
		CopyText(iText, aText, iLength);
williamr@2
    29
		iText[iLength] = '\0';
williamr@2
    30
		}
williamr@2
    31
	}
williamr@2
    32
williamr@2
    33
inline String::String(int aLength,char* aText)
williamr@2
    34
 :	iLength(0), iText(NULL)
williamr@2
    35
	{
williamr@2
    36
	if (aText && CreateText(aLength))
williamr@2
    37
		{
williamr@2
    38
		CopyText(iText, aText, aLength);
williamr@2
    39
		iText[iLength] = '\0';
williamr@2
    40
		}
williamr@2
    41
	}
williamr@2
    42
williamr@2
    43
inline String::String(const String& aString)
williamr@2
    44
 :	iLength(0), iText(NULL)
williamr@2
    45
	{
williamr@2
    46
	if (CreateText(aString.iLength))
williamr@2
    47
		{
williamr@2
    48
		CopyText(iText, aString.iText, iLength);
williamr@2
    49
		iText[iLength] = '\0';
williamr@2
    50
		}
williamr@2
    51
	}
williamr@2
    52
williamr@2
    53
inline String& String::operator = (const char* aText)
williamr@2
    54
	{
williamr@2
    55
	char* text = iText;
williamr@2
    56
	if (CreateText(strlen(aText)))
williamr@2
    57
		{
williamr@2
    58
		CopyText(iText, aText, iLength);
williamr@2
    59
		iText[iLength] = '\0';
williamr@2
    60
		DeleteText(text);
williamr@2
    61
		}
williamr@2
    62
	return *this;
williamr@2
    63
	}
williamr@2
    64
williamr@2
    65
inline String& String::operator = (const String& aString)
williamr@2
    66
	{
williamr@2
    67
	String string(aString);
williamr@2
    68
	char* text = iText;
williamr@2
    69
	if (CreateText(string.iLength))
williamr@2
    70
		{
williamr@2
    71
		CopyText(iText, string.iText, iLength);
williamr@2
    72
		iText[iLength] = '\0';
williamr@2
    73
		DeleteText(text);
williamr@2
    74
		}
williamr@2
    75
	return *this;
williamr@2
    76
	}
williamr@2
    77
williamr@2
    78
inline String& String::operator += (const char aChar)
williamr@2
    79
	{
williamr@2
    80
	char* text = iText;
williamr@2
    81
	if (CreateText(iLength + 1))
williamr@2
    82
		{
williamr@2
    83
		CopyText(iText, text, iLength - 1);
williamr@2
    84
		iText[iLength - 1] = aChar;
williamr@2
    85
		iText[iLength] = '\0';
williamr@2
    86
		DeleteText(text);
williamr@2
    87
		}
williamr@2
    88
	return *this;
williamr@2
    89
	}
williamr@2
    90
williamr@2
    91
inline String& String::operator += (const String& aString)
williamr@2
    92
	{
williamr@2
    93
	char* text = iText;
williamr@2
    94
	int length = iLength;
williamr@2
    95
	if (CreateText(length + aString.iLength))
williamr@2
    96
		{
williamr@2
    97
		CopyText(iText, text, length);
williamr@2
    98
		CopyText(iText + length, aString.iText, aString.iLength);
williamr@2
    99
		iText[iLength] = '\0';
williamr@2
   100
		DeleteText(text);
williamr@2
   101
		}
williamr@2
   102
	return *this;
williamr@2
   103
	}
williamr@2
   104
williamr@2
   105
inline int String::operator == (const String& aString) const
williamr@2
   106
	{
williamr@2
   107
	boolean same = etrue;
williamr@2
   108
	if (iLength != aString.iLength)
williamr@2
   109
		same = efalse;
williamr@2
   110
	else
williamr@2
   111
		{
williamr@2
   112
		for (int i = 0; i < iLength; i++)
williamr@2
   113
			same = same && ((*this)[i] == aString[i]);
williamr@2
   114
		}
williamr@2
   115
	return same;
williamr@2
   116
	}
williamr@2
   117
williamr@2
   118
inline char& String::operator [] (const int aNum) const
williamr@2
   119
	{
williamr@2
   120
	return iText[aNum];
williamr@2
   121
	}
williamr@2
   122
williamr@2
   123
inline int String::Length() const
williamr@2
   124
	{
williamr@2
   125
	return iLength;
williamr@2
   126
	}
williamr@2
   127
williamr@2
   128
inline const char* String::Text()
williamr@2
   129
	{
williamr@2
   130
	return iText;
williamr@2
   131
	}
williamr@2
   132
williamr@2
   133
inline void String::CopyText(char* aDest, const char* aSource, int aLength) const
williamr@2
   134
	{
williamr@2
   135
	for (int i = 0; i < aLength; i++)
williamr@2
   136
		aDest[i] = aSource[i];
williamr@2
   137
	}