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 |