Consistently have the namespace closing comment
authorChristopher Dykes <cdykes@fb.com>
Tue, 24 Oct 2017 00:34:54 +0000 (17:34 -0700)
committerFacebook Github Bot <facebook-github-bot@users.noreply.github.com>
Tue, 24 Oct 2017 00:41:00 +0000 (17:41 -0700)
Summary: It's done in a lot of places, but not all. clang-tidy gives us llvm-namespace-comment, which can force this consistently.

Reviewed By: yfeldblum

Differential Revision: D6108129

fbshipit-source-id: 1b44c5a26250364f9edf70f84173e9ba6389f06c

406 files changed:
folly/Array.h
folly/Assume.cpp
folly/Assume.h
folly/AtomicStruct.h
folly/AtomicUnorderedMap.h
folly/CachelinePadded.h
folly/Chrono.h
folly/ClockGettimeWrappers.cpp
folly/ClockGettimeWrappers.h
folly/ConcurrentSkipList-inl.h
folly/ContainerTraits.h
folly/Conv.h
folly/Demangle.h
folly/DynamicConverter.h
folly/ExceptionWrapper-inl.h
folly/ExceptionWrapper.cpp
folly/Executor.cpp
folly/Expected.h
folly/FBVector.h
folly/FixedString.h
folly/Format.h
folly/FormatArg.cpp
folly/FormatTraits.h
folly/Function.h
folly/Functional.h
folly/Indestructible.h
folly/IndexedMemPool.h
folly/Lazy.h
folly/LifoSem.cpp
folly/LockTraitsBoost.h
folly/MapUtil.h
folly/Math.h
folly/Memory.h
folly/MicroLock.cpp
folly/MicroLock.h
folly/MicroSpinLock.h
folly/MoveWrapper.h
folly/Optional.h
folly/PackedSyncPtr.h
folly/PicoSpinLock.h
folly/Portability.h
folly/ProducerConsumerQueue.h
folly/Random.cpp
folly/Random.h
folly/Range.h
folly/SafeAssert.cpp
folly/SafeAssert.h
folly/SharedMutex.cpp
folly/Singleton-inl.h
folly/Singleton.cpp
folly/Singleton.h
folly/SingletonStackTrace.cpp
folly/SingletonThreadLocal.h
folly/SocketAddress.h
folly/SpinLock.h
folly/String-inl.h
folly/ThreadCachedInt.h
folly/TokenBucket.h
folly/Traits.h
folly/UncaughtExceptions.h
folly/Unicode.cpp
folly/Unicode.h
folly/Unit.h
folly/Utility.h
folly/compression/Compression.cpp
folly/compression/test/CompressionTest.cpp
folly/concurrency/ConcurrentHashMap.h
folly/concurrency/CoreCachedSharedPtr.h
folly/container/Foreach.h
folly/container/Iterator.h
folly/container/Merge.h
folly/container/SparseByteSet.h
folly/container/test/IteratorTest.cpp
folly/container/test/SparseByteSetBenchmark.cpp
folly/container/test/SparseByteSetTest.cpp
folly/detail/AtomicHashUtils.h
folly/detail/AtomicUnorderedMapUtils.h
folly/detail/AtomicUtils.h
folly/detail/FileUtilDetail.h
folly/detail/Futex.h
folly/detail/IPAddressSource.h
folly/detail/MPMCPipelineDetail.h
folly/detail/MemoryIdler.cpp
folly/detail/MemoryIdler.h
folly/detail/RangeCommon.cpp
folly/detail/RangeCommon.h
folly/detail/RangeSse42.cpp
folly/detail/RangeSse42.h
folly/detail/Sleeper.h
folly/detail/SocketFastOpen.cpp
folly/detail/SocketFastOpen.h
folly/detail/StaticSingletonManager.cpp
folly/detail/StaticSingletonManager.h
folly/detail/ThreadLocalDetail.cpp
folly/detail/UncaughtExceptionCounter.h
folly/dynamic-inl.h
folly/dynamic.cpp
folly/dynamic.h
folly/executors/GlobalExecutor.cpp
folly/executors/GlobalThreadPoolList.cpp
folly/executors/GlobalThreadPoolList.h
folly/executors/IOExecutor.h
folly/executors/ManualExecutor.h
folly/executors/QueuedImmediateExecutor.cpp
folly/executors/ScheduledExecutor.h
folly/executors/ThreadedExecutor.cpp
folly/executors/ThreadedExecutor.h
folly/executors/test/FiberIOExecutorTest.cpp
folly/executors/test/ThreadedExecutorTest.cpp
folly/executors/thread_factory/PriorityThreadFactory.h
folly/experimental/AsymmetricMemoryBarrier.cpp
folly/experimental/AsymmetricMemoryBarrier.h
folly/experimental/AutoTimer.h
folly/experimental/BitVectorCoding.h
folly/experimental/CodingDetail.h
folly/experimental/EliasFanoCoding.h
folly/experimental/FunctionScheduler.cpp
folly/experimental/FunctionScheduler.h
folly/experimental/JSONSchema.cpp
folly/experimental/JSONSchema.h
folly/experimental/RCURefCount.h
folly/experimental/RCUUtils.cpp
folly/experimental/RCUUtils.h
folly/experimental/ReadMostlySharedPtr.h
folly/experimental/Select64.cpp
folly/experimental/TLRefCount.h
folly/experimental/TestUtil.h
folly/experimental/bser/Bser.h
folly/experimental/bser/Dump.cpp
folly/experimental/bser/Load.cpp
folly/experimental/exception_tracer/ExceptionTracerLib.h
folly/experimental/hazptr/example/LockFreeLIFO.h
folly/experimental/hazptr/example/MWMRSet.h
folly/experimental/hazptr/example/SWMRList.h
folly/experimental/hazptr/example/WideCAS.h
folly/experimental/hazptr/hazptr-impl.h
folly/experimental/hazptr/memory_resource.h
folly/experimental/hazptr/test/HazptrUse1.h
folly/experimental/hazptr/test/HazptrUse2.h
folly/experimental/logging/AsyncFileWriter.cpp
folly/experimental/logging/AsyncFileWriter.h
folly/experimental/logging/GlogStyleFormatter.cpp
folly/experimental/logging/GlogStyleFormatter.h
folly/experimental/logging/ImmediateFileWriter.cpp
folly/experimental/logging/ImmediateFileWriter.h
folly/experimental/logging/Init.cpp
folly/experimental/logging/Init.h
folly/experimental/logging/LogCategory.cpp
folly/experimental/logging/LogCategory.h
folly/experimental/logging/LogFormatter.h
folly/experimental/logging/LogHandler.h
folly/experimental/logging/LogLevel.cpp
folly/experimental/logging/LogLevel.h
folly/experimental/logging/LogMessage.cpp
folly/experimental/logging/LogMessage.h
folly/experimental/logging/LogName.cpp
folly/experimental/logging/LogName.h
folly/experimental/logging/LogStream.cpp
folly/experimental/logging/LogStream.h
folly/experimental/logging/LogStreamProcessor.cpp
folly/experimental/logging/LogStreamProcessor.h
folly/experimental/logging/LogWriter.h
folly/experimental/logging/Logger.cpp
folly/experimental/logging/Logger.h
folly/experimental/logging/LoggerDB.cpp
folly/experimental/logging/LoggerDB.h
folly/experimental/logging/RateLimiter.cpp
folly/experimental/logging/RateLimiter.h
folly/experimental/logging/StandardLogHandler.cpp
folly/experimental/logging/StandardLogHandler.h
folly/experimental/logging/example/lib.cpp
folly/experimental/logging/example/lib.h
folly/experimental/logging/printf.cpp
folly/experimental/logging/printf.h
folly/experimental/logging/test/AsyncFileWriterTest.cpp
folly/experimental/logging/test/FatalHelper.cpp
folly/experimental/logging/test/ImmediateFileWriterTest.cpp
folly/experimental/logging/test/LoggerTest.cpp
folly/experimental/logging/test/StandardLogHandlerTest.cpp
folly/experimental/logging/test/TestLogHandler.h
folly/experimental/logging/test/XlogFile1.cpp
folly/experimental/logging/test/XlogFile2.cpp
folly/experimental/logging/test/XlogHeader1.h
folly/experimental/logging/test/XlogHeader2.h
folly/experimental/logging/xlog.cpp
folly/experimental/logging/xlog.h
folly/experimental/observer/Observable-inl.h
folly/experimental/observer/Observable.h
folly/experimental/observer/Observer-inl.h
folly/experimental/observer/Observer.h
folly/experimental/observer/SimpleObservable-inl.h
folly/experimental/observer/SimpleObservable.h
folly/experimental/observer/detail/Core.cpp
folly/experimental/observer/detail/Core.h
folly/experimental/observer/detail/GraphCycleDetector.h
folly/experimental/observer/detail/Observer-pre.h
folly/experimental/observer/detail/ObserverManager.cpp
folly/experimental/observer/detail/ObserverManager.h
folly/experimental/test/CodingTestUtils.h
folly/experimental/test/NestedCommandLineAppTest.cpp
folly/experimental/test/ProgramOptionsTest.cpp
folly/experimental/test/RefCountBenchmark.cpp
folly/experimental/test/RefCountTest.cpp
folly/experimental/test/TupleOpsTest.cpp
folly/fibers/AddTasks-inl.h
folly/fibers/AddTasks.h
folly/fibers/BatchDispatcher.h
folly/fibers/Baton-inl.h
folly/fibers/Baton.cpp
folly/fibers/Baton.h
folly/fibers/Fiber.cpp
folly/fibers/Fiber.h
folly/fibers/FiberManager-inl.h
folly/fibers/FiberManager.cpp
folly/fibers/FiberManagerInternal-inl.h
folly/fibers/FiberManagerInternal.h
folly/fibers/FiberManagerMap.cpp
folly/fibers/FiberManagerMap.h
folly/fibers/GenericBaton.h
folly/fibers/GuardPageAllocator.cpp
folly/fibers/Promise-inl.h
folly/fibers/Promise.h
folly/fibers/TimedMutex-inl.h
folly/fibers/TimedMutex.h
folly/fibers/TimeoutController.cpp
folly/fibers/TimeoutController.h
folly/fibers/WhenN-inl.h
folly/fibers/WhenN.h
folly/fibers/test/FibersTest.cpp
folly/functional/ApplyTuple.h
folly/functional/test/ApplyTupleTest.cpp
folly/futures/Barrier.cpp
folly/futures/Barrier.h
folly/futures/Future-inl.h
folly/futures/Future-pre.h
folly/futures/Future.cpp
folly/futures/FutureException.cpp
folly/futures/FutureException.h
folly/futures/FutureSplitter.h
folly/futures/Promise-inl.h
folly/futures/Promise.h
folly/futures/SharedPromise-inl.h
folly/futures/SharedPromise.h
folly/futures/detail/Types.h
folly/futures/test/BarrierTest.cpp
folly/futures/test/CallbackLifetimeTest.cpp
folly/futures/test/ConversionOperatorTest.cpp
folly/futures/test/FutureTest.cpp
folly/futures/test/ThenCompileTest.h
folly/futures/test/ThenTest.cpp
folly/gen/Base-inl.h
folly/gen/Base.h
folly/gen/File-inl.h
folly/gen/File.h
folly/gen/Parallel.h
folly/gen/test/BaseTest.cpp
folly/hash/detail/ChecksumDetail.cpp
folly/hash/detail/ChecksumDetail.h
folly/init/Init.cpp
folly/io/async/AsyncSSLSocket.cpp
folly/io/async/AsyncSSLSocket.h
folly/io/async/AsyncSocket.cpp
folly/io/async/AsyncSocketBase.h
folly/io/async/DecoratedAsyncTransportWrapper.h
folly/io/async/DestructorCheck.h
folly/io/async/EventBase.h
folly/io/async/EventBaseLocal.cpp
folly/io/async/EventBaseLocal.h
folly/io/async/EventBaseThread.cpp
folly/io/async/EventBaseThread.h
folly/io/async/Request.cpp
folly/io/async/Request.h
folly/io/async/SSLOptions.cpp
folly/io/async/SSLOptions.h
folly/io/async/ScopedEventBaseThread.cpp
folly/io/async/ScopedEventBaseThread.h
folly/io/async/TimeoutManager.cpp
folly/io/async/VirtualEventBase.cpp
folly/io/async/VirtualEventBase.h
folly/io/async/WriteChainAsyncTransportWrapper.h
folly/io/async/ssl/OpenSSLUtils.cpp
folly/io/async/ssl/SSLErrors.cpp
folly/io/async/ssl/SSLErrors.h
folly/io/async/test/AsyncSSLSocketTest.cpp
folly/io/async/test/AsyncSSLSocketTest.h
folly/io/async/test/AsyncSSLSocketWriteTest.cpp
folly/io/async/test/AsyncSignalHandlerTest.cpp
folly/io/async/test/AsyncSocketTest.cpp
folly/io/async/test/AsyncSocketTest2.h
folly/io/async/test/AsyncTransportTest.cpp
folly/io/async/test/MockAsyncTransport.h
folly/io/async/test/SSLContextTest.cpp
folly/io/async/test/SSLOptionsTest.cpp
folly/io/async/test/SSLSessionTest.cpp
folly/io/async/test/ScopedBoundPort.cpp
folly/io/async/test/ScopedBoundPort.h
folly/io/async/test/SocketPair.cpp
folly/io/async/test/SocketPair.h
folly/io/async/test/TestSSLServer.cpp
folly/io/async/test/TestSSLServer.h
folly/io/async/test/TimeUtil.cpp
folly/io/async/test/TimeUtil.h
folly/io/async/test/TimeUtilTest.cpp
folly/io/async/test/UndelayedDestruction.h
folly/io/async/test/WriteChainAsyncTransportWrapperTest.cpp
folly/io/async/test/WriteFlagsTest.cpp
folly/io/test/IOBufQueueTest.cpp
folly/json.cpp
folly/json.h
folly/portability/Asm.h
folly/portability/Constexpr.h
folly/portability/Event.h
folly/portability/Libgen.cpp
folly/portability/Libgen.h
folly/portability/Math.h
folly/portability/Memory.cpp
folly/portability/Memory.h
folly/portability/OpenSSL.cpp
folly/portability/OpenSSL.h
folly/portability/Sockets.h
folly/portability/SysMembarrier.cpp
folly/portability/SysMembarrier.h
folly/portability/SysUio.h
folly/portability/test/ConstexprTest.cpp
folly/small_vector.h
folly/sorted_vector_types.h
folly/ssl/Init.cpp
folly/ssl/OpenSSLCertUtils.h
folly/ssl/OpenSSLHash.cpp
folly/ssl/OpenSSLHash.h
folly/ssl/OpenSSLPtrTypes.h
folly/ssl/detail/OpenSSLThreading.h
folly/ssl/test/OpenSSLHashTest.cpp
folly/stats/BucketedTimeSeries.cpp
folly/stats/MultiLevelTimeSeries.cpp
folly/stats/TimeseriesHistogram.cpp
folly/stats/test/TimeSeriesTest.cpp
folly/stats/test/TimeseriesHistogramTest.cpp
folly/stop_watch.h
folly/synchronization/CallOnce.h
folly/system/Shell.h
folly/system/ThreadId.h
folly/system/ThreadName.cpp
folly/system/ThreadName.h
folly/system/VersionCheck.cpp
folly/test/AHMIntStressTest.cpp
folly/test/AtomicBitSetTest.cpp
folly/test/AtomicHashMapTest.cpp
folly/test/AtomicUnorderedMapTest.cpp
folly/test/BenchmarkTest.cpp
folly/test/BitIteratorTest.cpp
folly/test/ChronoTest.cpp
folly/test/ConcurrentSkipListBenchmark.cpp
folly/test/ConcurrentSkipListTest.cpp
folly/test/ConstexprMathTest.cpp
folly/test/ConvBenchmark.cpp
folly/test/ConvTest.cpp
folly/test/DeterministicSchedule.cpp
folly/test/DynamicConverterTest.cpp
folly/test/ExceptionTest.cpp
folly/test/ExceptionWrapperTest.cpp
folly/test/ExpectedTest.cpp
folly/test/FBStringTest.cpp
folly/test/FBVectorTest.cpp
folly/test/FileUtilTest.cpp
folly/test/FormatTest.cpp
folly/test/FunctionSchedulerTest.cpp
folly/test/HashBenchmark.cpp
folly/test/HashTest.cpp
folly/test/IndestructibleTest.cpp
folly/test/LazyTest.cpp
folly/test/MPMCPipelineTest.cpp
folly/test/MapUtilTest.cpp
folly/test/MathBenchmark.cpp
folly/test/MathTest.cpp
folly/test/MemcpyTest.cpp
folly/test/MemoryIdlerTest.cpp
folly/test/MoveWrapperTest.cpp
folly/test/OptionalTest.cpp
folly/test/PackedSyncPtrTest.cpp
folly/test/ProducerConsumerQueueBenchmark.cpp
folly/test/ProducerConsumerQueueTest.cpp
folly/test/RWSpinLockTest.cpp
folly/test/RangeTest.cpp
folly/test/SingletonTest.cpp
folly/test/SingletonTestGlobal.cpp
folly/test/SingletonTestStructs.cpp
folly/test/SingletonThreadLocalTest.cpp
folly/test/SmallLocksBenchmark.cpp
folly/test/SmallLocksTest.cpp
folly/test/SocketAddressTestHelper.cpp
folly/test/SocketAddressTestHelper.h
folly/test/StringTest.cpp
folly/test/SubprocessTest.cpp
folly/test/SynchronizedTestLib-inl.h
folly/test/SynchronizedTestLib.h
folly/test/TestUtils.h
folly/test/ThreadCachedIntTest.cpp
folly/test/ThreadLocalTest.cpp
folly/test/TraitsTest.cpp
folly/test/TryTest.cpp
folly/test/UtilityTest.cpp
folly/test/VarintTest.cpp
folly/test/small_vector_test.cpp
folly/test/sorted_vector_test.cpp
folly/test/stl_tests/StlVectorTest.cpp

