tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

SQLCollations.h (9447B)


      1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
      2 * vim: sw=2 ts=2 et lcs=trail\:.,tab\:>~ :
      3 * This Source Code Form is subject to the terms of the Mozilla Public
      4 * License, v. 2.0. If a copy of the MPL was not distributed with this
      5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      6 
      7 #ifndef mozilla_storage_SQLCollations_h
      8 #define mozilla_storage_SQLCollations_h
      9 
     10 #include "mozStorageService.h"
     11 #include "nscore.h"
     12 #include "nsString.h"
     13 
     14 #include "sqlite3.h"
     15 
     16 namespace mozilla {
     17 namespace storage {
     18 
     19 /**
     20 * Registers the collating sequences declared here with the specified
     21 * database and Service.
     22 *
     23 * @param  aDB
     24 *         The database we'll be registering the collations with.
     25 * @param  aService
     26 *         The Service that owns the collator used by our collations.
     27 * @return the SQLite status code indicating success or failure.
     28 */
     29 int registerCollations(sqlite3* aDB, Service* aService);
     30 
     31 ////////////////////////////////////////////////////////////////////////////////
     32 //// Predefined Functions
     33 
     34 /**
     35 * Custom UTF-8 collating sequence that respects the application's locale.
     36 * Comparison is case- and accent-insensitive.  This is called by SQLite.
     37 *
     38 * @param  aService
     39 *         The Service that owns the collator used by this collation.
     40 * @param  aLen1
     41 *         The number of bytes in aStr1.
     42 * @param  aStr1
     43 *         The string to be compared against aStr2.  It will be passed in by
     44 *         SQLite as a non-null-terminated char* buffer.
     45 * @param  aLen2
     46 *         The number of bytes in aStr2.
     47 * @param  aStr2
     48 *         The string to be compared against aStr1.  It will be passed in by
     49 *         SQLite as a non-null-terminated char* buffer.
     50 * @return aStr1 - aStr2.  That is, if aStr1 < aStr2, returns a negative number.
     51 *         If aStr1 > aStr2, returns a positive number.  If aStr1 == aStr2,
     52 *         returns 0.
     53 */
     54 int localeCollation8(void* aService, int aLen1, const void* aStr1, int aLen2,
     55                     const void* aStr2);
     56 
     57 /**
     58 * Custom UTF-8 collating sequence that respects the application's locale.
     59 * Comparison is case-sensitive and accent-insensitive.  This is called by
     60 * SQLite.
     61 *
     62 * @param  aService
     63 *         The Service that owns the collator used by this collation.
     64 * @param  aLen1
     65 *         The number of bytes in aStr1.
     66 * @param  aStr1
     67 *         The string to be compared against aStr2.  It will be passed in by
     68 *         SQLite as a non-null-terminated char* buffer.
     69 * @param  aLen2
     70 *         The number of bytes in aStr2.
     71 * @param  aStr2
     72 *         The string to be compared against aStr1.  It will be passed in by
     73 *         SQLite as a non-null-terminated char* buffer.
     74 * @return aStr1 - aStr2.  That is, if aStr1 < aStr2, returns a negative number.
     75 *         If aStr1 > aStr2, returns a positive number.  If aStr1 == aStr2,
     76 *         returns 0.
     77 */
     78 int localeCollationCaseSensitive8(void* aService, int aLen1, const void* aStr1,
     79                                  int aLen2, const void* aStr2);
     80 
     81 /**
     82 * Custom UTF-8 collating sequence that respects the application's locale.
     83 * Comparison is case-insensitive and accent-sensitive.  This is called by
     84 * SQLite.
     85 *
     86 * @param  aService
     87 *         The Service that owns the collator used by this collation.
     88 * @param  aLen1
     89 *         The number of bytes in aStr1.
     90 * @param  aStr1
     91 *         The string to be compared against aStr2.  It will be passed in by
     92 *         SQLite as a non-null-terminated char* buffer.
     93 * @param  aLen2
     94 *         The number of bytes in aStr2.
     95 * @param  aStr2
     96 *         The string to be compared against aStr1.  It will be passed in by
     97 *         SQLite as a non-null-terminated char* buffer.
     98 * @return aStr1 - aStr2.  That is, if aStr1 < aStr2, returns a negative number.
     99 *         If aStr1 > aStr2, returns a positive number.  If aStr1 == aStr2,
    100 *         returns 0.
    101 */
    102 int localeCollationAccentSensitive8(void* aService, int aLen1,
    103                                    const void* aStr1, int aLen2,
    104                                    const void* aStr2);
    105 
    106 /**
    107 * Custom UTF-8 collating sequence that respects the application's locale.
    108 * Comparison is case- and accent-sensitive.  This is called by SQLite.
    109 *
    110 * @param  aService
    111 *         The Service that owns the collator used by this collation.
    112 * @param  aLen1
    113 *         The number of bytes in aStr1.
    114 * @param  aStr1
    115 *         The string to be compared against aStr2.  It will be passed in by
    116 *         SQLite as a non-null-terminated char* buffer.
    117 * @param  aLen2
    118 *         The number of bytes in aStr2.
    119 * @param  aStr2
    120 *         The string to be compared against aStr1.  It will be passed in by
    121 *         SQLite as a non-null-terminated char* buffer.
    122 * @return aStr1 - aStr2.  That is, if aStr1 < aStr2, returns a negative number.
    123 *         If aStr1 > aStr2, returns a positive number.  If aStr1 == aStr2,
    124 *         returns 0.
    125 */
    126 int localeCollationCaseAccentSensitive8(void* aService, int aLen1,
    127                                        const void* aStr1, int aLen2,
    128                                        const void* aStr2);
    129 
    130 /**
    131 * Custom UTF-16 collating sequence that respects the application's locale.
    132 * Comparison is case- and accent-insensitive.  This is called by SQLite.
    133 *
    134 * @param  aService
    135 *         The Service that owns the collator used by this collation.
    136 * @param  aLen1
    137 *         The number of bytes (not characters) in aStr1.
    138 * @param  aStr1
    139 *         The string to be compared against aStr2.  It will be passed in by
    140 *         SQLite as a non-null-terminated char16_t* buffer.
    141 * @param  aLen2
    142 *         The number of bytes (not characters) in aStr2.
    143 * @param  aStr2
    144 *         The string to be compared against aStr1.  It will be passed in by
    145 *         SQLite as a non-null-terminated char16_t* buffer.
    146 * @return aStr1 - aStr2.  That is, if aStr1 < aStr2, returns a negative number.
    147 *         If aStr1 > aStr2, returns a positive number.  If aStr1 == aStr2,
    148 *         returns 0.
    149 */
    150 int localeCollation16(void* aService, int aLen1, const void* aStr1, int aLen2,
    151                      const void* aStr2);
    152 
    153 /**
    154 * Custom UTF-16 collating sequence that respects the application's locale.
    155 * Comparison is case-sensitive and accent-insensitive.  This is called by
    156 * SQLite.
    157 *
    158 * @param  aService
    159 *         The Service that owns the collator used by this collation.
    160 * @param  aLen1
    161 *         The number of bytes (not characters) in aStr1.
    162 * @param  aStr1
    163 *         The string to be compared against aStr2.  It will be passed in by
    164 *         SQLite as a non-null-terminated char16_t* buffer.
    165 * @param  aLen2
    166 *         The number of bytes (not characters) in aStr2.
    167 * @param  aStr2
    168 *         The string to be compared against aStr1.  It will be passed in by
    169 *         SQLite as a non-null-terminated char16_t* buffer.
    170 * @return aStr1 - aStr2.  That is, if aStr1 < aStr2, returns a negative number.
    171 *         If aStr1 > aStr2, returns a positive number.  If aStr1 == aStr2,
    172 *         returns 0.
    173 */
    174 int localeCollationCaseSensitive16(void* aService, int aLen1, const void* aStr1,
    175                                   int aLen2, const void* aStr2);
    176 
    177 /**
    178 * Custom UTF-16 collating sequence that respects the application's locale.
    179 * Comparison is case-insensitive and accent-sensitive.  This is called by
    180 * SQLite.
    181 *
    182 * @param  aService
    183 *         The Service that owns the collator used by this collation.
    184 * @param  aLen1
    185 *         The number of bytes (not characters) in aStr1.
    186 * @param  aStr1
    187 *         The string to be compared against aStr2.  It will be passed in by
    188 *         SQLite as a non-null-terminated char16_t* buffer.
    189 * @param  aLen2
    190 *         The number of bytes (not characters) in aStr2.
    191 * @param  aStr2
    192 *         The string to be compared against aStr1.  It will be passed in by
    193 *         SQLite as a non-null-terminated char16_t* buffer.
    194 * @return aStr1 - aStr2.  That is, if aStr1 < aStr2, returns a negative number.
    195 *         If aStr1 > aStr2, returns a positive number.  If aStr1 == aStr2,
    196 *         returns 0.
    197 */
    198 int localeCollationAccentSensitive16(void* aService, int aLen1,
    199                                     const void* aStr1, int aLen2,
    200                                     const void* aStr2);
    201 
    202 /**
    203 * Custom UTF-16 collating sequence that respects the application's locale.
    204 * Comparison is case- and accent-sensitive.  This is called by SQLite.
    205 *
    206 * @param  aService
    207 *         The Service that owns the collator used by this collation.
    208 * @param  aLen1
    209 *         The number of bytes (not characters) in aStr1.
    210 * @param  aStr1
    211 *         The string to be compared against aStr2.  It will be passed in by
    212 *         SQLite as a non-null-terminated char16_t* buffer.
    213 * @param  aLen2
    214 *         The number of bytes (not characters) in aStr2.
    215 * @param  aStr2
    216 *         The string to be compared against aStr1.  It will be passed in by
    217 *         SQLite as a non-null-terminated char16_t* buffer.
    218 * @return aStr1 - aStr2.  That is, if aStr1 < aStr2, returns a negative number.
    219 *         If aStr1 > aStr2, returns a positive number.  If aStr1 == aStr2,
    220 *         returns 0.
    221 */
    222 int localeCollationCaseAccentSensitive16(void* aService, int aLen1,
    223                                         const void* aStr1, int aLen2,
    224                                         const void* aStr2);
    225 
    226 }  // namespace storage
    227 }  // namespace mozilla
    228 
    229 #endif  // mozilla_storage_SQLCollations_h