| 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
|
|
|
|
|