am 55f5f7a0: [Refactor] Add writeDictionaryHeader.
* commit '55f5f7a005c00ec764ed19647b245e48636a0440': [Refactor] Add writeDictionaryHeader.main
commit
60e487f5ed
|
@ -912,23 +912,15 @@ public class BinaryDictEncoderUtils {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Dumps a FusionDictionary to a file.
|
* Writes a file header to an output stream.
|
||||||
*
|
*
|
||||||
* @param destination the stream to write the binary data to.
|
* @param destination the stream to write the file header to.
|
||||||
* @param dict the dictionary to write.
|
* @param dict the dictionary to write.
|
||||||
* @param formatOptions file format options.
|
* @param formatOptions file format options.
|
||||||
*/
|
*/
|
||||||
/* package */ static void writeDictionaryBinary(final OutputStream destination,
|
/* package */ static void writeDictionaryHeader(final OutputStream destination,
|
||||||
final FusionDictionary dict, final FormatOptions formatOptions)
|
final FusionDictionary dict, final FormatOptions formatOptions)
|
||||||
throws IOException, UnsupportedFormatException {
|
throws IOException, UnsupportedFormatException {
|
||||||
|
|
||||||
// Addresses are limited to 3 bytes, but since addresses can be relative to each node
|
|
||||||
// array, the structure itself is not limited to 16MB. However, if it is over 16MB deciding
|
|
||||||
// the order of the PtNode arrays becomes a quite complicated problem, because though the
|
|
||||||
// dictionary itself does not have a size limit, each node array must still be within 16MB
|
|
||||||
// of all its children and parents. As long as this is ensured, the dictionary file may
|
|
||||||
// grow to any size.
|
|
||||||
|
|
||||||
final int version = formatOptions.mVersion;
|
final int version = formatOptions.mVersion;
|
||||||
if (version < FormatSpec.MINIMUM_SUPPORTED_VERSION
|
if (version < FormatSpec.MINIMUM_SUPPORTED_VERSION
|
||||||
|| version > FormatSpec.MAXIMUM_SUPPORTED_VERSION) {
|
|| version > FormatSpec.MAXIMUM_SUPPORTED_VERSION) {
|
||||||
|
@ -975,6 +967,24 @@ public class BinaryDictEncoderUtils {
|
||||||
destination.write(bytes);
|
destination.write(bytes);
|
||||||
|
|
||||||
headerBuffer.close();
|
headerBuffer.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Dumps a FusionDictionary to a file.
|
||||||
|
*
|
||||||
|
* @param destination the stream to write the dictionary body to.
|
||||||
|
* @param dict the dictionary to write.
|
||||||
|
* @param formatOptions file format options.
|
||||||
|
*/
|
||||||
|
/* package */ static void writeDictionaryBody(final OutputStream destination,
|
||||||
|
final FusionDictionary dict, final FormatOptions formatOptions) throws IOException {
|
||||||
|
|
||||||
|
// Addresses are limited to 3 bytes, but since addresses can be relative to each node
|
||||||
|
// array, the structure itself is not limited to 16MB. However, if it is over 16MB deciding
|
||||||
|
// the order of the PtNode arrays becomes a quite complicated problem, because though the
|
||||||
|
// dictionary itself does not have a size limit, each node array must still be within 16MB
|
||||||
|
// of all its children and parents. As long as this is ensured, the dictionary file may
|
||||||
|
// grow to any size.
|
||||||
|
|
||||||
// Leave the choice of the optimal node order to the flattenTree function.
|
// Leave the choice of the optimal node order to the flattenTree function.
|
||||||
MakedictLog.i("Flattening the tree...");
|
MakedictLog.i("Flattening the tree...");
|
||||||
|
|
|
@ -62,7 +62,8 @@ public class Ver3DictEncoder implements DictEncoder {
|
||||||
if (mOutStream == null) {
|
if (mOutStream == null) {
|
||||||
openStream();
|
openStream();
|
||||||
}
|
}
|
||||||
BinaryDictEncoderUtils.writeDictionaryBinary(mOutStream, dict, formatOptions);
|
BinaryDictEncoderUtils.writeDictionaryHeader(mOutStream, dict, formatOptions);
|
||||||
|
BinaryDictEncoderUtils.writeDictionaryBody(mOutStream, dict, formatOptions);
|
||||||
close();
|
close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue