2 *******************************************************************************
3 * Copyright (C) 2013-2014, International Business Machines
4 * Corporation and others. All Rights Reserved.
5 *******************************************************************************
8 * created on: 2013aug05
9 * created by: Markus W. Scherer
15 #include "unicode/utypes.h"
17 #if !UCONFIG_NO_COLLATION
19 #include "collationdatareader.h"
20 #include "collationinfo.h"
26 CollationInfo::printSizes(int32_t sizeWithHeader
, const int32_t indexes
[]) {
27 int32_t totalSize
= indexes
[CollationDataReader::IX_TOTAL_SIZE
];
28 if(sizeWithHeader
> totalSize
) {
29 printf(" header size: %6ld\n", (long)(sizeWithHeader
- totalSize
));
32 int32_t length
= indexes
[CollationDataReader::IX_INDEXES_LENGTH
];
33 printf(" indexes: %6ld *4 = %6ld\n", (long)length
, (long)length
* 4);
35 length
= getDataLength(indexes
, CollationDataReader::IX_REORDER_CODES_OFFSET
);
37 printf(" reorder codes: %6ld *4 = %6ld\n", (long)length
/ 4, (long)length
);
40 length
= getDataLength(indexes
, CollationDataReader::IX_REORDER_TABLE_OFFSET
);
42 U_ASSERT(length
>= 256);
43 printf(" reorder table: %6ld\n", (long)length
);
46 length
= getDataLength(indexes
, CollationDataReader::IX_TRIE_OFFSET
);
48 printf(" trie size: %6ld\n", (long)length
);
51 length
= getDataLength(indexes
, CollationDataReader::IX_RESERVED8_OFFSET
);
53 printf(" reserved (offset 8): %6ld\n", (long)length
);
56 length
= getDataLength(indexes
, CollationDataReader::IX_CES_OFFSET
);
58 printf(" CEs: %6ld *8 = %6ld\n", (long)length
/ 8, (long)length
);
61 length
= getDataLength(indexes
, CollationDataReader::IX_RESERVED10_OFFSET
);
63 printf(" reserved (offset 10): %6ld\n", (long)length
);
66 length
= getDataLength(indexes
, CollationDataReader::IX_CE32S_OFFSET
);
68 printf(" CE32s: %6ld *4 = %6ld\n", (long)length
/ 4, (long)length
);
71 length
= getDataLength(indexes
, CollationDataReader::IX_ROOT_ELEMENTS_OFFSET
);
73 printf(" rootElements: %6ld *4 = %6ld\n", (long)length
/ 4, (long)length
);
76 length
= getDataLength(indexes
, CollationDataReader::IX_CONTEXTS_OFFSET
);
78 printf(" contexts: %6ld *2 = %6ld\n", (long)length
/ 2, (long)length
);
81 length
= getDataLength(indexes
, CollationDataReader::IX_UNSAFE_BWD_OFFSET
);
83 printf(" unsafeBwdSet: %6ld *2 = %6ld\n", (long)length
/ 2, (long)length
);
86 length
= getDataLength(indexes
, CollationDataReader::IX_FAST_LATIN_TABLE_OFFSET
);
88 printf(" fastLatin table: %6ld *2 = %6ld\n", (long)length
/ 2, (long)length
);
91 length
= getDataLength(indexes
, CollationDataReader::IX_SCRIPTS_OFFSET
);
93 printf(" scripts data: %6ld *2 = %6ld\n", (long)length
/ 2, (long)length
);
96 length
= getDataLength(indexes
, CollationDataReader::IX_COMPRESSIBLE_BYTES_OFFSET
);
98 U_ASSERT(length
>= 256);
99 printf(" compressibleBytes: %6ld\n", (long)length
);
102 length
= getDataLength(indexes
, CollationDataReader::IX_RESERVED18_OFFSET
);
104 printf(" reserved (offset 18): %6ld\n", (long)length
);
107 printf(" collator binary total size: %6ld\n", (long)sizeWithHeader
);
111 CollationInfo::getDataLength(const int32_t indexes
[], int32_t startIndex
) {
112 return indexes
[startIndex
+ 1] - indexes
[startIndex
];
117 #endif // !UCONFIG_NO_COLLATION