aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--native/jni/src/defines.h46
-rw-r--r--native/jni/src/dictionary.cpp3
2 files changed, 44 insertions, 5 deletions
diff --git a/native/jni/src/defines.h b/native/jni/src/defines.h
index 2b30f3c96..31dd61e30 100644
--- a/native/jni/src/defines.h
+++ b/native/jni/src/defines.h
@@ -25,17 +25,52 @@
#define AKLOGE(fmt, ...) __android_log_print(ANDROID_LOG_ERROR, LOG_TAG, fmt, ##__VA_ARGS__)
#define AKLOGI(fmt, ...) __android_log_print(ANDROID_LOG_INFO, LOG_TAG, fmt, ##__VA_ARGS__)
+#define DUMP_RESULT(words, frequencies, maxWordCount, maxWordLength) do { \
+ dumpResult(words, frequencies, maxWordCount, maxWordLength); } while(0)
#define DUMP_WORD(word, length) do { dumpWord(word, length); } while(0)
#define DUMP_WORD_INT(word, length) do { dumpWordInt(word, length); } while(0)
-static inline void dumpWord(const unsigned short *word, const int length) {
+static inline void dumpWordInfo(const unsigned short *word, const int length,
+ const int rank, const int frequency) {
static char charBuf[50];
+ int i = 0;
+ for (; i < length; ++i) {
+ const unsigned short c = word[i];
+ if (c == 0) {
+ break;
+ }
+ charBuf[i] = c;
+ }
+ charBuf[i] = 0;
+ if (i > 1) {
+ AKLOGI("%2d [ %s ] (%d)", rank, charBuf, frequency);
+ }
+}
- for (int i = 0; i < length; ++i) {
- charBuf[i] = word[i];
+static inline void dumpResult(
+ const unsigned short *outWords, const int *frequencies, const int maxWordCounts,
+ const int maxWordLength) {
+ AKLOGI("--- DUMP RESULT ---------");
+ for (int i = 0; i < maxWordCounts; ++i) {
+ dumpWordInfo(&outWords[i * maxWordLength], maxWordLength, i, frequencies[i]);
+ }
+ AKLOGI("-------------------------");
+}
+
+static inline void dumpWord(const unsigned short *word, const int length) {
+ static char charBuf[50];
+ int i = 0;
+ for (; i < length; ++i) {
+ const unsigned short c = word[i];
+ if (c == 0) {
+ break;
+ }
+ charBuf[i] = c;
+ }
+ charBuf[i] = 0;
+ if (i > 1) {
+ AKLOGI("[ %s ]", charBuf);
}
- charBuf[length] = 0;
- AKLOGI("[ %s ]", charBuf);
}
static inline void dumpWordInt(const int *word, const int length) {
@@ -51,6 +86,7 @@ static inline void dumpWordInt(const int *word, const int length) {
#else
#define AKLOGE(fmt, ...)
#define AKLOGI(fmt, ...)
+#define DUMP_RESULT(words, frequencies, maxWordCount, maxWordLength)
#define DUMP_WORD(word, length)
#define DUMP_WORD_INT(word, length)
#endif
diff --git a/native/jni/src/dictionary.cpp b/native/jni/src/dictionary.cpp
index 6c722117d..ee55cfa60 100644
--- a/native/jni/src/dictionary.cpp
+++ b/native/jni/src/dictionary.cpp
@@ -67,6 +67,9 @@ int Dictionary::getSuggestions(ProximityInfo *proximityInfo, int *xcoordinates,
result = mGestureDecoder->getSuggestions(proximityInfo, xcoordinates, ycoordinates,
times, pointerIds, codes, codesSize, commitPoint,
outWords, frequencies, spaceIndices, outputTypes);
+ if (DEBUG_DICT) {
+ DUMP_RESULT(outWords, frequencies, 18 /* MAX_WORDS */, MAX_WORD_LENGTH_INTERNAL);
+ }
return result;
} else {
std::map<int, int> bigramMap;