@@Unicode.Charactertestroutines
<GROUP Unicode>
<TITLE Character test routines>
<TOPICORDER 100>
--------------------------------------------------------------------------------
@@Unicode.Directionality
<GROUP Unicode>
<TITLE Directionality>
<TOPICORDER 200>
--------------------------------------------------------------------------------
@@Unicode.Lowlevelcharacterroutines
<GROUP Unicode>
<TITLE Low level character routines>
<TOPICORDER 300>
--------------------------------------------------------------------------------
@@Unicode.Nullterminatedstrings
<GROUP Unicode>
<TITLE Null terminated strings>
<TOPICORDER 400>
--------------------------------------------------------------------------------
@@Unicode.TSearchEngine
<GROUP Unicode>
<TITLE TSearchEngine>
<TOPICORDER 500>
--------------------------------------------------------------------------------
@@Unicode.TURESearch
<GROUP Unicode>
<TITLE TURESearch>
<TOPICORDER 600>
--------------------------------------------------------------------------------
@@Unicode.TUTBMSearch
<GROUP Unicode>
<TITLE TUTBMSearch>
<TOPICORDER 700>
--------------------------------------------------------------------------------
@@Unicode.TWideStringList
<GROUP Unicode>
<TITLE TWideStringList>
<TOPICORDER 800>
--------------------------------------------------------------------------------
@@Unicode.TWideStrings
<GROUP Unicode>
<TITLE TWideStrings>
<TOPICORDER 900>
--------------------------------------------------------------------------------
@@Unicode.Utilityfunctions
<GROUP Unicode>
<TITLE Utility functions>
<TOPICORDER 1000>
--------------------------------------------------------------------------------
@@Unicode.WideStringconversionroutines
<GROUP Unicode>
<TITLE WideString conversion routines>
<TOPICORDER 1100>
--------------------------------------------------------------------------------
@@Unicode.WideStringroutines
<GROUP Unicode>
<TITLE WideString routines>
<TOPICORDER 1200>
--------------------------------------------------------------------------------
@@UnicodeIsAlpha
<GROUP Unicode.Charactertestroutines>
Summary:
  Tests whether the codepoint is an alphabetic character.
Description:
  UnicodeIsAlpha tests whether the specified unicode codepoint is an alphabetic
  character.
Parameters:
  Code - The unicode codepoint (character) to test.
Result:
  If the specified codepoint is an alphabetical character the function returns True,
  otherwise the function returns False.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@UnicodeIsDigit
<GROUP Unicode.Charactertestroutines>
Summary:
  Tests whether the codepoint is a digit.
Description:
  UnicodeIsDigit tests whether the specified unicode codepoint is a digit.
Parameters:
  Code - The unicode codepoint (character) to test.
Result:
  If the specified codepoint is a digit the function returns True, otherwise
  the function returns False.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@UnicodeIsAlphaNum
<GROUP Unicode.Charactertestroutines>
Summary:
  Tests whether the codepoint is an alphanumerical character.
Description:
  UnicodeIsAlphaNum tests whether the specified unicode codepoint is an alphanumerical
  character. That is, it tests for both alphabetical characters and numbers.
Parameters:
  Code - The unicode codepoint (character) to test.
Result:
  If the specified codepoint is an alphanumerical character the function returns True,
  otherwise the function returns False.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@UnicodeIsControl
<GROUP Unicode.Charactertestroutines>
Summary:
  Tests whether the codepoint is a control character.
Description:
  UnicodeIsControl tests whether the specified unicode codepoint is a control
  character.
Parameters:
  Code - The unicode codepoint (character) to test.
Result:
  If the specified codepoint is a control character the function returns True,
  otherwise the function returns False.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@UnicodeIsSpace
<GROUP Unicode.Charactertestroutines>
Summary:
  Tests whether the codepoint is a spacing character.
Description:
  UnicodeIsSpace tests whether the specified unicode codepoint is a spacing
  character.
Parameters:
  Code - The unicode codepoint (character) to test.
Result:
  If the specified codepoint is a spacing character the function returns True,
  otherwise the function returns False.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@UnicodeIsWhiteSpace
<GROUP Unicode.Charactertestroutines>
Summary:
  Tests whether the codepoint is a white space character.
Description:
  UnicodeIsWhiteSpace tests whether the specified unicode codepoint is a white space
  character. This is similar to UnicodeIsSpace with the addition of tabulator,
  new line and so forth.
Parameters:
  Code - The unicode codepoint (character) to test.
Result:
  If the specified codepoint is a white space character the function returns True,
  otherwise the function returns False.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@UnicodeIsBlank
<GROUP Unicode.Charactertestroutines>
Summary:
  Tests whether the codepoint is a space character.
Description:
  UnicodeIsBlank tests whether the specified unicode codepoint is a space
  character.
Parameters:
  Code - The unicode codepoint (character) to test.
Result:
  If the specified codepoint is a space character the function returns True,
  otherwise the function returns False.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@UnicodeIsPunctuation
<GROUP Unicode.Charactertestroutines>
Summary:
  Tests whether the codepoint is a punctuation mark.
Description:
  UnicodeIsPunctuation tests whether the specified unicode codepoint is a punctuation
  mark.
Parameters:
  Code - The unicode codepoint (character) to test.
Result:
  If the specified codepoint is a punctuation mark the function returns True,
  otherwise the function returns False.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@UnicodeIsGraph
<GROUP Unicode.Charactertestroutines>
Summary:
  Tests whether the codepoint is a graphical character.
Description:
  UnicodeIsGraph tests whether the specified unicode codepoint is a graphical
  character.
Parameters:
  Code - The unicode codepoint (character) to test.
Result:
  If the specified codepoint is a graphical character the function returns True,
  otherwise the function returns False.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@UnicodeIsPrintable
<GROUP Unicode.Charactertestroutines>
Summary:
  Tests whether the codepoint is a printable character.
Description:
  UnicodeIsPrintable tests whether the specified unicode codepoint is a printable
  character.
Parameters:
  Code - The unicode codepoint (character) to test.
Result:
  If the specified codepoint is a printable character the function returns True,
  otherwise the function returns False.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@UnicodeIsUpper
<GROUP Unicode.Charactertestroutines>
Summary:
  Tests whether the codepoint is uppercase.
Description:
  UnicodeIsUpper tests whether the specified unicode codepoint is an uppercase
  character.
Parameters:
  Code - The unicode codepoint (character) to test.
Result:
  If the specified codepoint is an uppercase character the function returns True,
  otherwise the function returns False.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@UnicodeIsLower
<GROUP Unicode.Charactertestroutines>
Summary:
  Tests whether the codepoint is lowercase.
Description:
  UnicodeIsLower tests whether the specified unicode codepoint is a lowercase
  character.
Parameters:
  Code - The unicode codepoint (character) to test.
Result:
  If the specified codepoint is a lowercase character the function returns True,
  otherwise the function returns False.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@UnicodeIsTitle
<GROUP Unicode.Charactertestroutines>
Summary:
  Tests whether the codepoint is a titlecased character.
Description:
  UnicodeIsTitle tests whether the specified unicode codepoint is a titlecase
  character.
Parameters:
  Code - The unicode codepoint (character) to test.
Result:
  If the specified codepoint is a titlecased character the function returns True,
  otherwise the function returns False.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@UnicodeIsHexDigit
<GROUP Unicode.Charactertestroutines>
Summary:
  Tests whether the codepoint is a hexadecimal digit.
Description:
  UnicodeIsHexDigit tests whether the specified unicode codepoint is a hexadecimal digit.
Parameters:
  Code - The unicode codepoint (character) to test.
Result:
  If the specified codepoint is a hexadecimal digit the function returns True,
  otherwise the function returns False.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@UnicodeIsIsoControl
<GROUP Unicode.Charactertestroutines>
Summary:
  Tests whether the codepoint is an ISO control character.
Description:
  UnicodeIsIsoControl tests whether the specified unicode codepoint is an ISO control
  character (ordinal value smaller than 32).
Parameters:
  Code - The unicode codepoint (character) to test.
Result:
  If the specified codepoint is an ISO control character the function returns True,
  otherwise the function returns False.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@UnicodeIsFormatControl
<GROUP Unicode.Charactertestroutines>
Summary:
  Tests whether the codepoint is a format control character.
Description:
  UnicodeIsFormatControl tests whether the specified unicode codepoint is a format
  control character.
Parameters:
  Code - The unicode codepoint (character) to test.
Result:
  If the specified codepoint is a format control character the function returns True,
  otherwise the function returns False.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@UnicodeIsSymbol
<GROUP Unicode.Charactertestroutines>
Summary:
  Tests whether the codepoint is a symbol.
Description:
  UnicodeIsSymbol tests whether the specified unicode codepoint is a symbol
  character.
Parameters:
  Code - The unicode codepoint (character) to test.
Result:
  If the specified codepoint is a symbol character the function returns True,
  otherwise the function returns False.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@UnicodeIsNumber
<GROUP Unicode.Charactertestroutines>
Summary:
  Tests whether the codepoint is a number or digit.
Description:
  UnicodeIsNumber tests whether the specified unicode codepoint is a number
  or digit.
Parameters:
  Code - The unicode codepoint (character) to test.
Result:
  If the specified codepoint is a number or digit the function returns True,
  otherwise the function returns False.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@UnicodeIsNonSpacing
<GROUP Unicode.Charactertestroutines>
Summary:
  Tests whether the codepoint is non-spacing.
Description:
  UnicodeIsNonSpacing tests whether the specified unicode codepoint is a non-spacing
  character.
