LCOV - code coverage report
Current view: top level - intl/icu/source/i18n - collationtailoring.h (source / functions) Hit Total Coverage
Test: output.info Lines: 0 6 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 2 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : // © 2016 and later: Unicode, Inc. and others.
       2             : // License & terms of use: http://www.unicode.org/copyright.html
       3             : /*
       4             : *******************************************************************************
       5             : * Copyright (C) 2013-2014, International Business Machines
       6             : * Corporation and others.  All Rights Reserved.
       7             : *******************************************************************************
       8             : * collationtailoring.h
       9             : *
      10             : * created on: 2013mar12
      11             : * created by: Markus W. Scherer
      12             : */
      13             : 
      14             : #ifndef __COLLATIONTAILORING_H__
      15             : #define __COLLATIONTAILORING_H__
      16             : 
      17             : #include "unicode/utypes.h"
      18             : 
      19             : #if !UCONFIG_NO_COLLATION
      20             : 
      21             : #include "unicode/locid.h"
      22             : #include "unicode/unistr.h"
      23             : #include "unicode/uversion.h"
      24             : #include "collationsettings.h"
      25             : #include "uhash.h"
      26             : #include "umutex.h"
      27             : 
      28             : struct UDataMemory;
      29             : struct UResourceBundle;
      30             : struct UTrie2;
      31             : 
      32             : U_NAMESPACE_BEGIN
      33             : 
      34             : struct CollationData;
      35             : 
      36             : class UnicodeSet;
      37             : 
      38             : /**
      39             :  * Collation tailoring data & settings.
      40             :  * This is a container of values for a collation tailoring
      41             :  * built from rules or deserialized from binary data.
      42             :  *
      43             :  * It is logically immutable: Do not modify its values.
      44             :  * The fields are public for convenience.
      45             :  *
      46             :  * It is shared, reference-counted, and auto-deleted; see SharedObject.
      47             :  */
      48             : struct U_I18N_API CollationTailoring : public SharedObject {
      49             :     CollationTailoring(const CollationSettings *baseSettings);
      50             :     virtual ~CollationTailoring();
      51             : 
      52             :     /**
      53             :      * Returns TRUE if the constructor could not initialize properly.
      54             :      */
      55           0 :     UBool isBogus() { return settings == NULL; }
      56             : 
      57             :     UBool ensureOwnedData(UErrorCode &errorCode);
      58             : 
      59             :     static void makeBaseVersion(const UVersionInfo ucaVersion, UVersionInfo version);
      60             :     void setVersion(const UVersionInfo baseVersion, const UVersionInfo rulesVersion);
      61             :     int32_t getUCAVersion() const;
      62             : 
      63             :     // data for sorting etc.
      64             :     const CollationData *data;  // == base data or ownedData
      65             :     const CollationSettings *settings;  // reference-counted
      66             :     UnicodeString rules;
      67             :     // The locale is bogus when built from rules or constructed from a binary blob.
      68             :     // It can then be set by the service registration code which is thread-safe.
      69             :     mutable Locale actualLocale;
      70             :     // UCA version u.v.w & rules version r.s.t.q:
      71             :     // version[0]: builder version (runtime version is mixed in at runtime)
      72             :     // version[1]: bits 7..3=u, bits 2..0=v
      73             :     // version[2]: bits 7..6=w, bits 5..0=r
      74             :     // version[3]= (s<<5)+(s>>3)+t+(q<<4)+(q>>4)
      75             :     UVersionInfo version;
      76             : 
      77             :     // owned objects
      78             :     CollationData *ownedData;
      79             :     UObject *builder;
      80             :     UDataMemory *memory;
      81             :     UResourceBundle *bundle;
      82             :     UTrie2 *trie;
      83             :     UnicodeSet *unsafeBackwardSet;
      84             :     mutable UHashtable *maxExpansions;
      85             :     mutable UInitOnce maxExpansionsInitOnce;
      86             : 
      87             : private:
      88             :     /**
      89             :      * No copy constructor: A CollationTailoring cannot be copied.
      90             :      * It is immutable, and the data trie cannot be copied either.
      91             :      */
      92             :     CollationTailoring(const CollationTailoring &other);
      93             : };
      94             : 
      95             : struct CollationCacheEntry : public SharedObject {
      96           0 :     CollationCacheEntry(const Locale &loc, const CollationTailoring *t)
      97           0 :             : validLocale(loc), tailoring(t) {
      98           0 :         if(t != NULL) {
      99           0 :             t->addRef();
     100             :         }
     101           0 :     }
     102             :     ~CollationCacheEntry();
     103             : 
     104             :     Locale validLocale;
     105             :     const CollationTailoring *tailoring;
     106             : };
     107             : 
     108             : U_NAMESPACE_END
     109             : 
     110             : #endif  // !UCONFIG_NO_COLLATION
     111             : #endif  // __COLLATIONTAILORING_H__

Generated by: LCOV version 1.13