File: autoucsstring.cpp

package info (click to toggle)
falconpl 0.9.6.9-git20120606-2
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 46,176 kB
  • sloc: cpp: 181,389; ansic: 109,025; yacc: 2,310; xml: 1,218; sh: 403; objc: 245; makefile: 82; sql: 20
file content (74 lines) | stat: -rw-r--r-- 1,547 bytes parent folder | download | duplicates (2)
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 */