a firstworks project
Rudiments
About Documentation Download Licensing News

Using the ucs2character class


Introduction

The ucs2character class provides static methods for evaluating and manipulating UCS-2 characters.

Analyzing Characters

Methods are provided for determining if a UCS-2 character is alphabetic, alphanumeric, lower case, upper case, etc.

#include <rudiments/ucs2character.h>
#include <rudiments/stdio.h>

int main(int argc, const char **argv) {

	// print information about all ascii characters
	for (int32_t uc=0; uc<128; uc++) {

		ucs2_t	c=(ucs2_t)uc;

		stdoutput.printf("character %c:\n",(char)c);

		stdoutput.printf("	is alphanumeric		: %s\n",
				(ucs2character::isAlphanumeric(c))?"yes":"no");
		stdoutput.printf("	is alphabetical		: %s\n",
				(ucs2character::isAlphabetical(c))?"yes":"no");
		stdoutput.printf("	is lower case		: %s\n",
				(ucs2character::isLowerCase(c))?"yes":"no");
		stdoutput.printf("	is upper case		: %s\n",
				(ucs2character::isUpperCase(c))?"yes":"no");
		stdoutput.printf("	is punctuation		: %s\n",
				(ucs2character::isPunctuation(c))?"yes":"no");
		stdoutput.printf("	is printable		: %s\n",
				(ucs2character::isPrintable(c))?"yes":"no");
		stdoutput.printf("	is printable (non-space): %s\n",
				(ucs2character::isPrintableNonSpace(c))?"yes":"no");
		stdoutput.printf("	is control character	: %s\n",
				(ucs2character::isControlCharacter(c))?"yes":"no");
		stdoutput.printf("	is digit		: %s\n",
				(ucs2character::isDigit(c))?"yes":"no");
		stdoutput.printf("	is hex digit		: %s\n",
				(ucs2character::isHexDigit(c))?"yes":"no");
		stdoutput.printf("	is blank		: %s\n",
				(ucs2character::isBlank(c))?"yes":"no");
		stdoutput.printf("	is whitespace		: %s\n",
				(ucs2character::isWhitespace(c))?"yes":"no");
		stdoutput.printf("	is ascii		: %s\n",
				(ucs2character::isAscii(c))?"yes":"no");
	}
}

Transforming Characters

Methods are also provided for transforming the UCS-2 character to upper or lower case, and to 7-bit ascii, by clearing the higher order bits.

#include <rudiments/ucs2character.h>
#include <rudiments/stdio.h>

int main(int argc, const char **argv) {

	// perform case conversions on all ascii characters
	for (int32_t uc=0; uc<128; uc++) {

		ucs2_t	c=(ucs2_t)uc;

		stdoutput.printf("character %c:\n",(char)c);

		stdoutput.printf("	to upper case	: %c\n",
				(char)ucs2character::upper(c));

		stdoutput.printf("	to lower case	: %c\n",
				(char)ucs2character::lower(c));

		// place a 1 in bit 8
		c=c|0x80;

		stdoutput.printf("	to ascii	: %c\n",
				(char)ucs2character::convertToAscii(c));
	}
}

Member of a Set

An isInSet() method is also provided which returns true if the specified UCS-2 character is a member of the specified set of UCS-2 characters and false otherwise.

#include <rudiments/ucs2charstring.h>
#include <rudiments/ucs2character.h>
#include <rudiments/charstring.h>
#include <rudiments/stdio.h>

int main(int argc, const char **argv) {

	// define the set
	ucs2literal(set,"abcdefg");

	// duplicate the set as a char string for display
	char	*setstr=charstring::duplicate("abcdefg");

	// loop through the alphabet...
	for (ucs2_t c=(ucs2_t)'a'; c<=(ucs2_t)'z'; c++) {
		stdoutput.printf("is %c in the set \"%s\"?  %s\n",
				(char)c,setstr,
				(ucs2character::isInSet(c,set))?"yes":"no");
	}

	delete[] setstr;
}
Copyright 2017 - David Muse - Contact