From: Jordan Rose Date: Sat, 22 Sep 2012 01:24:21 +0000 (+0000) Subject: Add llvm::getOrdinalSuffix to get the appropriate -st, -nd, -rd, -th suffix. X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=a2df2ba16a94bf20b9202594d01cfbf370c2091a;p=oota-llvm.git Add llvm::getOrdinalSuffix to get the appropriate -st, -nd, -rd, -th suffix. Used by clang to print parameter indexes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164440 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/ADT/StringExtras.h b/include/llvm/ADT/StringExtras.h index 1ba60ed114f..bf27c4313f8 100644 --- a/include/llvm/ADT/StringExtras.h +++ b/include/llvm/ADT/StringExtras.h @@ -129,6 +129,25 @@ static inline unsigned HashString(StringRef Str, unsigned Result = 0) { return Result; } +/// Returns the English suffix for an ordinal integer (-st, -nd, -rd, -th). +static inline StringRef getOrdinalSuffix(unsigned Val) { + // It is critically important that we do this perfectly for + // user-written sequences with over 100 elements. + switch (Val % 100) { + case 11: + case 12: + case 13: + return "th"; + default: + switch (Val % 10) { + case 1: return "st"; + case 2: return "nd"; + case 3: return "rd"; + default: return "th"; + } + } +} + } // End llvm namespace #endif