OpenCores
URL https://opencores.org/ocsvn/an-fpga-implementation-of-low-latency-noc-based-mpsoc/an-fpga-implementation-of-low-latency-noc-based-mpsoc/trunk

Subversion Repositories an-fpga-implementation-of-low-latency-noc-based-mpsoc

[/] [an-fpga-implementation-of-low-latency-noc-based-mpsoc/] [trunk/] [mpsoc/] [Integration_test/] [synthetic_sim/] [perl_lib/] [constant/] [boolean.pm] - Rev 56

Compare with Previous | Blame | View Log

#!/usr/bin/perl -c
 
package constant::boolean;
 
=head1 NAME
 
constant::boolean - Define TRUE and FALSE constants.
 
=head1 SYNOPSIS
 
  use constant::boolean;
 
  use File::Spec;
 
  sub is_package_exist {
    my ($package) = @_;
    return FALSE unless defined $package;
    foreach my $inc (@INC) {
        my $filename = File::Spec->catfile(
            split( /\//, $inc ), split( /\::/, $package )
        ) . '.pm';
        return TRUE if -f $filename;
    };
    return FALSE;
  };
 
  no constant::boolean;
 
=head1 DESCRIPTION
 
Defines C<TRUE> and C<FALSE> constants in caller's namespace.  You could use
simple values like empty string or zero for false, or any non-empty and
non-zero string value as true, but the C<TRUE> and C<FALSE> constants are more
descriptive.
 
It is virtually the same as:
 
  # double "not" operator is used for converting scalar to boolean value
  use constant TRUE => !! 1;
  use constant FALSE => !! '';
 
The constants exported by C<constant::boolean> are not reported by
L<Test::Pod::Coverage>, so it is more convenient to use this module than to
define C<TRUE> and C<FALSE> constants by yourself.
 
The constants can be removed from class API with C<no constant::boolean>
pragma or some universal tool like L<namespace::clean>.
 
=for readme stop
 
=cut
 
use 5.006;
 
use strict;
use warnings;
 
our $VERSION = '0.02';
 
 
sub import {
    my $caller = caller;
 
    no strict 'refs';
    # double "not" operator is used for converting scalar to boolean value
    *{"${caller}::TRUE"}  = sub () { !! 1 };
    *{"${caller}::FALSE"} = sub () { !! '' };
 
    return 1;
};
 
 
sub unimport {
    require Symbol::Util;
 
    my $caller = caller;
    Symbol::Util::delete_sub("${caller}::$_") foreach qw( TRUE FALSE );
 
    return 1;
};
 
 
1;
 
 
=head1 BUGS
 
If you find the bug or want to implement new features, please report it at
L<http://rt.cpan.org/NoAuth/Bugs.html?Dist=constant-boolean>
 
=for readme continue
 
=head1 AUTHOR
 
Piotr Roszatycki <dexter@cpan.org>
 
=head1 LICENSE
 
Copyright 2008, 2009 by Piotr Roszatycki <dexter@cpan.org>.
 
This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.
 
See L<http://www.perl.com/perl/misc/Artistic.html>

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.