initial commit, 4.5 stable
Some checks failed
🔗 GHA / 📊 Static checks (push) Has been cancelled
🔗 GHA / 🤖 Android (push) Has been cancelled
🔗 GHA / 🍏 iOS (push) Has been cancelled
🔗 GHA / 🐧 Linux (push) Has been cancelled
🔗 GHA / 🍎 macOS (push) Has been cancelled
🔗 GHA / 🏁 Windows (push) Has been cancelled
🔗 GHA / 🌐 Web (push) Has been cancelled
Some checks failed
🔗 GHA / 📊 Static checks (push) Has been cancelled
🔗 GHA / 🤖 Android (push) Has been cancelled
🔗 GHA / 🍏 iOS (push) Has been cancelled
🔗 GHA / 🐧 Linux (push) Has been cancelled
🔗 GHA / 🍎 macOS (push) Has been cancelled
🔗 GHA / 🏁 Windows (push) Has been cancelled
🔗 GHA / 🌐 Web (push) Has been cancelled
This commit is contained in:
147
thirdparty/icu4c/common/restrace.h
vendored
Normal file
147
thirdparty/icu4c/common/restrace.h
vendored
Normal file
@@ -0,0 +1,147 @@
|
||||
// © 2019 and later: Unicode, Inc. and others.
|
||||
// License & terms of use: http://www.unicode.org/copyright.html
|
||||
|
||||
#ifndef __RESTRACE_H__
|
||||
#define __RESTRACE_H__
|
||||
|
||||
#include "unicode/utypes.h"
|
||||
|
||||
#if U_ENABLE_TRACING
|
||||
|
||||
struct UResourceBundle;
|
||||
|
||||
U_NAMESPACE_BEGIN
|
||||
|
||||
class CharString;
|
||||
|
||||
/**
|
||||
* Instances of this class store information used to trace reads from resource
|
||||
* bundles when ICU is built with --enable-tracing.
|
||||
*
|
||||
* All arguments of type const UResourceBundle*, const char*, and
|
||||
* const ResourceTracer& are stored as pointers. The caller must retain
|
||||
* ownership for the lifetime of this ResourceTracer.
|
||||
*
|
||||
* Exported as U_COMMON_API for Windows because it is a value field
|
||||
* in other exported types.
|
||||
*/
|
||||
class U_COMMON_API ResourceTracer {
|
||||
public:
|
||||
ResourceTracer() :
|
||||
fResB(nullptr),
|
||||
fParent(nullptr),
|
||||
fKey(nullptr),
|
||||
fIndex(-1) {}
|
||||
|
||||
ResourceTracer(const UResourceBundle* resB) :
|
||||
fResB(resB),
|
||||
fParent(nullptr),
|
||||
fKey(nullptr),
|
||||
fIndex(-1) {}
|
||||
|
||||
ResourceTracer(const UResourceBundle* resB, const char* key) :
|
||||
fResB(resB),
|
||||
fParent(nullptr),
|
||||
fKey(key),
|
||||
fIndex(-1) {}
|
||||
|
||||
ResourceTracer(const UResourceBundle* resB, int32_t index) :
|
||||
fResB(resB),
|
||||
fParent(nullptr),
|
||||
fKey(nullptr),
|
||||
fIndex(index) {}
|
||||
|
||||
ResourceTracer(const ResourceTracer& parent, const char* key) :
|
||||
fResB(nullptr),
|
||||
fParent(&parent),
|
||||
fKey(key),
|
||||
fIndex(-1) {}
|
||||
|
||||
ResourceTracer(const ResourceTracer& parent, int32_t index) :
|
||||
fResB(nullptr),
|
||||
fParent(&parent),
|
||||
fKey(nullptr),
|
||||
fIndex(index) {}
|
||||
|
||||
~ResourceTracer();
|
||||
|
||||
void trace(const char* type) const;
|
||||
void traceOpen() const;
|
||||
|
||||
/**
|
||||
* Calls trace() if the resB or parent provided to the constructor was
|
||||
* non-null; otherwise, does nothing.
|
||||
*/
|
||||
void maybeTrace(const char* type) const {
|
||||
if (fResB || fParent) {
|
||||
trace(type);
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
const UResourceBundle* fResB;
|
||||
const ResourceTracer* fParent;
|
||||
const char* fKey;
|
||||
int32_t fIndex;
|
||||
|
||||
CharString& getFilePath(CharString& output, UErrorCode& status) const;
|
||||
|
||||
CharString& getResPath(CharString& output, UErrorCode& status) const;
|
||||
};
|
||||
|
||||
/**
|
||||
* This class provides methods to trace data file reads when ICU is built
|
||||
* with --enable-tracing.
|
||||
*/
|
||||
class FileTracer {
|
||||
public:
|
||||
static void traceOpen(const char* path, const char* type, const char* name);
|
||||
|
||||
private:
|
||||
static void traceOpenDataFile(const char* path, const char* type, const char* name);
|
||||
static void traceOpenResFile(const char* path, const char* name);
|
||||
};
|
||||
|
||||
U_NAMESPACE_END
|
||||
|
||||
#else // U_ENABLE_TRACING
|
||||
|
||||
U_NAMESPACE_BEGIN
|
||||
|
||||
/**
|
||||
* Default trivial implementation when --enable-tracing is not used.
|
||||
*/
|
||||
class U_COMMON_API ResourceTracer {
|
||||
public:
|
||||
ResourceTracer() {}
|
||||
|
||||
ResourceTracer(const void*) {}
|
||||
|
||||
ResourceTracer(const void*, const char*) {}
|
||||
|
||||
ResourceTracer(const void*, int32_t) {}
|
||||
|
||||
ResourceTracer(const ResourceTracer&, const char*) {}
|
||||
|
||||
ResourceTracer(const ResourceTracer&, int32_t) {}
|
||||
|
||||
void trace(const char*) const {}
|
||||
|
||||
void traceOpen() const {}
|
||||
|
||||
void maybeTrace(const char*) const {}
|
||||
};
|
||||
|
||||
/**
|
||||
* Default trivial implementation when --enable-tracing is not used.
|
||||
*/
|
||||
class FileTracer {
|
||||
public:
|
||||
static void traceOpen(const char*, const char*, const char*) {}
|
||||
};
|
||||
|
||||
U_NAMESPACE_END
|
||||
|
||||
#endif // U_ENABLE_TRACING
|
||||
|
||||
#endif //__RESTRACE_H__
|
Reference in New Issue
Block a user