mirror of
https://github.com/facebook/sapling.git
synced 2024-10-10 00:45:18 +03:00
fbdb46f5cb
Reviewed By: chadaustin Differential Revision: D17872966 fbshipit-source-id: cd60a364a2146f0dadbeca693b1d4a5d7c97ff63
32 lines
776 B
C++
32 lines
776 B
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 <folly/FBString.h>
|
|
#include <string>
|
|
|
|
namespace facebook {
|
|
namespace eden {
|
|
template <typename StringType>
|
|
bool isStringStorageEmbedded(const StringType& t) {
|
|
const void* tbegin = &t;
|
|
const void* tend = &t + 1;
|
|
return std::less_equal<const void*>{}(tbegin, t.data()) &&
|
|
std::less<const void*>{}(t.data(), tend);
|
|
}
|
|
|
|
template <typename StringType>
|
|
size_t estimateIndirectMemoryUsage(const StringType& s) {
|
|
if (isStringStorageEmbedded(s)) {
|
|
return 0;
|
|
} else {
|
|
return folly::goodMallocSize(s.capacity());
|
|
}
|
|
}
|
|
} // namespace eden
|
|
} // namespace facebook
|