index 4077856..8b2e7c0 100644 (file)
@@ -47,7 +47,7 @@ struct return_type_helper<void, TList...> {
 template <typename D, typename... TList>
 using return_type = std::
     array<typename return_type_helper<D, TList...>::type, sizeof...(TList)>;
-} // !array_detail
+} // namespace array_detail
 
 template <typename D = void, typename... TList>
 constexpr array_detail::return_type<D, TList...> make_array(TList&&... t) {
@@ -56,4 +56,4 @@ constexpr array_detail::return_type<D, TList...> make_array(TList&&... t) {
   return {{static_cast<value_type>(std::forward<TList>(t))...}};
 }
 
-} // !folly
+} // namespace folly
index a986f5c..bf148df 100644 (file)
@@ -26,6 +26,6 @@ void assume_check(bool cond) {
   CHECK(cond) << "compiler-hint assumption fails at runtime";
 }
 
-}
+} // namespace detail
 
-}
+} // namespace folly
index 47f4e9a..36470fb 100644 (file)
@@ -26,7 +26,7 @@ namespace detail {
 
 extern void assume_check(bool cond);
 
-}
+} // namespace detail
 
 /**
  * Inform the compiler that the argument can be assumed true. It is
index 58345f6..e329760 100644 (file)
@@ -27,7 +27,7 @@ namespace folly {
 
 namespace detail {
 template <int N> struct AtomicStructIntPick {};
-}
+} // namespace detail
 
 /// AtomicStruct<T> work like C++ atomics, but can be used on any POD
 /// type <= 8 bytes.
index 21cf55e..ca867fc 100644 (file)
@@ -519,5 +519,4 @@ struct MutableData {
   explicit MutableData(const T& init) : data(init) {}
 };
 
-
-}
+} // namespace folly
index faaa1ee..233d4bd 100644 (file)
@@ -74,4 +74,4 @@ class CachelinePadded {
   T inner_;
   char paddingPost_[paddingSize()];
 };
-}
+} // namespace folly
index 852a74b..53cf480 100644 (file)
@@ -74,7 +74,7 @@ template <typename To, typename Duration>
 constexpr To round_impl(Duration const& d, To const& t0) {
   return round_impl(d, t0, t0 + To{1});
 }
-}
+} // namespace detail
 
 //  mimic: std::chrono::ceil, C++17
 //  from: http://en.cppreference.com/w/cpp/chrono/duration/ceil, CC-BY-SA
@@ -148,7 +148,7 @@ constexpr std::chrono::time_point<Clock, To> round(
     std::chrono::time_point<Clock, Duration> const& tp) {
   return std::chrono::time_point<Clock, To>{round<To>(tp.time_since_epoch())};
 }
-}
-}
+} // namespace chrono
+} // namespace folly
 
 #endif
index 96f572f..9aae08d 100644 (file)
@@ -82,8 +82,8 @@ struct VdsoInitializer {
 };
 
 static const VdsoInitializer vdso_initializer;
-}
+} // namespace
 
 #endif
-}
-}
+} // namespace chrono
+} // namespace folly
index 5786110..f5f1d15 100644 (file)
@@ -25,5 +25,5 @@ namespace chrono {
 
 extern int (*clock_gettime)(clockid_t, timespec* ts);
 extern int64_t (*clock_gettime_ns)(clockid_t);
-}
-}
+} // namespace chrono
+} // namespace folly
index 090a732..881d053 100644 (file)
@@ -337,4 +337,5 @@ class NodeRecycler<NodeType, NodeAlloc, typename std::enable_if<
   NodeAlloc alloc_;
 };
 
-}}  // namespaces
+} // namespace detail
+} // namespace folly
index 1cddf3b..2d058f4 100644 (file)
@@ -39,4 +39,4 @@ container_emplace_back_or_push_back(Container& container, Args&&... args) {
   container.push_back(v(std::forward<Args>(args)...));
 }
 
-}
+} // namespace folly
index 351fd4f..5a9e006 100644 (file)
@@ -133,7 +133,7 @@ inline void enforceWhitespace(StringPiece sp) {
     throw makeConversionError(err, sp);
   }
 }
-}
+} // namespace detail
 
 /**
  * The identity conversion function.
@@ -283,7 +283,7 @@ unsafeTelescope128(char * buffer, size_t room, unsigned __int128 x) {
   return p;
 }
 
-}
+} // namespace detail
 #endif
 
 /**
index 0a9cf96..75061b5 100644 (file)
@@ -62,4 +62,4 @@ inline size_t demangle(const std::type_info& type, char* buf, size_t bufSize) {
 // glibc doesn't have strlcpy
 size_t strlcpy(char* dest, const char* const src, size_t size);
 
-}
+} // namespace folly
index e63bf84..55c9b2e 100644 (file)
 #include <folly/dynamic.h>
 
 namespace folly {
-  template <typename T> T convertTo(const dynamic&);
-  template <typename T> dynamic toDynamic(const T&);
-}
+template <typename T>
+T convertTo(const dynamic&);
+template <typename T>
+dynamic toDynamic(const T&);
+} // namespace folly
 
 /**
  * convertTo returns a well-typed representation of the input dynamic.
index 7a96552..790b24c 100644 (file)
@@ -335,7 +335,7 @@ Ex&& dont_slice(Ex&& ex) {
         "be sliced when storing in exception_wrapper.");
   return std::forward<Ex>(ex);
 }
-}
+} // namespace exception_wrapper_detail
 
 template <
     class Ex,
index 7cda0b7..f2fa016 100644 (file)
@@ -58,7 +58,7 @@ std::exception const* get_std_exception_(std::exception_ptr eptr) noexcept {
     return nullptr;
   }
 }
-}
+} // namespace
 
 exception_wrapper exception_wrapper::from_exception_ptr(
     std::exception_ptr const& ptr) noexcept {
index cae75c9..44d1da4 100644 (file)
@@ -36,4 +36,4 @@ void Executor::keepAliveRelease() {
   LOG(FATAL) << __func__ << "() should not be called for folly::Executor types "
              << "which do not override getKeepAliveToken()";
 }
-}
+} // namespace folly
index 57098e2..c2d4e42 100644 (file)
@@ -633,7 +633,7 @@ struct ExpectedHelper {
   }
   FOLLY_POP_WARNING
 };
-}
+} // namespace expected_detail_ExpectedHelper
 /* using override */ using expected_detail_ExpectedHelper::ExpectedHelper;
 
 struct UnexpectedTag {};
index dec58fc..428eba6 100644 (file)
@@ -45,9 +45,9 @@
 // forward declaration
 
 namespace folly {
-  template <class T, class Allocator = std::allocator<T>>
-  class fbvector;
-}
+template <class T, class Allocator = std::allocator<T>>
+class fbvector;
+} // namespace folly
 
 //=============================================================================
 // unrolling
index d91ce1a..cec0022 100644 (file)
@@ -3010,7 +3010,7 @@ inline namespace {
 // "const std::size_t&" is so that folly::npos has the same address in every
 // translation unit. This is to avoid potential violations of the ODR.
 constexpr const std::size_t& npos = detail::fixedstring::FixedStringBase::npos;
-}
+} // namespace
 
 #if defined(__GNUC__)
 #pragma GCC diagnostic push
@@ -3063,8 +3063,8 @@ FOLLY_DEFINE_FIXED_STRING_UDL(64)
 FOLLY_DEFINE_FIXED_STRING_UDL(128)
 
 #undef FOLLY_DEFINE_FIXED_STRING_UDL
-}
-}
+} // namespace string_literals
+} // namespace literals
 
 // TODO:
 // // numeric conversions:
@@ -3099,4 +3099,4 @@ FOLLY_DEFINE_FIXED_STRING_UDL(128)
 // constexpr FixedString</*...*/> to_fixed_string_ll() noexcept
 // template <unsigned long long val>
 // constexpr FixedString</*...*/> to_fixed_string_ull() noexcept;
