9#ifndef LLVM_CLANG_STATICANALYZER_CORE_PATHSENSITIVE_APSINTTYPE_H
10#define LLVM_CLANG_STATICANALYZER_CORE_PATHSENSITIVE_APSINTTYPE_H
12#include "llvm/ADT/APSInt.h"
25 : BitWidth(Width), IsUnsigned(
Unsigned) {}
41 Value.setIsUnsigned(IsUnsigned);
48 llvm::APSInt
convert(
const llvm::APSInt &
Value)
const LLVM_READONLY {
56 return llvm::APSInt(BitWidth, IsUnsigned);
61 return llvm::APSInt::getMinValue(BitWidth, IsUnsigned);
66 return llvm::APSInt::getMaxValue(BitWidth, IsUnsigned);
69 llvm::APSInt
getValue(uint64_t RawValue)
const LLVM_READONLY {
70 return (llvm::APSInt(BitWidth, IsUnsigned) = RawValue);
89 bool AllowMixedSign)
const LLVM_READONLY;
92 return BitWidth ==
Other.BitWidth && IsUnsigned ==
Other.IsUnsigned;
100 return std::tie(BitWidth, IsUnsigned) <
A record of the "type" of an APSInt, used for conversions.
llvm::APSInt getZeroValue() const LLVM_READONLY
Returns an all-zero value for this type.
RangeTestResultKind
Used to classify whether a value is representable using this type.
@ RTR_Within
Value is representable using this type.
@ RTR_Below
Value is less than the minimum representable value.
@ RTR_Above
Value is greater than the maximum representable value.
constexpr APSIntType(uint32_t Width, bool Unsigned)
uint32_t getBitWidth() const
bool operator<(const APSIntType &Other) const
Provide an ordering for finding a common conversion type.
RangeTestResultKind testInRange(const llvm::APSInt &Val, bool AllowMixedSign) const LLVM_READONLY
Tests whether a given value is losslessly representable using this type.
llvm::APSInt getMaxValue() const LLVM_READONLY
Returns the maximum value for this type.
void apply(llvm::APSInt &Value) const
Convert a given APSInt, in place, to match this type.
llvm::APSInt getMinValue() const LLVM_READONLY
Returns the minimum value for this type.
llvm::APSInt convert(const llvm::APSInt &Value) const LLVM_READONLY
Convert and return a new APSInt with the given value, but this type's bit width and signedness.
llvm::APSInt getValue(uint64_t RawValue) const LLVM_READONLY
bool operator==(const APSIntType &Other) const
APSIntType(const llvm::APSInt &Value)
The JSON file list parser is used to communicate input to InstallAPI.
@ Result
The result type of a method or function.
@ Other
Other implicit parameter.