Parameters:
  Code - The unicode codepoint (character) to test.
Result:
  If the specified codepoint is a non-spacing character the function returns True,
  otherwise the function returns False.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@UnicodeIsOpenPunctuation
<GROUP Unicode.Charactertestroutines>
Summary:
  Tests whether the codepoint is an open/left punctuation.
Description:
  UnicodeIsOpenPunctuation tests whether the specified unicode codepoint is an open/left
  punctuation character. For example '['.
Parameters:
  Code - The unicode codepoint (character) to test.
Result:
  If the specified codepoint is an open/left punctuation character the function
  returns True, otherwise the function returns False.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@UnicodeIsClosePunctuation
<GROUP Unicode.Charactertestroutines>
Summary:
  Tests whether the codepoint is a closing/right punctuation character.
Description:
  UnicodeIsClosePunctuation tests whether the specified unicode codepoint is a closing/right
  punctuation character. For example ']'.
Parameters:
  Code - The unicode codepoint (character) to test.
Result:
  If the specified codepoint is a closing/right punctuation character the function
  returns True, otherwise the function returns False.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@UnicodeIsInitialPunctuation
<GROUP Unicode.Charactertestroutines>
Summary:
  Tests whether the codepoint is an initial punctuation character.
Description:
  UnicodeIsInitialPunctuation tests whether the specified unicode codepoint is an initial
  punctuation character. For example U+2018 LEFT SINGLE QUOTATION MARK.
Parameters:
  Code - The unicode codepoint (character) to test.
Result:
  If the specified codepoint is an initial punctuation character the function
  returns True, otherwise the function returns False.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@UnicodeIsFinalPunctuation
<GROUP Unicode.Charactertestroutines>
Summary:
  Tests whether the codepoint is a final punctuation character.
Description:
  UnicodeIsFinalPunctuation tests whether the specified unicode codepoint is a final
  punctuation control character. For example U+2019 RIGHT SINGLE QUOTATION MARK.
Parameters:
  Code - The unicode codepoint (character) to test.
Result:
  If the specified codepoint is a final punctuation character the function returns
  True, otherwise the function returns False.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@UnicodeIsCased
<GROUP Unicode.Charactertestroutines>
Summary:
  Tests whether the codepoint is a cased character.
Description:
  UnicodeIsCased tests whether the specified unicode codepoint is a cased
  character, i.e. either lower case, title case, upper case or unique upper case.
Parameters:
  Code - The unicode codepoint (character) to test.
Result:
  If the specified codepoint is a cased character the function returns
  True, otherwise the function returns False.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@UnicodeIsComposed
<GROUP Unicode.Charactertestroutines>
Summary:
  Tests whether the codepoint is a composite character.
Description:
  UnicodeIsComposed tests whether the specified unicode codepoint is a composite
  character. That is it returns whether the character can be decomposed into a set
  of other characters (eg an &uuml; u umlaut is a composite character).
Parameters:
  Code - The unicode codepoint (character) to test.
Result:
  If the specified codepoint is a composite character the function returns
  True, otherwise the function returns False.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@UnicodeIsQuotationMark
<GROUP Unicode.Charactertestroutines>
Summary:
  Tests whether the codepoint is a quotation mark.
Description:
  UnicodeIsQuotationMark tests whether the specified unicode codepoint is a quotation
  mark. For example ', " etc.
Parameters:
  Code - The unicode codepoint (character) to test.
Result:
  If the specified codepoint is a quotation mark the function returns
  True, otherwise the function returns False.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@UnicodeIsSymmetric
<GROUP Unicode.Charactertestroutines>
Summary:
  Tests whether the codepoint is symmetric.
Description:
  UnicodeIsSymmetric tests whether the specified unicode codepoint is a symmetric
  character. That is, whether it has an opposite form. An example of a symmetric
  character is '<' (the opposite would be '>').
Parameters:
  Code - The unicode codepoint (character) to test.
Result:
  If the specified codepoint is a symmetric character the function returns
  True, otherwise the function returns False.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@UnicodeIsMirroring
<GROUP Unicode.Charactertestroutines>
Summary:
  Tests whether the codepoint is a final mirroring character.
Description:
  UnicodeIsMirroring tests whether the specified unicode codepoint is a mirroring
  character (superset of symmetric).
Parameters:
  Code - The unicode codepoint (character) to test.
Result:
  If the specified codepoint is a mirroring character the function returns
  True, otherwise the function returns False.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@UnicodeIsNonBreaking
<GROUP Unicode.Charactertestroutines>
Summary:
  Tests whether the codepoint is a non breaking character.
Description:
  UnicodeIsNonBreaking tests whether the specified unicode codepoint is a non breaking
  character, for example a non breaking space.
Parameters:
  Code - The unicode codepoint (character) to test.
Result:
  If the specified codepoint is a non breaking character the function returns
  True, otherwise the function returns False.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@UnicodeIsMark
<GROUP Unicode.Charactertestroutines>
Summary:
  Tests whether the codepoint is a mark of some kind.
Description:
  UnicodeIsMark tests whether the specified unicode codepoint is a mark of some
  kind.
Parameters:
  C - The unicode codepoint (character) to test.
Result:
  If the specified codepoint is a mark character the function returns
  True, otherwise the function returns False.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@UnicodeIsModifier
<GROUP Unicode.Charactertestroutines>
Summary:
  Tests whether the codepoint is a modifier.
Description:
  UnicodeIsModifier tests whether the specified unicode codepoint is a modifier.
Parameters:
  C - The unicode codepoint (character) to test.
Result:
  If the specified codepoint is a modifier character the function returns
  True, otherwise the function returns False.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@UnicodeIsLetterNumber
<GROUP Unicode.Charactertestroutines>
Summary:
  Tests whether the codepoint is a number represented by a letter.
Description:
  UnicodeIsLetterNumber tests whether the specified unicode codepoint is a number by a
  letter.
Parameters:
  C - The unicode codepoint (character) to test.
Result:
  If the specified codepoint is a letter character representing a number the
  function returns True, otherwise the function returns False.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@UnicodeIsConnectionPunctuation
<GROUP Unicode.Charactertestroutines>
Summary:
  Tests whether the codepoint is a connection punctuation.
Description:
  UnicodeIsConnectionPunctuation tests whether the specified unicode codepoint is
  a connection punctuation, for example an underscore.
Parameters:
  C - The unicode codepoint (character) to test.
Result:
  If the specified codepoint is a connection punctuation character the
  function returns True, otherwise the function returns False.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@UnicodeIsMath
<GROUP Unicode.Charactertestroutines>
Summary:
  Tests whether the codepoint is a math character.
Description:
  UnicodeIsMath tests whether the specified unicode codepoint is a math
  character, for example a hyphen.
Parameters:
  C - The unicode codepoint (character) to test.
Result:
  If the specified codepoint is a math character the
  function returns True, otherwise the function returns False.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@UnicodeIsDash
<GROUP Unicode.Charactertestroutines>
Summary:
  Tests whether the codepoint is a dash punctuation.
Description:
  UnicodeIsDash tests whether the specified unicode codepoint is a dash
  punctuation, for example a plus sign.
Parameters:
  C - The unicode codepoint (character) to test.
Result:
  If the specified codepoint is a dash punctuation character the
  function returns True, otherwise the function returns False.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@UnicodeIsCurrency
<GROUP Unicode.Charactertestroutines>
Summary:
  Tests whether the codepoint is a currency symbol.
Description:
  UnicodeIsCurrency tests whether the specified unicode codepoint is a currency symbol,
  for example the dollar sign.
Parameters:
  C - The unicode codepoint (character) to test.
Result:
  If the specified codepoint is a currency symbol the
  function returns True, otherwise the function returns False.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@UnicodeIsModifierSymbol
<GROUP Unicode.Charactertestroutines>
Summary:
  Tests whether the codepoint is a modifier symbol.
Description:
  UnicodeIsModifierSymbol tests whether the specified unicode codepoint is a
  modifier symbol, for example the grave accent.
Parameters:
  C - The unicode codepoint (character) to test.
Result:
  If the specified codepoint is a modifier symbol the
  function returns True, otherwise the function returns False.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@UnicodeIsNonSpacingMark
<GROUP Unicode.Charactertestroutines>
Summary:
  Tests whether the codepoint is a non-spacing mark.
Description:
  UnicodeIsNonSpacingMark tests whether the specified unicode codepoint is a
  non-spacing mark, for example the combining grave accent.
Parameters:
  C - The unicode codepoint (character) to test.
Result:
  If the specified codepoint is a non-spacing mark the
  function returns True, otherwise the function returns False.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@UnicodeIsSpacingMark
<GROUP Unicode.Charactertestroutines>
Summary:
  Tests whether the codepoint is a spacing mark.
Description:
  UnicodeIsSpacingMark tests whether the specified unicode codepoint is a
  spacing mark, for example the Bengali vowel sign AA.
Parameters:
  C - The unicode codepoint (character) to test.
Result:
  If the specified codepoint is a spacing mark the
  function returns True, otherwise the function returns False.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@UnicodeIsEnclosing
<GROUP Unicode.Charactertestroutines>
Summary:
  Tests whether the codepoint is enclosing.
Description:
  UnicodeIsEnclosing tests whether the specified unicode codepoint is enclosing,
  for example the enclosing box.
Parameters:
  C - The unicode codepoint (character) to test.
Result:
  If the specified codepoint is enclosing the
  function returns True, otherwise the function returns False.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@UnicodeIsPrivate
<GROUP Unicode.Charactertestroutines>
Summary:
  Tests whether the codepoint is from the private use area.
Description:
  UnicodeIsPrivate tests whether the specified unicode codepoint is from the
  private use area.
Parameters:
  C - The unicode codepoint (character) to test.
Result:
  If the specified codepoint is from the private use area the
  function returns True, otherwise the function returns False.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@UnicodeIsSurrogate
<GROUP Unicode.Charactertestroutines>
Summary:
  Tests whether the codepoint is one of the surrogate codes.
Description:
  UnicodeIsSurrogate tests whether the specified unicode codepoint is one of the
  surrogate codes.
Parameters:
  C - The unicode codepoint (character) to test.
Result:
  If the specified codepoint is one of the surrogate codes the
  function returns True, otherwise the function returns False.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@UnicodeIsLineSeparator
<GROUP Unicode.Charactertestroutines>
Summary:
  Tests whether the codepoint is a line separator character.
Description:
  UnicodeIsLineSeparator tests whether the specified unicode codepoint is a line
  separator character.
Parameters:
  C - The unicode codepoint (character) to test.
Result:
  If the specified codepoint is a line separator character the
  function returns True, otherwise the function returns False.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@UnicodeIsParagraphSeparator
<GROUP Unicode.Charactertestroutines>
Summary:
  Tests whether the codepoint is a paragraph separator character.
Description:
  UnicodeIsParagraphSeparator tests whether the specified unicode codepoint is a
  paragraph separator character.
Parameters:
  C - The unicode codepoint (character) to test.
Result:
  If the specified codepoint is a paragraph separator character the
  function returns True, otherwise the function returns False.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@UnicodeIsIdentifierStart
<GROUP Unicode.Charactertestroutines>
Summary:
  Tests whether the codepoint is allowed as initial character of an identifier.
Description:
  UnicodeIsIdentifierStart tests whether the specified unicode codepoint is a
  character that can begin an identifier, ie. the character must be a letter
  (upper-, lower- or titlecase or other) or a letter representing a number.
Parameters:
  C - The unicode codepoint (character) to test.
Result:
  If the specified codepoint can begin an identifier the
  function returns True, otherwise the function returns False.
Notes:
  UnicodeIsIdentifierStart could be replaced by (UnicodeIsAlpha or UnicodeIsLetterNumber) and not UnicodeIsModifier
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@UnicodeIsIdentifierPart
<GROUP Unicode.Charactertestroutines>
Summary:
  Tests whether the codepoint is allowed as part of an identifier.
Description:
  UnicodeIsIdentifierPart tests whether the specified unicode codepoint is a
  character that can be in an identifier, ie. the character must be a letter
  (upper-, lower- or titlecase or other), a letter representing a number,
  a mark (non-spacing or spacing combining), a decimal digit, a connecting
  punctuation or a format control character.
Parameters:
  C - The unicode codepoint (character) to test.
Result:
  If the specified codepoint can be in an identifier the
  function returns True, otherwise the function returns False.
Notes:
  UnicodeIsIdentifierPart could be replaced by (UnicodeIsIdentifierStart or UnicodeIsNonSpacingMark or UnicodeIsSpacingMark or UnicodeIsDigit or UnicodeIsConnectionPunctuation or UnicodeIsFormatControl
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@UnicodeIsDefined
<GROUP Unicode.Charactertestroutines>
Summary:
  Tests whether the codepoint is defined.
Description:
  UnicodeIsDefined tests whether the specified unicode codepoint is defined (ie.
  it appears in one of the data files).
Parameters:
  C - The unicode codepoint (character) to test.
Result:
  If the specified codepoint is defined the
  function returns True, otherwise the function returns False.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@UnicodeIsUndefined
<GROUP Unicode.Charactertestroutines>
Summary:
  Tests whether the codepoint is undefined.
Description:
  UnicodeIsUndefined tests whether the specified unicode codepoint is undefined
  (ie. a non-unicode character).
Parameters:
  C - The unicode codepoint (character) to test.
Result:
  If the specified codepoint is undefined the
  function returns True, otherwise the function returns False.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@UnicodeIsHan
<GROUP Unicode.Charactertestroutines>
Summary:
  Tests whether the codepoint is a Han ideograph.
Description:
  UnicodeIsHan tests whether the specified unicode codepoint is a Han ideograph.
Parameters:
  C - The unicode codepoint (character) to test.
Result:
  If the specified codepoint is a Han ideograph the
  function returns True, otherwise the function returns False.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@UnicodeIsHangul
<GROUP Unicode.Charactertestroutines>
Summary:
  Tests whether the codepoint is a Hangul syllable.
Description:
  UnicodeIsHangul tests whether the specified unicode codepoint is a pre-composed
  Hangul syllable.
Parameters:
  C - The unicode codepoint (character) to test.
Result:
  If the specified codepoint is a Hangul syllable the
  function returns True, otherwise the function returns False.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@UnicodeNumberLookup
<GROUP Unicode.Lowlevelcharacterroutines>
Summary:
  Searches for the given code and returns its number equivalent (if there is one).
Description:
  UnicodeNumberLookup searches for the given code and returns its number equivalent
  (if there is one). Typical cases are: '1/6' (U+2159), '3/8' (U+215C),
  'XII' (U+216B) etc.
Parameters:
  Code - The unicode codepoint (character) to locate number equivalent of.
Result:
  True if a number could be found.
See also:
  UnicodeToUpper
  UnicodeToLower
  UnicodeToTitle
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@UnicodeToUpper
<GROUP Unicode.Lowlevelcharacterroutines>
Summary:
  Converts a codepoint to uppercase.
Description:
  UnicodeToUpper converts the specified unicode codepoint (character) to uppercase.
Parameters:
  Code - The codepoint to convert.
Result:
  The uppercased codepoint(s).
See also:
  UnicodeNumberLookup
  UnicodeToLower
  UnicodeToTitle
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@UnicodeToLower
<GROUP Unicode.Lowlevelcharacterroutines>
Summary:
  Converts a codepoint to lowercase.
Description:
  UnicodeToLower converts the specified unicode codepoint (character) to lowercase.
Parameters:
  Code - The codepoint to convert.
Result:
  The lowercased codepoint(s).
See also:
  UnicodeNumberLookup
  UnicodeToUpper
  UnicodeToTitle
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@UnicodeToTitle
<GROUP Unicode.Lowlevelcharacterroutines>
Summary:
  Converts a codepoint to title case.
Description:
  UnicodeToUpper converts the specified unicode codepoint (character) to title case.
Parameters:
  Code - The codepoint to convert.
Result:
  The title cased codepoint(s).
See also:
  UnicodeNumberLookup
  UnicodeToUpper
  UnicodeToLower
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@UnicodeIsRightToLeft
<GROUP Unicode.Directionality>
Summary:
  Tests a Unicode character against right-to-left directionality.
Description:
  UnicodeIsRightToLeft returns whether the specified character has (strong) right-to-left
  directionality. Examples of characters that have right-to-left directionality
  are the Arabic and Hebrew alphabet and punctuation specific to those scripts.
Parameters:
  C - The Unicode character to test.
Result:
  If the specified unicode character has right-to-left directionality the function
  returns True, otherwise the function returns False.
See also:
  UnicodeIsLeftToRight
  UnicodeIsStrong
  UnicodeIsWeak
  UnicodeIsNeutral
  UnicodeIsSeparator
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@UnicodeIsLeftToRight
<GROUP Unicode.Directionality>
Summary:
  Tests a Unicode character against left-to-right directionality.
Description:
  UnicodeIsLeftToRight returns whether the specified character has (strong) left-to-right
  directionality. Most alphabetic and syllabic, as well as all Han ideographic
  characters, have left-to-right directionality.
Parameters:
  C - The Unicode character to test.
Result:
  If the specified unicode character has left-to-right directionality the function
  returns True, otherwise the function returns False.
See also:
  UnicodeIsRightToLeft
  UnicodeIsStrong
  UnicodeIsWeak
  UnicodeIsNeutral
  UnicodeIsSeparator
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@UnicodeIsStrong
<GROUP Unicode.Directionality>
Summary:
  Tests a Unicode character for strong directionality.
Description:
  UnicodeIsStrong returns whether the specified character has strong directionality.
  Strong directionality means that it has either left-to-right or right-to-left
  directionality. In contrast there are also characters that exhibit weak or neutral
  directionality. Examples of characters with strong directionality are the Arabic
  and Hebrew alphabets as well as most alphabetic, syllable, and Han ideographic characters.
Parameters:
  C - The Unicode character to test.
Result:
  If the specified unicode character has strong directionality the function returns
  True, otherwise the function returns False.
See also:
  UnicodeIsRightToLeft
  UnicodeIsLeftToRight
  UnicodeIsWeak
  UnicodeIsNeutral
  UnicodeIsSeparator
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@UnicodeIsWeak
<GROUP Unicode.Directionality>
Summary:
  Tests a Unicode character for weak directionality.
Description:
  UnicodeIsWeak returns whether the specified character has weak directionality.
  Examples of characters with weak directionality are numbers and number separators
  and terminators. In contrast there are also characters that exhibit strong or neutral
  directionality.
Parameters:
  C - The Unicode character to test
Result:
  If the specified unicode character has weak directionality the function returns
  True, otherwise the function returns False.
See also:
  UnicodeIsRightToLeft
  UnicodeIsLeftToRight
  UnicodeIsStrong
  UnicodeIsNeutral
  UnicodeIsSeparator
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@UnicodeIsNeutral
<GROUP Unicode.Directionality>
Summary:
  Tests a Unicode character for neutral directionality.
Description:
  UnicodeIsNeutral returns whether the specified character has neutral directionality.
  Examples of characters with neutral directionality are spaces, punctuation and symbols.
  In contrast there are also characters that exhibit strong or weak directionality.
Parameters:
  C - The Unicode character to test
Result:
  If the specified unicode character has neutral directionality the function returns
  True, otherwise the function returns False.
See also:
  UnicodeIsRightToLeft
  UnicodeIsLeftToRight
  UnicodeIsStrong
  UnicodeIsWeak
  UnicodeIsSeparator
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@UnicodeIsSeparator
<GROUP Unicode.Directionality>
Summary:
  Tests a Unicode character against separator directionality.
Description:
  UnicodeIsSeparator tests whether the specified character is a block or segment
  separator. Examples of separators are the line separator (U+2028) and the
  horizontal tab (U+0009).
Parameters:
  C - The Unicode character to test
Result:
  If the specified unicode character is a block or segment separator the function
  returns True, otherwise the function returns False.
See also:
  UnicodeIsRightToLeft
  UnicodeIsLeftToRight
  UnicodeIsStrong
  UnicodeIsWeak
  UnicodeIsNeutral
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@WideStringOfChar
<GROUP Unicode.WideStringroutines>
Description:
  WideStringOfChar returns a string of length Count with each character initialized
  to the specified character C.
Parameters:
  C - The character to initialize the string with.
  Count - The length of the string.
Result:
  A string of length Count with all characters set to C.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@WideQuotedStr
<GROUP Unicode.WideStringroutines>
Summary:
  Returns a quoted string.
Description:
  WideQuotedStr returns a copy of S with the specified Quote character inserted at
  the beginning and end of the string.
Parameters:
  S - The string to convert to a quoted string.
  Quote - The character to use as quote.
Result:
  The quoted version of the supplied string.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@WideExtractQuotedStr
<GROUP Unicode.WideStringroutines>
Summary:
  Extracts a string enclosed in quote characters.
Description:
  WideExtractQuotedStr removes the Quote characters from the beginning and end
  of a quoted string, and reduces pairs of Quote characters within the quoted
  string to a single character. If the first character in Src is not the Quote
  character, the function returns an empty string.  The function copies
  characters from the Src to the result string until the second solitary
  Quote character or the first null character in Src. The Src parameter is
  updated to point to the first character following the quoted string.  If
  the Src string does not contain a matching end Quote character, the Src
  parameter is updated to point to the terminating null character in Src.
Parameters:
  Src - The source string from which to remove quotes.
  Quote - Denotes the character used as a quote.
Result:
  The string without the quotes.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@WideTrim
<GROUP Unicode.WideStringroutines>
Summary:
  Trims leading and trailing spaces and control characters.
Description:
  WideTrim returns a copy of the supplied string with all leading and trailing spaces and
  control characters removed. See UnicodeIsWhiteSpace and UnicodeIsControl
  for what constitutes a space and control character respectively.
Parameters:
  S - The string to trim.
Result:
  Copy of the supplied string without leading and trailing spaces and control characters.
See also:
  WideTrimLeft
  WideTrimRight
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@WideTrimRight
<GROUP Unicode.WideStringroutines>
Summary:
  Trims trailing spaces and control characters.
Description:
  WideTrimRight returns a copy of the supplied string with all trailing spaces and
  control characters removed. See UnicodeIsWhiteSpace and UnicodeIsControl
  for what constitutes a space and control character respectively.
Parameters:
  S - The string to trim.
Result:
  Copy of the supplied string without trailing spaces and control characters.
See also:
  WideTrimLeft
  WideTrim
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@WideTrimLeft
<GROUP Unicode.WideStringroutines>
Summary:
  Trims leading spaces and control characters.
Description:
  WideTrimLeft returns a copy of the supplied string with all leading spaces and
  control characters removed. See UnicodeIsWhiteSpace and UnicodeIsControl
  for what constitutes a space and control character respectively.
Parameters:
  S - The string to trim.
Result:
  Copy of the supplied string without leading spaces and control characters.
See also:
  WideTrim
  WideTrimRight
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@WideLowerCase
<GROUP Unicode.WideStringroutines>
Summary:
  Converts the supplied WideString or WideChar to lowercase.
Description:
  Converts the supplied WideString or WideChar to lowercase.
Parameters:
  C - The character to convert to lowercase.
  S - The string to convert to lowercase.
Result:
  The lowercased string.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@WideUpperCase
<GROUP Unicode.WideStringroutines>
Summary:
  Converts the supplied WideString or WideChar to uppercase.
Description:
  Converts the supplied WideString or WideChar to uppercase.
Parameters:
  C - The character to convert to uppercase.
  S - The string to convert to uppercase.
Result:
  The uppercased string.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@WideTitleCaseString
<GROUP Unicode.WideStringroutines>
Summary:
  Converts the supplied WideString or WideChar to titlecase.
Description:
  Converts the supplied WideString or WideChar to titlecase.
Parameters:
  C - The character to convert to titlecase.
  S - The string to convert to titlecase.
Result:
  The titlecased string.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@WideDecompose
<GROUP Unicode.WideStringroutines>
Summary:
  Performs a decomposition of all characters in the supplied string.
Description:
  Returns a copy of the string but with all individual characters decomposed into
  their respective base characters. For example, the composite character Ê is
  broken up into the two base characters E and ^.
Parameters:
  S - The string for which to decompose the individual characters.
  Compatible - Flag to determine if compatibilty decomposition should be used (True) or not (False).
Result:
  The decomposed string.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@WideCompose
<GROUP Unicode.WideStringroutines>
Summary:
  Transforms a string into a composed string.
Description:
  Returns a string with all the characters of S, but if it is possible to combine
  characters then they are composed.  For example, the two base characters E and ^
  are combined into the composite character Ê.
Parameters:
  S - The string for which to compose the individual characters.
Result:
  The string with all characters composed, where possible.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@WideCharPos
<GROUP Unicode.WideStringroutines>
Summary:
  Returns the index of the first occurrence of Ch in S.
Description:
  WideCharPos returns the index of the first occurrence of the specified character
  in the supplied string. Note that this is a search for the binary pattern, no attempt is made to
  interpret either the given character or the string (ligatures, modifiers, surrogates etc.).
Parameters:
  S - The string which to scan for the Ch character.
  Ch - The character to search for.
  Index - The index at which to start searching in S. Usually you'll pass 1 to search the entire string (Note: the string is one based, not zero based!).
Result:
  Index of the first occurrence of the specified character in the supplied string.
  This index is relative to the first character of the string, not relative to the
  specified index.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@WideAdjustLineBreaks
<GROUP Unicode.WideStringroutines>
Summary:
  Standardizes linebreak characters to lineseparator characters.
Description:
  Standardizes linebreak characters to lineseparator characters by adjusting all
  occurrences of CarriageReturn, LineFeed or a combination thereof into LineSeparators.
  The function changes all occurrences of CarriageReturn and LineFeed into a
  LineSeparator and turns the sequence LineFeed + CarriageReturn into two LineSeparators.
  Only the CarriageReturn + LineFeed sequence is unaffected.
Parameters:
  S - The string for which to adjust linebreaks.
Result:
  The linebreak adjusted string. This is a true copy of the string, the source string
  is not affected.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@StrRNScanW
<GROUP Unicode.Nullterminatedstrings>
Summary:
  StrRNScan returns the length of the consecutive characters from the end of S1 which do not appear in S2.
Description:
  StrRNScanW is identical to StrNScanW with 2 small differences. The first one is
  that the number of consecutive characters at the END of S1 is returned (not from
  the start). Secondly, S1 is traversed in backward direction, so it should point
  to the end of the actual string to be determined and there should a #0 character
  at the beginning of S1 to terminate the loop. S2 is used as it is in StrNScanW
  and points to the beginning of a sequence of characters. 
  This function is useful for buffers which contain a string in reversed order.
  This is often the case for macro buffers which get the content of a string
  a single character at a time, ending with #0 which is
  then at the physical start of the string.
Parameters:
  S1 - Pointer to the end of the source string which must have have a #0 character at the start.
  S2 - The sequence (set) of characters to test against.
See also:
  StrNScan
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@StrNScanW
<GROUP Unicode.Nullterminatedstrings>
Summary:
  StrNScan returns the length of the consecutive characters in S1 which do not appear in S2.
Description:
  StrNScan returns the length of the consecutive characters in S1, from the start
  of the string, which do not appear in S2. In other words: StrNScan returns the
  length of the longest sequence in S1 for which the predicate "not (S1^ in S2)"
  holds true if S2 were to be considered a set of characters. As an example consider
  S1 to hold 'Project JEDI' and S2 to hold 'abcdef'. Calling StrNScan with these
  parameters will return 4 since the fifth character, an 'e', appears in S2.
Parameters:
  S1 - The source string.
  S2 - The sequence (set) of characters to test against.
See also:
  StrRNScan
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@StrSwapByteOrder
<GROUP Unicode.Nullterminatedstrings>
Summary:
  For each character in the string StrSwapByteOrder exchanges the low order and high order byte to go from LSB to MSB and vice versa.
Description:
  For each character in the string StrSwapByteOrder exchanges the low order and
  high order byte to go from LSB to MSB and vice versa.
Parameters:
  Str - The string for which to swap the byte order of the individual characters.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@StrDisposeW
<GROUP Unicode.Nullterminatedstrings>
Summary:
  Release the memory of a wide character string.
Description:
  Release the memory of a wide character string previously allocated by StrNewW
  or StrAllocW.
Parameters:
  Str - The string to release.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@StrNewW
<GROUP Unicode.Nullterminatedstrings>
Summary:
  Duplicates a wide character string.
Description:
  StrNewW makes a copy of the specified string, if not nil, and returns a pointer
  to the duplicated string. The function makes an actual copy of the string not
  just the pointer. When you are done using the string you must deallocate the memory
  by using StrDisposeW. Do not simply pass it to FreeMem.
Parameters:
  Str - The string to duplicate (copy).
Result:
  Pointer to the first character of the duplicated string.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@StrAllocW
<GROUP Unicode.Nullterminatedstrings>
Summary:
  Allocates a buffer for a null-terminated wide string.
Description:
  Allocates a buffer for a null-terminated wide string and returns a pointer to
  the first character. The string is initially empty and initialized to all zeros.
  When you are done using the string you must deallocate the memory by
  using StrDisposeW. Do not simply pass it to FreeMem.
Parameters:
  Size - Size of the string to allocate in terms of characters. This indicates the total number of characters, including the null terminator. Thus, to allocate a buffer to hold the string 'Project JEDI' you must use at least 13 as the Size argument.
Result:
  Pointer to the first character of the allocated string.
Notes:
  The function allocates SizeOf(Cardinal) more memory then you requested. This additional Cardinal is stored at offset -4 of the returned pointer and is used to hold the size of the buffer. You can use the StrBufSizeW function to query for this value.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@StrBufSizeW
<GROUP Unicode.Nullterminatedstrings>
Summary:
  Returns the buffer size for a null-terminated wide string.
Description:
  Returns the buffer size allocated for the specified null-terminated wide string.
Parameters:
  Str - Null-terminated wide string
Result:
  Size of the buffer allocated for the null-terminated wide string.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@StrPosW
<GROUP Unicode.Nullterminatedstrings>
Description:
  StrPosW returns a pointer to the first character of the first occurrence of SubStr
  in Str. If SubStr does not occur in Str nil is returned.
Parameters:
  Str - String to search for the first occurrence of SubStr.
  SubStr - Substring to search for in Str.
Result:
  Pointer to the first character of the first occurrence of SubStr in Str or nil if
  SubStr does not occur in Str.
See also:
  StrRScanW
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@StrRScanW
<GROUP Unicode.Nullterminatedstrings>
Summary:
  Scans the specified string for the occurrences of Chr.
Description:
  Scans the string for occurrences of the specified character and returns a pointer
  to the last occurrence. The comparison between Str and Chr is case-sensitive.
Parameters:
  Str - The string to scan for an occurrence of Chr.
  Chr - The character to scan for in Str.
Result:
  Pointer to the last occurrence of Chr in Str or nil if the character does not
  occur in Str.
See also:
  StrPosW
  StrScanW
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@StrScanW
<GROUP Unicode.Nullterminatedstrings>
Summary:
  Scans the specified string for an occurrence of Chr.
Description:
  Scans at most StrLen characters in the specified string for an occurrence of Chr.
  The comparison between Str and Chr is case-sensitive. Caller is responsible for
  ensuring that StrLen never exceeds the length of the strings. The overloaded
  routines without the StrLen parameter scans the string until it finds the character
  or the end of the string. You should prefer the routine with the StrLen parameter
  because it is much faster.
Parameters:
  Str - The string to scan for an occurrence of Chr.
  Chr - The character to scan for in Str.
  StrLen - Maximum number of characters to scan.
Result:
  Pointer to the first occurrence of Chr in Str or nil if the specified character
  does not occur in Str.
See also:
  StrPosW
  StrRScanW
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@StrLICompW
<GROUP Unicode.Nullterminatedstrings>
Summary:
  Case-insensitive, binary comparison of two null terminated strings.
Description:
  Case-insensitive, binary comparison of two null terminated strings.
Parameters:
  Str1 - First string.
  Str2 - Second string.
  MaxLen - The maximum number of characters to compare.
Result:
  The return value should be interpreted as described in the table below. The actual
  value indicates the ordinal difference between the first mismatching character in
  the strings.
<TABLE>
Value  Description
-----  ----------------
&lt;0  Str1 &lt; Str2
0      Str1 equals Str2
&gt;0  Str1 &gt; Str2
</TABLE>
Notes:
  Only ANSI characters are compared case insensitively.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@StrLCompW
<GROUP Unicode.Nullterminatedstrings>
Summary:
  Case-sensitive, binary comparison of two null terminated strings.
Description:
  Case-sensitive, binary comparison of two null terminated strings.
Parameters:
  Str1 - First string.
  Str2 - Second string.
  MaxLen - The maximum number of characters to compare.
Result:
  The return value should be interpreted as described in the table below. The actual
  value indicates the ordinal difference between the first mismatching character in
  the strings.
<TABLE>
Value  Description
-----  ----------------
&lt;0  Str1 &lt; Str2
0      Str1 equals Str2
&gt;0  Str1 &gt; Str2
</TABLE>
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@StrICompW
<GROUP Unicode.Nullterminatedstrings>
Summary:
  Case-insensitive, binary comparison of two null terminated strings.
Description:
  Case-insensitive, binary comparison of two null terminated strings.
Parameters:
  Str1 - First string.
  Str2 - Second string.
Result:
  The return value should be interpreted as described in the table below. The actual
  value indicates the ordinal difference between the first mismatching character in
  the strings.
<TABLE>
Value  Description
-----  ----------------
&lt;0  Str1 &lt; Str2
0      Str1 equals Str2
&gt;0  Str1 &gt; Str2
</TABLE>
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@StrCompW
<GROUP Unicode.Nullterminatedstrings>
Summary:
  Case-sensitive, binary comparison of two null terminated strings.
Description:
  Case-sensitive, binary comparison of two null terminated strings.
Parameters:
  Str1 - First string.
  Str2 - Second string.
Result:
  The return value should be interpreted as described in the table below. The actual
  value indicates the ordinal difference between the first mismatching character in
  the strings.
<TABLE>
Value  Description
-----  ----------------
&lt;0  Str1 &lt; Str2
0      Str1 equals Str2
&gt;0  Str1 &gt; Str2
</TABLE>
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@StrLCatW
<GROUP Unicode.Nullterminatedstrings>
Summary:
  Concatenates two strings enforcing a maximum for the total length.
Description:
  StrLCatW concatenates two strings and ensures that the resulting string is at
  maximum MaxLen characters long. Thus, it appends at most MaxLen - StrLenW(Dest)
  characters from Source to Dest.
Parameters:
  Dest - Pointer to a string buffer to which to append characters from Source. This buffer must have room to hold at least MaxLen + 1 characters.
  Source - The string which is (partially) appended to Source.
  MaxLen - Maximum length of the resulting string.
Result:
  Pointer to the destination string.
See also:
  StrCatW
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@StrCatW
<GROUP Unicode.Nullterminatedstrings>
Summary:
  Concatenates two strings.
Description:
  StrCatW appends Source to Dest and returns a pointer to the concatenated string.
  The Dest buffer must have enough room to hold the concatenated string, no length
  checking is performed. See StrLCatW for a length checking StrCatW.
Parameters:
  Dest - Pointer to a string buffer to append Dest to.
  Source - The string which is appended to Dest.
Result:
  Pointer to the Destination string.
See also:
  StrLCatW
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@StrPLCopyW
<GROUP Unicode.Nullterminatedstrings>
Summary:
  Copies up to MaxLen characters from Source into Dest.
Description:
  Copies up to MaxLen characters from the Pascal style source string into a null
  terminated wide string. The Dest buffer must have enough room to hold at least
  MaxLen + 1 characters.
Parameters:
  Dest - Pointer to a buffer which receives a (partial) copy of Source.
  Source - Source string from which to copy up to MaxLen characters.
  MaxLen - Maximum number of characters to copy from Source to Dest.
Result:
  Pointer to the destination string.
See also:
  StrPCopyW
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@StrPCopyW
<GROUP Unicode.Nullterminatedstrings>
Summary:
  Copies a Pascal style string to a null terminated wide string.
Description:
  StrPCopyW copies a Pascal style string to a null terminated wide string. The Dest
  buffer must have enough room to hold at least Length(Source) + 1 wide characters.
Parameters:
  Dest - Pointer to a buffer which receives a copy of the source string.
  Source - Source string to copy into Dest.
Result:
  Pointer to the destination string.
See also:
  StrPLCopyW
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@StrLCopyW
<GROUP Unicode.Nullterminatedstrings>
Summary:
  Copies MaxLen characters from Source to Dest.
Description:
  StrLCopyW copies up to MaxLen characters from Source to Dest and returns a
  pointer to Dest. The Dest buffer must have enough room to hold at least MaxLen + 1
  characters.
Parameters:
  Dest - Buffer which receives a (partial) copy of Source
  Source - Source string
  MaxLen - Maximum number of characters to copy from Source to Dest.
Result:
  Pointer to the Destination string.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@StrECopyW
<GROUP Unicode.Nullterminatedstrings>
Description:
  StrECopyW copies the source string into the destination string and returns a
  pointer to the null terminating character at the end of the destination string.
  The function performs no length checking, the destination buffer must have room
  for at least StrLenW(Source) + 1 characters.
Parameters:
  Dest - Buffer which receives a copy of the source string.
  Source - Source string to copy.
Result:
  Pointer to the null terminating character at the end of the destination string.
See also:
  StrCopyW
  StrMoveW
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@StrCopyW
<GROUP Unicode.Nullterminatedstrings>
Summary:
  Copies the source string into the destination string.
Description:
  StrCopyW copies the source string into the destination string and returns a pointer
  to the destination string. Dest must have been preallocated with enough room to
  hold a copy of the source string (it must be at least StrLenW(Source) + 1
  characters in length).
Parameters:
  Dest - Pointer to a buffer that receives a copy of the source string. The buffer have enough room to hold StrLenW(Source) + 1 characters.
  Source - The string to copy.
Result:
  Pointer to the Dest string.
See also:
  StrMoveW
  StrECopyW
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@StrMoveW
<GROUP Unicode.Nullterminatedstrings>
Summary:
  Copies a string from Source to Dest.
Description:
  StrMoveW copies Count characters from Source to Destination. Dest must have
  enough room to hold at least Count + 1 characters.
Parameters:
  Dest - Pointer to a buffer that receives a copy of the source string.
  Source - Source string from which to copy.
  Count - The number of characters to copy from Source to Dest.
Result:
  Copy of the Dest pointer.
See also:
  StrCopyW
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@StrEndW
<GROUP Unicode.Nullterminatedstrings>
Summary:
  Returns a pointer to the end of the string.
Description:
  StrEndW returns a pointer to the null terminating character at the end of the
  specified string.
Parameters:
  Str - Source string.
Result:
  Pointer to the end of the source string.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@StrLenW
<GROUP Unicode.Nullterminatedstrings>
Summary:
  Returns the length of the string in characters.
Description:
  StrLenW returns the length of the specified string, in characters, excluding the
  null terminator.
Parameters:
  Str - The string for which to determine the length
Result:
  The length of the specified string, in characters.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@CharSetFromLocale
<GROUP Unicode.Utilityfunctions>
Summary:
  Returns character set information for a given locale.
Description:
  The CharSetFromLocale function returns character set information for the specified
  locale. The returned TFontCharSet record contains information such as the ANSI
  code-page identifier. See the Platform SDK entries for CHARSETINFO and FONTSIGNATURE
  for more information.
Parameters:
  Language - The locale for which to retrieve character set information.
Result:
  A TFontCharSet record which describes the character set.
See also:
  CodePageFromLocale
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@CodePageFromLocale
<GROUP Unicode.Utilityfunctions>
Summary:
  Returns the ANSI code page for a specific locale.
Description:
  CodePageFromLocale returns the ANSI code page associated with the specified locale.
  If the locale does not use an ANSI code page, the system's current ANSI code page
  is returned.
Parameters:
  Langauge - Locale for which to retrieve the ANSI code page.
Result:
  The ANSI code page of the specified locale, or the system's current code page if
  the locale does not use an ANSI code page.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@CodeBlockFromChar
<GROUP Unicode.Utilityfunctions>
Summary:
  Returns the character block (code block) for a character.
Description:
  The CodeBlockFromChar returns the code block (or character block) in which the
  specified character exists. If the character does not belong to any defined block,
  ubUndefined is returned.
Parameters:
  C - The unicode character for which you want to know the character block in which it resides.
Result:
  The character block for the specified character. If the character does not belong to any defined block,
  ubUndefined is returned.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@KeyboardCodePage
<GROUP Unicode.Utilityfunctions>
Summary:
  Returns the codepage based on the thread input locale.
Description:
  Returns the codepage for the calling thread based on the threads input locale
  identifier (formerly called the keyboard layout). This effectively returns the
  codepage associated with the keyboard and all other forms of input such as a
  speech-to-text converter.
Result:
  Codepage for the calling thread, based on the keyboard layout.
See also:
  CodePageFromLocale
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@KeyUnicode
<GROUP Unicode.Utilityfunctions>
Description:
  Converts the specified character (as it comes with a WM_CHAR message) into its
  corresponding Unicode character. The conversion is based upon the active keyboard
  layout.
Parameters:
  C - The character to convert.
Result:
  The converted character.
See also:
  KeyboardCodePage
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@StringToWideStringEx
<GROUP Unicode.Utilityfunctions>
Summary:
  Converts a string to a WideString.
Description:
  StringToWideStringEx maps a string to a Wide (unicode) string for the specified
  codepage. This is merely a convenient wrapper for the MultiByteToWideChar API
  function.
Parameters:
  S - The string to convert to unicode.
  CodePage - The code page to be used by the conversion. You can specify the value of any available code page or one of the following values:
<TABLE>
Value          Meaning
-------------  -------------------------------------------------------------------------------------------------------------
CP_ACP         ANSI code page
CP_MACCP       Macintosh code page
CP_OEMCP       OEM code page
CP_SYMBOL      Windows 2000: Symbol code page (42)
CP_THREAD_ACP  The current thread's ANSI code page
CP_UTF7        Windows NT 4.0 and Windows 2000: Translate using UTF-7
CP_UTF8        Windows NT 4.0 and Windows 2000: Translate using UTF-8. When this is set, dwFlags must be zero.
</TABLE>
Result:
  The converted string.
See also:
  WideStringToStringEx
  TranslateString
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@TranslateString
<GROUP Unicode.Utilityfunctions>
Summary:
  Translates a string from one codepage to another.
Description:
  The TranslateString function translates the specified string from one codepage
  to another.
Parameters:
  S - The string to translate.
  CP1 - Source code page.
  CP2 - Destination code page.
Result:
  The translated string.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@WideStringToStringEx
<GROUP Unicode.Utilityfunctions>
Summary:
  WideStringToStringEx maps a WideString to a string based on the specified codepage.
Description:
  WideStringToStringEx maps a WideString to a string based on the specified codepage.
Parameters:
  WS - The WideString to convert.
  CodePage - The code page to be used by the conversion. You can specify the value of any available code page or one of the following values:
<TABLE>
Value          Meaning
-------------  -------------------------------------------------------------------------------------------------------------
CP_ACP         ANSI code page
CP_MACCP       Macintosh code page
CP_OEMCP       OEM code page
CP_SYMBOL      Windows 2000: Symbol code page (42)
CP_THREAD_ACP  The current thread's ANSI code page
CP_UTF7        Windows NT 4.0 and Windows 2000: Translate using UTF-7
CP_UTF8        Windows NT 4.0 and Windows 2000: Translate using UTF-8. When this is set, dwFlags must be zero.
</TABLE>
Result:
  The converted string.
See also:
  StringToWideStringEx
  TranslateString
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@WideStringToUTF8
<GROUP Unicode.WideStringconversionroutines>
Summary:
  Converts the given WideString to a UTF8 based AnsiString.
Description:
  Converts the given WideString to a UTF8 based AnsiString.
Parameters:
  S - The unciode string to convert.
Result:
  The string in UTF8 format.
See also:
  UTF8ToWideString
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@UTF8ToWideString
<GROUP Unicode.WideStringconversionroutines>
Summary:
  Converts the given UTF8 based AnsiString to a WideString.
Description:
  Converts the given UTF8 based AnsiString to a WideString.
Parameters:
  S - The UTF8 based AnsiString to convert to a WideString.
Result:
  The string converted to a WideString.
See also:
  WideStringToUTF8
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@TSearchFlag
<GROUP Unicode.TSearchEngine>
Summary:
  Flags used in the search class.
Description:
  Flags used in the search class.
See also:
  TSearchEngine
Donator:
  Mike Lischke
@@TSearchFlag.sfCaseSensitive
  Match letter case
@@TSearchFlag.sfIgnoreNonSpacing
  Ignore non-spacing characters in search
@@TSearchFlag.sfSpaceCompress
  Handle several consecutive white spaces as one white space (this applies to the pattern as well as the search text)
@@TSearchFlag.sfWholeWordOnly
  Match only text at end/start and/or surrounded by white spaces
@@TSearchFlags
<GROUP Unicode.TSearchEngine>
<COMBINE TSearchFlag>
--------------------------------------------------------------------------------
@@TCharacterCategory
<GROUP Unicode>
Summary:
  Various predefined or otherwise useful character property categories.
Description:
  Various predefined or otherwise useful character property categories.
Notes:
  Categories ccComposed upto ccAssigned are self-defined categories and do not appear in the Unicode data file. They are useful in the TURESearch-class.
Donator:
  Mike Lischke
@@TCharacterCategory.ccLetterUppercase
  Uppercased letter
@@TCharacterCategory.ccLetterLowercase
  Lowercased letter
@@TCharacterCategory.ccLetterTitlecase
  Titlecased letter
@@TCharacterCategory.ccMarkNonSpacing
  Nonspacing mark
@@TCharacterCategory.ccMarkSpacingCombining
  Combining spacing mark
@@TCharacterCategory.ccMarkEnclosing
  Enclosing mark
@@TCharacterCategory.ccNumberDecimalDigit
  Decimal digit
@@TCharacterCategory.ccNumberLetter
  Letter representing a number
@@TCharacterCategory.ccNumberOther
  Other characters representing a number
@@TCharacterCategory.ccSeparatorSpace
  Space seperator
@@TCharacterCategory.ccSeparatorLine
  Line seperator
@@TCharacterCategory.ccSeparatorParagraph
  Paragraph seperator
@@TCharacterCategory.ccOtherControl
  Control character
@@TCharacterCategory.ccOtherFormat
  Format character
@@TCharacterCategory.ccOtherSurrogate
  Surrogate character
@@TCharacterCategory.ccOtherPrivate
  Private character
@@TCharacterCategory.ccOtherUnassigned
  Unassigned character
@@TCharacterCategory.ccLetterModifier
  Modifier character
@@TCharacterCategory.ccLetterOther
  Unclassified character
@@TCharacterCategory.ccPunctuationConnector
  Connecting punctuation character
@@TCharacterCategory.ccPunctuationDash
  Dash punctuation character
@@TCharacterCategory.ccPunctuationOpen
  Open punctuation character
@@TCharacterCategory.ccPunctuationClose
  Close punctuation character
@@TCharacterCategory.ccPunctuationInitialQuote
  Initial quote character
@@TCharacterCategory.ccPunctuationFinalQuote
  Final quote character
@@TCharacterCategory.ccPunctuationOther
  Undefined punctuation character
@@TCharacterCategory.ccSymbolMath
  Mathematical symbol
@@TCharacterCategory.ccSymbolCurrency
  Currency symbol
@@TCharacterCategory.ccSymbolModifier
  Modifier symbol
@@TCharacterCategory.ccSymbolOther
  Undefined symbol
@@TCharacterCategory.ccLeftToRight
  TODO
@@TCharacterCategory.ccLeftToRightEmbedding
  TODO
@@TCharacterCategory.ccLeftToRightOverride
  TODO
@@TCharacterCategory.ccRightToLeft
  TODO
@@TCharacterCategory.ccRightToLeftArabic
  TODO
@@TCharacterCategory.ccRightToLeftEmbedding
  TODO
@@TCharacterCategory.ccRightToLeftOverride
  TODO
@@TCharacterCategory.ccPopDirectionalFormat
  TODO
@@TCharacterCategory.ccEuropeanNumber
  TODO
@@TCharacterCategory.ccEuropeanNumberSeparator
  TODO
@@TCharacterCategory.ccEuropeanNumberTerminator
  TODO
@@TCharacterCategory.ccArabicNumber
  TODO
@@TCharacterCategory.ccCommonNumberSeparator
  TODO
@@TCharacterCategory.ccBoundaryNeutral
  TODO
@@TCharacterCategory.ccSegmentSeparator
  TODO
@@TCharacterCategory.ccWhiteSpace
  TODO
@@TCharacterCategory.ccOtherNeutrals
  TODO
@@TCharacterCategory.ccComposed
  TODO
@@TCharacterCategory.ccNonBreaking
  TODO
@@TCharacterCategory.ccSymmetric
  Has left and right forms
@@TCharacterCategory.ccHexDigit
  Hexadecimal digit
@@TCharacterCategory.ccQuotationMark
  Quotation mark
@@TCharacterCategory.ccMirroring
  TODO
@@TCharacterCategory.ccAssigned
  Defined character in Unicode-standard
@@TCharacterCategories
<GROUP Unicode>
<COMBINE TCharacterCategory>
--------------------------------------------------------------------------------
@@TSearchEngine
<GROUP Unicode.TSearchEngine>
Summary:
  Abstract base class for the search engine.
Description:
  TSearchEngine is a generic search class defininition used for tuned Boyer-Moore
  and Unicode regular expression searches.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@TSearchEngine.Create
Summary:
  Instantiates a TSearchEngine object.
Description:
  Creates an instance of TSearchEngine and initializes the object for use. Since
  TSearchEngine is an abstract base class you cannot actually instantiate it, instead
  use a derived class such as TUTBMSearch or TURESearch. The TSearchEngine constructor only
  initializes the results list and sets the Owner.
Parameters:
  AOwner - Owner of the search engine.
Notes:
  The AOwner parameter, although assigned to the engine, is not used at all and can therefore be nil. It's possible, however, that it will be used in the future.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@TSearchEngine.Destroy
Summary:
  Destroys a TSearchEngine object.
Description:
  Destroys the search engine after clearing all results and freeing the results list.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@TSearchEngine.GetCount
Summary:
  Returns the number of matches.
Description:
  GetCount returns the number of matches and is used by the Count property.
Result:
  The number of matches found.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@TSearchEngine.AddResult
Summary:
  Adds a new match result.
Description:
  AddResult adds a new match result to the list.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@TSearchEngine.Clear
Summary:
  Resets the search engine.
Description:
  Clear resets the search engine. TSearchEngine just calls ClearResult to clear the
  match result list, but derivatives will also clear search patterns.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@TSearchEngine.ClearResults
Summary:
  Clear the match results.
Description:
  ClearResults clears the match result list.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@TSearchEngine.DeleteResult
Summary:
  Removes a match from the result list.
Description:
  DeleteResult removes the specified match from the result list.
Parameters:
  Index - Index of match to remove.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@TSearchEngine.FindPrepare
Summary:
  Prepares the engine for a pattern search.
Description:
  FindPrepare prepares the engine for pattern search. There are 2 versions of
  FindPrepare a WideString and a PWideChar version.
Parameters:
  Pattern - Search pattern.
  PatternLength - Length of pattern (available only in the PWideChar version).
  Options - Search options. See  TSearchFlags for more information on this parameter.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@TSearchEngine.FindFirst
Summary:
  Finds the first occurence of a search pattern.
Description:
  FindFirst finds the first occurence of the pattern passed to FindPrepare
  in Text and returns True if one could be found (in which case Start and Stop are
  set to the according indices) otherwise False. This function is in particular of
  interest if only one occurence needs to be found.
Parameters:
  Text - Text to be searched.
  TextLen - Length of text (available only in the PWideChar version).
  Start - Start index of match if the function returned True, otherwise undefined.
  Stop - End index of match if the function returned True, otherwise undefined.
Result:
  True is the pattern provided in FindPrepare was found in the Text parameter,
  False otherwise.
See also:
  FindAll
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@TSearchEngine.FindAll
Summary:
  Finds all occurences of a search pattern.
Description:
  FindAll finds all occurences of the pattern passed to FindPrepare
  in Text and returns True if any could be found otherwise False.
Parameters:
  Text - Text to be searched.
  TextLen - Length of text (available only in the PWideChar version).
Result:
  True is the pattern provided in FindPrepare was found in the Text parameter,
  False otherwise.
See also:
  FindFirst
  GetResult
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@TSearchEngine.GetResult
Summary:
  Returns a match result.
Description:
  GetResult returns the specified match result in the Start and Stop parameters.
Parameters:
  Index - Index (0-based) of match result to return.
  Start - Start position of match result.
  Start - End position of match result.
See also:
  FindAll
  Count
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@TSearchEngine.Count
Summary:
  Indicates the number of matches found.
Description:
  Count determines the number of matches found after the last search
  (with either FindFirst
  or FindAll).
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@TUTBMSearch
<GROUP Unicode.TUTBMSearch>
Summary:
  Unicode Tuned Boyer-Moore Search class.
Description:
  TUTBMSearch is a Unicode Tuned Boyer-Moore (UTBM) search implementation. The class
  handles low and high surrogates, case-(in)sensitivity, can ignore non-spacing
  characters and optionally returns whole words only.
Notes:
  This implementation is an extended translation from a free package written by Mark Leisher (mleisher@crl.nmsu.edu).
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@TUTBMSearch.ClearPattern
Summary:
  Deletes the search pattern.
Description:
  ClearPattern deletes the current search pattern. Gets called by Clear.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@TUTBMSearch.Compile
Summary:
  Compiles the pattern.
Description:
  Compile converts the pattern to an optimized internal structure. Compile gets
  called by FindPrepare.
Parameters:
  Pattern - Pattern to find.
  PatternLength - Length of pattern to find.
  Flags - Search options. See TSearchFlags for more information on this parameter.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@TUTBMSearch.Find
Summary:
  Main matching routine using a tuned Boyer-Moore algorithm.
Description:
  Find is the main matching routine that implements a tuned Boyer-Moore algorithm.
  Find gets called by FindFirst and FindAll.
Parameters:
  Text - Text to search in.
  TextLen - Length of text to search in.
  MatchStart - Start of the match or undefined if no match.
  MatchEnd - End of the match or undefined if no match.
Result:
  If the pattern can be found in Text the function returns True (in that case
  MatchStart and MatchEnd point to the match) otherwise it returns False.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@TUTBMSearch.Match
Summary:
  Checks wether the Text at Start matches the pattern.
Description:
  Match checks wether the text at Start matches the Pattern. It will also check the
  borders if whole words are required.
Parameters:
  Text - Complete Text to search in.
  Start - First character to check.
  Stop - Last character to check.
  MatchStart - Start of the match or undefined if no match.
  MatchEnd - End of the match or undefined if no match.
Result:
  If the Text at Start matches the pattern the function returns True (in that case
  MatchStart and MatchEnd point to the match) otherwise it returns False.
Notes:
  If whole words only are allowed then the left and right border tests are done here too. The keypoint for the right border is that the next character after the search string is either the text end or a space character. For the left side this is similar, but there is nothing like a string start marker (like the string end marker #0).
  It seems not obvious, but we still can use the passed Text pointer to do the left check. Although this pointer might not point to the real string start (e.g. in TUTBMSearch.FindAll Text is incremented as needed) it is still a valid check mark. The reason is that Text either points to the real string start or a previous match (happened already, keep in mind the search options do not change in the FindAll loop) and the character just before Text is a space character. This fact implies, though, that strings passed to Find (or FindFirst, FindAll in TUTBMSearch) always really start at the given address. Although this might not be the case in some circumstances (e.g. if you pass only the selection from an editor) it is still assumed that a pattern matching from the first position on (from the search string start) also matches when whole words only are allowed.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@TUTBMSearch.GetSkipValue
Summary:
  Gets the skip value to use.
Description:
  GetSkipValue determines the skip value to use to advance to the next possible
  match.
Parameters:
  TextStart - Start of text to search.
  TextEnd - End of text to search.
Result:
  Number of bytes to skip to restart matching. If this result is 0 (zero), we can
  end the search algorithm.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@TUTBMSearch.Clear
Summary:
  Resets the search engine.
Description:
  Clear resets the search engine by calling ClearPattern and then
  calling the inherited Clear method.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@TUTBMSearch.FindPrepare
Summary:
  Prepares the engine for a pattern search.
Description:
  FindPrepare prepares the engine for pattern search. There are 2 versions of
  FindPrepare a WideString and a PWideChar version.
Parameters:
  Pattern - Search pattern.
  PatternLength - Length of pattern (available only in the PWideChar version).
  Options - Search options. See  TSearchFlags for more information on this parameter.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@TUTBMSearch.FindFirst
Summary:
  Finds the first occurence of a search pattern.
Description:
  FindFirst finds the first occurence of the pattern passed to FindPrepare
  in Text and returns True if one could be found (in which case Start and Stop are
  set to the according indices) otherwise False. This function is in particular of
  interest if only one occurence needs to be found.
Parameters:
  Text - Text to be searched.
  TextLen - Length of text (available only in the PWideChar version).
  Start - Start index of match if the function returned True, otherwise undefined.
  Stop - End index of match if the function returned True, otherwise undefined.
Result:
  True if the pattern provided in FindPrepare was found in the Text parameter,
  False otherwise.
See also:
  FindAll
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@TUTBMSearch.FindAll
Summary:
  Finds all occurences of a search pattern.
Description:
  FindAll finds all occurences of the pattern passed to FindPrepare
  in Text and returns True if any could be found otherwise False.
Parameters:
  Text - Text to be searched.
  TextLen - Length of text (available only in the PWideChar version).
Result:
  True is the pattern provided in FindPrepare was found in the Text parameter,
  False otherwise.
See also:
  FindFirst
  GetResult
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@TURESearch
<GROUP Unicode.TURESearch>
Summary:
  Unicode regular expression Search class.
Description:
  TURESearch is a Unicode Regular Expression (URE) search implementation. The class
  handles low and high surrogates, case-(in)sensitivity, can ignore non-spacing
  characters and optionally returns whole words only.
    Assumptions:
    
      * Regular expression and text already normalized.
      * Conversion to lower case assumes a 1-1 mapping.
    
    Definitions:
    
      * Separator - any one of U+2028, U+2029, NL, CR.
    
    Operators:
<TABLE>
Operator  Description
--------  -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
.         match any character
*         match zero or more of the last subexpression
+         match one or more of the last subexpression
?         match zero or one of the last subexpression
()        subexpression grouping
{m, n}    match at least m occurences and up to n occurences - Note: both values can be 0 (zero) or ommitted which denotes an unlimiting bound {,} and {0,} and {0, 0} corresponds to * {, 1} and {0, 1} corresponds to ? {1,} and {1, 0} corresponds to +
{m}       match exactly m occurences
</TABLE>

    Literals and Constants:
<TABLE>
Literal/Constant  Description
----------------  ------------------------------------
c                 literal UCS2 character
\x....            hexadecimal number of up to 4 digits
\X....            hexadecimal number of up to 4 digits
\u....            hexadecimal number of up to 4 digits
\U....            hexadecimal number of up to 4 digits
</TABLE>

    Character classes:
    
      * [...] denotes a character class.
      * [^...] denotes a negated character class.
      * Character classes can contain literals, POSIX classes and/or character property classes.
      * POSIX classes are delimited by :POSIX:
      * Character property classes are \p or \P (the latter denotes a negated property class)
          followed by a comma separated list of integers between 0 and the maximum entry index
          in TCharacterCategory. These integers
          directly correspond to the TCharacterCategory enumeration entries. 
          Note: upper, lower and title case classes need to have case sensitive search
          enabled to match correctly!
Notes:
  This implementation is an improved translation from the URE package written by Mark Leisher (mleisher@crl.nmsu.edu) who used a variation of the RE->DFA algorithm done by Mark Hopkins (markh@csd4.csd.uwm.edu).
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@TURESearch.FindPrepare
Summary:
  Prepares the engine for a pattern search.
Description:
  FindPrepare prepares the engine for pattern search. There are 2 versions of
  FindPrepare a WideString and a PWideChar version.
Parameters:
  Pattern - Search pattern.
  PatternLength - Length of pattern (available only in the PWideChar version).
  Options - Search options. See  TSearchFlags for more information on this parameter.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@TURESearch.FindFirst
Summary:
  Finds the first occurence of a search pattern.
Description:
  FindFirst finds the first occurence of the pattern passed to FindPrepare
  in Text and returns True if one could be found (in which case Start and Stop are
  set to the according indices) otherwise False. This function is in particular of
  interest if only one occurence needs to be found.
Parameters:
  Text - Text to be searched.
  TextLen - Length of text (available only in the PWideChar version).
  Start - Start index of match if the function returned True, otherwise undefined.
  Stop - End index of match if the function returned True, otherwise undefined.
Result:
  True if the pattern provided in FindPrepare was found in the Text parameter,
  False otherwise.
See also:
  FindAll
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@TURESearch.FindAll
Summary:
  Finds all occurences of a search pattern.
Description:
  FindAll finds all occurences of the pattern passed to FindPrepare
  in Text and returns True if any could be found otherwise False.
Parameters:
  Text - Text to be searched.
  TextLen - Length of text (available only in the PWideChar version).
Result:
  True is the pattern provided in FindPrepare was found in the Text parameter,
  False otherwise.
See also:
  FindFirst
  GetResult
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@UTF7
<GROUP Unicode>
Summary:
  Unicode transformation format data type UTF7.
Description:
  Unicode transformation format data type UTF7.
Donator:
  Mike Lischke
@@PUTF7
<GROUP Unicode>
<COMBINE UTF7>
--------------------------------------------------------------------------------
@@UTF8
<GROUP Unicode>
Summary:
  Unicode transformation format data type UTF8.
Description:
  Unicode transformation format data type UTF8.
Donator:
  Mike Lischke
@@PUTF8
<GROUP Unicode>
<COMBINE UTF8>
--------------------------------------------------------------------------------
@@UTF16
<GROUP Unicode>
Summary:
  Unicode transformation format data type UTF16.
Description:
  Unicode transformation format data type UTF16.
Donator:
  Mike Lischke
@@PUTF16
<GROUP Unicode>
<COMBINE UTF16>
--------------------------------------------------------------------------------
@@UTF32
<GROUP Unicode>
Summary:
  Unicode transformation format data type UTF32.
Description:
  Unicode transformation format data type UTF32.
Donator:
  Mike Lischke
@@PUTF32
<GROUP Unicode>
<COMBINE UTF32>
--------------------------------------------------------------------------------
@@UCS4
<GROUP Unicode>
Summary:
  UTF conversion scheme data type UCS4.
Description:
  UTF conversion scheme data type UCS4.
Donator:
  Mike Lischke
@@PUCS4
<GROUP Unicode>
<COMBINE UCS4>
--------------------------------------------------------------------------------
@@PUCS2
<GROUP Unicode>
Summary:
  UTF conversion scheme data type UCS2.
Description:
  UTF conversion scheme data type UCS2.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@TUcNumber
<GROUP Unicode>
Summary:
  Record type for number-related Unicode functions.
Description:
  TUcNumber is a record used for number-related Unicode functions. '1/6' (U+2159)
  would be converted to Numerator=1 and Denominator=6 by the UnicodeNumberLookup function.
See also:
  UnicodeNumberLookup
Donator:
  Mike Lischke
@@TUcNumber.Numerator
  Numerator of a number
@@TUcNumber.Denominator
  Denominator of a number
--------------------------------------------------------------------------------
@@TNormalizationForm
<GROUP Unicode>
Summary:
  Normalization form to use.
Description:
  Normalization form used in WideNormalize.
See also:
  WideNormalize
Donator:
  Mike Lischke
@@TNormalizationForm.nfNone
  Do not normalize
@@TNormalizationForm.nfC
  canonical decomposition followed by canonical composition
@@TNormalizationForm.nfD
  canonical decomposition
@@TNormalizationForm.nfKC
  compatibility decomposition followed by a canonical composition
@@TNormalizationForm.nfKD
  compatibility decomposition
--------------------------------------------------------------------------------
@@WideNormalize
<GROUP Unicode.WideStringroutines>
Summary:
  Normalize a WideString.
Description:
  Returns a normalized string.
Parameters:
  S - The string to normalize.
  Form - Type of normalization to use.
Result:
  The string normalized.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@ExpandANSIString
<GROUP Unicode.WideStringroutines>
Summary:
  Expands an ANSI string to a Widestring.
Description:
  Expands an ANSI string to a Widestring.
Parameters:
  Source - Points to the ANSI string to be expanded.
  Target - Points to a WideString to receive the expanded string. Make sure that Target is large enough to hold the expanded ANSI string (ie. must be able to hold at least 2*Count bytes).
  Count - Number of characters to expand.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@UnicodeComposePair
<GROUP Unicode.Lowlevelcharacterroutines>
Summary:
  Map two sequences into a composed codepoint.
Description:
  UnicodeComposePair maps the sequence of First and Second to a composed codepoint.
Parameters:
  First - The first sequence.
  Second - The second sequence.
  Composite - Composed version of the First and Second sequence.
Result:
  UnicodeComposePair returns True if there was a mapping (in which case Composite
  is the composed version of First and Second) otherwise it returns False.
Donator:
  Mike Lischke
--------------------------------------------------------------------------------
@@TUnicodeBlock
<GROUP Unicode>
Summary:
  Unicode block enumeration.
Description:
  An Unicode block usually corresponds to a particular language script but can
  also represent special characters, musical symbols and the like.
Donator:
  Mike Lischke
@@TUnicodeBlock.ubUndefined
  Undefined block
--------------------------------------------------------------------------------