-}
+} // namespace folly
index 6ed3c6f..3837d10 100644 (file)
@@ -46,7 +46,7 @@ class FormatValue;
 // meta-attribute to identify formatters in this sea of template weirdness
 namespace detail {
 class FormatterTag {};
-};
+} // namespace detail
 
 /**
  * Formatter class.
@@ -322,7 +322,7 @@ struct DefaultValueWrapper {
   const Container& container;
   const Value& defaultValue;
 };
-} // namespace
+} // namespace detail
 
 template <class Container, class Value>
 detail::DefaultValueWrapper<Container, Value> defaulted(
index 1e19aa5..fd33a04 100644 (file)
@@ -24,4 +24,4 @@ namespace folly {
 [[noreturn]] void throwBadFormatArg(std::string const& msg) {
   throw BadFormatArg(msg);
 }
-}
+} // namespace folly
index 145c256..4b80112 100644 (file)
@@ -60,4 +60,5 @@ struct IndexableTraitsAssoc : public FormatTraitsBase {
   }
 };
 
-}}  // namespaces
+} // namespace detail
+} // namespace folly
index 8cff8d8..4bb7e6b 100644 (file)
@@ -753,8 +753,8 @@ struct IsCallableAsImpl<
 
 template <typename Fun, typename FunctionType>
 struct IsCallableAs : IsCallableAsImpl<Fun, FunctionType> {};
-}
-}
+} // namespace function
+} // namespace detail
 
 /**
  * @class FunctionRef
index fa51289..e239e1a 100644 (file)
@@ -151,4 +151,4 @@ rvalue_reference_wrapper<T> rref(T&& value) noexcept {
 }
 template <typename T>
 rvalue_reference_wrapper<T> rref(T&) noexcept = delete;
-}
+} // namespace folly
index ad1d21c..56ece82 100644 (file)
@@ -119,4 +119,4 @@ class Indestructible final {
   Storage storage_{};
   bool erased_{false};
 };
-}
+} // namespace folly
index 899a99e..82ae629 100644 (file)
@@ -38,7 +38,7 @@ namespace folly {
 namespace detail {
 template <typename Pool>
 struct IndexedMemPoolRecycler;
-}
+} // namespace detail
 
 template <
     typename T,
@@ -532,7 +532,7 @@ struct IndexedMemPoolRecycler {
   }
 };
 
-}
+} // namespace detail
 
 } // namespace folly
 
index a4fcfd3..ff115f3 100644 (file)
@@ -118,7 +118,7 @@ struct Lazy {
   Func func_;
 };
 
-}
+} // namespace detail
 
 //////////////////////////////////////////////////////////////////////
 
@@ -132,4 +132,4 @@ lazy(Func&& fun) {
 
 //////////////////////////////////////////////////////////////////////
 
-}
+} // namespace folly
index 6a5279f..d3fa506 100644 (file)
@@ -37,4 +37,4 @@ ShutdownSemError::ShutdownSemError(const std::string& msg)
 ShutdownSemError::~ShutdownSemError() noexcept {
 }
 
-}
+} // namespace folly
index a488815..79b8af1 100644 (file)
@@ -37,7 +37,7 @@ boost::chrono::duration<Rep, boost::ratio<Num, Denom>> toBoostDuration(
     const std::chrono::duration<Rep, std::ratio<Num, Denom>>& d) {
   return boost::chrono::duration<Rep, boost::ratio<Num, Denom>>(d.count());
 }
-}
+} // namespace detail
 
 /**
  * LockTraits specialization for boost::shared_mutex
index 15dd4b1..b1fbfad 100644 (file)
@@ -207,7 +207,7 @@ auto extract_default(const KeysDefault&... keysDefault) ->
     typename DefaultType<KeysDefault...>::type const& {
   return std::get<sizeof...(KeysDefault)-1>(std::tie(keysDefault...));
 }
-}
+} // namespace detail
 
 /**
  * Given a map of maps and a path of keys, return a pointer to the nested value,
index 6d4eee5..dc69ee9 100644 (file)
@@ -104,7 +104,7 @@ using IdivResultType = typename std::enable_if<
         !std::is_same<N, bool>::value &&
         !std::is_same<D, bool>::value,
     decltype(N{1} / D{1})>::type;
-}
+} // namespace detail
 
 #if defined(__arm__) && !FOLLY_AARCH64
 constexpr auto kIntegerDivisionGivesRemainder = false;
index c176627..c6c3ea2 100644 (file)
@@ -146,7 +146,7 @@ namespace detail {
 inline void SysFree(void* p) {
   ::free(p);
 }
-}
+} // namespace detail
 
 using SysBufferDeleter = static_function_deleter<void, &detail::SysFree>;
 using SysBufferUniquePtr = std::unique_ptr<void, SysBufferDeleter>;
index ac587ca..e42bd6d 100644 (file)
@@ -65,4 +65,4 @@ retry:
     goto retry;
   }
 }
-}
+} // namespace folly
index c358814..eb2795f 100644 (file)
@@ -223,4 +223,4 @@ void MicroLockBase<MaxSpins, MaxYields>::lock(unsigned slot) {
 }
 
 typedef MicroLockBase<> MicroLock;
-}
+} // namespace folly
index d0c9ac2..b36998a 100644 (file)
@@ -155,4 +155,4 @@ typedef std::lock_guard<MicroSpinLock> MSLGuard;
 
 //////////////////////////////////////////////////////////////////////
 
-}
+} // namespace folly
index 3f8cf03..7d208e2 100644 (file)
@@ -74,4 +74,4 @@ MoveWrapper<T0> makeMoveWrapper(T&& t) {
   return MoveWrapper<T0>(std::forward<T0>(t));
 }
 
-} // namespace
+} // namespace folly
index 2bb2d65..31e1f4f 100644 (file)
@@ -625,6 +625,6 @@ template <typename Value, typename... Args>
 struct coroutine_traits<folly::Optional<Value>, Args...> {
   using promise_type = folly::detail::OptionalPromise<Value>;
 };
-} // experimental
+} // namespace experimental
 FOLLY_NAMESPACE_STD_END
 #endif // FOLLY_HAS_COROUTINES
index 1090240..a49b027 100644 (file)
@@ -150,4 +150,4 @@ std::ostream& operator<<(std::ostream& os, const PackedSyncPtr<T>& ptr) {
   os << "PackedSyncPtr(" << ptr.get() << ", " << ptr.extra() << ")";
   return os;
 }
-}
+} // namespace folly
index 070f1fb..5c63583 100644 (file)
@@ -284,4 +284,4 @@ struct PicoSpinLock {
   }
 };
 
-}
+} // namespace folly
index 060085c..be5960d 100644 (file)
@@ -63,7 +63,7 @@ using max_basic_alignment = max_alignment<
     char32_t,
     wchar_t,
     std::nullptr_t>;
-} // namespace detail
+} // namespace portability_detail
 
 constexpr size_t max_align_v = portability_detail::max_basic_alignment::value;
 
@@ -184,7 +184,7 @@ namespace folly {
 constexpr bool kIsArchAmd64 = FOLLY_X64 == 1;
 constexpr bool kIsArchAArch64 = FOLLY_AARCH64 == 1;
 constexpr bool kIsArchPPC64 = FOLLY_PPC64 == 1;
-}
+} // namespace folly
 
 namespace folly {
 
@@ -199,7 +199,7 @@ constexpr bool kIsSanitizeThread = true;
 #else
 constexpr bool kIsSanitizeThread = false;
 #endif
-}
+} // namespace folly
 
 // packing is very ugly in msvc
 #ifdef _MSC_VER
@@ -313,7 +313,7 @@ constexpr auto kIsDebug = false;
 #else
 constexpr auto kIsDebug = true;
 #endif
-}
+} // namespace folly
 
 // Endianness
 namespace folly {
@@ -328,7 +328,7 @@ constexpr auto kIsLittleEndian = true;
 constexpr auto kIsLittleEndian = __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__;
 #endif
 constexpr auto kIsBigEndian = !kIsLittleEndian;
-}
+} // namespace folly
 
 #ifndef FOLLY_SSE
 # if defined(__SSE4_2__)
@@ -406,7 +406,7 @@ constexpr auto kMscVer = _MSC_VER;
 constexpr auto kIsWindows = false;
 constexpr auto kMscVer = 0;
 #endif
-}
+} // namespace folly
 
 // Define FOLLY_USE_CPP14_CONSTEXPR to be true if the compiler's C++14
 // constexpr support is "good enough".
index 8d2e47f..16de57d 100644 (file)
@@ -183,4 +183,4 @@ struct ProducerConsumerQueue {
   char pad1_[CacheLocality::kFalseSharingRange - sizeof(writeIndex_)];
 };
 
-}
+} // namespace folly
index f643fb5..5f94f00 100644 (file)
@@ -150,4 +150,4 @@ ThreadLocalPRNG::ThreadLocalPRNG() {
 uint32_t ThreadLocalPRNG::getImpl(LocalInstancePRNG* local) {
   return local->rng();
 }
-}
+} // namespace folly
index dbb16bf..e74d64b 100644 (file)
@@ -294,6 +294,6 @@ inline uint32_t randomNumberSeed() {
   return Random::rand32();
 }
 
-}
+} // namespace folly
 
 #include <folly/Random-inl.h>
index 3d91659..6a8161d 100644 (file)
@@ -1370,8 +1370,8 @@ constexpr Range<wchar_t const*> operator"" _sp(
     size_t len) noexcept {
   return Range<wchar_t const*>(str, len);
 }
-} // inline namespace string_piece_literals
-} // inline namespace literals
+} // namespace string_piece_literals
+} // namespace literals
 
 } // namespace folly
 
index 37174c7..62f3bc4 100644 (file)
@@ -49,4 +49,5 @@ void assertionFailure(const char* expr, const char* msg, const char* file,
   abort();
 }
 
-}}  // namespaces
+} // namespace detail
+} // namespace folly
index 27293c9..182b158 100644 (file)
@@ -46,4 +46,5 @@ namespace folly { namespace detail {
     const char* file,
     unsigned int line,
     const char* function);
-}}  // namespace folly
+} // namespace detail
+} // namespace folly
index d8b4988..eba2ea4 100644 (file)
@@ -20,4 +20,4 @@ namespace folly {
 // Explicitly instantiate SharedMutex here:
 template class SharedMutexImpl<true>;
 template class SharedMutexImpl<false>;
-}
+} // namespace folly
index e5b21dd..745147f 100644 (file)
@@ -296,6 +296,6 @@ void SingletonHolder<T>::createInstance() {
   vault_.creationOrder_.wlock()->push_back(type());
 }
 
-}
+} // namespace detail
 
-}
+} // namespace folly
index 7d3eeac..7114d53 100644 (file)
@@ -60,7 +60,7 @@ namespace detail {
             << type.name() << ">\n";
   std::abort();
 }
-}
+} // namespace detail
 
 namespace {
 
@@ -88,7 +88,7 @@ FatalHelper fatalHelper;
 FatalHelper __attribute__ ((__init_priority__ (101))) fatalHelper;
 #endif
 
-}
+} // namespace
 
 SingletonVault::~SingletonVault() { destroyInstances(); }
 
@@ -266,4 +266,4 @@ void SingletonVault::scheduleDestroyInstances() {
   static SingletonVaultDestructor singletonVaultDestructor;
 }
 
-}
+} // namespace folly
index 028cf7f..40e9dad 100644 (file)
@@ -328,7 +328,7 @@ struct SingletonHolder : public SingletonHolderBase {
   SingletonHolder(SingletonHolder&&) = delete;
 };
 
-}
+} // namespace detail
 
 class SingletonVault {
  public:
@@ -734,6 +734,6 @@ class LeakySingleton {
     entry.state = State::Living;
   }
 };
-}
+} // namespace folly
 
 #include <folly/Singleton-inl.h>
index f5d5f97..4f49409 100644 (file)
@@ -56,6 +56,6 @@ SetStackTraceGetter setStackTraceGetter;
 #else
 SetStackTraceGetter __attribute__((__init_priority__(101))) setStackTraceGetter;
 #endif
-}
-}
+} // namespace
+} // namespace folly
 #endif
index d14878b..c4d31ef 100644 (file)
@@ -92,4 +92,4 @@ class SingletonThreadLocal {
 
   SingletonT singleton_;
 };
-}
+} // namespace folly
index 929fb69..21c35a0 100644 (file)
@@ -613,7 +613,7 @@ class SocketAddress {
 size_t hash_value(const SocketAddress& address);
 
 std::ostream& operator<<(std::ostream& os, const SocketAddress& addr);
-}
+} // namespace folly
 
 namespace std {
 
@@ -624,4 +624,4 @@ struct hash<folly::SocketAddress> {
     return addr.hash();
   }
 };
-}
+} // namespace std
index b87e58a..3df5d4e 100644 (file)
@@ -74,4 +74,4 @@ class SpinLockGuardImpl : private boost::noncopyable {
 
 typedef SpinLockGuardImpl<SpinLock> SpinLockGuard;
 
-}
+} // namespace folly
index 2ec534b..f6b5ba9 100644 (file)
@@ -355,7 +355,7 @@ bool splitFixed(
   return false;
 }
 
-}
+} // namespace detail
 
 //////////////////////////////////////////////////////////////////////
 
index 58816e3..9b7c313 100644 (file)
@@ -172,4 +172,4 @@ class ThreadCachedInt : boost::noncopyable {
   };
 };
 
-}
+} // namespace folly
index 905b0f9..2abbfe3 100644 (file)
@@ -385,4 +385,4 @@ class ParameterizedTokenBucket {
 
 using TokenBucket = ParameterizedTokenBucket<>;
 using DynamicTokenBucket = ParameterizedDynamicTokenBucket<>;
-}
+} // namespace folly
index 45781cf..d1ab157 100644 (file)
@@ -290,7 +290,7 @@ struct is_trivially_copyable : std::is_trivial<T> {};
 template <class T>
 using is_trivially_copyable = std::is_trivially_copyable<T>;
 #endif
-}
+} // namespace traits_detail
 
 struct Ignore {
   template <class T>
@@ -311,7 +311,7 @@ struct IsEqualityComparable
           decltype(std::declval<T>() == std::declval<U>()),
           bool
       > {};
-}
+} // namespace traits_detail_IsEqualityComparable
 
 /* using override */ using traits_detail_IsEqualityComparable::
     IsEqualityComparable;
@@ -325,7 +325,7 @@ struct IsLessThanComparable
           decltype(std::declval<T>() < std::declval<U>()),
           bool
       > {};
-}
+} // namespace traits_detail_IsLessThanComparable
 
 /* using override */ using traits_detail_IsLessThanComparable::
     IsLessThanComparable;
@@ -353,7 +353,7 @@ struct IsNothrowSwappable
         noexcept(swap(std::declval<T&>(), std::declval<T&>()))
       > {};
 #endif
-}
+} // namespace traits_detail_IsNothrowSwappable
 
 /* using override */ using traits_detail_IsNothrowSwappable::IsNothrowSwappable;
 
index 0c2a633..0b90f62 100644 (file)
@@ -26,7 +26,7 @@ namespace __cxxabiv1 {
 struct __cxa_eh_globals;
 // declared in cxxabi.h from libstdc++-v3
 extern "C" __cxa_eh_globals* __cxa_get_globals() noexcept;
-}
+} // namespace __cxxabiv1
 #elif defined(_MSC_VER) && (_MSC_VER >= 1400) && \
     (_MSC_VER < 1900) // MSVC++ 8.0 or greater
 #define FOLLY_EXCEPTION_COUNT_USE_GETPTD
index 811e65c..b13f4ae 100644 (file)
@@ -148,4 +148,4 @@ char32_t utf8ToCodePoint(
 
 //////////////////////////////////////////////////////////////////////
 
-}
+} // namespace folly
index c16d87d..eaeb05f 100644 (file)
@@ -41,4 +41,4 @@ char32_t utf8ToCodePoint(
 
 //////////////////////////////////////////////////////////////////////
 
-}
+} // namespace folly
index dfcce1d..52f38fc 100644 (file)
@@ -59,4 +59,4 @@ struct Unit {
 
 constexpr Unit unit {};
 
-}
+} // namespace folly
index 86b338a..bb19608 100644 (file)
@@ -142,7 +142,7 @@ struct make_seq<0> {
   template <typename S0, typename S1>
   using apply = S0;
 };
-}
+} // namespace utility_detail
 
 #if __cpp_lib_integer_sequence || _MSC_VER
 
index 05ea019..6f288b5 100644 (file)
@@ -1322,7 +1322,7 @@ void zstdFreeCStream(ZSTD_CStream* zcs) {
 void zstdFreeDStream(ZSTD_DStream* zds) {
   ZSTD_freeDStream(zds);
 }
-}
+} // namespace
 
 /**
  * ZSTD compression
index 9c84604..4bbf502 100644 (file)
@@ -1125,7 +1125,7 @@ class CustomCodec : public Codec {
   std::string prefix_;
   std::unique_ptr<Codec> codec_;
 };
-}
+} // namespace
 
 TEST_P(AutomaticCodecTest, CustomCodec) {
   const uint64_t length = 42;
index 65816b6..4d8bd6e 100644 (file)
@@ -485,4 +485,4 @@ class ConcurrentHashMap {
   size_t max_size_{0};
 };
 
-} // namespace
+} // namespace folly
index df7e325..21ee292 100644 (file)
@@ -146,4 +146,4 @@ class AtomicCoreCachedSharedPtr {
   std::atomic<Slots*> slots_{nullptr};
 };
 
-} // namespace
+} // namespace folly
index f24854d..ba744e8 100644 (file)
@@ -298,7 +298,8 @@ downTo(T& iter, const U& begin) {
   return true;
 }
 
-} }
+} // namespace detail
+} // namespace folly
 
 /*
  * Look at the Ranges-v3 views and you'll probably find an easier way to build
index c0b7b12..1c31695 100644 (file)
@@ -107,7 +107,7 @@ decltype(auto) unwrap_emplace_arg(
     folly::rvalue_reference_wrapper<Arg> arg) noexcept {
   return std::move(arg).get();
 }
-}
+} // namespace detail
 
 /**
  * Getter function for unpacking a single emplace argument.
@@ -492,4 +492,4 @@ template <bool implicit_unpack = true, typename Container>
 back_emplace_iterator<Container, implicit_unpack> back_emplacer(Container& c) {
   return back_emplace_iterator<Container, implicit_unpack>(c);
 }
-}
+} // namespace folly
index 1979ae7..2e0a508 100644 (file)
@@ -80,4 +80,4 @@ OutputIt merge(InputIt1 first1, InputIt1 last1,
   return std::copy(first2, last2, d_first);
 }
 
-}
+} // namespace folly
index f6393b0..2848f6a 100644 (file)
@@ -85,4 +85,4 @@ class SparseByteSet {
   uint8_t dense_[kCapacity];
 };
 
-}
+} // namespace folly
index 15822e6..b388fa5 100644 (file)
@@ -143,7 +143,7 @@ void emplace_test(Container<Object>& q, Iterator it) {
   EXPECT_EQ(gMoveOpCnt, 0);
   EXPECT_EQ(gConvertOpCnt, 0);
 }
-}
+} // namespace
 
 using namespace folly;
 
index b5e8090..a053253 100644 (file)
@@ -148,7 +148,7 @@ void setup_rand_bench() {
   }
 }
 
-}
+} // namespace
 
 int main(int argc, char** argv) {
   gflags::ParseCommandLineFlags(&argc, &argv, true);
index b022794..0e2a36e 100644 (file)
@@ -34,7 +34,7 @@ class SparseByteSetTest : public testing::Test {
   SparseByteSet s;
 };
 
-}
+} // namespace
 
 TEST_F(SparseByteSetTest, empty) {
   for (auto c = lims::min(); c < lims::max(); ++c) {
index 49331bf..7fb8405 100644 (file)
@@ -37,4 +37,5 @@ void atomic_hash_spin_wait(Cond condition) {
   }
 }
 
-}} // namespace folly::detail
+} // namespace detail
+} // namespace folly
index 7977a60..ef46796 100644 (file)
@@ -74,4 +74,5 @@ struct GivesZeroFilledMemory : public std::false_type {};
 template <>
 struct GivesZeroFilledMemory<MMapAlloc> : public std::true_type{};
 
-}}
+} // namespace detail
+} // namespace folly
index 65d68cf..ff6a85e 100644 (file)
@@ -32,5 +32,5 @@ inline std::memory_order default_failure_memory_order(
       return successMode;
   }
 }
-}
-} // namespace
+} // namespace detail
+} // namespace folly
index dc0fa2b..d45cae8 100644 (file)
@@ -105,4 +105,5 @@ ssize_t wrapvFull(F f, int fd, iovec* iov, int count, Offset... offset) {
   return totalBytes;
 }
 
-}}  // namespaces
+} // namespace fileutil_detail
+} // namespace folly
index b01d967..a87b829 100644 (file)
@@ -164,4 +164,5 @@ FutexResult Futex<EmulatedFutexAtomic>::futexWaitImpl(
       std::chrono::time_point<std::chrono::steady_clock>* absSteadyTime,
       uint32_t waitMask);
 
-}}
+} // namespace detail
+} // namespace folly
index f9e374e..4a29d03 100644 (file)
@@ -273,5 +273,5 @@ inline void fastIpv6AppendToString(const in6_addr& in6Addr, std::string& out) {
   char str[sizeof("2001:0db8:0000:0000:0000:ff00:0042:8329")];
   out.append(str, fastIpv6ToBufferUnsafe(in6Addr, str));
 }
-}
-}
+} // namespace detail
+} // namespace folly
index c436c5f..a96f81b 100644 (file)
@@ -117,4 +117,5 @@ struct AmplificationProduct<std::tuple<T, Ts...>> {
     AmplificationProduct<std::tuple<Ts...>>::value;
 };
 
-}}  // namespaces
+} // namespace detail
+} // namespace folly
index 3eb4bad..8cf1fb3 100644 (file)
@@ -167,4 +167,5 @@ void MemoryIdler::unmapUnusedStack(size_t /* retain */) {}
 
 #endif
 
