sapling/eden/fs/utils/ChronoParse.h
Andres Suarez fbdb46f5cb Tidy up license headers
Reviewed By: chadaustin

Differential Revision: D17872966

fbshipit-source-id: cd60a364a2146f0dadbeca693b1d4a5d7c97ff63
2019-10-11 05:28:23 -07:00

62 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