NAME

Class::Bits - Class wrappers around bit vectors

SYNOPSIS

package MyClass;
use Class::Bits;

make_bits( a => 4,  # 0..15
           b => 1,  # 0..1
           c => 1,  # 0..1
           d => 2,  # 0..3
 );

 package;

 $o=MyClass->new(a=>12, d=>2);
 print "o->b is ", $o->b, "\n";

 print "bit vector is ", unpack("h*", $$o), "\n";

 $o2=$o->new();
 $o3=MyClass->new($string);

ABSTRACT

Class::Bits creates class wrappers around bit vectors.

DESCRIPTION

Class::Bits defines classes using bit vectors as storage.

Object attributes are stored in bit fields inside the bit vector. Bit field sizes have to be powers of two (1, 2, 4, 8, 16 or 32) and the values allowed are unsigned integers only.

There is a class constructor subroutine:

make_bits( field1 => size1, field2 => size2, ...)

exports in the calling package a ctor, accessor methods, some utility methods and some constants:

$class->new()

creates a new object with all zeros.

$class->new($bitvector)

creates a new object over $bitvector.

$class->new(%fields)

creates a new object and initializes its fields with the values in %fields.

$obj->new()

clones a object.

$obj->$field()
$obj->$field($value)

gets or sets the value of the bit field $field inside the bit vector.

$class->length
$obj->lenght

returns the size in bits of the bit vector used for storage.

%INDEX

hash with offsets as used by vec perl operator (to get an offset in bits, the value has to be multiplied by the corresponding bit field size).

%SIZES

hash with bit field sizes in bits.

Bit fields are packed in the bit vector in the order specified as arguments to make_bits.

Bit fields are padded inside the bit vector, i.e. a class created like

make_bits(A=>1, B=>2, C=>1, D=>4, E=>8, F=>16);

will have the layout

AxBBCxxx DDDDxxxx EEEEEEEE xxxxxxxx FFFFFFFF FFFFFFFF

EXPORT

make_bits

SEE ALSO

"vec" in perlfunc, Class::Struct

AUTHOR

Salvador Fandiño, <sfandino@yahoo.com>

COPYRIGHT AND LICENSE

Copyright 2003 by Salvador Fandiño

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

1 POD Error

The following errors were encountered while parsing the POD:

Around line 215:

Non-ASCII character seen before =encoding in 'Fandiño,'. Assuming CP1252