-}}
+} // namespace detail
+} // namespace folly
index 13fe453..1a8fe3a 100644 (file)
@@ -33,7 +33,7 @@ template <>
 struct IsTriviallyCopyable<std::chrono::steady_clock::duration>
   : std::true_type {};
 
-}
+} // namespace folly
 
 namespace folly { namespace detail {
 
@@ -150,4 +150,5 @@ struct MemoryIdler {
   }
 };
 
-}} // namespace folly::detail
+} // namespace detail
+} // namespace folly
index e8949d3..87467b6 100644 (file)
@@ -53,5 +53,5 @@ size_t qfind_first_byte_of_byteset(
   }
   return std::string::npos;
 }
-}
-}
+} // namespace detail
+} // namespace folly
index ca8cc83..6a7e807 100644 (file)
@@ -104,5 +104,5 @@ inline size_t qfind_first_byte_of_nosse(
   }
   return qfind_first_byte_of_std(haystack, needles);
 }
-}
-}
+} // namespace detail
+} // namespace folly
index 651949f..0d82df3 100644 (file)
@@ -33,8 +33,8 @@ size_t qfind_first_byte_of_sse42(
     const StringPieceLite needles) {
   return qfind_first_byte_of_nosse(haystack, needles);
 }
-}
-}
+} // namespace detail
+} // namespace folly
 #else
 #include <cstdint>
 #include <limits>
index 8e89d0f..0a5901f 100644 (file)
@@ -27,5 +27,5 @@ namespace detail {
 size_t qfind_first_byte_of_sse42(
     const StringPieceLite haystack,
     const StringPieceLite needles);
-}
-}
+} // namespace detail
+} // namespace folly
index 2d1f248..ad8127c 100644 (file)
@@ -32,33 +32,33 @@ namespace folly {
 
 namespace detail {
 
-  /*
  * A helper object for the contended case. Starts off with eager
  * spinning, and falls back to sleeping for small quantums.
  */
-  class Sleeper {
-    static const uint32_t kMaxActiveSpin = 4000;
+/*
+ * A helper object for the contended case. Starts off with eager
+ * spinning, and falls back to sleeping for small quantums.
+ */
+class Sleeper {
+  static const uint32_t kMaxActiveSpin = 4000;
 
-    uint32_t spinCount;
+  uint32_t spinCount;
 
  public:
-    Sleeper() : spinCount(0) {}
+ public:
+  Sleeper() : spinCount(0) {}
 
-    void wait() {
-      if (spinCount < kMaxActiveSpin) {
-        ++spinCount;
-        asm_volatile_pause();
-      } else {
-        /*
-         * Always sleep 0.5ms, assuming this will make the kernel put
-         * us down for whatever its minimum timer resolution is (in
-         * linux this varies by kernel version from 1ms to 10ms).
-         */
-        struct timespec ts = { 0, 500000 };
-        nanosleep(&ts, nullptr);
-      }
+  void wait() {
+    if (spinCount < kMaxActiveSpin) {
+      ++spinCount;
+      asm_volatile_pause();
+    } else {
+      /*
+       * Always sleep 0.5ms, assuming this will make the kernel put
+       * us down for whatever its minimum timer resolution is (in
+       * linux this varies by kernel version from 1ms to 10ms).
+       */
+      struct timespec ts = {0, 500000};
+      nanosleep(&ts, nullptr);
     }
-  };
+  }
+};
 
-}
-}
+} // namespace detail
+} // namespace folly
index a638549..3f83344 100644 (file)
@@ -121,5 +121,5 @@ bool tfo_succeeded(int /* sockfd */) {
 }
 
 #endif
-}
-}
+} // namespace detail
+} // namespace folly
index 732dc4b..ed6289f 100644 (file)
@@ -44,5 +44,5 @@ int tfo_enable(int sockfd, size_t max_queue_size);
  * Check if TFO succeeded in being used.
  */
 bool tfo_succeeded(int sockfd);
-}
-}
+} // namespace detail
+} // namespace folly
index a75734b..3d7ab93 100644 (file)
@@ -23,5 +23,5 @@ StaticSingletonManager& StaticSingletonManager::instance() {
   static StaticSingletonManager* instance = new StaticSingletonManager();
   return *instance;
 }
-}
-}
+} // namespace detail
+} // namespace folly
index a6088c1..f5c540b 100644 (file)
@@ -84,5 +84,5 @@ template <typename T, typename Tag>
 inline T* createGlobal() {
   return createGlobal<T, Tag>([]() { return new T(); });
 }
-}
-}
+} // namespace detail
+} // namespace folly
index 4c03646..4d65245 100644 (file)
@@ -305,7 +305,7 @@ class AtForkList {
 #endif
   }
 };
-}
+} // namespace
 
 void StaticMetaBase::initAtFork() {
   AtForkList::instance();
@@ -322,4 +322,5 @@ void StaticMetaBase::registerAtFork(
 
 FOLLY_STATIC_CTOR_PRIORITY_MAX
 PthreadKeyUnregister PthreadKeyUnregister::instance_;
-}}
+} // namespace threadlocal_detail
+} // namespace folly
index 2e8a7ed..4170c21 100644 (file)
@@ -47,4 +47,5 @@ class UncaughtExceptionCounter {
   int exceptionCount_;
 };
 
-}} // namespaces
+} // namespace detail
+} // namespace folly
index 325060f..7b187d7 100644 (file)
@@ -36,7 +36,7 @@ struct hash<::folly::dynamic> {
   }
 };
 
-}
+} // namespace std
 
 //////////////////////////////////////////////////////////////////////
 
@@ -97,35 +97,38 @@ struct TypeError : std::runtime_error {
 
 namespace detail {
 
-  // This helper is used in destroy() to be able to run destructors on
-  // types like "int64_t" without a compiler error.
-  struct Destroy {
-    template <class T> static void destroy(T* t) { t->~T(); }
-  };
-
-  /*
-   * Helper for implementing numeric conversions in operators on
-   * numbers.  Just promotes to double when one of the arguments is
-   * double, or throws if either is not a numeric type.
-   */
-  template <template <class> class Op>
-  dynamic numericOp(dynamic const& a, dynamic const& b) {
-    if (!a.isNumber() || !b.isNumber()) {
-      throwTypeError_("numeric", a.type(), b.type());
-    }
-    if (a.type() != b.type()) {
-      auto& integ  = a.isInt() ? a : b;
-      auto& nonint = a.isInt() ? b : a;
-      return Op<double>()(to<double>(integ.asInt()), nonint.asDouble());
-    }
-    if (a.isDouble()) {
-      return Op<double>()(a.asDouble(), b.asDouble());
-    }
-    return Op<int64_t>()(a.asInt(), b.asInt());
+// This helper is used in destroy() to be able to run destructors on
+// types like "int64_t" without a compiler error.
+struct Destroy {
+  template <class T>
+  static void destroy(T* t) {
+    t->~T();
   }
+};
 
+/*
+ * Helper for implementing numeric conversions in operators on
+ * numbers.  Just promotes to double when one of the arguments is
+ * double, or throws if either is not a numeric type.
+ */
+template <template <class> class Op>
+dynamic numericOp(dynamic const& a, dynamic const& b) {
+  if (!a.isNumber() || !b.isNumber()) {
+    throwTypeError_("numeric", a.type(), b.type());
+  }
+  if (a.type() != b.type()) {
+    auto& integ = a.isInt() ? a : b;
+    auto& nonint = a.isInt() ? b : a;
+    return Op<double>()(to<double>(integ.asInt()), nonint.asDouble());
+  }
+  if (a.isDouble()) {
+    return Op<double>()(a.asDouble(), b.asDouble());
+  }
+  return Op<int64_t>()(a.asInt(), b.asInt());
 }
 
+} // namespace detail
+
 //////////////////////////////////////////////////////////////////////
 
 /*
index 842b7fb..aee3e87 100644 (file)
@@ -323,4 +323,4 @@ void dynamic::destroy() noexcept {
 
 //////////////////////////////////////////////////////////////////////
 
-}
+} // namespace folly
index bab21a5..ad88edc 100644 (file)
@@ -576,6 +576,6 @@ struct dynamic : private boost::operators<dynamic> {
 
 //////////////////////////////////////////////////////////////////////
 
-}
+} // namespace folly
 
 #include <folly/dynamic-inl.h>
index ef85375..0341e71 100644 (file)
@@ -46,7 +46,7 @@ Singleton<std::shared_ptr<IOThreadPoolExecutor>> globalIOThreadPool([] {
           sysconf(_SC_NPROCESSORS_ONLN),
           std::make_shared<NamedThreadFactory>("GlobalIOThreadPool")));
 });
-}
+} // namespace
 
 namespace folly {
 
index a9e5e53..2c9a71f 100644 (file)
@@ -215,4 +215,4 @@ void ThreadPoolListHook::registerThread() {
       this, std::this_thread::get_id());
 }
 
-} // folly
+} // namespace folly
index 8e13df0..a48b526 100644 (file)
@@ -58,4 +58,4 @@ class ThreadPoolListHook {
   ThreadPoolListHook();
 };
 
-} // folly
+} // namespace folly
index 223c049..18209e2 100644 (file)
@@ -20,7 +20,7 @@
 
 namespace folly {
 class EventBase;
-}
+} // namespace folly
 
 namespace folly {
 
index bfaaf25..9f06016 100644 (file)
@@ -154,4 +154,4 @@ namespace folly {
     TimePoint now_ = TimePoint::min();
   };
 
-}
+  } // namespace folly
index 1dbdb5c..a8a9d0a 100644 (file)
@@ -34,4 +34,4 @@ void QueuedImmediateExecutor::addStatic(Func callback) {
   }
 }
 
-} // namespace
+} // namespace folly
index ac77de9..b61331b 100644 (file)
@@ -56,4 +56,4 @@ namespace folly {
        return std::chrono::steady_clock::now();
      }
   };
-}
+  } // namespace folly
index badfc54..7578f54 100644 (file)
@@ -108,4 +108,4 @@ bool ThreadedExecutor::controlPerformAll() {
   controlLaunchEnqueuedTasks();
   return !stopping || !running_.empty();
 }
-}
+} // namespace folly
index 9417898..9ea42e1 100644 (file)
@@ -96,4 +96,4 @@ class ThreadedExecutor : public virtual folly::Executor {
   std::mutex finishedm_;
   std::deque<std::thread::id> finished_;
 };
-}
+} // namespace folly
index 87d60c7..2d46f8b 100644 (file)
@@ -24,7 +24,7 @@
 namespace {
 
 class FiberIOExecutorTest : public testing::Test {};
-}
+} // namespace
 
 TEST_F(FiberIOExecutorTest, event_base) {
   auto tpe = std::make_shared<folly::IOThreadPoolExecutor>(1);
index 591be57..ecb8d2d 100644 (file)
@@ -24,7 +24,7 @@
 namespace {
 
 class ThreadedExecutorTest : public testing::Test {};
-}
+} // namespace
 
 TEST_F(ThreadedExecutorTest, example) {
   folly::ThreadedExecutor x;
index 0c75fef..a7762d8 100644 (file)
@@ -57,4 +57,4 @@ class PriorityThreadFactory : public ThreadFactory {
   int priority_;
 };
 
-} // folly
+} // namespace folly
index fc5b660..c8ae017 100644 (file)
@@ -78,7 +78,7 @@ void mprotectMembarrier() {
   r = mprotect(dummyPage, 1, PROT_READ);
   checkUnixError(r, "mprotect");
 }
-}
+} // namespace
 
 void asymmetricHeavyBarrier(AMBFlags flags) {
   if (kIsLinux) {
@@ -94,4 +94,4 @@ void asymmetricHeavyBarrier(AMBFlags flags) {
     std::atomic_thread_fence(std::memory_order_seq_cst);
   }
 }
-}
+} // namespace folly
index faffa0b..c20157d 100644 (file)
@@ -36,4 +36,4 @@ FOLLY_ALWAYS_INLINE void asymmetricLightBarrier() {
 }
 
 void asymmetricHeavyBarrier(AMBFlags flags = AMBFlags::NORMAL);
-}
+} // namespace folly
index 49df7b9..545c3be 100644 (file)
@@ -146,4 +146,4 @@ struct GoogleLogger final {
     }
   }
 };
-}
+} // namespace folly
index 38dde11..99c9c57 100644 (file)
@@ -444,4 +444,5 @@ class BitVectorReader : detail::ForwardPointers<Encoder::forwardQuantum>,
   ValueType upperBound_;
 };
 
-}}  // namespaces
+} // namespace compression
+} // namespace folly
index 10de64c..6e84ea7 100644 (file)
@@ -58,6 +58,6 @@ class SkipPointers<0> {
   explicit SkipPointers(const unsigned char*) {}
   constexpr static const unsigned char* const skipPointers_{};
 };
-}
-}
-}
+} // namespace detail
+} // namespace compression
+} // namespace folly
index edfed09..628b813 100644 (file)
@@ -753,4 +753,5 @@ class EliasFanoReader {
   uint8_t numLowerBits_;
 };
 
-}}  // namespaces
+} // namespace compression
+} // namespace folly
index 6153810..ce58c43 100644 (file)
@@ -493,4 +493,4 @@ void FunctionScheduler::setThreadName(StringPiece threadName) {
   threadName_ = threadName.str();
 }
 
-}
+} // namespace folly
index fbc7399..59dc4bc 100644 (file)
@@ -298,4 +298,4 @@ class FunctionScheduler {
   bool cancellingCurrentFunction_{false};
 };
 
-}
+} // namespace folly
index 570e2c7..d739fd1 100644 (file)
@@ -1010,7 +1010,7 @@ const char* metaschemaJson =
 folly::Singleton<Validator> schemaValidator([]() {
   return makeValidator(parseJson(metaschemaJson)).release();
 });
-}
+} // namespace
 
 Validator::~Validator() = default;
 
@@ -1025,5 +1025,5 @@ std::unique_ptr<Validator> makeValidator(const dynamic& schema) {
 std::shared_ptr<Validator> makeSchemaValidator() {
   return schemaValidator.try_get();
 }
-}
-}
+} // namespace jsonschema
+} // namespace folly
index e11a5a8..7e17b0d 100644 (file)
@@ -69,5 +69,5 @@ std::unique_ptr<Validator> makeValidator(const dynamic& schema);
  * this before you use makeValidator().
  */
 std::shared_ptr<Validator> makeSchemaValidator();
-}
-}
+} // namespace jsonschema
+} // namespace folly
index 19c8759..9d86aa8 100644 (file)
@@ -167,4 +167,4 @@ class RCURefCount {
   std::atomic<int64_t> globalCount_{1};
 };
 
-}
+} // namespace folly
index c49638f..f36da98 100644 (file)
@@ -33,7 +33,7 @@ struct RCURegisterThreadHelper {
   bool alive{false};
 };
 
-}
+} // namespace
 
 bool RCURegisterThread() {
   static folly::ThreadLocal<RCURegisterThreadHelper>* rcuRegisterThreadHelper =
@@ -53,4 +53,4 @@ RCUReadLock& RCUReadLock::instance() {
   static RCUReadLock instance;
   return instance;
 }
-}
+} // namespace folly
index e0af4d7..545a25f 100644 (file)
@@ -45,4 +45,4 @@ class RCUReadLock {
   RCUReadLock() {}
 };
 
