| Index: third_party/libphonenumber/cpp/src/default_logger.h
|
| diff --git a/third_party/libphonenumber/cpp/src/default_logger.h b/third_party/libphonenumber/cpp/src/default_logger.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..7afee68b5b39a300de1db4e6c2d9976fad5d6635
|
| --- /dev/null
|
| +++ b/third_party/libphonenumber/cpp/src/default_logger.h
|
| @@ -0,0 +1,99 @@
|
| +// Copyright (C) 2011 Google Inc.
|
| +//
|
| +// Licensed under the Apache License, Version 2.0 (the "License");
|
| +// you may not use this file except in compliance with the License.
|
| +// You may obtain a copy of the License at
|
| +//
|
| +// http://www.apache.org/licenses/LICENSE-2.0
|
| +//
|
| +// Unless required by applicable law or agreed to in writing, software
|
| +// distributed under the License is distributed on an "AS IS" BASIS,
|
| +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| +// See the License for the specific language governing permissions and
|
| +// limitations under the License.
|
| +
|
| +// Author: Philippe Liard
|
| +
|
| +#ifndef I18N_PHONENUMBERS_DEFAULT_LOGGER_H_
|
| +#define I18N_PHONENUMBERS_DEFAULT_LOGGER_H_
|
| +
|
| +#include <stdio.h>
|
| +
|
| +#include <string>
|
| +
|
| +#include "logger.h"
|
| +
|
| +using std::string;
|
| +
|
| +// Make the logging functions private (not declared in logger.h) as the client
|
| +// should not have any reason to use them.
|
| +namespace {
|
| +
|
| +using i18n::phonenumbers::Logger;
|
| +
|
| +// Class template used to inline the right implementation for the T -> string
|
| +// conversion.
|
| +template <typename T>
|
| +struct ConvertToString;
|
| +
|
| +template <typename T>
|
| +struct ConvertToString {
|
| + static inline string DoWork(const T& s) {
|
| + return string(s);
|
| + }
|
| +};
|
| +
|
| +template <>
|
| +struct ConvertToString<int> {
|
| + static inline string DoWork(const int& n) {
|
| + char buffer[16];
|
| +#if defined(OS_WIN)
|
| + _itoa_s(n, buffer, sizeof(buffer), 10);
|
| +#else
|
| + snprintf(buffer, sizeof(buffer), "%d", n);
|
| +#endif
|
| + return string(buffer);
|
| + }
|
| +};
|
| +
|
| +class LoggerHandler {
|
| + public:
|
| + LoggerHandler(Logger* impl) : impl_(impl) {}
|
| +
|
| + ~LoggerHandler() {
|
| + if (impl_) {
|
| + impl_->WriteMessage("\n");
|
| + }
|
| + }
|
| +
|
| + template <typename T>
|
| + LoggerHandler& operator<<(const T& value) {
|
| + if (impl_) {
|
| + impl_->WriteMessage(ConvertToString<T>::DoWork(value));
|
| + }
|
| + return *this;
|
| + }
|
| +
|
| + private:
|
| + Logger* const impl_;
|
| +};
|
| +
|
| +} // namespace
|
| +
|
| +namespace i18n {
|
| +namespace phonenumbers {
|
| +
|
| +// Default logger implementation used by PhoneNumberUtil class. It outputs the
|
| +// messages to the standard output.
|
| +class StdoutLogger : public Logger {
|
| + public:
|
| + virtual ~StdoutLogger() {}
|
| +
|
| + virtual void WriteLevel();
|
| + virtual void WriteMessage(const string& msg);
|
| +};
|
| +
|
| +} // namespace phonenumbers
|
| +} // namespace i18n
|
| +
|
| +#endif // I18N_PHONENUMBERS_DEFAULT_LOGGER_H_
|
|
|