CStruct:Home

## 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.