-}
+} // namespace folly
index 580152a..f80fdde 100644 (file)
@@ -94,7 +94,7 @@ class ReadMostlySharedPtrCore {
   std::shared_ptr<T> ptr_;
 };
 
-}
+} // namespace detail
 
 template <typename T, typename RefCount = DefaultRefCount>
 class ReadMostlyMainPtr {
@@ -451,4 +451,4 @@ inline bool operator!=(
     const ReadMostlySharedPtr<T, RefCount>& ptr) {
   return !(ptr == nullptr);
 }
-}
+} // namespace folly
index 0c00085..a3937b5 100644 (file)
@@ -102,4 +102,5 @@ const uint8_t kSelectInByte[2048] = {
   8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7
 };
 
-}}
+} // namespace detail
+} // namespace folly
index 9e2a1da..3e099ea 100644 (file)
@@ -210,4 +210,4 @@ class TLRefCount {
   std::shared_ptr<void> collectGuard_;
 };
 
-}
+} // namespace folly
index b6d2ad7..b948149 100644 (file)
@@ -128,7 +128,7 @@ struct SavedState {
 };
 SavedState disableInvalidParameters();
 void enableInvalidParameters(SavedState state);
-}
+} // namespace detail
 
 // Ok, so fun fact: The CRT on windows will actually abort
 // on certain failed parameter validation checks in debug
index be06e9f..571a7fd 100644 (file)
@@ -97,8 +97,8 @@ folly::fbstring toBser(folly::dynamic const&, const serialization_opts&);
 std::unique_ptr<folly::IOBuf> toBserIOBuf(
     folly::dynamic const&,
     const serialization_opts&);
-}
-}
+} // namespace bser
+} // namespace folly
 
 /* vim:ts=2:sw=2:et:
  */
index 58a2da1..26133cd 100644 (file)
@@ -247,8 +247,8 @@ fbstring toBser(dynamic const& dyn, const serialization_opts& opts) {
   auto buf = toBserIOBuf(dyn, opts);
   return buf->moveToFbString();
 }
-}
-}
+} // namespace bser
+} // namespace folly
 
 /* vim:ts=2:sw=2:et:
  */
index d1b8185..2894e90 100644 (file)
@@ -221,8 +221,8 @@ folly::dynamic parseBser(ByteRange str) {
 folly::dynamic parseBser(StringPiece str) {
   return parseBser(ByteRange((uint8_t*)str.data(), str.size()));
 }
-}
-}
+} // namespace bser
+} // namespace folly
 
 /* vim:ts=2:sw=2:et:
  */
index ce5ea80..45393bf 100644 (file)
@@ -34,7 +34,7 @@ void dummyCxaBeginCatch(void*) noexcept;
 void dummyCxaRethrow() noexcept;
 void dummyCxaEndCatch() noexcept;
 void dummyRethrowException(std::exception_ptr) noexcept;
-}
+} // namespace detail
 
 using CxaThrowType = decltype(&detail::dummyCxaThrow);
 using CxaBeginCatchType = decltype(&detail::dummyCxaBeginCatch);
@@ -47,5 +47,5 @@ void registerCxaBeginCatchCallback(CxaBeginCatchType callback);
 void registerCxaRethrowCallback(CxaRethrowType callback);
 void registerCxaEndCatchCallback(CxaEndCatchType callback);
 void registerRethrowExceptionCallback(RethrowExceptionType callback);
-}
-}
+} // namespace exception_tracer
+} // namespace folly
index 22a00de..6ad1211 100644 (file)
@@ -80,5 +80,5 @@ class LockFreeLIFO {
   std::atomic<Node*> head_ = {nullptr};
 };
 
-} // namespace folly
 } // namespace hazptr
+} // namespace folly
index 81b79ca..eccca4f 100644 (file)
@@ -247,5 +247,5 @@ class MWMRListSet {
   }
 };
 
-} // namespace folly
 } // namespace hazptr
+} // namespace folly
index 17ed7ce..2e909e5 100644 (file)
@@ -134,5 +134,5 @@ class SWMRListSet {
   }
 };
 
-} // namespace folly
 } // namespace hazptr
+} // namespace folly
index 8b4ce81..90a6341 100644 (file)
@@ -64,5 +64,5 @@ class WideCAS {
   }
 };
 
-} // namespace folly
 } // namespace hazptr
+} // namespace folly
index 178bd9d..82734d6 100644 (file)
@@ -993,5 +993,5 @@ inline hazptr_tls_life::~hazptr_tls_life() {
   tls_state_ = TLS_DESTROYED;
 }
 
-} // namespace folly
 } // namespace hazptr
+} // namespace folly
index 9123b8c..c9759ae 100644 (file)
@@ -45,5 +45,5 @@ memory_resource* get_default_resource();
 void set_default_resource(memory_resource*);
 memory_resource* new_delete_resource();
 
-} // namespace folly
 } // namespace hazptr
+} // namespace folly
index 29294de..9bc0848 100644 (file)
@@ -47,5 +47,5 @@ class Node1 : public hazptr_obj_base<Node1, MyReclaimerFree<Node1>> {
   char a[100];
 };
 
-} // namespace folly
 } // namespace hazptr
+} // namespace folly
index 9d1b100..8917897 100644 (file)
@@ -49,5 +49,5 @@ inline void mineReclaimFnDelete(Node2* p) {
   delete p;
 }
 
-} // namespace folly
 } // namespace hazptr
+} // namespace folly
index 61c379f..e76c73a 100644 (file)
@@ -170,4 +170,4 @@ std::string AsyncFileWriter::getNumDiscardedMsg(size_t numDiscarded) {
       numDiscarded,
       " log messages discarded: logging faster than we can write\n");
 }
-}
+} // namespace folly
index 2fb2e45..4fdd24e 100644 (file)
@@ -115,4 +115,4 @@ class AsyncFileWriter : public LogWriter {
    */
   std::thread ioThread_;
 };
-}
+} // namespace folly
index 2307fb6..60c4656 100644 (file)
@@ -36,7 +36,7 @@ StringPiece getGlogLevelName(LogLevel level) {
   }
   return "CRITICAL";
 }
-}
+} // namespace
 
 namespace folly {
 
@@ -126,4 +126,4 @@ std::string GlogStyleFormatter::formatMessage(
 
   return buffer;
 }
-}
+} // namespace folly
index d732f00..68ec6c6 100644 (file)
@@ -56,4 +56,4 @@ class GlogStyleFormatter : public LogFormatter {
       const LogMessage& message,
       const LogCategory* handlerCategory) override;
 };
-}
+} // namespace folly
index 2035efd..02e8f99 100644 (file)
@@ -49,4 +49,4 @@ void ImmediateFileWriter::writeMessage(
 }
 
 void ImmediateFileWriter::flush() {}
-}
+} // namespace folly
index d21c25e..42c341b 100644 (file)
@@ -56,4 +56,4 @@ class ImmediateFileWriter : public LogWriter {
 
   folly::File file_;
 };
-}
+} // namespace folly
index d1e6a6a..3c6c395 100644 (file)
@@ -73,4 +73,4 @@ std::string LoggingConfigError::computeMessage(const vector<string>& errors) {
   }
   return msg;
 }
-}
+} // namespace folly
index 5491974..2b924ab 100644 (file)
@@ -62,4 +62,4 @@ class LoggingConfigError : public std::invalid_argument {
  private:
   std::string computeMessage(const std::vector<std::string>& errors);
 };
-}
+} // namespace folly
index eceea87..66640df 100644 (file)
@@ -229,4 +229,4 @@ void LogCategory::parentLevelUpdated(LogLevel parentEffectiveLevel) {
 void LogCategory::registerXlogLevel(std::atomic<LogLevel>* levelPtr) {
   xlogLevels_.push_back(levelPtr);
 }
-}
+} // namespace folly
index ce97c91..91e72c9 100644 (file)
@@ -256,4 +256,4 @@ class LogCategory {
    */
   std::vector<std::atomic<LogLevel>*> xlogLevels_;
 };
-}
+} // namespace folly
index ad3c085..b97191b 100644 (file)
@@ -43,4 +43,4 @@ class LogFormatter {
       const LogMessage& message,
       const LogCategory* handlerCategory) = 0;
 };
-}
+} // namespace folly
index 60d1db6..525eea4 100644 (file)
@@ -80,4 +80,4 @@ class LogHandler {
    */
   virtual void flush() = 0;
 };
-}
+} // namespace folly
index 1a4d15e..8084460 100644 (file)
@@ -119,4 +119,4 @@ std::ostream& operator<<(std::ostream& os, LogLevel level) {
   os << logLevelToString(level);
   return os;
 }
-}
+} // namespace folly
index a3e0e34..c0dc40d 100644 (file)
@@ -124,4 +124,4 @@ inline constexpr bool isLogLevelFatal(LogLevel level) {
   return folly::kIsDebug ? (level >= LogLevel::DFATAL)
                          : (level >= LogLevel::FATAL);
 }
-}
+} // namespace folly
index 7b4bd25..d98803d 100644 (file)
@@ -131,4 +131,4 @@ void LogMessage::sanitizeMessage() {
     }
   }
 }
-}
+} // namespace folly
index ab85943..250fba7 100644 (file)
@@ -149,4 +149,4 @@ class LogMessage {
    */
   std::string message_;
 };
-}
+} // namespace folly
index 8bf8398..a092759 100644 (file)
@@ -124,4 +124,4 @@ StringPiece LogName::getParent(StringPiece name) {
 
   return StringPiece(name.begin(), idx);
 }
-}
+} // namespace folly
index dfe055f..4c8fe86 100644 (file)
@@ -84,4 +84,4 @@ class LogName {
     }
   };
 };
-}
+} // namespace folly
index 6b85109..cd81fb7 100644 (file)
@@ -52,4 +52,4 @@ LogStream::LogStream(LogStreamProcessor* processor)
 }
 
 LogStream::~LogStream() {}
-}
+} // namespace folly
index 9906ae6..7d00d3d 100644 (file)
@@ -83,4 +83,4 @@ class LogStream : public std::ostream {
   LogStreamBuffer buffer_;
   LogStreamProcessor* const processor_;
 };
-}
+} // namespace folly
index 6fe0888..f1ae33e 100644 (file)
@@ -76,7 +76,7 @@ LogCategory* getXlogCategory(
   }
   return categoryInfo->getCategory(&xlog_detail::xlogFileScopeInfo);
 }
-}
+} // namespace
 
 /**
  * Construct a LogStreamProcessor from an XlogCategoryInfo.
@@ -112,7 +112,7 @@ LogCategory* getXlogCategory(XlogFileScopeInfo* fileScopeInfo) {
   // Therefore we never need to check if it is initialized here.
   return fileScopeInfo->category;
 }
-}
+} // namespace
 
 /**
  * Construct a LogStreamProcessor from an XlogFileScopeInfo.
@@ -219,4 +219,4 @@ void logDisabledHelper(std::integral_constant<bool, true>) noexcept {
   // builds) or DFATAL (in debug builds).
   abort();
 }
-}
+} // namespace folly
index 66db917..96db4a6 100644 (file)
@@ -68,7 +68,7 @@ inline void fallbackFormatOneArg(std::string* str, const Arg* arg, long) {
 #endif
   str->append("<no_string_conversion>)");
 }
-}
+} // namespace detail
 
 template <bool IsInHeaderFile>
 class XlogCategoryInfo;
@@ -496,4 +496,4 @@ inline void logDisabledHelper(std::integral_constant<bool, false>) noexcept {}
 [[noreturn]] void logDisabledHelper(
         std::integral_constant<bool, true>) noexcept;
 // clang-format on
-}
+} // namespace folly
index eba3771..3d99f22 100644 (file)
@@ -73,4 +73,4 @@ class LogWriter {
    */
   virtual void flush() = 0;
 };
-}
+} // namespace folly
index eb8a961..b3f268c 100644 (file)
@@ -31,4 +31,4 @@ Logger::Logger(LogCategory* cat) : category_(cat) {}
 
 Logger::Logger(LoggerDB* db, StringPiece name)
     : Logger{db->getCategory(name)} {}
-}
+} // namespace folly
index 5525c4e..2701d46 100644 (file)
@@ -125,4 +125,4 @@ class Logger {
  private:
   LogCategory* const category_{nullptr};
 };
-}
+} // namespace folly
index 516485a..ee09681 100644 (file)
@@ -55,7 +55,7 @@ class LoggerDBSingleton {
  private:
   LoggerDB* db_;
 };
-}
+} // namespace
 
 LoggerDB* LoggerDB::get() {
   // Intentionally leaky singleton
@@ -316,4 +316,4 @@ void LoggerDB::defaultInternalWarningImpl(
     folly::writeFull(STDERR_FILENO, fullMsg.data(), fullMsg.size());
   }
 }
-}
+} // namespace folly
index 0f7fed2..1c80cd9 100644 (file)
@@ -203,4 +203,4 @@ class LoggerDB {
 
   static std::atomic<InternalWarningHandler> warningHandler_;
 };
-}
+} // namespace folly
index c163c80..9ac40f3 100644 (file)
@@ -43,5 +43,5 @@ bool IntervalRateLimiter::checkSlow() {
   count_.store(1, std::memory_order_release);
   return true;
 }
-}
-}
+} // namespace logging
+} // namespace folly
index acd04a8..2627f02 100644 (file)
@@ -64,5 +64,5 @@ class IntervalRateLimiter : public RateLimiter {
   // since time_point's constructor is not noexcept
   std::atomic<std::chrono::steady_clock::rep> timestamp_;
 };
-}
-}
+} // namespace logging
+} // namespace folly
index 51debda..9e43cd6 100644 (file)
@@ -40,4 +40,4 @@ void StandardLogHandler::handleMessage(
 void StandardLogHandler::flush() {
   writer_->flush();
 }
-}
+} // namespace folly
index 7fd0820..94b2699 100644 (file)
@@ -74,4 +74,4 @@ class StandardLogHandler : public LogHandler {
   std::shared_ptr<LogFormatter> formatter_;
   std::shared_ptr<LogWriter> writer_;
 };
-}
+} // namespace folly
index 7190c70..416801c 100644 (file)
@@ -21,4 +21,4 @@ ExampleObject::~ExampleObject() {
   // folly.experimental.logging.example.lib
   XLOGF(DBG1, "ExampleObject({}) at {} destroyed", value_, this);
 }
-}
+} // namespace example
index c43a88f..28d547a 100644 (file)
@@ -34,4 +34,4 @@ class ExampleObject {
  private:
   std::string value_;
 };
-}
+} // namespace example
index dfc523d..7da2ba4 100644 (file)
@@ -38,4 +38,4 @@ std::string loggingFormatPrintf(const char* format, ...) noexcept {
         "error formatting printf-style log message: ", format);
   }
 }
