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 21 namespace clang { 22 namespace interp { 23 24 /// Helper to compare two comparable types. Compare(const T & X,const T & Y)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