gfx/harfbuzz/src/hb-set.cc

Fri, 16 Jan 2015 18:13:44 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Fri, 16 Jan 2015 18:13:44 +0100
branch
TOR_BUG_9701
changeset 14
925c144e1f1f
permissions
-rw-r--r--

Integrate suggestion from review to improve consistency with existing code.

     1 /*
     2  * Copyright © 2012  Google, Inc.
     3  *
     4  *  This is part of HarfBuzz, a text shaping library.
     5  *
     6  * Permission is hereby granted, without written agreement and without
     7  * license or royalty fees, to use, copy, modify, and distribute this
     8  * software and its documentation for any purpose, provided that the
     9  * above copyright notice and the following two paragraphs appear in
    10  * all copies of this software.
    11  *
    12  * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
    13  * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
    14  * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
    15  * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
    16  * DAMAGE.
    17  *
    18  * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
    19  * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
    20  * FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
    21  * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
    22  * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
    23  *
    24  * Google Author(s): Behdad Esfahbod
    25  */
    27 #include "hb-set-private.hh"
    30 /* Public API */
    33 /**
    34  * hb_set_create: (Xconstructor)
    35  *
    36  * Return value: (transfer full):
    37  *
    38  * Since: 1.0
    39  **/
    40 hb_set_t *
    41 hb_set_create (void)
    42 {
    43   hb_set_t *set;
    45   if (!(set = hb_object_create<hb_set_t> ()))
    46     return hb_set_get_empty ();
    48   set->clear ();
    50   return set;
    51 }
    53 /**
    54  * hb_set_get_empty:
    55  *
    56  * Return value: (transfer full):
    57  *
    58  * Since: 1.0
    59  **/
    60 hb_set_t *
    61 hb_set_get_empty (void)
    62 {
    63   static const hb_set_t _hb_set_nil = {
    64     HB_OBJECT_HEADER_STATIC,
    65     true, /* in_error */
    67     {0} /* elts */
    68   };
    70   return const_cast<hb_set_t *> (&_hb_set_nil);
    71 }
    73 /**
    74  * hb_set_reference: (skip)
    75  * @set: a set.
    76  *
    77  * Return value: (transfer full):
    78  *
    79  * Since: 1.0
    80  **/
    81 hb_set_t *
    82 hb_set_reference (hb_set_t *set)
    83 {
    84   return hb_object_reference (set);
    85 }
    87 /**
    88  * hb_set_destroy: (skip)
    89  * @set: a set.
    90  *
    91  * Since: 1.0
    92  **/
    93 void
    94 hb_set_destroy (hb_set_t *set)
    95 {
    96   if (!hb_object_destroy (set)) return;
    98   set->fini ();
   100   free (set);
   101 }
   103 /**
   104  * hb_set_set_user_data: (skip)
   105  * @set: a set.
   106  * @key:
   107  * @data:
   108  * @destroy (closure data):
   109  * @replace:
   110  *
   111  * Return value:
   112  *
   113  * Since: 1.0
   114  **/
   115 hb_bool_t
   116 hb_set_set_user_data (hb_set_t           *set,
   117 		      hb_user_data_key_t *key,
   118 		      void *              data,
   119 		      hb_destroy_func_t   destroy,
   120 		      hb_bool_t           replace)
   121 {
   122   return hb_object_set_user_data (set, key, data, destroy, replace);
   123 }
   125 /**
   126  * hb_set_get_user_data: (skip)
   127  * @set: a set.
   128  * @key:
   129  *
   130  * Return value: (transfer none):
   131  *
   132  * Since: 1.0
   133  **/
   134 void *
   135 hb_set_get_user_data (hb_set_t           *set,
   136 		      hb_user_data_key_t *key)
   137 {
   138   return hb_object_get_user_data (set, key);
   139 }
   142 /**
   143  * hb_set_allocation_successful:
   144  * @set: a set.
   145  *
   146  * 
   147  *
   148  * Return value: 
   149  *
   150  * Since: 1.0
   151  **/
   152 hb_bool_t
   153 hb_set_allocation_successful (const hb_set_t  *set HB_UNUSED)
   154 {
   155   return !set->in_error;
   156 }
   158 /**
   159  * hb_set_clear:
   160  * @set: a set.
   161  *
   162  * 
   163  *
   164  * Since: 1.0
   165  **/
   166 void
   167 hb_set_clear (hb_set_t *set)
   168 {
   169   set->clear ();
   170 }
   172 /**
   173  * hb_set_is_empty:
   174  * @set: a set.
   175  *
   176  * 
   177  *
   178  * Return value: 
   179  *
   180  * Since: 1.0
   181  **/
   182 hb_bool_t
   183 hb_set_is_empty (const hb_set_t *set)
   184 {
   185   return set->is_empty ();
   186 }
   188 /**
   189  * hb_set_has:
   190  * @set: a set.
   191  * @codepoint: 
   192  *
   193  * 
   194  *
   195  * Return value: 
   196  *
   197  * Since: 1.0
   198  **/
   199 hb_bool_t
   200 hb_set_has (const hb_set_t *set,
   201 	    hb_codepoint_t  codepoint)
   202 {
   203   return set->has (codepoint);
   204 }
   206 /**
   207  * hb_set_add:
   208  * @set: a set.
   209  * @codepoint: 
   210  *
   211  * 
   212  *
   213  * Since: 1.0
   214  **/
   215 void
   216 hb_set_add (hb_set_t       *set,
   217 	    hb_codepoint_t  codepoint)
   218 {
   219   set->add (codepoint);
   220 }
   222 /**
   223  * hb_set_add_range:
   224  * @set: a set.
   225  * @first: 
   226  * @last: 
   227  *
   228  * 
   229  *
   230  * Since: 1.0
   231  **/
   232 void
   233 hb_set_add_range (hb_set_t       *set,
   234 		  hb_codepoint_t  first,
   235 		  hb_codepoint_t  last)
   236 {
   237   set->add_range (first, last);
   238 }
   240 /**
   241  * hb_set_del:
   242  * @set: a set.
   243  * @codepoint: 
   244  *
   245  * 
   246  *
   247  * Since: 1.0
   248  **/
   249 void
   250 hb_set_del (hb_set_t       *set,
   251 	    hb_codepoint_t  codepoint)
   252 {
   253   set->del (codepoint);
   254 }
   256 /**
   257  * hb_set_del_range:
   258  * @set: a set.
   259  * @first: 
   260  * @last: 
   261  *
   262  * 
   263  *
   264  * Since: 1.0
   265  **/
   266 void
   267 hb_set_del_range (hb_set_t       *set,
   268 		  hb_codepoint_t  first,
   269 		  hb_codepoint_t  last)
   270 {
   271   set->del_range (first, last);
   272 }
   274 /**
   275  * hb_set_is_equal:
   276  * @set: a set.
   277  * @other: 
   278  *
   279  * 
   280  *
   281  * Return value: 
   282  *
   283  * Since: 1.0
   284  **/
   285 hb_bool_t
   286 hb_set_is_equal (const hb_set_t *set,
   287 		 const hb_set_t *other)
   288 {
   289   return set->is_equal (other);
   290 }
   292 /**
   293  * hb_set_set:
   294  * @set: a set.
   295  * @other: 
   296  *
   297  * 
   298  *
   299  * Since: 1.0
   300  **/
   301 void
   302 hb_set_set (hb_set_t       *set,
   303 	    const hb_set_t *other)
   304 {
   305   set->set (other);
   306 }
   308 /**
   309  * hb_set_union:
   310  * @set: a set.
   311  * @other: 
   312  *
   313  * 
   314  *
   315  * Since: 1.0
   316  **/
   317 void
   318 hb_set_union (hb_set_t       *set,
   319 	      const hb_set_t *other)
   320 {
   321   set->union_ (other);
   322 }
   324 /**
   325  * hb_set_intersect:
   326  * @set: a set.
   327  * @other: 
   328  *
   329  * 
   330  *
   331  * Since: 1.0
   332  **/
   333 void
   334 hb_set_intersect (hb_set_t       *set,
   335 		  const hb_set_t *other)
   336 {
   337   set->intersect (other);
   338 }
   340 /**
   341  * hb_set_subtract:
   342  * @set: a set.
   343  * @other: 
   344  *
   345  * 
   346  *
   347  * Since: 1.0
   348  **/
   349 void
   350 hb_set_subtract (hb_set_t       *set,
   351 		 const hb_set_t *other)
   352 {
   353   set->subtract (other);
   354 }
   356 /**
   357  * hb_set_symmetric_difference:
   358  * @set: a set.
   359  * @other: 
   360  *
   361  * 
   362  *
   363  * Since: 1.0
   364  **/
   365 void
   366 hb_set_symmetric_difference (hb_set_t       *set,
   367 			     const hb_set_t *other)
   368 {
   369   set->symmetric_difference (other);
   370 }
   372 /**
   373  * hb_set_invert:
   374  * @set: a set.
   375  *
   376  * 
   377  *
   378  * Since: 1.0
   379  **/
   380 void
   381 hb_set_invert (hb_set_t *set)
   382 {
   383   set->invert ();
   384 }
   386 /**
   387  * hb_set_get_population:
   388  * @set: a set.
   389  *
   390  * Returns the number of numbers in the set.
   391  *
   392  * Return value: set population.
   393  *
   394  * Since: 1.0
   395  **/
   396 unsigned int
   397 hb_set_get_population (const hb_set_t *set)
   398 {
   399   return set->get_population ();
   400 }
   402 /**
   403  * hb_set_get_min:
   404  * @set: a set.
   405  *
   406  * Finds the minimum number in the set.
   407  *
   408  * Return value: minimum of the set, or %HB_SET_VALUE_INVALID if set is empty.
   409  *
   410  * Since: 1.0
   411  **/
   412 hb_codepoint_t
   413 hb_set_get_min (const hb_set_t *set)
   414 {
   415   return set->get_min ();
   416 }
   418 /**
   419  * hb_set_get_max:
   420  * @set: a set.
   421  *
   422  * Finds the maximum number in the set.
   423  *
   424  * Return value: minimum of the set, or %HB_SET_VALUE_INVALID if set is empty.
   425  *
   426  * Since: 1.0
   427  **/
   428 hb_codepoint_t
   429 hb_set_get_max (const hb_set_t *set)
   430 {
   431   return set->get_max ();
   432 }
   434 /**
   435  * hb_set_next:
   436  * @set: a set.
   437  * @codepoint: (inout):
   438  *
   439  * 
   440  *
   441  * Return value: whether there was a next value.
   442  *
   443  * Since: 1.0
   444  **/
   445 hb_bool_t
   446 hb_set_next (const hb_set_t *set,
   447 	     hb_codepoint_t *codepoint)
   448 {
   449   return set->next (codepoint);
   450 }
   452 /**
   453  * hb_set_next_range:
   454  * @set: a set.
   455  * @first: (out): output first codepoint in the range.
   456  * @last: (inout): input current last and output last codepoint in the range.
   457  *
   458  * Gets the next consecutive range of numbers in @set that
   459  * are greater than current value of @last.
   460  *
   461  * Return value: whether there was a next range.
   462  *
   463  * Since: 1.0
   464  **/
   465 hb_bool_t
   466 hb_set_next_range (const hb_set_t *set,
   467 		   hb_codepoint_t *first,
   468 		   hb_codepoint_t *last)
   469 {
   470   return set->next_range (first, last);
   471 }

mercurial