# Copyright (c) 2007-2015, Evan Phoenix and contributors
# 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 Rubinius 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.

# This file is automatically generated. It should _not_ be
# modified manually. Due to the vast amount of very similar
# methods in this module, it is automatically generated.

module Rubinius
module FFI
  ##
  # This module provides accessors for various different types. It
  # provides methods for:
  #
  #   * reading data
  #   * writing data
  #   * reading an array of some data
  #   * writing an array of some data
  module PointerAccessors
    #
    # Name: int8
    # Type: char
    # Signed: true
    #

    def read_int8(signed=true)
      primitive_read_char(signed)
    end

    def write_int8(obj)
      primitive_write_char(obj)
    end

    def get_int8(offset)
      (self + offset).read_int8
    end

    def put_int8(offset, obj)
      (self + offset).write_int8(obj)
    end

    def read_array_of_int8(length, signed=true)
      read_array_of_type(:char, :read_char, length, signed)
    end

    def write_array_of_int8(ary)
      write_array_of_type(:char, :write_char, ary)
    end

    def get_array_of_int8(offset, length, signed=true)
      (self + offset).read_array_of_int8(length, signed)
    end

    def put_array_of_int8(offset, ary)
      (self + offset).write_array_of_int8(ary)
    end

    def read_uint8
      self.read_int8(false)
    end

    def write_uint8(obj)
      self.write_int8(obj)
    end

    def get_uint8(offset)
      (self + offset).read_uint8
    end

    def put_uint8(offset, obj)
      (self + offset).write_uint8(obj)
    end

    def read_array_of_uint8(length)
      self.read_array_of_int8(length, false)
    end

    def write_array_of_uint8(ary)
      self.write_array_of_int8(ary)
    end

    def get_array_of_uint8(offset, length)
      (self + offset).read_array_of_uint8(length)
    end

    def put_array_of_uint8(offset, ary)
      (self + offset).write_array_of_uint8(ary)
    end

    #
    # Name: int16
    # Type: short
    # Signed: true
    #

    def read_int16(signed=true)
      primitive_read_short(signed)
    end

    def write_int16(obj)
      primitive_write_short(obj)
    end

    def get_int16(offset)
      (self + offset).read_int16
    end

    def put_int16(offset, obj)
      (self + offset).write_int16(obj)
    end

    def read_array_of_int16(length, signed=true)
      read_array_of_type(:short, :read_short, length, signed)
    end

    def write_array_of_int16(ary)
      write_array_of_type(:short, :write_short, ary)
    end

    def get_array_of_int16(offset, length, signed=true)
      (self + offset).read_array_of_int16(length, signed)
    end

    def put_array_of_int16(offset, ary)
      (self + offset).write_array_of_int16(ary)
    end

    def read_uint16
      self.read_int16(false)
    end

    def write_uint16(obj)
      self.write_int16(obj)
    end

    def get_uint16(offset)
      (self + offset).read_uint16
    end

    def put_uint16(offset, obj)
      (self + offset).write_uint16(obj)
    end

    def read_array_of_uint16(length)
      self.read_array_of_int16(length, false)
    end

    def write_array_of_uint16(ary)
      self.write_array_of_int16(ary)
    end

    def get_array_of_uint16(offset, length)
      (self + offset).read_array_of_uint16(length)
    end

    def put_array_of_uint16(offset, ary)
      (self + offset).write_array_of_uint16(ary)
    end

    #
    # Name: int32
    # Type: int
    # Signed: true
    #

    def read_int32(signed=true)
      primitive_read_int(signed)
    end

    def write_int32(obj)
      primitive_write_int(obj)
    end

    def get_int32(offset)
      (self + offset).read_int32
    end

    def put_int32(offset, obj)
      (self + offset).write_int32(obj)
    end

    def read_array_of_int32(length, signed=true)
      read_array_of_type(:int, :read_int, length, signed)
    end

    def write_array_of_int32(ary)
      write_array_of_type(:int, :write_int, ary)
    end

    def get_array_of_int32(offset, length, signed=true)
      (self + offset).read_array_of_int32(length, signed)
    end

    def put_array_of_int32(offset, ary)
      (self + offset).write_array_of_int32(ary)
    end

    def read_uint32
      self.read_int32(false)
    end

    def write_uint32(obj)
      self.write_int32(obj)
    end

    def get_uint32(offset)
      (self + offset).read_uint32
    end

    def put_uint32(offset, obj)
      (self + offset).write_uint32(obj)
    end

    def read_array_of_uint32(length)
      self.read_array_of_int32(length, false)
    end

    def write_array_of_uint32(ary)
      self.write_array_of_int32(ary)
    end

    def get_array_of_uint32(offset, length)
      (self + offset).read_array_of_uint32(length)
    end

    def put_array_of_uint32(offset, ary)
      (self + offset).write_array_of_uint32(ary)
    end

    #
    # Name: int64
    # Type: long_long
    # Signed: true
    #

    def read_int64(signed=true)
      primitive_read_long_long(signed)
    end

    def write_int64(obj)
      primitive_write_long_long(obj)
    end

    def get_int64(offset)
      (self + offset).read_int64
    end

    def put_int64(offset, obj)
      (self + offset).write_int64(obj)
    end

    def read_array_of_int64(length, signed=true)
      read_array_of_type(:long_long, :read_long_long, length, signed)
    end

    def write_array_of_int64(ary)
      write_array_of_type(:long_long, :write_long_long, ary)
    end

    def get_array_of_int64(offset, length, signed=true)
      (self + offset).read_array_of_int64(length, signed)
    end

    def put_array_of_int64(offset, ary)
      (self + offset).write_array_of_int64(ary)
    end

    def read_uint64
      self.read_int64(false)
    end

    def write_uint64(obj)
      self.write_int64(obj)
    end

    def get_uint64(offset)
      (self + offset).read_uint64
    end

    def put_uint64(offset, obj)
      (self + offset).write_uint64(obj)
    end

    def read_array_of_uint64(length)
      self.read_array_of_int64(length, false)
    end

    def write_array_of_uint64(ary)
      self.write_array_of_int64(ary)
    end

    def get_array_of_uint64(offset, length)
      (self + offset).read_array_of_uint64(length)
    end

    def put_array_of_uint64(offset, ary)
      (self + offset).write_array_of_uint64(ary)
    end

    #
    # Name: long
    # Type: long
    # Signed: true
    #

    def read_long(signed=true)
      primitive_read_long(signed)
    end

    def write_long(obj)
      primitive_write_long(obj)
    end

    def get_long(offset)
      (self + offset).read_long
    end

    def put_long(offset, obj)
      (self + offset).write_long(obj)
    end

    def read_array_of_long(length, signed=true)
      read_array_of_type(:long, :read_long, length, signed)
    end

    def write_array_of_long(ary)
      write_array_of_type(:long, :write_long, ary)
    end

    def get_array_of_long(offset, length, signed=true)
      (self + offset).read_array_of_long(length, signed)
    end

    def put_array_of_long(offset, ary)
      (self + offset).write_array_of_long(ary)
    end

    def read_ulong
      self.read_long(false)
    end

    def write_ulong(obj)
      self.write_long(obj)
    end

    def get_ulong(offset)
      (self + offset).read_ulong
    end

    def put_ulong(offset, obj)
      (self + offset).write_ulong(obj)
    end

    def read_array_of_ulong(length)
      self.read_array_of_long(length, false)
    end

    def write_array_of_ulong(ary)
      self.write_array_of_long(ary)
    end

    def get_array_of_ulong(offset, length)
      (self + offset).read_array_of_ulong(length)
    end

    def put_array_of_ulong(offset, ary)
      (self + offset).write_array_of_ulong(ary)
    end

    #
    # Name: float32
    # Type: float
    # Signed: false
    #

    def read_float32
      primitive_read_float
    end

    def write_float32(obj)
      primitive_write_float(obj)
    end

    def get_float32(offset)
      (self + offset).read_float32
    end

    def put_float32(offset, obj)
      (self + offset).write_float32(obj)
    end

    def read_array_of_float32(length)
      read_array_of_type(:float, :read_float, length)
    end

    def write_array_of_float32(ary)
      write_array_of_type(:float, :write_float, ary)
    end

    def get_array_of_float32(offset, length)
      (self + offset).read_array_of_float32(length)
    end

    def put_array_of_float32(offset, ary)
      (self + offset).write_array_of_float32(ary)
    end

    #
    # Name: float64
    # Type: double
    # Signed: false
    #

    def read_float64
      primitive_read_double
    end

    def write_float64(obj)
      primitive_write_double(obj)
    end

    def get_float64(offset)
      (self + offset).read_float64
    end

    def put_float64(offset, obj)
      (self + offset).write_float64(obj)
    end

    def read_array_of_float64(length)
      read_array_of_type(:double, :read_double, length)
    end

    def write_array_of_float64(ary)
      write_array_of_type(:double, :write_double, ary)
    end

    def get_array_of_float64(offset, length)
      (self + offset).read_array_of_float64(length)
    end

    def put_array_of_float64(offset, ary)
      (self + offset).write_array_of_float64(ary)
    end

    #
    # Name: float
    # Type: float
    # Signed: false
    #

    def read_float
      primitive_read_float
    end

    def write_float(obj)
      primitive_write_float(obj)
    end

    def get_float(offset)
      (self + offset).read_float
    end

    def put_float(offset, obj)
      (self + offset).write_float(obj)
    end

    def read_array_of_float(length)
      read_array_of_type(:float, :read_float, length)
    end

    def write_array_of_float(ary)
      write_array_of_type(:float, :write_float, ary)
    end

    def get_array_of_float(offset, length)
      (self + offset).read_array_of_float(length)
    end

    def put_array_of_float(offset, ary)
      (self + offset).write_array_of_float(ary)
    end

    #
    # Name: double
    # Type: double
    # Signed: false
    #

    def read_double
      primitive_read_double
    end

    def write_double(obj)
      primitive_write_double(obj)
    end

    def get_double(offset)
      (self + offset).read_double
    end

    def put_double(offset, obj)
      (self + offset).write_double(obj)
    end

    def read_array_of_double(length)
      read_array_of_type(:double, :read_double, length)
    end

    def write_array_of_double(ary)
      write_array_of_type(:double, :write_double, ary)
    end

    def get_array_of_double(offset, length)
      (self + offset).read_array_of_double(length)
    end

    def put_array_of_double(offset, ary)
      (self + offset).write_array_of_double(ary)
    end

    #
    # Name: char
    # Type: char
    # Signed: true
    #

    def read_char(signed=true)
      primitive_read_char(signed)
    end

    def write_char(obj)
      primitive_write_char(obj)
    end

    def get_char(offset)
      (self + offset).read_char
    end

    def put_char(offset, obj)
      (self + offset).write_char(obj)
    end

    def read_array_of_char(length, signed=true)
      read_array_of_type(:char, :read_char, length, signed)
    end

    def write_array_of_char(ary)
      write_array_of_type(:char, :write_char, ary)
    end

    def get_array_of_char(offset, length, signed=true)
      (self + offset).read_array_of_char(length, signed)
    end

    def put_array_of_char(offset, ary)
      (self + offset).write_array_of_char(ary)
    end

    def read_uchar
      self.read_char(false)
    end

    def write_uchar(obj)
      self.write_char(obj)
    end

    def get_uchar(offset)
      (self + offset).read_uchar
    end

    def put_uchar(offset, obj)
      (self + offset).write_uchar(obj)
    end

    def read_array_of_uchar(length)
      self.read_array_of_char(length, false)
    end

    def write_array_of_uchar(ary)
      self.write_array_of_char(ary)
    end

    def get_array_of_uchar(offset, length)
      (self + offset).read_array_of_uchar(length)
    end

    def put_array_of_uchar(offset, ary)
      (self + offset).write_array_of_uchar(ary)
    end

    #
    # Name: short
    # Type: short
    # Signed: true
    #

    def read_short(signed=true)
      primitive_read_short(signed)
    end

    def write_short(obj)
      primitive_write_short(obj)
    end

    def get_short(offset)
      (self + offset).read_short
    end

    def put_short(offset, obj)
      (self + offset).write_short(obj)
    end

    def read_array_of_short(length, signed=true)
      read_array_of_type(:short, :read_short, length, signed)
    end

    def write_array_of_short(ary)
      write_array_of_type(:short, :write_short, ary)
    end

    def get_array_of_short(offset, length, signed=true)
      (self + offset).read_array_of_short(length, signed)
    end

    def put_array_of_short(offset, ary)
      (self + offset).write_array_of_short(ary)
    end

    def read_ushort
      self.read_short(false)
    end

    def write_ushort(obj)
      self.write_short(obj)
    end

    def get_ushort(offset)
      (self + offset).read_ushort
    end

    def put_ushort(offset, obj)
      (self + offset).write_ushort(obj)
    end

    def read_array_of_ushort(length)
      self.read_array_of_short(length, false)
    end

    def write_array_of_ushort(ary)
      self.write_array_of_short(ary)
    end

    def get_array_of_ushort(offset, length)
      (self + offset).read_array_of_ushort(length)
    end

    def put_array_of_ushort(offset, ary)
      (self + offset).write_array_of_ushort(ary)
    end

    #
    # Name: int
    # Type: int
    # Signed: true
    #

    def read_int(signed=true)
      primitive_read_int(signed)
    end

    def write_int(obj)
      primitive_write_int(obj)
    end

    def get_int(offset)
      (self + offset).read_int
    end

    def put_int(offset, obj)
      (self + offset).write_int(obj)
    end

    def read_array_of_int(length, signed=true)
      read_array_of_type(:int, :read_int, length, signed)
    end

    def write_array_of_int(ary)
      write_array_of_type(:int, :write_int, ary)
    end

    def get_array_of_int(offset, length, signed=true)
      (self + offset).read_array_of_int(length, signed)
    end

    def put_array_of_int(offset, ary)
      (self + offset).write_array_of_int(ary)
    end

    def read_uint
      self.read_int(false)
    end

    def write_uint(obj)
      self.write_int(obj)
    end

    def get_uint(offset)
      (self + offset).read_uint
    end

    def put_uint(offset, obj)
      (self + offset).write_uint(obj)
    end

    def read_array_of_uint(length)
      self.read_array_of_int(length, false)
    end

    def write_array_of_uint(ary)
      self.write_array_of_int(ary)
    end

    def get_array_of_uint(offset, length)
      (self + offset).read_array_of_uint(length)
    end

    def put_array_of_uint(offset, ary)
      (self + offset).write_array_of_uint(ary)
    end

    #
    # Name: long_long
    # Type: long_long
    # Signed: true
    #

    def read_long_long(signed=true)
      primitive_read_long_long(signed)
    end

    def write_long_long(obj)
      primitive_write_long_long(obj)
    end

    def get_long_long(offset)
      (self + offset).read_long_long
    end

    def put_long_long(offset, obj)
      (self + offset).write_long_long(obj)
    end

    def read_array_of_long_long(length, signed=true)
      read_array_of_type(:long_long, :read_long_long, length, signed)
    end

    def write_array_of_long_long(ary)
      write_array_of_type(:long_long, :write_long_long, ary)
    end

    def get_array_of_long_long(offset, length, signed=true)
      (self + offset).read_array_of_long_long(length, signed)
    end

    def put_array_of_long_long(offset, ary)
      (self + offset).write_array_of_long_long(ary)
    end

    def read_ulong_long
      self.read_long_long(false)
    end

    def write_ulong_long(obj)
      self.write_long_long(obj)
    end

    def get_ulong_long(offset)
      (self + offset).read_ulong_long
    end

    def put_ulong_long(offset, obj)
      (self + offset).write_ulong_long(obj)
    end

    def read_array_of_ulong_long(length)
      self.read_array_of_long_long(length, false)
    end

    def write_array_of_ulong_long(ary)
      self.write_array_of_long_long(ary)
    end

    def get_array_of_ulong_long(offset, length)
      (self + offset).read_array_of_ulong_long(length)
    end

    def put_array_of_ulong_long(offset, ary)
      (self + offset).write_array_of_ulong_long(ary)
    end

    #
    # Name: pointer
    # Type: pointer
    # Signed: false
    #

    def read_pointer
      primitive_read_pointer
    end

    def write_pointer(obj)
      primitive_write_pointer(obj)
    end

    def get_pointer(offset)
      (self + offset).read_pointer
    end

    def put_pointer(offset, obj)
      (self + offset).write_pointer(obj)
    end

    def read_array_of_pointer(length)
      read_array_of_type(:pointer, :read_pointer, length)
    end

    def write_array_of_pointer(ary)
      write_array_of_type(:pointer, :write_pointer, ary)
    end

    def get_array_of_pointer(offset, length)
      (self + offset).read_array_of_pointer(length)
    end

    def put_array_of_pointer(offset, ary)
      (self + offset).write_array_of_pointer(ary)
    end

  end
end
end
