NAME
FTN::Bit_flags - Object-oriented module for working with bit flags.
VERSION
version 20160323
SYNOPSIS
use Log::Log4perl ();
use FTN::Bit_flags ();
Log::Log4perl -> easy_init( $Log::Log4perl::INFO );
my $attribute = FTN::Bit_flags -> new( { abbr => 'PVT',
name => 'PRIVATE',
},
{ abbr => 'CRA',
name => 'CRASH',
},
{ abbr => 'RCV',
name => 'READ',
},
{ abbr => 'SNT',
name => 'SENT',
},
{ abbr => 'FIL',
name => 'FILEATT',
},
{ name => 'TRANSIT',
},
{ name => 'ORPHAN',
},
{ abbr => 'K/S',
name => 'KILL',
},
{ name => 'LOCAL',
},
{ abbr => 'HLD',
name => 'HOLD',
},
{ abbr => 'XX2',
},
{ abbr => 'FRQ',
abbr => 'FREQ',
},
{ abbr => 'RRQ',
name => 'Receipt REQ',
},
{ abbr => 'CPT',
},
{ abbr => 'ARQ',
},
{ abbr => 'URQ',
},
);
$attribute -> set_from_number( get_attribute_from_message() );
print join ', ', $attribute -> list_of_set;
print 'this is a private message'
if $attribute -> is_set( 'PVT' );
# make sure it is local and its flavour is crash
$attribute -> set( 'LOCAL', 'CRASH' );
# though we don't need it to be killed after sent
$attribute -> clear( 'K/S' );
update_message_attribute_field( $attribute -> as_number );
$attribute -> set_from_number( get_attribute_from_another_message() );
# work with new attribute value the same way as above
DESCRIPTION
FTN::Bit_flags module is for working with bit flags commonly used in FTN messages.
OBJECT CREATION
new
my $bit_flags = FTN::Bit_flags -> new( { abbr => 'flag 1' },
{ name => 'second lowest bit' },
{ abbr => 'flag 2',
name => 'flag numeric mask is 4'
}
);
Parameters are hash references representing bit in order from low to high. At least one parameter is required. Each hash reference should have 'abbr' and/or 'name' fields. Dies in case of error.
set_from_number
After object describing all possible fields is created we can use it to work with already defined value:
$bit_flags -> set_from_number( 3 );
clear_all
We can clear all bitfields (setting numeric value to 0):
$bit_flags -> clear_all;
set
To set one (or more) fields:
$bit_flags -> set( 'second lowest bit', 'flag 2' );
If you have equal 'abbr' for one field and 'name' for another field, then 'abbr' has higher priority here.
clear
To clear one (or more) fields:
$bit_flags -> clear( 'second lowest bit' );
If you have equal 'abbr' for one field and 'name' for another field, then 'abbr' has higher priority here.
is_set
To check if some field is set:
print 'it is set'
if $bit_flags -> is_set( 'second lowest bit' );
If you have equal 'abbr' for one field and 'name' for another field, then 'abbr' has higher priority here.
as_number
To get numeric value after you set or cleared some flags:
print $bit_flags -> as_number;
list_of_set
To get list of set flags:
print join ' ', $bit_flags -> list_of_set;
By default it tries to return 'abbr' field value for each set bit and if there is none, then return 'name' field value. If 'name' field is preferable, pass optional parameter 'name'.
print join ' ', $bit_flags -> list_of_set( 'name' );