-}
+} // namespace folly
index 373b058..97a9848 100644 (file)
@@ -35,7 +35,7 @@ namespace folly {
 std::string loggingFormatPrintf(
     FOLLY_PRINTF_FORMAT const char* format,
     ...) noexcept FOLLY_PRINTF_FORMAT_ATTR(1, 2);
-}
+} // namespace folly
 
 /**
  * Log a message to the specified logger using a printf-style format string.
index 32dd790..f2a779a 100644 (file)
@@ -115,7 +115,7 @@ void handleLoggingError(
     std::string&& msg) {
   internalWarnings->emplace_back(std::move(msg));
 }
-}
+} // namespace
 
 TEST(AsyncFileWriter, ioError) {
   // Set the LoggerDB internal warning handler so we can record the messages
@@ -205,7 +205,7 @@ size_t fillUpPipe(int fd) {
 
   return totalBytes;
 }
-}
+} // namespace
 
 TEST(AsyncFileWriter, flush) {
   // Set up a pipe(), then write data to the write endpoint until it fills up
index 7b804c9..3d65511 100644 (file)
@@ -57,7 +57,7 @@ class InitChecker {
 };
 
 static InitChecker initChecker;
-}
+} // namespace
 
 namespace {
 int runHelper() {
@@ -83,7 +83,7 @@ int runHelper() {
   // should be able to detect that XLOG(FATAL) never returns.  It shouldn't
   // complain that we don't return an integer here.
 }
-}
+} // namespace
 
 std::string fbLogFatalCheck() {
   folly::Logger logger("some.category");
index e52b62d..e37ce41 100644 (file)
@@ -86,7 +86,7 @@ void handleLoggingError(
     std::string&& msg) {
   internalWarnings->emplace_back(std::move(msg));
 }
-}
+} // namespace
 
 TEST(ImmediateFileWriter, ioError) {
   std::array<int, 2> fds;
index a2b285c..abd740b 100644 (file)
@@ -165,7 +165,7 @@ class FormatValue<FormattableButNoToString> {
     throw std::runtime_error("test");
   }
 };
-}
+} // namespace folly
 
 TEST_F(LoggerTest, toStringError) {
   // Use the folly::to<string> log API, with an object that will throw
index 9de6ce4..2c9a65b 100644 (file)
@@ -65,7 +65,7 @@ class TestLogWriter : public LogWriter {
  private:
   std::vector<std::string> messages_;
 };
-}
+} // namespace
 
 TEST(StandardLogHandler, simple) {
   auto writer = make_shared<TestLogWriter>();
index 32cba46..c2dd00b 100644 (file)
@@ -53,4 +53,4 @@ class TestLogHandler : public LogHandler {
   std::vector<std::pair<LogMessage, const LogCategory*>> messages_;
   uint64_t flushCount_{0};
 };
-}
+} // namespace folly
index b24085b..c148fb5 100644 (file)
@@ -20,4 +20,4 @@ namespace logging_test {
 void testXlogFile1Dbg1(folly::StringPiece msg) {
   XLOG(DBG1) << "file1: " << msg;
 }
-}
+} // namespace logging_test
index db91671..697fc7f 100644 (file)
@@ -20,4 +20,4 @@ namespace logging_test {
 void testXlogFile2Dbg1(folly::StringPiece msg) {
   XLOG(DBG1, "file2: ", msg);
 }
-}
+} // namespace logging_test
index 262989e..63dac93 100644 (file)
@@ -32,4 +32,4 @@ inline void testXlogHdrLoop(size_t numIters, folly::StringPiece arg) {
 // Prototypes for functions defined in XlogFile1.cpp and XlogFile2.cpp
 void testXlogFile1Dbg1(folly::StringPiece msg);
 void testXlogFile2Dbg1(folly::StringPiece msg);
-}
+} // namespace logging_test
index 93735a6..80dec14 100644 (file)
@@ -22,4 +22,4 @@ namespace logging_test {
 inline void testXlogHdrFunction(folly::StringPiece str, int value) {
   XLOG(DBG3, "test: ", str, "=", value);
 }
-}
+} // namespace logging_test
index 42e2564..e5c8e5b 100644 (file)
@@ -132,4 +132,4 @@ LogLevel XlogLevelInfo<false>::loadLevelFull(
 // compiled or not.
 template class XlogLevelInfo<true>;
 template class XlogCategoryInfo<true>;
-}
+} // namespace folly
index a8abbd5..f8fc435 100644 (file)
@@ -381,7 +381,7 @@ class XlogCategoryInfo<false> {
  * XLOG_SET_CATEGORY_NAME() has not been used.
  */
 std::string getXlogCategoryNameForFile(folly::StringPiece filename);
-}
+} // namespace folly
 
 /*
  * We intentionally use an unnamed namespace inside a header file here.
@@ -440,5 +440,5 @@ constexpr inline bool isXlogCategoryOverridden(T) {
  * statement.
  */
 ::folly::XlogFileScopeInfo xlogFileScopeInfo;
-}
-}
+} // namespace xlog_detail
+} // namespace
index 14d3339..70e5b8b 100644 (file)
@@ -157,5 +157,5 @@ ObserverCreator<Observable, Traits>::getObserver()&& {
 
   return observer;
 }
-}
-}
+} // namespace observer
+} // namespace folly
index b2e38c1..9dd4392 100644 (file)
@@ -54,7 +54,7 @@ class ObserverCreator {
 
   std::shared_ptr<Context> context_;
 };
-}
-}
+} // namespace observer
+} // namespace folly
 
 #include <folly/experimental/observer/Observable-inl.h>
index bdc62a0..ffcf828 100644 (file)
@@ -72,5 +72,5 @@ const Snapshot<T>& TLObserver<T>::getSnapshotRef() const {
 
   return snapshot;
 }
-}
-}
+} // namespace observer
+} // namespace folly
index 192293e..aa1f200 100644 (file)
@@ -201,7 +201,7 @@ struct ObserverTraits<T, true> {
 
 template <typename T, bool CacheInThreadLocal>
 using ObserverT = typename ObserverTraits<T, CacheInThreadLocal>::type;
-}
-}
+} // namespace observer
+} // namespace folly
 
 #include <folly/experimental/observer/Observer-inl.h>
index 07e1d81..7aaa521 100644 (file)
@@ -78,5 +78,5 @@ Observer<T> SimpleObservable<T>::getObserver() {
   });
   return *observer_;
 }
-}
-}
+} // namespace observer
+} // namespace folly
index 55803ca..38367b5 100644 (file)
@@ -44,7 +44,7 @@ class SimpleObservable {
   std::once_flag observerInit_;
   folly::Optional<Observer<T>> observer_;
 };
-}
-}
+} // namespace observer
+} // namespace folly
 
 #include <folly/experimental/observer/SimpleObservable-inl.h>
index f244ea6..c692c04 100644 (file)
@@ -178,5 +178,5 @@ void Core::removeStaleDependents() {
     }
   });
 }
-}
-}
+} // namespace observer_detail
+} // namespace folly
index aa8f864..2636ef2 100644 (file)
@@ -111,5 +111,5 @@ class Core : public std::enable_shared_from_this<Core> {
 
   std::mutex refreshMutex_;
 };
-}
-}
+} // namespace observer_detail
+} // namespace folly
index e785e08..07c2798 100644 (file)
@@ -76,5 +76,5 @@ class GraphCycleDetector {
 
   std::unordered_map<NodeId, NodeSet> edges_;
 };
-}
-}
+} // namespace observer_detail
+} // namespace folly
index 9401530..6662488 100644 (file)
@@ -41,5 +41,5 @@ using ResultOf =
 template <typename F>
 using ResultOfUnwrapSharedPtr =
     typename UnwrapSharedPtr<typename std::result_of<F()>::type>::type;
-}
-}
+} // namespace observer_detail
+} // namespace folly
index e9312db..754e0c5 100644 (file)
@@ -40,7 +40,7 @@ static constexpr StringPiece kObserverManagerThreadNamePrefix{"ObserverMngr"};
 namespace {
 constexpr size_t kCurrentQueueSize{10 * 1024};
 constexpr size_t kNextQueueSize{10 * 1024};
-}
+} // namespace
 
 class ObserverManager::CurrentQueue {
  public:
@@ -201,5 +201,5 @@ folly::Singleton<ObserverManager> ObserverManager::Singleton::instance(
 std::shared_ptr<ObserverManager> ObserverManager::getInstance() {
   return Singleton::instance.try_get();
 }
-}
-}
+} // namespace observer_detail
+} // namespace folly
index cfb1e70..19b621a 100644 (file)
@@ -215,5 +215,5 @@ class ObserverManager {
   using CycleDetector = GraphCycleDetector<const Core*>;
   folly::Synchronized<CycleDetector, std::mutex> cycleDetector_;
 };
-}
-}
+} // namespace observer_detail
+} // namespace folly
index 19a556c..95eac12 100644 (file)
@@ -375,4 +375,5 @@ void bmJumpTo(const List& list, const std::vector<uint32_t>& data,
   }
 }
 
-}}  // namespaces
+} // namespace compression
+} // namespace folly
index 28e5e5e..9b2048a 100644 (file)
@@ -127,4 +127,5 @@ TEST(ProgramOptionsTest, Aliases) {
                   "a", "b"}));
 }
 
-}}  // namespaces
+} // namespace test
+} // namespace folly
index 2a662af..14cb1e4 100644 (file)
@@ -174,4 +174,5 @@ TEST(ProgramOptionsTest, GNUStyleSubCommandUnrecognizedOptionFirst) {
           "-xy"}));
 }
 
-}}  // namespaces
+} // namespace test
+} // namespace folly
index 4072890..4807846 100644 (file)
@@ -83,7 +83,7 @@ BENCHMARK(TLRefCountFourThreads, n) {
   benchmark<TLRefCount, 4>(n);
 }
 
-}
+} // namespace folly
 
 int main(int argc, char** argv) {
   gflags::ParseCommandLineFlags(&argc, &argv, true);
index 65c338a..a63de14 100644 (file)
@@ -131,4 +131,4 @@ TEST(TLRefCount, Stress) {
   // do it that many times.
   stressTest<TLRefCount>(500);
 }
-}
+} // namespace folly
index 586a654..53959e1 100644 (file)
@@ -148,4 +148,5 @@ TEST(TupleOps, TupleTo2) {
 
 #undef CHECK_TUPLE_TO
 
-}}  // namespaces
+} // namespace test
+} // namespace folly
index 79237cf..b779225 100644 (file)
@@ -127,5 +127,5 @@ addTasks(InputIterator first, InputIterator last) {
 
   return std::move(iterator);
 }
-}
-}
+} // namespace fibers
+} // namespace folly
index 936ed22..6b95a54 100644 (file)
@@ -128,7 +128,7 @@ class TaskIterator {
 
   folly::Try<T> awaitNextResult();
 };
-}
-}
+} // namespace fibers
+} // namespace folly
 
 #include <folly/fibers/AddTasks-inl.h>
index dd2149c..6078680 100644 (file)
@@ -135,5 +135,5 @@ class BatchDispatcher {
   ExecutorT& executor_;
   std::shared_ptr<DispatchState> state_;
 };
-}
-}
+} // namespace fibers
+} // namespace folly
index ee753ed..fe9d45a 100644 (file)
@@ -109,5 +109,5 @@ bool Baton::timed_wait(const std::chrono::time_point<C, D>& timeout) {
     return timed_wait(TimeoutController::Duration(0));
   }
 }
-}
-}
+} // namespace fibers
+} // namespace folly
index 7dca7e0..733147a 100644 (file)
@@ -193,5 +193,5 @@ void Baton::TimeoutHandler::cancelTimeout() {
     fiberManager_->timeoutManager_->cancel(timeoutPtr_);
   }
 }
-}
-}
+} // namespace fibers
+} // namespace folly
index 9fd8c32..768da60 100644 (file)
@@ -185,7 +185,7 @@ class Baton {
     } futex_;
   };
 };
-}
-}
+} // namespace fibers
+} // namespace folly
 
 #include <folly/fibers/Baton-inl.h>
index 10a2e64..afc0520 100644 (file)
@@ -235,5 +235,5 @@ void* Fiber::LocalData::allocateHeapBuffer(size_t size) {
 void Fiber::LocalData::freeHeapBuffer(void* buffer) {
   delete[] reinterpret_cast<char*>(buffer);
 }
-}
-}
+} // namespace fibers
+} // namespace folly
index 36af25e..93ce856 100644 (file)
@@ -183,7 +183,7 @@ class Fiber {
   size_t asanMainStackSize_{0};
 #endif
 };
-}
-}
+} // namespace fibers
+} // namespace folly
 
 #include <folly/fibers/Fiber-inl.h>
index df95065..e8ddde6 100644 (file)
@@ -50,5 +50,5 @@ auto FiberManager::addTaskRemoteFuture(F&& func) -> folly::Future<
       });
   return f;
 }
-}
-}
+} // namespace fibers
+} // namespace folly
index 9155078..3c01ce1 100644 (file)
@@ -354,7 +354,7 @@ class ScopedAlternateSignalStack {
   using AltStackBuffer = std::array<char, kAltStackSize>;
   std::unique_ptr<AltStackBuffer> stack_;
 };
-}
+} // namespace
 
 void FiberManager::registerAlternateSignalStack() {
   static folly::SingletonThreadLocal<ScopedAlternateSignalStack> singleton;
@@ -363,5 +363,5 @@ void FiberManager::registerAlternateSignalStack() {
   alternateSignalStackRegistered_ = true;
 }
 #endif
-}
-}
+} // namespace fibers
+} // namespace folly
index 20aa1d9..e8b36cc 100644 (file)
@@ -541,5 +541,5 @@ typename FirstArgOf<F>::type::value_type inline await(F&& func) {
 
   return Promise<Result, BatonT>::await(std::forward<F>(func));
 }
-}
-}
+} // namespace fibers
+} // namespace folly
index f944789..508967c 100644 (file)
@@ -576,7 +576,7 @@ inline void yield() {
     std::this_thread::yield();
   }
 }
-}
-}
+} // namespace fibers
+} // namespace folly
 
 #include <folly/fibers/FiberManagerInternal-inl.h>
index a4d75bf..767bc13 100644 (file)
@@ -191,5 +191,5 @@ FiberManager& getFiberManager(
     const FiberManager::Options& opts) {
   return ThreadLocalCache<VirtualEventBase>::get(evb, opts);
 }
-}
-}
+} // namespace fibers
+} // namespace folly
index bda29d7..a6cbb49 100644 (file)
@@ -29,5 +29,5 @@ FiberManager& getFiberManager(
 FiberManager& getFiberManager(
     folly::VirtualEventBase& evb,
     const FiberManager::Options& opts = FiberManager::Options());
-}
-}
+} // namespace fibers
+} // namespace folly
index 1e0fa9f..93dbeba 100644 (file)
@@ -23,5 +23,5 @@ namespace folly {
 namespace fibers {
 
 typedef Baton GenericBaton;
-}
-}
+} // namespace fibers
+} // namespace folly
index 0c3be85..0272842 100644 (file)
@@ -230,7 +230,7 @@ void installSignalHandler() {
     sigaction(SIGSEGV, &sa, &oldSigsegvAction);
   });
 }
-}
+} // namespace
 
 #endif
 
index c34381c..39fd58f 100644 (file)
@@ -112,5 +112,5 @@ typename Promise<T, BatonT>::value_type Promise<T, BatonT>::await(F&& func) {
 
   return std::move(result).value();
 }
-}
-}
+} // namespace fibers
+} // namespace folly
index f42d62d..c87faf9 100644 (file)
@@ -99,7 +99,7 @@ class Promise {
       std::is_same<T, void>::value>::type
   fulfilHelper(F&& func);
 };
-}
-}
+} // namespace fibers
+} // namespace folly
 
 #include <folly/fibers/Promise-inl.h>
index a6db21a..de5621b 100644 (file)
@@ -333,5 +333,5 @@ void TimedRWMutex<BatonType>::downgrade() {
     }
   }
 }
-}
-}
+} // namespace fibers
+} // namespace folly
index 671409a..f965abe 100644 (file)
@@ -228,7 +228,7 @@ class TimedRWMutex {
   MutexWaiterList read_waiters_; //< List of thread / fibers waiting for
   //  shared access
 };
-}
-}
+} // namespace fibers
+} // namespace folly
 
 #include "TimedMutex-inl.h"
index f1bf711..df91aec 100644 (file)
@@ -104,5 +104,5 @@ void TimeoutController::cancel(intptr_t p) {
     list.pop();
   }
 }
