196b80a3b937dfdd22d738ab9a71bfb10d5c5ad60philip.liard@gmail.com// Copyright (C) 2013 The Libphonenumber Authors 296b80a3b937dfdd22d738ab9a71bfb10d5c5ad60philip.liard@gmail.com// 396b80a3b937dfdd22d738ab9a71bfb10d5c5ad60philip.liard@gmail.com// Licensed under the Apache License, Version 2.0 (the "License"); 496b80a3b937dfdd22d738ab9a71bfb10d5c5ad60philip.liard@gmail.com// you may not use this file except in compliance with the License. 596b80a3b937dfdd22d738ab9a71bfb10d5c5ad60philip.liard@gmail.com// You may obtain a copy of the License at 696b80a3b937dfdd22d738ab9a71bfb10d5c5ad60philip.liard@gmail.com// 796b80a3b937dfdd22d738ab9a71bfb10d5c5ad60philip.liard@gmail.com// http://www.apache.org/licenses/LICENSE-2.0 896b80a3b937dfdd22d738ab9a71bfb10d5c5ad60philip.liard@gmail.com// 996b80a3b937dfdd22d738ab9a71bfb10d5c5ad60philip.liard@gmail.com// Unless required by applicable law or agreed to in writing, software 1096b80a3b937dfdd22d738ab9a71bfb10d5c5ad60philip.liard@gmail.com// distributed under the License is distributed on an "AS IS" BASIS, 1196b80a3b937dfdd22d738ab9a71bfb10d5c5ad60philip.liard@gmail.com// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1296b80a3b937dfdd22d738ab9a71bfb10d5c5ad60philip.liard@gmail.com// See the License for the specific language governing permissions and 1396b80a3b937dfdd22d738ab9a71bfb10d5c5ad60philip.liard@gmail.com// limitations under the License. 1496b80a3b937dfdd22d738ab9a71bfb10d5c5ad60philip.liard@gmail.com 1596b80a3b937dfdd22d738ab9a71bfb10d5c5ad60philip.liard@gmail.com// Author: Philippe Liard 1696b80a3b937dfdd22d738ab9a71bfb10d5c5ad60philip.liard@gmail.com 17fa6ddeed736e42c266027a0d7b696909083d066bphilip.liard@gmail.com#ifndef I18N_PHONENUMBERS_BASE_THREAD_CHECKER_H_ 18fa6ddeed736e42c266027a0d7b696909083d066bphilip.liard@gmail.com#define I18N_PHONENUMBERS_BASE_THREAD_CHECKER_H_ 1996b80a3b937dfdd22d738ab9a71bfb10d5c5ad60philip.liard@gmail.com 2096b80a3b937dfdd22d738ab9a71bfb10d5c5ad60philip.liard@gmail.com#if !defined(I18N_PHONENUMBERS_USE_BOOST) 2196b80a3b937dfdd22d738ab9a71bfb10d5c5ad60philip.liard@gmail.com 2296b80a3b937dfdd22d738ab9a71bfb10d5c5ad60philip.liard@gmail.com// Note that I18N_PHONENUMBERS_NO_THREAD_SAFETY must be defined only to let the 2396b80a3b937dfdd22d738ab9a71bfb10d5c5ad60philip.liard@gmail.com// user of the library know that it can't be used in a thread-safe manner when 2496b80a3b937dfdd22d738ab9a71bfb10d5c5ad60philip.liard@gmail.com// it is not depending on Boost. 25b886df44145f2b98006e6f394c4fbe0a5892c9a2philip.liard@gmail.com#if !defined(__linux__) && !defined(__APPLE__) && \ 26b886df44145f2b98006e6f394c4fbe0a5892c9a2philip.liard@gmail.com !defined(I18N_PHONENUMBERS_NO_THREAD_SAFETY) 27fa6ddeed736e42c266027a0d7b696909083d066bphilip.liard@gmail.com#error Building without Boost, please provide \ 28fa6ddeed736e42c266027a0d7b696909083d066bphilip.liard@gmail.com -DI18N_PHONENUMBERS_NO_THREAD_SAFETY 2996b80a3b937dfdd22d738ab9a71bfb10d5c5ad60philip.liard@gmail.com#endif 3096b80a3b937dfdd22d738ab9a71bfb10d5c5ad60philip.liard@gmail.com 3196b80a3b937dfdd22d738ab9a71bfb10d5c5ad60philip.liard@gmail.com#endif 3296b80a3b937dfdd22d738ab9a71bfb10d5c5ad60philip.liard@gmail.com 3396b80a3b937dfdd22d738ab9a71bfb10d5c5ad60philip.liard@gmail.com#if !defined(NDEBUG) && !defined(I18N_PHONENUMBERS_USE_BOOST) && \ 3496b80a3b937dfdd22d738ab9a71bfb10d5c5ad60philip.liard@gmail.com (defined(__linux__) || defined(__apple__)) 3596b80a3b937dfdd22d738ab9a71bfb10d5c5ad60philip.liard@gmail.com 3696b80a3b937dfdd22d738ab9a71bfb10d5c5ad60philip.liard@gmail.com#include <pthread.h> 3796b80a3b937dfdd22d738ab9a71bfb10d5c5ad60philip.liard@gmail.com 3896b80a3b937dfdd22d738ab9a71bfb10d5c5ad60philip.liard@gmail.comnamespace i18n { 3996b80a3b937dfdd22d738ab9a71bfb10d5c5ad60philip.liard@gmail.comnamespace phonenumbers { 4096b80a3b937dfdd22d738ab9a71bfb10d5c5ad60philip.liard@gmail.com 4196b80a3b937dfdd22d738ab9a71bfb10d5c5ad60philip.liard@gmail.comclass ThreadChecker { 4296b80a3b937dfdd22d738ab9a71bfb10d5c5ad60philip.liard@gmail.com public: 4396b80a3b937dfdd22d738ab9a71bfb10d5c5ad60philip.liard@gmail.com ThreadChecker() : thread_id_(pthread_self()) {} 4496b80a3b937dfdd22d738ab9a71bfb10d5c5ad60philip.liard@gmail.com 4596b80a3b937dfdd22d738ab9a71bfb10d5c5ad60philip.liard@gmail.com bool CalledOnValidThread() const { 4696b80a3b937dfdd22d738ab9a71bfb10d5c5ad60philip.liard@gmail.com return thread_id_ == pthread_self(); 4796b80a3b937dfdd22d738ab9a71bfb10d5c5ad60philip.liard@gmail.com } 4896b80a3b937dfdd22d738ab9a71bfb10d5c5ad60philip.liard@gmail.com 4996b80a3b937dfdd22d738ab9a71bfb10d5c5ad60philip.liard@gmail.com private: 5096b80a3b937dfdd22d738ab9a71bfb10d5c5ad60philip.liard@gmail.com const pthread_t thread_id_; 5196b80a3b937dfdd22d738ab9a71bfb10d5c5ad60philip.liard@gmail.com}; 5296b80a3b937dfdd22d738ab9a71bfb10d5c5ad60philip.liard@gmail.com 5396b80a3b937dfdd22d738ab9a71bfb10d5c5ad60philip.liard@gmail.com#else 5496b80a3b937dfdd22d738ab9a71bfb10d5c5ad60philip.liard@gmail.com 5596b80a3b937dfdd22d738ab9a71bfb10d5c5ad60philip.liard@gmail.comnamespace i18n { 5696b80a3b937dfdd22d738ab9a71bfb10d5c5ad60philip.liard@gmail.comnamespace phonenumbers { 5796b80a3b937dfdd22d738ab9a71bfb10d5c5ad60philip.liard@gmail.com 5896b80a3b937dfdd22d738ab9a71bfb10d5c5ad60philip.liard@gmail.comclass ThreadChecker { 5996b80a3b937dfdd22d738ab9a71bfb10d5c5ad60philip.liard@gmail.com public: 6096b80a3b937dfdd22d738ab9a71bfb10d5c5ad60philip.liard@gmail.com bool CalledOnValidThread() const { 6196b80a3b937dfdd22d738ab9a71bfb10d5c5ad60philip.liard@gmail.com return true; 6296b80a3b937dfdd22d738ab9a71bfb10d5c5ad60philip.liard@gmail.com } 6396b80a3b937dfdd22d738ab9a71bfb10d5c5ad60philip.liard@gmail.com}; 6496b80a3b937dfdd22d738ab9a71bfb10d5c5ad60philip.liard@gmail.com 6596b80a3b937dfdd22d738ab9a71bfb10d5c5ad60philip.liard@gmail.com#endif 6696b80a3b937dfdd22d738ab9a71bfb10d5c5ad60philip.liard@gmail.com 6796b80a3b937dfdd22d738ab9a71bfb10d5c5ad60philip.liard@gmail.com} // namespace phonenumbers 6896b80a3b937dfdd22d738ab9a71bfb10d5c5ad60philip.liard@gmail.com} // namespace i18n 6996b80a3b937dfdd22d738ab9a71bfb10d5c5ad60philip.liard@gmail.com 70fa6ddeed736e42c266027a0d7b696909083d066bphilip.liard@gmail.com#endif // I18N_PHONENUMBERS_BASE_THREAD_CHECKER_H_ 71