sapling/eden/fs/utils/ChronoParse.h
Adam Simpkins aa5e6c7295 update license headers in C++ files
Summary:
Update the copyright & license headers in C++ files to reflect the
relicensing to GPLv2

Reviewed By: wez

Differential Revision: D15487078

fbshipit-source-id: 19f24c933a64ecad0d3a692d0f8d2a38b4194b1d
2019-06-19 17:02:45 -07:00

61 lines
1.4 KiB
C++

/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This software may be used and distributed according to the terms of the
* GNU General Public License version 2.
*/
#pragma once
#include <chrono>
#include <folly/Expected.h>
#include <folly/Portability.h>
#include <folly/Range.h>
namespace facebook {
namespace eden {
enum class ChronoParseError {
UnknownUnit,
InvalidChronoUnitOrder,
Overflow,
EmptyInputString,
InvalidLeadingChar,
NoDigits,
NonDigitChar,
NonWhitespaceAfterEnd,
OtherError,
};
/**
* Get a human-readable string describing a ChronoParseError code.
*/
folly::StringPiece chronoParseErrorToString(ChronoParseError error);
/**
* Append the human-readable description of a ChronoParseError to a string.
*
* This allows ChronoParseError arguments to be used with
* folly::to<std::string>().
*/
template <typename String>
void toAppend(ChronoParseError error, String* result) {
toAppend(chronoParseErrorToString(error), result);
}
/**
* Parse a string to a std::chrono::nanoseconds duration.
*/
FOLLY_NODISCARD folly::Expected<std::chrono::nanoseconds, ChronoParseError>
stringToDuration(folly::StringPiece src);
/**
* Convert a duration value to a string.
*
* The resulting string can be parsed with stringToDuration().
*/
std::string durationToString(std::chrono::nanoseconds duration);
} // namespace eden
} // namespace facebook