-}
-}
+} // namespace fibers
+} // namespace folly
index 5e4b04c..0dde5e3 100644 (file)
@@ -67,5 +67,5 @@ class TimeoutController
   TimePoint nextTimeout_;
   LoopController& loopController_;
 };
-}
-}
+} // namespace fibers
+} // namespace folly
index 66b3004..38453d3 100644 (file)
@@ -204,5 +204,5 @@ typename std::enable_if<
   assert(result.size() == 1);
   return std::move(result[0]);
 }
-}
-}
+} // namespace fibers
+} // namespace folly
index ef40206..a6de6b5 100644 (file)
@@ -139,7 +139,7 @@ typename std::enable_if<
             typename std::iterator_traits<InputIterator>::value_type()>::type,
         void>::value,
     size_t>::type inline collectAny(InputIterator first, InputIterator last);
-}
-}
+} // namespace fibers
+} // namespace folly
 
 #include <folly/fibers/WhenN-inl.h>
index 847149f..1dad237 100644 (file)
@@ -914,7 +914,7 @@ void expectMainContext(bool& ran, int* mainLocation, int* fiberLocation) {
   EXPECT_FALSE(ran);
   ran = true;
 }
-}
+} // namespace
 
 TEST(FiberManager, runInMainContext) {
   FiberManager manager(std::make_unique<SimpleLoopController>());
index cce6fec..8bf39fd 100644 (file)
@@ -161,4 +161,4 @@ auto uncurry(F&& f)
 }
 
 //////////////////////////////////////////////////////////////////////
-}
+} // namespace folly
index e661e47..208426b 100644 (file)
@@ -123,7 +123,7 @@ struct Mover {
 
 void move_only_func(Mover&&) {}
 
-}
+} // namespace
 
 TEST(ApplyTuple, Test) {
   auto argsTuple = std::make_tuple(1, 2, 3.0);
index 62d1113..72714cb 100644 (file)
@@ -105,4 +105,5 @@ folly::Future<bool> Barrier::wait() {
   return future;
 }
 
-}}  // namespaces
+} // namespace futures
+} // namespace folly
index 32f03fb..80589c4 100644 (file)
@@ -93,4 +93,5 @@ class Barrier {
   std::atomic<ControlBlock*> controlBlock_;
 };
 
-}}  // namespaces
+} // namespace futures
+} // namespace folly
index b903a64..7c8c7af 100644 (file)
@@ -1466,15 +1466,15 @@ Future<Unit> times(const int n, F&& thunk) {
 }
 
 namespace futures {
-  template <class It, class F, class ItT, class Result>
-  std::vector<Future<Result>> map(It first, It last, F func) {
-    std::vector<Future<Result>> results;
-    for (auto it = first; it != last; it++) {
-      results.push_back(it->then(func));
-    }
-    return results;
+template <class It, class F, class ItT, class Result>
+std::vector<Future<Result>> map(It first, It last, F func) {
+  std::vector<Future<Result>> results;
+  for (auto it = first; it != last; it++) {
+    results.push_back(it->then(func));
   }
+  return results;
 }
+} // namespace futures
 
 // Instantiate the most common Future types to save compile time
 extern template class Future<Unit>;
index 339e6a1..86514b0 100644 (file)
@@ -158,4 +158,4 @@ struct Extract<R (&)(Args...)> {
 
 class Timekeeper;
 
-} // namespace
+} // namespace folly
index 33eb9b9..c4f19a7 100644 (file)
@@ -33,7 +33,7 @@ template class Future<int>;
 template class Future<int64_t>;
 template class Future<std::string>;
 template class Future<double>;
-}
+} // namespace folly
 
 namespace folly { namespace futures {
 
@@ -51,4 +51,5 @@ Future<Unit> sleep(Duration dur, Timekeeper* tk) {
   return tk->after(dur);
 }
 
-}}
+} // namespace futures
+} // namespace folly
index da7b60b..ecbf03d 100644 (file)
@@ -45,4 +45,4 @@ namespace folly {
 [[noreturn]] void throwNoFutureInSplitter() {
   throw NoFutureInSplitter();
 }
-}
+} // namespace folly
index 2b95f9a..9d3bd77 100644 (file)
@@ -94,4 +94,4 @@ class FOLLY_EXPORT NoTimekeeper : public FutureException {
  public:
   NoTimekeeper() : FutureException("No timekeeper available") {}
 };
-}
+} // namespace folly
index e930555..5f2fe24 100644 (file)
@@ -73,4 +73,4 @@ template <class T>
 FutureSplitter<T> splitFuture(Future<T>&& future) {
   return FutureSplitter<T>{std::move(future)};
 }
-}
+} // namespace folly
index 7471228..5c06d30 100644 (file)
@@ -145,4 +145,4 @@ bool Promise<T>::isFulfilled() const noexcept {
   return true;
 }
 
-}
+} // namespace folly
index 6802d4d..905ce5d 100644 (file)
@@ -128,7 +128,7 @@ class Promise {
   void detach();
 };
 
-}
+} // namespace folly
 
 #include <folly/futures/Future.h>
 #include <folly/futures/Promise-inl.h>
index c7b6e5a..362736e 100644 (file)
@@ -135,4 +135,4 @@ bool SharedPromise<T>::isFulfilled() {
   return hasValue_;
 }
 
-}
+} // namespace folly
index 44987ea..d3b363e 100644 (file)
@@ -116,7 +116,7 @@ class SharedPromise {
   std::function<void(exception_wrapper const&)> interruptHandler_;
 };
 
-}
+} // namespace folly
 
 #include <folly/futures/Future.h>
 #include <folly/futures/SharedPromise-inl.h>
index 163ef00..8773188 100644 (file)
@@ -35,4 +35,4 @@ namespace folly {
 ///   futures::sleep(std::chrono::seconds(1));
 using Duration = std::chrono::milliseconds;
 
-}
+} // namespace folly
index 3fa3cc0..3f645c5 100644 (file)
@@ -168,4 +168,6 @@ TEST(BarrierTest, Random) {
   }
 }
 
-}}}  // namespaces
+} // namespace test
+} // namespace futures
+} // namespace folly
index 98fa9fd..e122c4b 100644 (file)
@@ -72,7 +72,7 @@ class CallbackLifetimeTest : public testing::Test {
 
   TestExecutor executor{2}; // need at least 2 threads for internal futures
 };
-}
+} // namespace
 
 TEST_F(CallbackLifetimeTest, thenReturnsValue) {
   auto c = mkC();
index 37613cc..4c447ce 100644 (file)
@@ -37,7 +37,7 @@ struct Widget {
     return v_;
   }
 };
-}
+} // namespace
 
 TEST(ConverstionOperator, DirectInitialization) {
   auto future = makeFuture<Widget>(23);
index 5f097ce..08b712e 100644 (file)
@@ -88,7 +88,7 @@ Future<int> onErrorHelperEggs(const eggs_t&) {
 Future<int> onErrorHelperGeneric(const std::exception&) {
   return makeFuture(20);
 }
-}
+} // namespace
 
 TEST(Future, onError) {
   bool theFlag = false;
index 886e733..3da9266 100644 (file)
@@ -95,4 +95,4 @@ class SomeClass {
   }
 };
 
-}
+} // namespace folly
index ae52706..0bdd9ad 100644 (file)
@@ -36,7 +36,7 @@ struct Widget {
     throw std::logic_error("unexpected move assignment");
   }
 };
-}
+} // namespace
 
 TEST(Then, tryConstructor) {
   auto t = Try<Widget>(23);
index 6e39e03..8869517 100644 (file)
@@ -2332,7 +2332,7 @@ const T& operator|(const Optional<T>& opt, const Unwrap&) {
   return opt.value();
 }
 
-} //::detail
+} // namespace detail
 
 /**
  * VirtualGen<T> - For wrapping template types in simple polymorphic wrapper.
index b760aef..a550393 100644 (file)
@@ -407,7 +407,7 @@ class UnwrapOr;
 
 class Unwrap;
 
-}
+} // namespace detail
 
 /**
  * Polymorphic wrapper
index d098dbd..a64e896 100644 (file)
@@ -129,7 +129,7 @@ inline auto byLineImpl(File file, char delim, bool keepDelimiter)
     | resplit(delim, keepDelimiter);
 }
 
-} // !detail
+} // namespace detail
 
 /**
  * Generator which reads lines from a file.
@@ -161,5 +161,5 @@ inline auto byLine(int fd, char delim = '\n')
 
 inline auto byLine(const char* f, char delim = '\n')
   -> decltype(byLine(File(f), delim)) { return byLine(File(f), delim); }
-} // !gen
-} // !folly
+} // namespace gen
+} // namespace folly
index 4157a07..b629ad0 100644 (file)
@@ -64,7 +64,7 @@ template <class S = detail::FileWriter>
 S toFile(File file, std::unique_ptr<IOBuf> buffer) {
   return S(std::move(file), std::move(buffer));
 }
-} // !gen
-} // !folly
+} // namespace gen
+} // namespace folly
 
 #include <folly/gen/File-inl.h>
index db089fe..6330a05 100644 (file)
@@ -34,7 +34,7 @@ class Sub;
 template <class Iterator>
 class ChunkedRangeSource;
 
-}
+} // namespace detail
 
 /**
  * chunked() - For producing values from a container in slices.
@@ -105,7 +105,7 @@ template <class Sink, class Sub = detail::Sub<Sink>>
 Sub sub(Sink sink) {
   return Sub(std::move(sink));
 }
-} // !namespace gen
-} // !namespace folly
+} // namespace gen
+} // namespace folly
 
 #include <folly/gen/Parallel-inl.h>
index 3948168..2636ba1 100644 (file)
@@ -1168,7 +1168,7 @@ bool operator==(const DereferenceWrapper& a, const DereferenceWrapper& b) {
 void PrintTo(const DereferenceWrapper& a, std::ostream* o) {
   *o << "Wrapper{\"" << cEscape<string>(a.data) << "\"}";
 }
-}
+} // namespace
 
 TEST(Gen, DereferenceWithLValueRef) {
   auto original = vector<DereferenceWrapper>{{"foo"}, {"bar"}};
index bf14186..d124b29 100644 (file)
@@ -273,5 +273,5 @@ _128_bits_at_a_time:
 }
 
 #endif
-}
-} // namespace
+} // namespace detail
+} // namespace folly
index 05a6f22..62c9048 100644 (file)
@@ -97,4 +97,5 @@ bool crc32_hw_supported();
  */
 uint32_t
 crc32_sw(const uint8_t* data, size_t nbytes, uint32_t startingChecksum = ~0U);
-}} // folly::detail
+} // namespace detail
+} // namespace folly
index 50f132e..7a4c5b4 100644 (file)
@@ -54,4 +54,4 @@ void init(int* argc, char*** argv, bool removeFlags) {
   folly::symbolizer::installFatalSignalCallbacks();
 #endif
 }
-} //!folly
+} // namespace folly
index 4bb8a9b..2001f30 100644 (file)
@@ -1962,4 +1962,4 @@ void AsyncSSLSocket::getSSLServerCiphers(std::string& serverCiphers) const {
   }
 }
 
-} // namespace
+} // namespace folly
index 8de643b..1f1d679 100644 (file)
@@ -925,4 +925,4 @@ class AsyncSSLSocket : public virtual AsyncSocket {
   bool sessionIDResumed_{false};
 };
 
-} // namespace
+} // namespace folly
index a6fbe6f..86cf3b7 100644 (file)
@@ -237,7 +237,7 @@ int AsyncSocket::SendMsgParamsCallback::getDefaultFlags(
 
 namespace {
 static AsyncSocket::SendMsgParamsCallback defaultSendMsgParamsCallback;
-}
+} // namespace
 
 AsyncSocket::AsyncSocket()
     : eventBase_(nullptr),
index b7a8cca..edd4afc 100644 (file)
@@ -27,4 +27,4 @@ class AsyncSocketBase {
   virtual void getAddress(SocketAddress*) const = 0;
 };
 
-} // namespace
+} // namespace folly
index 65de4b7..be74f7b 100644 (file)
@@ -195,4 +195,4 @@ class DecoratedAsyncTransportWrapper : public folly::AsyncTransportWrapper {
   typename T::UniquePtr transport_;
 };
 
-}
+} // namespace folly
index 4e5346f..d4d8071 100644 (file)
@@ -133,4 +133,4 @@ class DestructorCheck {
   ForwardLink rootGuard_;
 };
 
-}
+} // namespace folly
index 1454c84..83e43cb 100644 (file)
@@ -62,7 +62,7 @@ class EventBaseLocalBaseBase {
   virtual void onEventBaseDestruction(EventBase& evb) = 0;
   virtual ~EventBaseLocalBaseBase() = default;
 };
-}
+} // namespace detail
 template <typename T>
 class EventBaseLocal;
 
index cf5cf6f..cda6311 100644 (file)
@@ -70,4 +70,5 @@ void EventBaseLocalBase::setVoid(EventBase& evb, std::shared_ptr<void>&& ptr) {
 }
 
 std::atomic<uint64_t> EventBaseLocalBase::keyCounter_{0};
-}}
+} // namespace detail
+} // namespace folly
index 703e684..8e4bdce 100644 (file)
@@ -44,7 +44,7 @@ class EventBaseLocalBase : public EventBaseLocalBaseBase, boost::noncopyable {
   uint64_t key_{keyCounter_++};
 };
 
