Esempio n. 1
0
_STLP_BEGIN_NAMESPACE

//----------------------------------------------------------------------
// ctype_byname<char>

ctype_byname<char>::ctype_byname(const char* name, size_t refs, _Locale_name_hint* hint)
    : ctype<char>( 0, false, refs) {
  if (!name)
    locale::_M_throw_runtime_error(name);

  _M_ctype = _STLP_PRIV __acquire_ctype(name, hint);
  if (!_M_ctype)
    locale::_M_throw_runtime_error(name);

  ctype<char>::_M_ctype_table = _M_byname_table;

  // We have to do this, instead of just pointer twiddling, because
  // ctype_base::mask isn't the same type as _Locale_mask_t.
  const _Locale_mask_t* p = _Locale_ctype_table(_M_ctype);

  if (!p)
    locale::_M_throw_runtime_error();

  for (size_t i = 0; i < table_size; ++i) {
    _Locale_mask_t __m = p[i];
    if (__m & (upper | lower))
      __m |= alpha;
    _M_byname_table[i] = ctype_base::mask(__m);
  }
}
Esempio n. 2
0
void ctype_byname<char>::_M_init() {
  _M_ctype_table = _M_byname_table;

  // We have to do this, instead of just pointer twiddling, because
  // ctype_base::mask isn't the same type as _Locale_mask_t.
  const _Locale_mask_t* p = _Locale_ctype_table(_M_ctype);
  for (size_t i = 0; i != table_size; ++i) {
    _M_byname_table[i] = ctype_base::mask(p[i]);
  }
}
Esempio n. 3
0
ctype_byname<char>::ctype_byname(const char* name, size_t refs)
  : ctype<char>(_M_byname_table+1, false, refs),
  _M_ctype(__acquire_ctype(name))
{
  
  if (!_M_ctype)
    locale::_M_throw_runtime_error();
  
  // We have to do this, instead of just pointer twiddling, because
  // ctype_base::mask isn't the same type as _Locale_mask_t.  

  const _Locale_mask_t* p = _Locale_ctype_table(_M_ctype);

   if (!p)
     locale::_M_throw_runtime_error(); 

  for (size_t i = 0; i < table_size + 1; ++i) {
    _Locale_mask_t __m = p[i];
    if (__m & (upper | lower))
      __m |= alpha;
    _M_byname_table[i] = ctype_base::mask(__m);
  }
}