News

CStruct 1.0.0 has released!

Synopsis

CStruct is a simulation of the C language's struct.Its main purpose is to manipulate binary-data conveniently. It can be used in:
  1. Binary file IO like C.
  2. The parameter of the OS's API.(e.g. Win32)
  3. Other...

Getting Started

Install CStruct

Install CStruct is easy.
gem install cstruct

Using CStruct

Let's see an example,struct Point in C language(32-bit platform) like this:
struct Point
{
   int x;
   int y;
};
How to represent struct Point in Ruby? You can use CStruct to do it.
class Point < CStruct
   int32:x
   int32:y
end
Example:
require 'cstruct'
# struct Point in Ruby:
class Point < CStruct
   int32:x
   int32:y
end

# create a Point's instance
point = Point.new

# assign like as C language
point.x = 10
point.y = 20
puts "point.x = #{point.x},point.y = #{point.y}"

Using Win32Struct

like this:
typedef struct _OSVERSIONINFOEXA {
   DWORD dwOSVersionInfoSize;
   DWORD dwMajorVersion;
   DWORD dwMinorVersion;
   DWORD dwBuildNumber;
   DWORD dwPlatformId;
   CHAR szCSDVersion[ 128 ];
   WORD wServicePackMajor;
   WORD wReserved[2];
} OSVERSIONINFOEXA;
in ruby:
class OSVERSIONINFOEXA < Win32Struct
   DWORD :dwOSVersionInfoSize
   DWORD :dwMajorVersion
   DWORD :dwMinorVersion
   DWORD :dwBuildNumber
   DWORD :dwPlatformId
   CHAR :szCSDVersion,[ 128 ]
   WORD :wServicePackMajor
   WORD :wServicePackMinor
   WORD :wReserved,[2]
end

Lean More

Please see also Documents and Examples.