DCL 4.0
Loading...
Searching...
No Matches
LocaleEncoder Class Reference

#include <Charset.h>

Inheritance diagram for LocaleEncoder:
CharsetEncoder Object

Public Member Functions

 LocaleEncoder ()
virtual void reset ()
virtual int encode (const wchar_t *_in, size_t &_inCount, byte_t *_out, size_t &_outCount)
Public Member Functions inherited from Object
virtual String toString () const
virtual void destroy ()
String className () const
bool isInstanceOf (const std::type_info &typeinfo) const
virtual const std::type_info & typeInfo () const

Static Public Member Functions

static ByteString encode (const wchar_t *_wcs, size_t _wcslen) __DCL_THROWS1(CharsetConvertException *)
static ByteString encode (const String &_str) __DCL_THROWS1(CharsetConvertException *)

Protected Member Functions

virtual int toMultiByte (ucs4_t _uc, byte_t *_mbs, size_t _mbslen)
Protected Member Functions inherited from CharsetEncoder
 CharsetEncoder ()
Protected Member Functions inherited from Object
virtual ~Object ()
 Object ()

Detailed Description

Definition at line 366 of file Charset.h.

Constructor & Destructor Documentation

◆ LocaleEncoder()

LocaleEncoder::LocaleEncoder ( )

Member Function Documentation

◆ encode() [1/3]

ByteString LocaleEncoder::encode ( const String & _str)
inlinestatic

Definition at line 388 of file Charset.h.

390 {
391 return LocaleEncoder::encode(_str, _str.length());
392 }
virtual int encode(const wchar_t *_in, size_t &_inCount, byte_t *_out, size_t &_outCount)

◆ encode() [2/3]

int LocaleEncoder::encode ( const wchar_t * _in,
size_t & _inCount,
byte_t * _out,
size_t & _outCount )
virtual

Definition at line 497 of file CharsetEncoder.cpp.

503{
504 __DCL_ASSERT(_in != NULL && _out != NULL);
505
506 byte_t* dst = _out;
507 byte_t* dstend = dst + _outCount;
508 size_t dstlen;
509
510 const wchar_t* src = _in;
511 const wchar_t* srcend = src + _inCount;
512
513 size_t n = 0;
514 char aBuf[24];
515 while (src < srcend && (dstlen = dstend - dst) > 0) {
516 n = wcrtomb(aBuf, *src, &__mbstate);
517 if (n == (size_t) -1 || n > dstlen)
518 // 에러이거나, 남은 버퍼보다 크면
519 break;
520
521 strncpy((char*)dst, aBuf, n);
522
523 dst += n;
524 src++;
525 }
526
527 _inCount = src - _in;
528 _outCount = dst - _out;
529
530 if (n == (size_t) -1) // errno == EILSEQ
531 return CS_ILLEGAL_UCS;
532/*
533 if (src < srcend && dst == dstend)
534 return CS_BUFFER_SMALL;
535*/
536 return CS_NOERROR;
537}
@ CS_NOERROR
Definition Charset.h:61
@ CS_ILLEGAL_UCS
Definition Charset.h:63
#define NULL
Definition Config.h:340
unsigned char byte_t
Definition Config.h:274
#define __DCL_ASSERT(expr)
Definition Object.h:371
void CharsetConvertException *size_t n
Definition SQLField.cpp:253

◆ encode() [3/3]

ByteString LocaleEncoder::encode ( const wchar_t * _wcs,
size_t _wcslen )
inlinestatic

Definition at line 381 of file Charset.h.

383 {
384 LocaleEncoder encoder;
385 return ((CharsetEncoder*)&encoder)->encode(_wcs, _wcslen);
386 }

◆ reset()

void LocaleEncoder::reset ( )
virtual

Definition at line 491 of file CharsetEncoder.cpp.

492{
493 memset(&__mbstate, 0, sizeof(__mbstate));
494}

◆ toMultiByte()

int LocaleEncoder::toMultiByte ( ucs4_t _uc,
byte_t * _mbs,
size_t _mbslen )
protectedvirtual

Implements CharsetEncoder.

Definition at line 539 of file CharsetEncoder.cpp.

540{
541 __DCL_ASSERT(false);
542 return 0;
543}

The documentation for this class was generated from the following files: