/*
 * fontconfig/doc/fccharset.fncs
 *
 * Copyright © 2003 Keith Packard
 *
 * Permission to use, copy, modify, distribute, and sell this software and its
 * documentation for any purpose is hereby granted without fee, provided that
 * the above copyright notice appear in all copies and that both that
 * copyright notice and this permission notice appear in supporting
 * documentation, and that the name of the author(s) not be used in
 * advertising or publicity pertaining to distribution of the software without
 * specific, written prior permission.  The authors make no
 * representations about the suitability of this software for any purpose.  It
 * is provided "as is" without express or implied warranty.
 *
 * THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
 * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
 * EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY SPECIAL, INDIRECT OR
 * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
 * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
 * PERFORMANCE OF THIS SOFTWARE.
 */
@RET@           FcCharSet *
@FUNC@          FcCharSetCreate
@TYPE1@         void
@PURPOSE@       Create an empty character set
@DESC@
<function>FcCharSetCreate</function> allocates and initializes a new empty
character set object.
@@

@RET@           void
@FUNC@          FcCharSetDestroy
@TYPE1@         FcCharSet *             @ARG1@          fcs
@PURPOSE@       Destroy a character set
@DESC@
<function>FcCharSetDestroy</function> decrements the reference count
<parameter>fcs</parameter>.  If the reference count becomes zero, all
memory referenced is freed.
@@

@RET@           FcBool
@FUNC@          FcCharSetAddChar
@TYPE1@         FcCharSet *             @ARG1@          fcs
@TYPE2@         FcChar32%               @ARG2@          ucs4
@PURPOSE@       Add a character to a charset
@DESC@
<function>FcCharSetAddChar</function> adds a single Unicode char to the set,
returning FcFalse on failure, either as a result of a constant set or from
running out of memory.
@@

@RET@           FcBool
@FUNC@          FcCharSetDelChar
@TYPE1@         FcCharSet *             @ARG1@          fcs
@TYPE2@         FcChar32%               @ARG2@          ucs4
@PURPOSE@       Add a character to a charset
@DESC@
<function>FcCharSetDelChar</function> deletes a single Unicode char from the set,
returning FcFalse on failure, either as a result of a constant set or from
running out of memory.
@SINCE@         2.9.0
@@

@RET@           FcCharSet *
@FUNC@          FcCharSetCopy
@TYPE1@         FcCharSet *             @ARG1@          src
@PURPOSE@       Copy a charset
@DESC@
Makes a copy of <parameter>src</parameter>; note that this may not actually do anything more
than increment the reference count on <parameter>src</parameter>.
@@

@RET@           FcBool
@FUNC@          FcCharSetEqual
@TYPE1@         const FcCharSet *       @ARG1@          a
@TYPE2@         const FcCharSet *       @ARG2@          b
@PURPOSE@       Compare two charsets
@DESC@
Returns whether <parameter>a</parameter> and <parameter>b</parameter>
contain the same set of Unicode chars.
@@

@RET@           FcCharSet *
@FUNC@          FcCharSetIntersect
@TYPE1@         const FcCharSet *       @ARG1@          a
@TYPE2@         const FcCharSet *       @ARG2@          b
@PURPOSE@       Intersect charsets
@DESC@
Returns a set including only those chars found in both
<parameter>a</parameter> and <parameter>b</parameter>.
@@

@RET@           FcCharSet *
@FUNC@          FcCharSetUnion
@TYPE1@         const FcCharSet *       @ARG1@          a
@TYPE2@         const FcCharSet *       @ARG2@          b
@PURPOSE@       Add charsets
@DESC@
Returns a set including only those chars found in either <parameter>a</parameter> or <parameter>b</parameter>.
@@

@RET@           FcCharSet *
@FUNC@          FcCharSetSubtract
@TYPE1@         const FcCharSet *       @ARG1@          a
@TYPE2@         const FcCharSet *       @ARG2@          b
@PURPOSE@       Subtract charsets
@DESC@
Returns a set including only those chars found in <parameter>a</parameter> but not <parameter>b</parameter>.
@@

@RET@           FcBool
@FUNC@          FcCharSetMerge
@TYPE1@         FcCharSet *             @ARG1@          a
@TYPE2@         const FcCharSet *       @ARG2@          b
@TYPE3@         FcBool *                @ARG3@          changed
@PURPOSE@       Merge charsets
@DESC@
Adds all chars in <parameter>b</parameter> to <parameter>a</parameter>.
In other words, this is an in-place version of FcCharSetUnion.
If <parameter>changed</parameter> is not NULL, then it returns whether any new
chars from <parameter>b</parameter> were added to <parameter>a</parameter>.
Returns FcFalse on failure, either when <parameter>a</parameter> is a constant
set or from running out of memory.
@@

@RET@           FcBool
@FUNC@          FcCharSetHasChar
@TYPE1@         const FcCharSet *       @ARG1@          fcs
@TYPE2@         FcChar32%               @ARG2@          ucs4
@PURPOSE@       Check a charset for a char
@DESC@
Returns whether <parameter>fcs</parameter> contains the char <parameter>ucs4</parameter>.
@@

@RET@           FcChar32
@FUNC@          FcCharSetCount
@TYPE1@         const FcCharSet *       @ARG1@          a
@PURPOSE@       Count entries in a charset
@DESC@
Returns the total number of Unicode chars in <parameter>a</parameter>.
@@

@RET@           FcChar32
@FUNC@          FcCharSetIntersectCount
@TYPE1@         const FcCharSet *       @ARG1@          a
@TYPE2@         const FcCharSet *       @ARG2@          b
@PURPOSE@       Intersect and count charsets
@DESC@
Returns the number of chars that are in both <parameter>a</parameter> and <parameter>b</parameter>.
@@

@RET@           FcChar32
@FUNC@          FcCharSetSubtractCount
@TYPE1@         const FcCharSet *       @ARG1@          a
@TYPE2@         const FcCharSet *       @ARG2@          b
@PURPOSE@       Subtract and count charsets
@DESC@
Returns the number of chars that are in <parameter>a</parameter> but not in <parameter>b</parameter>.
@@

@RET@           FcBool
@FUNC@          FcCharSetIsSubset
@TYPE1@         const FcCharSet *       @ARG1@          a
@TYPE2@         const FcCharSet *       @ARG2@          b
@PURPOSE@       Test for charset inclusion
@DESC@
Returns whether <parameter>a</parameter> is a subset of <parameter>b</parameter>.
@@

@RET@           FcChar32
@FUNC@          FcCharSetFirstPage
@TYPE1@         const FcCharSet *       @ARG1@          a
@TYPE2@         FcChar32[FC_CHARSET_MAP_SIZE]%  @ARG2@  map
@TYPE3@         FcChar32 *              @ARG3@          next
@PURPOSE@       Start enumerating charset contents
@DESC@
Builds an array of bits in <parameter>map</parameter> marking the
first page of Unicode coverage of <parameter>a</parameter>.
<parameter>*next</parameter> is set to contains the base code point
for the next page in <parameter>a</parameter>.  Returns the base code
point for the page, or <constant>FC_CHARSET_DONE</constant> if
<parameter>a</parameter> contains no pages.  As an example, if
<function>FcCharSetFirstPage</function> returns
<literal>0x300</literal> and fills <parameter>map</parameter> with
<literallayout class="monospaced">
0xffffffff 0xffffffff 0x01000008 0x44300002 0xffffd7f0 0xfffffffb 0xffff7fff 0xffff0003
</literallayout>
Then the page contains code points <literal>0x300</literal> through
<literal>0x33f</literal> (the first 64 code points on the page)
because <parameter>map[0]</parameter> and
<parameter>map[1]</parameter> both have all their bits set.  It also
contains code points <literal>0x343</literal> (<parameter>0x300 + 32*2
+ (4-1)</parameter>) and <literal>0x35e</literal> (<parameter>0x300 +
32*2 + (31-1)</parameter>) because <parameter>map[2]</parameter> has
the 4th and 31st bits set.  The code points represented by
<literal>map[3]</literal> and later are left as an exercise for the
reader ;).
@@

@RET@           FcChar32
@FUNC@          FcCharSetNextPage
@TYPE1@         const FcCharSet *       @ARG1@          a
@TYPE2@         FcChar32[FC_CHARSET_MAP_SIZE]%  @ARG2@  map
@TYPE3@         FcChar32 *              @ARG3@          next
@PURPOSE@       Continue enumerating charset contents
@DESC@
Builds an array of bits in <parameter>map</parameter> marking the
Unicode coverage of <parameter>a</parameter> for page containing
<parameter>*next</parameter> (see the
<function>FcCharSetFirstPage</function> description for details).
<parameter>*next</parameter> is set to contains the base code point
for the next page in <parameter>a</parameter>.  Returns the base of
code point for the page, or <constant>FC_CHARSET_DONE</constant> if
<parameter>a</parameter> does not contain
<parameter>*next</parameter>.
@@

@RET@           FcChar32
@FUNC@          FcCharSetCoverage
@TYPE1@         const FcCharSet *       @ARG1@          a
@TYPE2@         FcChar32                @ARG2@          page
@TYPE3@         FcChar32[8]             @ARG3@          result
@PURPOSE@       DEPRECATED return coverage for a Unicode page
@DESC@
DEPRECATED
This function returns a bitmask in <parameter>result</parameter> which
indicates which code points in
<parameter>page</parameter> are included in <parameter>a</parameter>.
<function>FcCharSetCoverage</function> returns the next page in the charset which has any
coverage.
@@

@RET@           FcCharSet *
@FUNC@          FcCharSetNew
@TYPE1@         void
@PURPOSE@       DEPRECATED alias for FcCharSetCreate
@DESC@
<function>FcCharSetNew</function> is a DEPRECATED alias for FcCharSetCreate.
@@

