-- c321829735accc2e6beb81e6a5a4421e5647b876 by CJ Johnson <johnsoncj@google.com>: Updates the definition of InlinedVector::swap(InlinedVector&) to be exception safe and adds exception safety tests PiperOrigin-RevId: 255511536 -- 0d86445891748efb09430eb9ede267b54185a246 by CJ Johnson <johnsoncj@google.com>: Updates the definition of InlinedVector::erase(...) to be exception safe and adds an exception safety test for it. PiperOrigin-RevId: 255492671 -- f07e8fa62dfe9eb0d025b27fca8c6db43c5a328f by CJ Johnson <johnsoncj@google.com>: Updates the implementation of InlinedVector::emplace_back(...) to be exception safe and adds exception safety tests PiperOrigin-RevId: 255422837 -- 4c3be92bfe4c1636a03cef8fd5aa802fed0d2c61 by Abseil Team <absl-team@google.com>: Internal Change PiperOrigin-RevId: 255422693 -- 6df38ea42f00678c357a539016163f8ac4c084e6 by Gennadiy Rozental <rogeeff@google.com>: Introduce public interfaces for setting and getting program usage messages. PiperOrigin-RevId: 255291467 -- 8f21d594aed3971d37db70226847c693eb548edb by Laramie Leavitt <lar@google.com>: Move absl/random's copy of ABSL_ATTRIBUTE_FORCE_INLINE and ABSL_ATTRIBUTE_NEVER_INLINE into .cc files and rename to prevent conflicts. https://github.com/abseil/abseil-cpp/issues/343 PiperOrigin-RevId: 255288599 -- 6b7430ad0c8bd860fb9394894f5eeedd1acc9f77 by CJ Johnson <johnsoncj@google.com>: Updates the ScopedAllocatorWorks test for InlinedVector to not rely on the byte count allocated by the standard library In doing so, removes LegacyNextCapacityFrom(...) impl function from InlinedVector Also applies clang-format to the test file PiperOrigin-RevId: 255207606 GitOrigin-RevId: c321829735accc2e6beb81e6a5a4421e5647b876 Change-Id: I7438211c36c4549fca2e866658f8d579c65d7d52pull/340/head
parent
72e09a54d9
commit
c964fcffac
16 changed files with 525 additions and 374 deletions
@ -0,0 +1,56 @@ |
|||||||
|
//
|
||||||
|
// Copyright 2019 The Abseil Authors.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
#include "absl/flags/usage.h" |
||||||
|
|
||||||
|
#include <string> |
||||||
|
|
||||||
|
#include "absl/flags/internal/usage.h" |
||||||
|
#include "absl/synchronization/mutex.h" |
||||||
|
|
||||||
|
namespace absl { |
||||||
|
namespace flags_internal { |
||||||
|
namespace { |
||||||
|
ABSL_CONST_INIT absl::Mutex usage_message_guard(absl::kConstInit); |
||||||
|
ABSL_CONST_INIT std::string* program_usage_message |
||||||
|
GUARDED_BY(usage_message_guard) = nullptr; |
||||||
|
} // namespace
|
||||||
|
} // namespace flags_internal
|
||||||
|
|
||||||
|
// --------------------------------------------------------------------
|
||||||
|
// Sets the "usage" message to be used by help reporting routines.
|
||||||
|
void SetProgramUsageMessage(absl::string_view new_usage_message) { |
||||||
|
absl::MutexLock l(&flags_internal::usage_message_guard); |
||||||
|
|
||||||
|
if (flags_internal::program_usage_message != nullptr) { |
||||||
|
ABSL_INTERNAL_LOG(FATAL, "SetProgramUsageMessage() called twice."); |
||||||
|
std::exit(1); |
||||||
|
} |
||||||
|
|
||||||
|
flags_internal::program_usage_message = new std::string(new_usage_message); |
||||||
|
} |
||||||
|
|
||||||
|
// --------------------------------------------------------------------
|
||||||
|
// Returns the usage message set by SetProgramUsageMessage().
|
||||||
|
// Note: We able to return string_view here only because calling
|
||||||
|
// SetProgramUsageMessage twice is prohibited.
|
||||||
|
absl::string_view ProgramUsageMessage() { |
||||||
|
absl::MutexLock l(&flags_internal::usage_message_guard); |
||||||
|
|
||||||
|
return flags_internal::program_usage_message != nullptr |
||||||
|
? absl::string_view(*flags_internal::program_usage_message) |
||||||
|
: "Warning: SetProgramUsageMessage() never called"; |
||||||
|
} |
||||||
|
|
||||||
|
} // namespace absl
|
@ -0,0 +1,40 @@ |
|||||||
|
//
|
||||||
|
// Copyright 2019 The Abseil Authors.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
#ifndef ABSL_FLAGS_USAGE_H_ |
||||||
|
#define ABSL_FLAGS_USAGE_H_ |
||||||
|
|
||||||
|
#include "absl/strings/string_view.h" |
||||||
|
|
||||||
|
// --------------------------------------------------------------------
|
||||||
|
// Usage reporting interfaces
|
||||||
|
|
||||||
|
namespace absl { |
||||||
|
|
||||||
|
// Sets the "usage" message to be used by help reporting routines.
|
||||||
|
// For example:
|
||||||
|
// absl::SetProgramUsageMessage(
|
||||||
|
// absl::StrCat("This program does nothing. Sample usage:\n", argv[0],
|
||||||
|
// " <uselessarg1> <uselessarg2>"));
|
||||||
|
// Do not include commandline flags in the usage: we do that for you!
|
||||||
|
// Note: Calling SetProgramUsageMessage twice will trigger a call to std::exit.
|
||||||
|
void SetProgramUsageMessage(absl::string_view new_usage_message); |
||||||
|
|
||||||
|
// Returns the usage message set by SetProgramUsageMessage().
|
||||||
|
absl::string_view ProgramUsageMessage(); |
||||||
|
|
||||||
|
} // namespace absl
|
||||||
|
|
||||||
|
#endif // ABSL_FLAGS_USAGE_H_
|
Loading…
Reference in new issue