1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
|
/*
FALCON - The Falcon Programming Language
FILE: autoucsstring.cpp
Utility to convert falcon items and strings into UCS-2 Strings.
-------------------------------------------------------------------
Author: Giancarlo Niccolai
Begin: Sun, 12 Sep 2010 12:53:18 +0200
-------------------------------------------------------------------
(C) Copyright 2004: the FALCON developers (see list in AUTHORS file)
See LICENSE file for licensing details.
*/
/** \file
Utility to convert falcon items and strings into UCS-2 Strings.
*/
#include <falcon/autoucsstring.h>
#include <falcon/item.h>
#include <falcon/vm.h>
namespace Falcon {
AutoUCSString::AutoUCSString():
m_len(0)
{
m_pData = m_buffer;
m_buffer[0] = 0;
}
AutoUCSString::AutoUCSString( const String &str, uint16 defChar ):
m_pData(0)
{
set( str, defChar );
}
AutoUCSString::~AutoUCSString()
{
if ( m_pData != 0 && m_pData != m_buffer )
memFree( m_pData );
}
void AutoUCSString::set( const Falcon::String &str, uint16 defChar )
{
if ( m_pData != 0 && m_pData != m_buffer )
memFree( m_pData );
m_len = str.length();
if ( m_len + 1 <= AutoUCSString_BUF_SPACE )
{
m_pData = m_buffer;
}
else
{
Falcon::uint32 size = (m_len + 1) * sizeof(uint16);
m_pData = (uint16 *) memAlloc( size );
}
for( uint32 i = 0; i < m_len; ++i )
{
uint32 chr = str.getCharAt(i);
m_pData[i] = chr <= 0xFFFF ? chr : defChar;
}
m_pData[m_len] = 0;
}
}
/* end of autoucsstring.cpp */
|