Index: icu46/source/test/perf/ubrkperf/ubrkperf.h |
=================================================================== |
--- icu46/source/test/perf/ubrkperf/ubrkperf.h (revision 0) |
+++ icu46/source/test/perf/ubrkperf/ubrkperf.h (revision 0) |
@@ -0,0 +1,137 @@ |
+/* |
+********************************************************************** |
+* Copyright (c) 2002-2005, International Business Machines |
+* Corporation and others. All Rights Reserved. |
+********************************************************************** |
+********************************************************************** |
+*/ |
+#ifndef _UBRKPERF_H |
+#define _UBRKPERF_H |
+ |
+#include "unicode/uperf.h" |
+ |
+#include <unicode/brkiter.h> |
+ |
+class ICUBreakFunction : public UPerfFunction { |
+protected: |
+ BreakIterator *m_brkIt_; |
+ const UChar *m_file_; |
+ int32_t m_fileLen_; |
+ int32_t m_noBreaks_; |
+ UErrorCode m_status_; |
+public: |
+ ICUBreakFunction(const char *locale, const char *mode, const UChar *file, int32_t file_len) : |
+ m_brkIt_(NULL), |
+ m_file_(file), |
+ m_fileLen_(file_len), |
+ m_noBreaks_(-1), |
+ m_status_(U_ZERO_ERROR) |
+ { |
+ switch(mode[0]) { |
+ case 'c' : |
+ m_brkIt_ = BreakIterator::createCharacterInstance(locale, m_status_); |
+ break; |
+ case 'w' : |
+ m_brkIt_ = BreakIterator::createWordInstance(locale, m_status_); |
+ break; |
+ case 'l' : |
+ m_brkIt_ = BreakIterator::createLineInstance(locale, m_status_); |
+ break; |
+ case 's' : |
+ m_brkIt_ = BreakIterator::createSentenceInstance(locale, m_status_); |
+ break; |
+ default: |
+ // should not happen as we already check for this in the caller |
+ m_status_ = U_ILLEGAL_ARGUMENT_ERROR; |
+ break; |
+ } |
+ } |
+ |
+ ~ICUBreakFunction() { delete m_brkIt_; } |
+ virtual void call(UErrorCode *status) = 0; |
+ virtual long getOperationsPerIteration() { return m_fileLen_; } |
+ virtual long getEventsPerIteration() { return m_noBreaks_; } |
+ virtual UErrorCode getStatus() { return m_status_; } |
+}; |
+ |
+class ICUIsBound : public ICUBreakFunction { |
+public: |
+ ICUIsBound(const char *locale, const char *mode, const UChar *file, int32_t file_len) : |
+ ICUBreakFunction(locale, mode, file, file_len) |
+ { |
+ m_noBreaks_ = 0; |
+ m_brkIt_->setText(UnicodeString(m_file_, m_fileLen_)); |
+ m_brkIt_->first(); |
+ int32_t j = 0; |
+ for(j = 0; j < m_fileLen_; j++) { |
+ if(m_brkIt_->isBoundary(j)) { |
+ m_noBreaks_++; |
+ } |
+ } |
+ } |
+ virtual void call(UErrorCode *status) |
+ { |
+ m_noBreaks_ = 0; |
+ int32_t j = 0; |
+ for(j = 0; j < m_fileLen_; j++) { |
+ if(m_brkIt_->isBoundary(j)) { |
+ m_noBreaks_++; |
+ } |
+ } |
+ } |
+}; |
+ |
+class ICUForward : public ICUBreakFunction { |
+public: |
+ ICUForward(const char *locale, const char *mode, const UChar *file, int32_t file_len) : |
+ ICUBreakFunction(locale, mode, file, file_len) |
+ { |
+ m_noBreaks_ = 0; |
+ m_brkIt_->setText(UnicodeString(m_file_, m_fileLen_)); |
+ m_brkIt_->first(); |
+ while(m_brkIt_->next() != BreakIterator::DONE) { |
+ m_noBreaks_++; |
+ } |
+ } |
+ virtual void call(UErrorCode *status) |
+ { |
+ m_noBreaks_ = 0; |
+ m_brkIt_->first(); |
+ while(m_brkIt_->next() != BreakIterator::DONE) { |
+ m_noBreaks_++; |
+ } |
+ } |
+}; |
+ |
+class DarwinBreakFunction : public UPerfFunction { |
+#ifdef U_DARWIN |
+public: |
+ virtual void call(UErrorCode *status) {}; |
+#else |
+public: |
+ virtual void call(UErrorCode *status) {}; |
+#endif |
+}; |
+ |
+class BreakIteratorPerformanceTest : public UPerfTest { |
+private: |
+ const char* m_mode_; |
+ const UChar* m_file_; |
+ int32_t m_fileLen_; |
+ |
+public: |
+ BreakIteratorPerformanceTest(int32_t argc, const char* argv[], UErrorCode& status); |
+ ~BreakIteratorPerformanceTest(); |
+ |
+ virtual UPerfFunction* runIndexedTest(int32_t index, UBool exec, |
+ const char* &name, char* par = NULL); |
+ |
+ UPerfFunction* TestICUForward(); |
+ UPerfFunction* TestICUIsBound(); |
+ |
+ UPerfFunction* TestDarwinForward(); |
+ UPerfFunction* TestDarwinIsBound(); |
+ |
+}; |
+ |
+#endif // UBRKPERF_H |
Property changes on: icu46/source/test/perf/ubrkperf/ubrkperf.h |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |