UniCreateAttrObject: Difference between revisions
Created page with "UniCreateAttrObject creates an attribute object that is used to determine character classifications. ==Syntax== int UniCreateAttrObject (const LocaleObject locale_object, co..." |
mNo edit summary |
||
(One intermediate revision by the same user not shown) | |||
Line 2: | Line 2: | ||
==Syntax== | ==Syntax== | ||
UniCreateAttrObject (locale_object, AttrName, attr_object) | |||
==Parameters== | ==Parameters== | ||
; locale_object | ;locale_object (const LocaleObject):A locale object created by a call to UniCreateLocaleObject or NULL. | ||
; AttrName | ;AttrName (const UniChar *):A UniChar string that specifies the attribute names for which an attribute object should be created. Multiple attribute names are specified as a string of separate names. | ||
; attr_object | ;attr_object (AttrObject *):An address that will receive a pointer to an attribute object upon successful completion of UniCreateAttrObject. | ||
==Returns== | ==Returns== | ||
Return value (int) | Return value (int) - returns | ||
;ULS_SUCCESS: Successful completion; attr_object points to a valid attribute object. | |||
; ULS_SUCCESS : Successful completion; attr_object points to a valid attribute object. | ;ULS_UNSUPPORTED: The attribute name specified in AttrName is not supported by locale_object. | ||
; ULS_UNSUPPORTED : The attribute name specified in AttrName is not supported by locale_object. | ;ULS_NOMEMORY: Insufficient memory to create the attribute object. | ||
; ULS_NOMEMORY : Insufficient memory to create the attribute object. | |||
==Remarks== | ==Remarks== | ||
UniCreateAttrObject allocates resources associated with an attribute defined in the LC_CTYPE category of the locale indicated by the locale_object argument. | UniCreateAttrObject allocates resources associated with an attribute defined in the LC_CTYPE category of the locale indicated by the locale_object argument. | ||
Line 30: | Line 28: | ||
The following attribute names are the base POSIX attributes. All attribute names which can be specified in UniQueryAttr are allowed. Those attributes which start with underscore (_) or hash (#) may not be combined with other attributes. | The following attribute names are the base POSIX attributes. All attribute names which can be specified in UniQueryAttr are allowed. Those attributes which start with underscore (_) or hash (#) may not be combined with other attributes. | ||
; alnum : True when alpha or digit is true. | ;alnum : True when alpha or digit is true. | ||
; alpha : True when upper or lower is true, or when none of cntrl, digit, punct, or space is true. | ;alpha : True when upper or lower is true, or when none of cntrl, digit, punct, or space is true. | ||
; blank : True for the space and horizontal tab characters. | ;blank : True for the space and horizontal tab characters. | ||
; cntrl : True for any control character; the following attributes must be false: upper, lower, alpha, digit, xdigit, graph, print, and punct. | ;cntrl : True for any control character; the following attributes must be false: upper, lower, alpha, digit, xdigit, graph, print, and punct. | ||
; digit : True for the digits 0, 1, 2 3, 4, 5, 6, 7, 8, and 9. | ;digit : True for the digits 0, 1, 2 3, 4, 5, 6, 7, 8, and 9. | ||
; graph : True for any character with the print attribute, except the space | ;graph : True for any character with the print attribute, except the space | ||
; character : (Code element 0x0020). | ;character : (Code element 0x0020). | ||
; lower : True for any character that is a lowercase letter and none of cntrl, digit, punct, or space is true. | ;lower : True for any character that is a lowercase letter and none of cntrl, digit, punct, or space is true. | ||
; print : True for upper, lower, alpha, digit, xdigit, punct, or any printing character including the space character (code element 0x0020). | ;print : True for upper, lower, alpha, digit, xdigit, punct, or any printing character including the space character (code element 0x0020). | ||
; punct : True for any printing character that is neither the space character (code element 0x0020) nor a character for which alnum is true. | ;punct : True for any printing character that is neither the space character (code element 0x0020) nor a character for which alnum is true. | ||
; space : True for any character that corresponds to a standard white-space character or is one of the set of white-space characters in the locale as indicated by the locale_object argument for which alnum is false. The standard white-space characters are the following: space, form feed, newline, carriage return, horizontal tab, and vertical tab. | ;space : True for any character that corresponds to a standard white-space character or is one of the set of white-space characters in the locale as indicated by the locale_object argument for which alnum is false. The standard white-space characters are the following: space, form feed, newline, carriage return, horizontal tab, and vertical tab. | ||
; upper : True for any character that is an uppercase letter and none of cntrl, digit, punct, or space is true. | ;upper : True for any character that is an uppercase letter and none of cntrl, digit, punct, or space is true. | ||
; xdigit : true for 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E F, a, b, c, d, e, and f. | ;xdigit : true for 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E F, a, b, c, d, e, and f. | ||
==Examples== | ==Examples== | ||
Line 87: | Line 85: | ||
} | } | ||
</PRE> | </PRE> | ||
==Related Functions== | ==Related Functions== | ||
* [[UniQueryAttr]] | * [[UniQueryAttr]] | ||
* [[UniQueryChar]] | * [[UniQueryChar]] | ||
* [[UniQueryCharAttr]] | * [[UniQueryCharAttr]] | ||
* [[UniQueryCharType]] | * [[UniQueryCharType]] | ||
[[Category:Uni]] | [[Category:Uni]] |
Latest revision as of 05:53, 13 February 2020
UniCreateAttrObject creates an attribute object that is used to determine character classifications.
Syntax
UniCreateAttrObject (locale_object, AttrName, attr_object)
Parameters
- locale_object (const LocaleObject)
- A locale object created by a call to UniCreateLocaleObject or NULL.
- AttrName (const UniChar *)
- A UniChar string that specifies the attribute names for which an attribute object should be created. Multiple attribute names are specified as a string of separate names.
- attr_object (AttrObject *)
- An address that will receive a pointer to an attribute object upon successful completion of UniCreateAttrObject.
Returns
Return value (int) - returns
- ULS_SUCCESS
- Successful completion; attr_object points to a valid attribute object.
- ULS_UNSUPPORTED
- The attribute name specified in AttrName is not supported by locale_object.
- ULS_NOMEMORY
- Insufficient memory to create the attribute object.
Remarks
UniCreateAttrObject allocates resources associated with an attribute defined in the LC_CTYPE category of the locale indicated by the locale_object argument.
The locale_object argument specifies a locale object handle returned by UniCreateLocaleObject. It should not be a NULL pointer.
The AttrName argument specifies the attribute names for which an attribute object handle should be created. Multiple attribute names are specified as a string of space-separated names.
When UniCreateAttrObject completes without errors, the attr_object argument specifies a valid pointer to an attribute object.
The attribute object pointer should be used in all subsequent calls to UniQueryCharAttr. If the function result is other than ULS_SUCCESS, the contents of the area pointed to by attr_object are undefined.
The following attribute names are the base POSIX attributes. All attribute names which can be specified in UniQueryAttr are allowed. Those attributes which start with underscore (_) or hash (#) may not be combined with other attributes.
- alnum
- True when alpha or digit is true.
- alpha
- True when upper or lower is true, or when none of cntrl, digit, punct, or space is true.
- blank
- True for the space and horizontal tab characters.
- cntrl
- True for any control character; the following attributes must be false: upper, lower, alpha, digit, xdigit, graph, print, and punct.
- digit
- True for the digits 0, 1, 2 3, 4, 5, 6, 7, 8, and 9.
- graph
- True for any character with the print attribute, except the space
- character
- (Code element 0x0020).
- lower
- True for any character that is a lowercase letter and none of cntrl, digit, punct, or space is true.
- True for upper, lower, alpha, digit, xdigit, punct, or any printing character including the space character (code element 0x0020).
- punct
- True for any printing character that is neither the space character (code element 0x0020) nor a character for which alnum is true.
- space
- True for any character that corresponds to a standard white-space character or is one of the set of white-space characters in the locale as indicated by the locale_object argument for which alnum is false. The standard white-space characters are the following: space, form feed, newline, carriage return, horizontal tab, and vertical tab.
- upper
- True for any character that is an uppercase letter and none of cntrl, digit, punct, or space is true.
- xdigit
- true for 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E F, a, b, c, d, e, and f.
Examples
This example shows how to create and use a character attribute object.
#include <stdio.h> #include <unidef.h> int main(void) { LocaleObject locale_object = NULL; AttrObject attr_object = NULL; int result = 0; int rc = ULS_SUCCESS; UniChar uni_char = L'a'; /* Unicode lowercase Latin letter a */ /*****************************************************************/ /* Assumes LANG environment variable set to a valid locale name, */ /* such as fr_FR */ /*****************************************************************/ rc = UniCreateLocaleObject(UNI_UCS_STRING_POINTER, (UniChar *)L"", &locale_object); if (rc != ULS_SUCCESS) { printf("UniCreateLocaleObject error: return code = %u\n", rc); return 1; } /* Create an alphabetic attribute object */ rc = UniCreateAttrObject(locale_object, (UniChar *)L"alpha", &attr_object); if (rc != ULS_SUCCESS) { printf("UniCreateAttrObject error: return code = %u\n", rc); return 1; } /* Make call to determine if character is alphabetic */ result = UniQueryCharAttr(attr_object, uni_char); if (result) printf("UniChar character %04X is alphabetic\n", uni_char); else printf("UniChar character %04X is not alphabetic\n", uni_char); return ULS_SUCCESS; }