[llvm-commits] CVS: llvm/include/llvm/ADT/APInt.h

Chris Lattner clattner at apple.com
Thu Feb 8 10:02:24 PST 2007


>>  // 
>> ===------------------------------------------------------------------ 
>> ----===//
>>  //                              APInt Class
>>  // 
>> ===------------------------------------------------------------------ 
>> ----===//
>> @@ -40,14 +55,18 @@
>>  class APInt {
>>    /// Friend Functions of APInt declared here. For detailed  
>> comments,
>>    /// see bottom of this file.
>> -  friend bool isIntN(unsigned N, const APInt& APIVal);
>> -  friend APInt ByteSwap(const APInt& APIVal);
>> -  friend APInt LogBase2(const APInt& APIVal);
>> -  friend double APIntToDouble(const APInt& APIVal);
>> -  friend float APIntToFloat(const APInt& APIVal);
>> +  friend bool APIntOps::isIntN(unsigned N, const APInt& APIVal);
>> +  friend APInt APIntOps::ByteSwap(const APInt& APIVal);
>> +  friend APInt APIntOps::LogBase2(const APInt& APIVal);
>> +  friend APInt APIntOps::ashr(const APInt& LHS, unsigned shiftAmt);
>> +  friend APInt APIntOps::lshr(const APInt& LHS, unsigned shiftAmt);
>> +  friend APInt APIntOps::shl(const APInt& LHS, unsigned shiftAmt);
>> +  friend APInt APIntOps::sdiv(const APInt& LHS, const APInt& RHS);
>> +  friend APInt APIntOps::udiv(const APInt& LHS, const APInt& RHS);
>> +  friend APInt APIntOps::srem(const APInt& LHS, const APInt& RHS);
>> +  friend APInt APIntOps::urem(const APInt& LHS, const APInt& RHS);
>
> There's a lot of friend functions here. Perhaps these could go at the
> bottom of the class declaration instead of the top.

Actually, please make each of these a public method.  This provides  
the ugly "X = X.udiv(Y)" syntax.  Then add the namespace versions as  
simple inline functions that that just call the method version.

-Chris



More information about the llvm-commits mailing list