Module: Fiddle::PackInfo

Included in:
CStructEntity, CUnionEntity, Packer
Defined in:
lib/fiddle/pack.rb

Overview

:nodoc: all

Constant Summary collapse

ALIGN_MAP =
{
  TYPE_VOIDP => ALIGN_VOIDP,
  TYPE_CHAR  => ALIGN_CHAR,
  TYPE_SHORT => ALIGN_SHORT,
  TYPE_INT   => ALIGN_INT,
  TYPE_LONG  => ALIGN_LONG,
  TYPE_FLOAT => ALIGN_FLOAT,
  TYPE_DOUBLE => ALIGN_DOUBLE,
  TYPE_UCHAR  => ALIGN_CHAR,
  TYPE_USHORT => ALIGN_SHORT,
  TYPE_UINT   => ALIGN_INT,
  TYPE_ULONG  => ALIGN_LONG,
  TYPE_BOOL   => ALIGN_BOOL,
}
PACK_MAP =
{
  TYPE_VOIDP => "L!",
  TYPE_CHAR  => "c",
  TYPE_SHORT => "s!",
  TYPE_INT   => "i!",
  TYPE_LONG  => "l!",
  TYPE_FLOAT => "f",
  TYPE_DOUBLE => "d",
  TYPE_UCHAR  => "C",
  TYPE_USHORT => "S!",
  TYPE_UINT   => "I!",
  TYPE_ULONG  => "L!",
}
SIZE_MAP =
{
  TYPE_VOIDP => SIZEOF_VOIDP,
  TYPE_CHAR  => SIZEOF_CHAR,
  TYPE_SHORT => SIZEOF_SHORT,
  TYPE_INT   => SIZEOF_INT,
  TYPE_LONG  => SIZEOF_LONG,
  TYPE_FLOAT => SIZEOF_FLOAT,
  TYPE_DOUBLE => SIZEOF_DOUBLE,
  TYPE_UCHAR  => SIZEOF_CHAR,
  TYPE_USHORT => SIZEOF_SHORT,
  TYPE_UINT   => SIZEOF_INT,
  TYPE_ULONG  => SIZEOF_LONG,
  TYPE_BOOL   => SIZEOF_BOOL,
}

Class Method Summary collapse

Class Method Details

.align(addr, align) ⇒ Object



67
68
69
70
71
72
73
74
# File 'lib/fiddle/pack.rb', line 67

def align(addr, align)
  d = addr % align
  if( d == 0 )
    addr
  else
    addr + (align - d)
  end
end