| Index: icu46/source/test/perf/charperf/charperf.h
|
| ===================================================================
|
| --- icu46/source/test/perf/charperf/charperf.h (revision 0)
|
| +++ icu46/source/test/perf/charperf/charperf.h (revision 0)
|
| @@ -0,0 +1,239 @@
|
| +/*
|
| +**********************************************************************
|
| +* Copyright (c) 2002-2006, International Business Machines
|
| +* Corporation and others. All Rights Reserved.
|
| +**********************************************************************
|
| +**********************************************************************
|
| +*/
|
| +#ifndef _CHARPERF_H
|
| +#define _CHARPERF_H
|
| +
|
| +#include "unicode/uchar.h"
|
| +
|
| +#include "unicode/uperf.h"
|
| +#include <stdlib.h>
|
| +#include <stdio.h>
|
| +#include <wchar.h>
|
| +#include <wctype.h>
|
| +
|
| +typedef void (*CharPerfFn)(UChar32 ch);
|
| +typedef void (*StdLibCharPerfFn)(wchar_t ch);
|
| +
|
| +class CharPerfFunction : public UPerfFunction
|
| +{
|
| +public:
|
| + virtual void call(UErrorCode* status)
|
| + {
|
| + for (UChar32 i = MIN_; i < MAX_; i ++) {
|
| + (*m_fn_)(i);
|
| + }
|
| + }
|
| +
|
| + virtual long getOperationsPerIteration()
|
| + {
|
| + return MAX_ - MIN_;
|
| + }
|
| + CharPerfFunction(CharPerfFn func, UChar32 min, UChar32 max)
|
| + {
|
| + m_fn_ = func;
|
| + MIN_ = min;
|
| + MAX_ = max;
|
| + }
|
| +
|
| +private:
|
| + CharPerfFn m_fn_;
|
| + UChar32 MIN_;
|
| + UChar32 MAX_;
|
| +};
|
| +
|
| +class StdLibCharPerfFunction : public UPerfFunction
|
| +{
|
| +public:
|
| + virtual void call(UErrorCode* status)
|
| + {
|
| + // note wchar_t is unsigned, it will revert to 0 once it reaches
|
| + // 65535
|
| + for (wchar_t i = MIN_; i < MAX_; i ++) {
|
| + (*m_fn_)(i);
|
| + }
|
| + }
|
| +
|
| + virtual long getOperationsPerIteration()
|
| + {
|
| + return MAX_ - MIN_;
|
| + }
|
| +
|
| + StdLibCharPerfFunction(StdLibCharPerfFn func, wchar_t min, wchar_t max)
|
| + {
|
| + m_fn_ = func;
|
| + MIN_ = min;
|
| + MAX_ = max;
|
| + }
|
| +
|
| + ~StdLibCharPerfFunction()
|
| + {
|
| + }
|
| +
|
| +private:
|
| + StdLibCharPerfFn m_fn_;
|
| + wchar_t MIN_;
|
| + wchar_t MAX_;
|
| +};
|
| +
|
| +class CharPerformanceTest : public UPerfTest
|
| +{
|
| +public:
|
| + CharPerformanceTest(int32_t argc, const char *argv[], UErrorCode &status);
|
| + ~CharPerformanceTest();
|
| + virtual UPerfFunction* runIndexedTest(int32_t index, UBool exec,
|
| + const char *&name,
|
| + char *par = NULL);
|
| + UPerfFunction* TestIsAlpha();
|
| + UPerfFunction* TestIsUpper();
|
| + UPerfFunction* TestIsLower();
|
| + UPerfFunction* TestIsDigit();
|
| + UPerfFunction* TestIsSpace();
|
| + UPerfFunction* TestIsAlphaNumeric();
|
| + UPerfFunction* TestIsPrint();
|
| + UPerfFunction* TestIsControl();
|
| + UPerfFunction* TestToLower();
|
| + UPerfFunction* TestToUpper();
|
| + UPerfFunction* TestIsWhiteSpace();
|
| + UPerfFunction* TestStdLibIsAlpha();
|
| + UPerfFunction* TestStdLibIsUpper();
|
| + UPerfFunction* TestStdLibIsLower();
|
| + UPerfFunction* TestStdLibIsDigit();
|
| + UPerfFunction* TestStdLibIsSpace();
|
| + UPerfFunction* TestStdLibIsAlphaNumeric();
|
| + UPerfFunction* TestStdLibIsPrint();
|
| + UPerfFunction* TestStdLibIsControl();
|
| + UPerfFunction* TestStdLibToLower();
|
| + UPerfFunction* TestStdLibToUpper();
|
| + UPerfFunction* TestStdLibIsWhiteSpace();
|
| +
|
| +private:
|
| + UChar32 MIN_;
|
| + UChar32 MAX_;
|
| +};
|
| +
|
| +inline void isAlpha(UChar32 ch)
|
| +{
|
| + u_isalpha(ch);
|
| +}
|
| +
|
| +inline void isUpper(UChar32 ch)
|
| +{
|
| + u_isupper(ch);
|
| +}
|
| +
|
| +inline void isLower(UChar32 ch)
|
| +{
|
| + u_islower(ch);
|
| +}
|
| +
|
| +inline void isDigit(UChar32 ch)
|
| +{
|
| + u_isdigit(ch);
|
| +}
|
| +
|
| +inline void isSpace(UChar32 ch)
|
| +{
|
| + u_isspace(ch);
|
| +}
|
| +
|
| +inline void isAlphaNumeric(UChar32 ch)
|
| +{
|
| + u_isalnum(ch);
|
| +}
|
| +
|
| +/**
|
| +* This test may be different since c lib has a type PUNCT and it is printable.
|
| +* iswgraph is not used for testing since it is a subset of iswprint with the
|
| +* exception of returning true for white spaces. no match found in icu4c.
|
| +*/
|
| +inline void isPrint(UChar32 ch)
|
| +{
|
| + u_isprint(ch);
|
| +}
|
| +
|
| +inline void isControl(UChar32 ch)
|
| +{
|
| + u_iscntrl(ch);
|
| +}
|
| +
|
| +inline void toLower(UChar32 ch)
|
| +{
|
| + u_tolower(ch);
|
| +}
|
| +
|
| +inline void toUpper(UChar32 ch)
|
| +{
|
| + u_toupper(ch);
|
| +}
|
| +
|
| +inline void isWhiteSpace(UChar32 ch)
|
| +{
|
| + u_isWhitespace(ch);
|
| +}
|
| +
|
| +inline void StdLibIsAlpha(wchar_t ch)
|
| +{
|
| + iswalpha(ch);
|
| +}
|
| +
|
| +inline void StdLibIsUpper(wchar_t ch)
|
| +{
|
| + iswupper(ch);
|
| +}
|
| +
|
| +inline void StdLibIsLower(wchar_t ch)
|
| +{
|
| + iswlower(ch);
|
| +}
|
| +
|
| +inline void StdLibIsDigit(wchar_t ch)
|
| +{
|
| + iswdigit(ch);
|
| +}
|
| +
|
| +inline void StdLibIsSpace(wchar_t ch)
|
| +{
|
| + iswspace(ch);
|
| +}
|
| +
|
| +inline void StdLibIsAlphaNumeric(wchar_t ch)
|
| +{
|
| + iswalnum(ch);
|
| +}
|
| +
|
| +/**
|
| +* This test may be different since c lib has a type PUNCT and it is printable.
|
| +* iswgraph is not used for testing since it is a subset of iswprint with the
|
| +* exception of returning true for white spaces. no match found in icu4c.
|
| +*/
|
| +inline void StdLibIsPrint(wchar_t ch)
|
| +{
|
| + iswprint(ch);
|
| +}
|
| +
|
| +inline void StdLibIsControl(wchar_t ch)
|
| +{
|
| + iswcntrl(ch);
|
| +}
|
| +
|
| +inline void StdLibToLower(wchar_t ch)
|
| +{
|
| + towlower(ch);
|
| +}
|
| +
|
| +inline void StdLibToUpper(wchar_t ch)
|
| +{
|
| + towupper(ch);
|
| +}
|
| +
|
| +inline void StdLibIsWhiteSpace(wchar_t ch)
|
| +{
|
| + iswspace(ch);
|
| +}
|
| +
|
| +#endif // CHARPERF_H
|
|
|
| Property changes on: icu46/source/test/perf/charperf/charperf.h
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|