Go to main content

man pages section 3: Library Interfaces and Headers

Exit Print View

Updated: Wednesday, July 27, 2022
 
 

B::Op_private (3)

Name

B::Op_private - OP op_private flag definitions

Synopsis

use B::Op_private;

# flag details for bit 7 of OP_AELEM's op_private:
my $name  = $B::Op_private::bits{aelem}{7}; # OPpLVAL_INTRO
my $value = $B::Op_private::defines{$name}; # 128
my $label = $B::Op_private::labels{$name};  # LVINTRO

# the bit field at bits 5..6 of OP_AELEM's op_private:
my $bf  = $B::Op_private::bits{aelem}{6};
my $mask = $bf->{bitmask}; # etc

Description

Perl Programmers Reference Guide                              B::Op_private(3)



NAME
       B::Op_private - OP op_private flag definitions

SYNOPSIS
           use B::Op_private;

           # flag details for bit 7 of OP_AELEM's op_private:
           my $name  = $B::Op_private::bits{aelem}{7}; # OPpLVAL_INTRO
           my $value = $B::Op_private::defines{$name}; # 128
           my $label = $B::Op_private::labels{$name};  # LVINTRO

           # the bit field at bits 5..6 of OP_AELEM's op_private:
           my $bf  = $B::Op_private::bits{aelem}{6};
           my $mask = $bf->{bitmask}; # etc

DESCRIPTION
       This module provides four global hashes:

           %B::Op_private::bits
           %B::Op_private::defines
           %B::Op_private::labels
           %B::Op_private::ops_using

       which contain information about the per-op meanings of the bits in the
       op_private field.

   %bits
       This is indexed by op name and then bit number (0..7). For single bit
       flags, it returns the name of the define (if any) for that bit:

          $B::Op_private::bits{aelem}{7} eq 'OPpLVAL_INTRO';

       For bit fields, it returns a hash ref containing details about the
       field.  The same reference will be returned for all bit positions that
       make up the bit field; so for example these both return the same hash
       ref:

           $bitfield = $B::Op_private::bits{aelem}{5};
           $bitfield = $B::Op_private::bits{aelem}{6};

       The general format of this hash ref is

           {
               # The bit range and mask; these are always present.
               bitmin        => 5,
               bitmax        => 6,
               bitmask       => 0x60,

               # (The remaining keys are optional)

               # The names of any defines that were requested:
               mask_def      => 'OPpFOO_MASK',
               baseshift_def => 'OPpFOO_SHIFT',
               bitcount_def  => 'OPpFOO_BITS',

               # If present, Concise etc will display the value with a 'FOO='
               # prefix. If it equals '-', then Concise will treat the bit
               # field as raw bits and not try to interpret it.
               label         => 'FOO',

               # If present, specifies the names of some defines and the
               # display labels that are used to assign meaning to particu-
               # lar integer values within the bit field; e.g. 3 is dis-
               # played as 'C'.
               enum          => [ qw(
                                    1   OPpFOO_A  A
                                    2   OPpFOO_B  B
                                    3   OPpFOO_C  C
                                )],

           };

   %defines
       This gives the value of every "OPp" define, e.g.

           $B::Op_private::defines{OPpLVAL_INTRO} == 128;

   %labels
       This gives the short display label for each define, as used by
       "B::Concise" and "perl -Dx", e.g.

           $B::Op_private::labels{OPpLVAL_INTRO} eq 'LVINTRO';

       If the label equals '-', then Concise will treat the bit as a raw bit
       and not try to display it symbolically.

   %ops_using
       For each define, this gives a reference to an array of op names that
       use the flag.

           @ops_using_lvintro = @{ $B::Op_private::ops_using{OPp_LVAL_INTRO} };



ATTRIBUTES
       See attributes(7) for descriptions of the following attributes:


       +---------------+-----------------------+
       |ATTRIBUTE TYPE |   ATTRIBUTE VALUE     |
       +---------------+-----------------------+
       |Availability   | runtime/perl-532      |
       +---------------+-----------------------+
       |Stability      | Pass-through volatile |
       +---------------+-----------------------+

NOTES
       Source code for open source software components in Oracle Solaris can
       be found at https://www.oracle.com/downloads/opensource/solaris-source-
       code-downloads.html.

       This software was built from source available at
       https://github.com/oracle/solaris-userland.  The original community
       source was downloaded from
       http://www.cpan.org/src/5.0/perl-5.32.0.tar.gz.

       Further information about this software can be found on the open source
       community website at https://www.perl.org/.



perl v5.32.0                      2020-06-14                  B::Op_private(3)