[Refactor] Add writeDictionaryHeader.

Change-Id: I69026c47ce1d23f5c39c99ace76fa6b96cd1ce1b
main
Yuichiro Hanada 2013-08-22 16:52:05 +09:00
parent 87855f97d1
commit 55f5f7a005
2 changed files with 24 additions and 13 deletions

View File

@ -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...");

View File

@ -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();
} }
} }