diff options
author | Lars Kanis <lars@greiz-reinsdorf.de> | 2020-12-13 19:26:31 +0100 |
---|---|---|
committer | Lars Kanis <lars@greiz-reinsdorf.de> | 2020-12-13 19:26:31 +0100 |
commit | b7cc0a8122cbac5ae9df417ad0299457dba48a63 (patch) | |
tree | b85b0645f367013d6d84722a93eaa4dd71818081 /lib | |
parent | 2b44904f8323dcad3eaa978c1fd2b5298bd04663 (diff) | |
download | ffi-b7cc0a8122cbac5ae9df417ad0299457dba48a63.tar.gz |
Move Pointer#size_limit? to AbstractMemory and from C to ruby
Since size is defined in AbstractMemory, size_limit? should be there as well.
Moving to Ruby code ensures that it works on JRuby and Truffleruby.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/ffi/abstract_memory.rb | 44 | ||||
-rw-r--r-- | lib/ffi/ffi.rb | 1 |
2 files changed, 45 insertions, 0 deletions
diff --git a/lib/ffi/abstract_memory.rb b/lib/ffi/abstract_memory.rb new file mode 100644 index 0000000..e0aa221 --- /dev/null +++ b/lib/ffi/abstract_memory.rb @@ -0,0 +1,44 @@ +# +# Copyright (C) 2020 Lars Kanis +# +# This file is part of ruby-ffi. +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright notice +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# * Neither the name of the Ruby FFI project nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.# + + +module FFI + class AbstractMemory + LONG_MAX = FFI::Pointer.new(1).size + private_constant :LONG_MAX + + # Return +true+ if +self+ has a size limit. + # + # @return [Boolean] + def size_limit? + size != LONG_MAX + end + end +end diff --git a/lib/ffi/ffi.rb b/lib/ffi/ffi.rb index 5201dae..dfffa8c 100644 --- a/lib/ffi/ffi.rb +++ b/lib/ffi/ffi.rb @@ -33,6 +33,7 @@ require 'ffi/data_converter' require 'ffi/types' require 'ffi/library' require 'ffi/errno' +require 'ffi/abstract_memory' require 'ffi/pointer' require 'ffi/memorypointer' require 'ffi/struct' |