lib/free-image/errors.rb in free-image-0.6.2 vs lib/free-image/errors.rb in free-image-0.7.0

- old
+ new

@@ -1,44 +1,44 @@ -module FreeImage - LAST_ERROR = 'free_image_error' - - #typedef void (*FreeImage_OutputMessageFunction)(FREE_IMAGE_FORMAT fif, const char *msg); - #typedef void (DLL_CALLCONV *FreeImage_OutputMessageFunctionStdCall)(FREE_IMAGE_FORMAT fif, const char *msg); - callback(:output_message_callback, [:format, :pointer], :void) - - if FFI::Platform.windows? - #DLL_API void DLL_CALLCONV FreeImage_SetOutputMessageStdCall(FreeImage_OutputMessageFunctionStdCall omf); - attach_function('FreeImage_SetOutputMessage', 'FreeImage_SetOutputMessageStdCall', [:output_message_callback], :void) - else - #DLL_API void DLL_CALLCONV FreeImage_SetOutputMessage(FreeImage_OutputMessageFunction omf); - attach_function('FreeImage_SetOutputMessage', [:output_message_callback], :void) - end - - class Error < StandardError - attr_reader :format - - def initialize(format, message) - @format = format - super(message) - end - -# def to_s -# "#{self.message} Format: #{self.format}" -# end - end - - CALLBACK = Proc.new do |format, ptr| - # Create an exception object and stash it away. We can't raise it here - # because FreeImage won't be able to clean up any resources it needs to. - # Instead, the calling code must call check_last_error. - message = ptr.get_string(0) - Thread.current[LAST_ERROR] = Error.new(format, message) - end - FreeImage_SetOutputMessage(CALLBACK) - - def check_last_error - error = Thread.current[LAST_ERROR] - Thread.current[LAST_ERROR] = nil - raise(error) if error - end - module_function :check_last_error +module FreeImage + LAST_ERROR = 'free_image_error' + + #typedef void (*FreeImage_OutputMessageFunction)(FREE_IMAGE_FORMAT fif, const char *msg); + #typedef void (DLL_CALLCONV *FreeImage_OutputMessageFunctionStdCall)(FREE_IMAGE_FORMAT fif, const char *msg); + callback(:output_message_callback, [:format, :pointer], :void) + + if FFI::Platform.windows? + #DLL_API void DLL_CALLCONV FreeImage_SetOutputMessageStdCall(FreeImage_OutputMessageFunctionStdCall omf); + attach_function('FreeImage_SetOutputMessage', 'FreeImage_SetOutputMessageStdCall', [:output_message_callback], :void) + else + #DLL_API void DLL_CALLCONV FreeImage_SetOutputMessage(FreeImage_OutputMessageFunction omf); + attach_function('FreeImage_SetOutputMessage', [:output_message_callback], :void) + end + + class Error < StandardError + attr_reader :format + + def initialize(format, message) + @format = format + super(message) + end + +# def to_s +# "#{self.message} Format: #{self.format}" +# end + end + + CALLBACK = Proc.new do |format, ptr| + # Create an exception object and stash it away. We can't raise it here + # because FreeImage won't be able to clean up any resources it needs to. + # Instead, the calling code must call check_last_error. + message = ptr.get_string(0) + Thread.current[LAST_ERROR] = Error.new(format, message) + end + FreeImage_SetOutputMessage(CALLBACK) + + def check_last_error + error = Thread.current[LAST_ERROR] + Thread.current[LAST_ERROR] = nil + raise(error) if error + end + module_function :check_last_error end \ No newline at end of file