1//===------ Primitives.h - Types for the constexpr VM -----------*- C++ -*-===// 2// 3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4// See https://llvm.org/LICENSE.txt for license information. 5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6// 7//===----------------------------------------------------------------------===// 8// 9// Utilities and helper functions for all primitive types: 10// - Integral 11// - Floating 12// - Boolean 13// 14//===----------------------------------------------------------------------===// 15 16#ifndef LLVM_CLANG_AST_INTERP_PRIMITIVES_H 17#define LLVM_CLANG_AST_INTERP_PRIMITIVES_H 18 19#include "clang/AST/ComparisonCategories.h" 20 21namespace clang { 22namespace interp { 23 24/// Helper to compare two comparable types. 25template <typename T> ComparisonCategoryResult Compare(const T &X, const T &Y) { 26 if (X < Y) 27 return ComparisonCategoryResult::Less; 28 if (X > Y) 29 return ComparisonCategoryResult::Greater; 30 return ComparisonCategoryResult::Equal; 31} 32 33} // namespace interp 34} // namespace clang 35 36#endif 37