-}
+} // namespace detail
 
 /**
  * A storage abstraction for data that should be tied to an EventBase.
@@ -116,5 +116,4 @@ class EventBaseLocal : public detail::EventBaseLocalBase {
   }
 };
 
-
-}
+} // namespace folly
index fb529ee..c4b25c9 100644 (file)
@@ -60,4 +60,4 @@ void EventBaseThread::start(folly::StringPiece threadName) {
 void EventBaseThread::stop() {
   th_ = nullptr;
 }
-}
+} // namespace folly
index 41940d6..a8c3d30 100644 (file)
@@ -51,4 +51,4 @@ class EventBaseThread {
   EventBaseManager* ebm_;
   std::unique_ptr<ScopedEventBaseThread> th_;
 };
-}
+} // namespace folly
index 11894b5..aff3fa6 100644 (file)
@@ -130,4 +130,4 @@ RequestContext* RequestContext::get() {
   }
   return context.get();
 }
-}
+} // namespace folly
index a4b7a23..ce73330 100644 (file)
@@ -128,4 +128,4 @@ class RequestContextScopeGuard {
     RequestContext::setContext(std::move(prev_));
   }
 };
-}
+} // namespace folly
index 8cd9743..771db00 100644 (file)
@@ -25,7 +25,7 @@ namespace ssl_options_detail {
 void logDfatal(std::exception const& e) {
   LOG(DFATAL) << exceptionStr(e);
 }
-}
+} // namespace ssl_options_detail
 
 constexpr std::array<const char*, 12> SSLCommonOptions::kCipherList;
 constexpr std::array<const char*, 8> SSLCommonOptions::kSignatureAlgorithms;
index 233c362..a808d55 100644 (file)
@@ -24,7 +24,7 @@ namespace ssl {
 
 namespace ssl_options_detail {
 void logDfatal(std::exception const&);
-}
+} // namespace ssl_options_detail
 
 struct SSLCommonOptions {
   /**
index 7ffaae6..bf359f9 100644 (file)
@@ -71,4 +71,4 @@ ScopedEventBaseThread::~ScopedEventBaseThread() {
   th_.join();
 }
 
-}
+} // namespace folly
index 0c6808e..c81ab39 100644 (file)
@@ -69,4 +69,4 @@ class ScopedEventBaseThread {
   folly::Baton<> stop_;
 };
 
-}
+} // namespace folly
index 23f719f..a6b3c1f 100644 (file)
@@ -113,4 +113,4 @@ void TimeoutManager::clearCobTimeouts() {
 TimeoutManager::~TimeoutManager() {
   clearCobTimeouts();
 }
-}
+} // namespace folly
index 46c187b..23a4831 100644 (file)
@@ -61,4 +61,4 @@ void VirtualEventBase::runOnDestruction(EventBase::LoopCallback* callback) {
     callbacks.push_back(*callback);
   });
 }
-}
+} // namespace folly
index 539e770..5120f21 100644 (file)
@@ -179,4 +179,4 @@ class VirtualEventBase : public folly::Executor, public folly::TimeoutManager {
 
   folly::Synchronized<LoopCallbackList> onDestructionCallbacks_;
 };
-}
+} // namespace folly
index db08daa..aa1346a 100644 (file)
@@ -71,4 +71,4 @@ class WriteChainAsyncTransportWrapper :
       folly::WriteFlags flags = folly::WriteFlags::NONE) override = 0;
 };
 
-}
+} // namespace folly
index 832818e..5e197d9 100644 (file)
@@ -31,7 +31,7 @@ namespace {
 static int boringssl_bio_fd_should_retry(int err);
 #endif
 
-}
+} // namespace
 
 namespace folly {
 namespace ssl {
@@ -369,4 +369,4 @@ int boringssl_bio_fd_should_retry(int i) {
 
 #endif // OEPNSSL_IS_BORINGSSL
 
-}
+} // namespace
index 0a184c4..99c8130 100644 (file)
@@ -98,7 +98,7 @@ AsyncSocketException::AsyncSocketExceptionType exTypefromSSLErr(SSLError err) {
       return AsyncSocketException::SSL_ERROR;
   }
 }
-}
+} // namespace
 
 namespace folly {
 
@@ -127,4 +127,4 @@ SSLException::SSLException(SSLError error)
           getSSLErrorString(error).str(),
           0),
       sslError(error) {}
-}
+} // namespace folly
index 2d37c49..ede3e23 100644 (file)
@@ -45,4 +45,4 @@ class SSLException : public folly::AsyncSocketException {
  private:
   SSLError sslError;
 };
-}
+} // namespace folly
index d476f88..10e5211 100644 (file)
@@ -2267,7 +2267,7 @@ TEST(AsyncSSLSocketTest, SendMsgDataCallback) {
 
 #endif
 
-} // namespace
+} // namespace folly
 
 #ifdef SIGPIPE
 ///////////////////////////////////////////////////////////////////////////
index cb7ade4..0ee1287 100644 (file)
@@ -1502,4 +1502,4 @@ class EventBaseAborter : public AsyncTimeout {
   EventBase* eventBase_;
 };
 
-}
+} // namespace folly
index 326a077..3cea20d 100644 (file)
@@ -396,4 +396,4 @@ TEST_F(AsyncSSLSocketWriteTest, write_with_eor3) {
   sock_->checkEor(0, 0);
 }
 
-}
+} // namespace folly
index 3d6d41d..66f946a 100644 (file)
@@ -31,7 +31,7 @@ class TestSignalHandler : public AsyncSignalHandler {
 
   bool called{false};
 };
-}
+} // namespace
 
 TEST(AsyncSignalHandler, basic) {
   EventBase evb;
index a9f7e46..e6a52c6 100644 (file)
@@ -88,4 +88,4 @@ TEST(AsyncSocketTest, duplicateBind) {
   EXPECT_THROW(server2->bind(address.getPort()), std::exception);
 }
 
-} // namespace
+} // namespace folly
index 407552a..132875a 100644 (file)
@@ -220,5 +220,5 @@ class TestAcceptCallback : public AsyncServerSocket::AcceptCallback {
 
   std::deque<EventInfo> events_;
 };
-}
-}
+} // namespace test
+} // namespace folly
index ddcd448..4f43ffa 100644 (file)
@@ -46,4 +46,4 @@ TEST(AsyncTransportTest, getSocketFromWrappedTransport) {
   ASSERT_EQ(transportAddr, sock);
 }
 
-} // namespace
+} // namespace folly
index 8690b18..feaf0ee 100644 (file)
@@ -96,4 +96,5 @@ class MockWriteCallback: public AsyncTransportWrapper::WriteCallback {
                  void(size_t, const AsyncSocketException&));
 };
 
-}}
+} // namespace test
+} // namespace folly
index 7ecf055..955a1fc 100644 (file)
@@ -48,4 +48,4 @@ TEST_F(SSLContextTest, TestSetCipherList) {
   ctx.setCipherList(ciphers);
   verifySSLCipherList(ciphers);
 }
-}
+} // namespace folly
index 471f931..f3d7c3e 100644 (file)
@@ -37,4 +37,4 @@ TEST_F(SSLOptionsTest, TestSetCommonCipherList) {
   }
   ASSERT_EQ(nullptr, SSL_get_cipher_list(ssl.get(), i));
 }
-}
+} // namespace folly
index d874509..ad30c80 100644 (file)
@@ -188,4 +188,4 @@ TEST_F(SSLSessionTest, GetSessionID) {
   auto sessID = sess->getSessionID();
   ASSERT_GE(sessID.length(), 0);
 }
-}
+} // namespace folly
index e7aefb4..a331449 100644 (file)
@@ -37,4 +37,4 @@ ScopedBoundPort::~ScopedBoundPort() {
 SocketAddress ScopedBoundPort::getAddress() const {
   return sock_->getAddress();
 }
-}
+} // namespace folly
index bf6aadf..3c508be 100644 (file)
@@ -57,4 +57,4 @@ class ScopedBoundPort {
   std::unique_ptr<ScopedEventBaseThread> ebth_;
   std::shared_ptr<AsyncServerSocket> sock_;
 };
-}
+} // namespace folly
index 0905fdd..638fec3 100644 (file)
@@ -66,4 +66,4 @@ void SocketPair::closeFD1() {
   }
 }
 
-}
+} // namespace folly
index 2f5489c..ec69ce7 100644 (file)
@@ -51,4 +51,4 @@ class SocketPair {
   int fds_[2];
 };
 
-}
+} // namespace folly
index c75afec..bb2d4f8 100644 (file)
@@ -83,4 +83,4 @@ void TestSSLServer::init(bool enableTFO) {
   });
   LOG(INFO) << "Accepting connections on " << address_;
 }
-}
+} // namespace folly
index e03e455..98a7767 100644 (file)
@@ -132,4 +132,4 @@ class TestSSLServer {
  private:
   void init(bool);
 };
-}
+} // namespace folly
index 94c7037..7768559 100644 (file)
@@ -280,4 +280,4 @@ bool checkTimeout(
   return true;
 }
 
-}
+} // namespace folly
index 7b41d1e..311123b 100644 (file)
@@ -83,4 +83,4 @@ bool checkTimeout(
     std::chrono::nanoseconds expected,
     bool allowSmaller,
     std::chrono::nanoseconds tolerance = std::chrono::milliseconds(5));
-}
+} // namespace folly
index 2945f1f..7092813 100644 (file)
@@ -36,8 +36,8 @@ namespace chrono {
 static inline void PrintTo(nanoseconds ns, ::std::ostream* os) {
   *os << ns.count() << "ns";
 }
-}
-}
+} // namespace chrono
+} // namespace std
 
 #ifdef __linux__
 void runThread(nanoseconds duration, nanoseconds* timeWaiting) {
index cc8e441..4cf568a 100644 (file)
@@ -105,4 +105,4 @@ class UndelayedDestruction : public TDD {
   UndelayedDestruction& operator=(UndelayedDestruction const &) = delete;
 };
 
-}
+} // namespace folly
index 10cf02c..6925cda 100644 (file)
@@ -82,4 +82,5 @@ TEST(WriteChainAsyncTransportWrapperTest, TestSimpleBuf) {
   transport.write(nullptr, buf->data(), buf->length());
 }
 
-}}
+} // namespace test
+} // namespace folly
index 0ae9fd9..3f6a7c7 100644 (file)
@@ -109,4 +109,4 @@ TEST(WriteFlagsTest, compoundAssignmentIntersectionOperator) {
   ASSERT_EQ(flags, WriteFlags::NONE);
 }
 
-} // namespace
+} // namespace folly
index 319b528..ae6a40d 100644 (file)
@@ -57,7 +57,7 @@ void checkConsistency(const IOBufQueue& queue) {
   }
 }
 
-}
+} // namespace
 
 TEST(IOBufQueue, Simple) {
   IOBufQueue queue(clOptions);
index 03a2b52..029278e 100644 (file)
@@ -597,7 +597,7 @@ dynamic parseValue(Input& in) {
          in.error("expected json value");
 }
 
-}
+} // namespace
 
 //////////////////////////////////////////////////////////////////////
 
@@ -813,7 +813,7 @@ std::string stripComments(StringPiece jsonC) {
   return result;
 }
 
-}
+} // namespace json
 
 //////////////////////////////////////////////////////////////////////
 
@@ -868,4 +868,4 @@ void PrintTo(const dynamic& dyn, std::ostream* os) {
 
 //////////////////////////////////////////////////////////////////////
 
-}
+} // namespace folly
index 788587a..a521553 100644 (file)
@@ -53,102 +53,102 @@ namespace folly {
 
 namespace json {
 
-  struct serialization_opts {
-    explicit serialization_opts()
-        : allow_non_string_keys(false),
-          javascript_safe(false),
-          pretty_formatting(false),
-          encode_non_ascii(false),
-          validate_utf8(false),
-          allow_trailing_comma(false),
-          sort_keys(false),
-          skip_invalid_utf8(false),
-          allow_nan_inf(false),
-          double_mode(double_conversion::DoubleToStringConverter::SHORTEST),
-          double_num_digits(0), // ignored when mode is SHORTEST
-          double_fallback(false),
-          parse_numbers_as_strings(false),
-          recursion_limit(100) {}
-
-    // If true, keys in an object can be non-strings.  (In strict
-    // JSON, object keys must be strings.)  This is used by dynamic's
-    // operator<<.
-    bool allow_non_string_keys;
-
-    /*
-     * If true, refuse to serialize 64-bit numbers that cannot be
-     * precisely represented by fit a double---instead, throws an
-     * exception if the document contains this.
-     */
-    bool javascript_safe;
-
-    // If true, the serialized json will contain space and newlines to
-    // try to be minimally "pretty".
-    bool pretty_formatting;
-
-    // If true, non-ASCII utf8 characters would be encoded as \uXXXX.
-    bool encode_non_ascii;
-
-    // Check that strings are valid utf8
-    bool validate_utf8;
-
-    // Allow trailing comma in lists of values / items
-    bool allow_trailing_comma;
-
-    // Sort keys of all objects before printing out (potentially slow)
-    // using dynamic::operator<.
-    // Has no effect if sort_keys_by is set.
-    bool sort_keys;
-
-    // Sort keys of all objects before printing out (potentially slow)
-    // using the provided less functor.
-    Function<bool(dynamic const&, dynamic const&) const> sort_keys_by;
-
-    // Replace invalid utf8 characters with U+FFFD and continue
-    bool skip_invalid_utf8;
-
-    // true to allow NaN or INF values
-    bool allow_nan_inf;
-
-    // Options for how to print floating point values.  See Conv.h
-    // toAppend implementation for floating point for more info
-    double_conversion::DoubleToStringConverter::DtoaMode double_mode;
-    unsigned int double_num_digits;
-
-    // Fallback to double when a value that looks like integer is too big to
-    // fit in an int64_t. Can result in loss a of precision.
-    bool double_fallback;
-
-    // Do not parse numbers. Instead, store them as strings and leave the
-    // conversion up to the user.
-    bool parse_numbers_as_strings;
-
-    // Recursion limit when parsing.
-    unsigned int recursion_limit;
-  };
+struct serialization_opts {
+  explicit serialization_opts()
+      : allow_non_string_keys(false),
+        javascript_safe(false),
+        pretty_formatting(false),
+        encode_non_ascii(false),
+        validate_utf8(false),
+        allow_trailing_comma(false),
+        sort_keys(false),
+        skip_invalid_utf8(false),
+        allow_nan_inf(false),
+        double_mode(double_conversion::DoubleToStringConverter::SHORTEST),
+        double_num_digits(0), // ignored when mode is SHORTEST
+        double_fallback(false),
+        parse_numbers_as_strings(false),
+        recursion_limit(100) {}
+
+  // If true, keys in an object can be non-strings.  (In strict
+  // JSON, object keys must be strings.)  This is used by dynamic's
+  // operator<<.
+  bool allow_non_string_keys;
 
   /*
-   * Main JSON serialization routine taking folly::dynamic parameters.
-   * For the most common use cases there are simpler functions in the
-   * main folly namespace below.
+   * If true, refuse to serialize 64-bit numbers that cannot be
+   * precisely represented by fit a double---instead, throws an
+   * exception if the document contains this.
    */
-  std::string serialize(dynamic const&, serialization_opts const&);
+  bool javascript_safe;
 
-  /*
-   * Escape a string so that it is legal to print it in JSON text and
-   * append the result to out.
-   */
+  // If true, the serialized json will contain space and newlines to
+  // try to be minimally "pretty".
+  bool pretty_formatting;
 
-  void escapeString(
-      StringPiece input,
-      std::string& out,
-      const serialization_opts& opts);
+  // If true, non-ASCII utf8 characters would be encoded as \uXXXX.
+  bool encode_non_ascii;
 
-  /*
-   * Strip all C99-like comments (i.e. // and / * ... * /)
-   */
-  std::string stripComments(StringPiece jsonC);
-}
+  // Check that strings are valid utf8
+  bool validate_utf8;
+
+  // Allow trailing comma in lists of values / items
+  bool allow_trailing_comma;
+
+  // Sort keys of all objects before printing out (potentially slow)
+  // using dynamic::operator<.
+  // Has no effect if sort_keys_by is set.
+  bool sort_keys;
+
+  // Sort keys of all objects before printing out (potentially slow)
+  // using the provided less functor.
+  Function<bool(dynamic const&, dynamic const&) const> sort_keys_by;
+
+  // Replace invalid utf8 characters with U+FFFD and continue
+  bool skip_invalid_utf8;
+
+  // true to allow NaN or INF values
+  bool allow_nan_inf;
+
+  // Options for how to print floating point values.  See Conv.h
+  // toAppend implementation for floating point for more info
+  double_conversion::DoubleToStringConverter::DtoaMode double_mode;
+  unsigned int double_num_digits;
+
+  // Fallback to double when a value that looks like integer is too big to
+  // fit in an int64_t. Can result in loss a of precision.
+  bool double_fallback;
+
+  // Do not parse numbers. Instead, store them as strings and leave the
+  // conversion up to the user.
+  bool parse_numbers_as_strings;
+
+  // Recursion limit when parsing.
+  unsigned int recursion_limit;
+};
+
+/*
+ * Main JSON serialization routine taking folly::dynamic parameters.
+ * For the most common use cases there are simpler functions in the
+ * main folly namespace below.
+ */
+std::string serialize(dynamic const&, serialization_opts const&);
+
+/*
+ * Escape a string so that it is legal to print it in JSON text and
+ * append the result to out.
+ */
+
+void escapeString(
+    StringPiece input,
+    std::string& out,
+    const serialization_opts& opts);
+
+/*
+ * Strip all C99-like comments (i.e. // and / * ... * /)
+ */
+std::string stripComments(StringPiece jsonC);
+} // namespace json
 
 //////////////////////////////////////////////////////////////////////
 
@@ -177,4 +177,4 @@ std::string toPrettyJson(dynamic const&);
 void PrintTo(const dynamic&, std::ostream*);
 //////////////////////////////////////////////////////////////////////
 
-}
+} // namespace folly
index 2ed0f05..946b939 100644 (file)
@@ -42,4 +42,4 @@ inline void asm_volatile_pause() {
   asm volatile("or 27,27,27");
 #endif
 }
-}
+} // namespace folly