i18napi.cc #1

  • //
  • guest/
  • perforce_software/
  • p4/
  • 2014-1/
  • i18n/
  • i18napi.cc
  • View
  • Commits
  • Open Download .zip Download (2 KB)
/*
 * Copyright 2001 Perforce Software.  All rights reserved.
 *
 */

/*
 * i18napi.cc - API support for charset conversion identifiers
 *
 */
#include <stdhdrs.h>
#include <strbuf.h>

#include "i18napi.h"

static const char *charsetname[] = {
    "none",
    "utf8",
    "iso8859-1",
    "utf16-nobom",
    "shiftjis",
    "eucjp",
    "winansi",
    "winoem",
    "macosroman",
    "iso8859-15",
    "iso8859-5",
    "koi8-r",
    "cp1251",
    "utf16le",
    "utf16be",
    "utf16le-bom",
    "utf16be-bom",
    "utf16",
    "utf8-bom",
    "utf32-nobom",
    "utf32le",
    "utf32be",
    "utf32le-bom",
    "utf32be-bom",
    "utf32",
    "utf8unchecked",
    "utf8unchecked-bom",
    "cp949",
    "cp936",
    "cp950",
    "cp850",
    "cp858",
    "cp1253",
    "cp737",
    "iso8859-7"
};

static unsigned int charsetcount = sizeof(charsetname) / sizeof(*charsetname);

unsigned int 
CharSetApi::CharSetCount()
{
    return charsetcount;
}

const char *
CharSetApi::Name(CharSetApi::CharSet c)
{
	unsigned int i = (unsigned int) c;
	if( i < charsetcount )
	    return charsetname[i];
	return NULL;
}

CharSetApi::CharSet
CharSetApi::Lookup(const char *s)
{
	StrRef st(s);

	for( unsigned int i = 0; i < charsetcount; ++i)
	    if( st == charsetname[i] )
		return (CharSet) i;
	return (CharSet) -1;
}

int
CharSetApi::isUnicode(CharSetApi::CharSet c)
{
	switch( c )
	{
	case UTF_8:
	case UTF_8_BOM:
	case UTF_8_UNCHECKED:
	case UTF_8_UNCHECKED_BOM:
	case UTF_16:
	case UTF_16_LE:
	case UTF_16_BE:
	case UTF_16_BOM:
	case UTF_16_LE_BOM:
	case UTF_16_BE_BOM:
	case UTF_32:
	case UTF_32_LE:
	case UTF_32_BE:
	case UTF_32_BOM:
	case UTF_32_LE_BOM:
	case UTF_32_BE_BOM:
	    return 1;
	}
	return 0;
}

int
CharSetApi::Granularity(CharSetApi::CharSet c)
{
	if( c == UTF_16 || c >= UTF_16_LE && c <= UTF_16_BOM )
	    return 2;
	if( c >= UTF_32 && c <= UTF_32_BOM )
	    return 4;
	if( (unsigned int)c < charsetcount )
	    return 1;
	return 0;
}
# Change User Description Committed
#1 15902 Matt Attaway A second renaming that I will not obliterate as a badge of shame
//guest/perforce_software/p4/2014_1/i18n/i18napi.cc
#1 15901 Matt Attaway Clean up code to fit modern Workshop naming standards
//guest/perforce_software/p4/2014.1/i18n/i18napi.cc
#1 12188 Matt Attaway Move 'main' p4 into a release specific directory in prep for new releases
//guest/perforce_software/p4/i18n/i18napi.cc
#1 9129 Matt Attaway Initial commit of the 2014.1 p4/p4api source code