Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(98)

Unified Diff: icu46/source/test/perf/ubrkperf/ubrkperf.h

Issue 5516007: Check in the pristine copy of ICU 4.6... (Closed) Base URL: svn://chrome-svn/chrome/trunk/deps/third_party/
Patch Set: Created 10 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « icu46/source/test/perf/ubrkperf/UBrkPerf_r.pl ('k') | icu46/source/test/perf/ubrkperf/ubrkperf.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « icu46/source/test/perf/ubrkperf/UBrkPerf_r.pl ('k') | icu46/source/test/perf/ubrkperf/ubrkperf.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698