class CF::Number
Wrapper for CFNumberRef
Public Class Methods
from_f(float)
click to toggle source
Constructs a CF::Number
from a float @param [Float] float @return [CF::Number]
# File lib/corefoundation/number.rb, line 39 def self.from_f(float) p = FFI::MemoryPointer.new(:double) p.write_double(float.to_f) new(CF.CFNumberCreate(nil, :kCFNumberDoubleType, p)) end
from_i(int)
click to toggle source
Constructs a CF::Number
from an integer @param [Integer] int @return [CF::Number]
# File lib/corefoundation/number.rb, line 48 def self.from_i(int) p = FFI::MemoryPointer.new(:int64) p.put_int64(0,int.to_i) new(CF.CFNumberCreate(nil, :kCFNumberSInt64Type, p)) end
Public Instance Methods
<=>(other)
click to toggle source
Compares the receiver with the argument @param [CF::Number] other @return [Integer]
# File lib/corefoundation/number.rb, line 57 def <=>(other) raise TypeError, "argument should be CF::Number" unless other.is_a?(CF::Number) CF.CFNumberCompare(self,other,nil) end
to_f()
click to toggle source
Converts the CF::Number
to a float May raise if the conversion cannot be done without loss of precision @return [Float]
# File lib/corefoundation/number.rb, line 89 def to_f p = FFI::MemoryPointer.new(:double) if CF.CFNumberGetValue(self, :kCFNumberDoubleType, p) != 0 p.read_double else raise "CF.CFNumberGetValue failed to convert #{self.inspect} to kCFNumberDoubleType" end end
to_i()
click to toggle source
Converts the CF::Number
to an integer May raise if the conversion cannot be done without loss of precision @return [Integer]
# File lib/corefoundation/number.rb, line 77 def to_i p = FFI::MemoryPointer.new(:int64) if CF.CFNumberGetValue(self, :kCFNumberSInt64Type, p) != 0 p.get_int64 0 else raise "CF.CFNumberGetValue failed to convert #{self.inspect} to kCFNumberSInt64Type" end end
to_ruby()
click to toggle source
Converts the CF::Number
to either an Integer or a Float, depending on the result of CFNumberIsFloatType
@return [Integer, Float]
# File lib/corefoundation/number.rb, line 66 def to_ruby if CF.CFNumberIsFloatType(self) == 0 to_i else to_f end end