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

Unified Diff: icu46/source/test/perf/charperf/charperf.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/charperf/Makefile.in ('k') | icu46/source/test/perf/charperf/charperf.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « icu46/source/test/perf/charperf/Makefile.in ('k') | icu46/source/test/perf/charperf/charperf.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698