pygccxml.declarations.variable

Package pygccxml :: Package declarations :: Module variable |

# Source Code for Module pygccxml.declarations.variable

     1  # Copyright 2004-2008 Roman Yakovenko.
     2  # Distributed under the Boost Software License, Version 1.0. (See
     3  # accompanying file LICENSE_1_0.txt or copy at
     4  # http://www.boost.org/LICENSE_1_0.txt)
     5
     6  """
     7  defines class that describes C++ global and member variable declaration
     8  """
     9
    10  import declaration
    11  import dependencies
    12  import class_declaration
    13
    14 -class variable_t( declaration.declaration_t ):
    15      """describes C++ global and member variable declaration"""
    16
    17 -    def __init__( self, name='', type=None, type_qualifiers=None, value=None, bits=None):
    18          """creates class that describes C++ global or member variable"""
    19          declaration.declaration_t.__init__( self, name )
    20          self._type = type
    21          self._type_qualifiers = type_qualifiers
    22          self._value = value
    23          self._bits = bits
    24          self._byte_offset = 0
    25
    26 -    def _get__cmp__items( self ):
    27          """implementation details"""
    28          return [ self.type, self.type_qualifiers, self.value ]
    29
    30 -    def __eq__(self, other):
    31          """implementation details"""
    32          if not declaration.declaration_t.__eq__( self, other ):
    33              return False
    34          return self.type == other.type \
    35                 and self.type_qualifiers == other.type_qualifiers \
    36                 and self.value == other.value \
    37                 and self.bits == other.bits
    38
    39 -    def _get_type(self):
    40          return self._type
    41 -    def _set_type(self, type):
    42          self._type = type
    43      type = property( _get_type, _set_type
    44                       , doc="reference to the variable L{type<type_t>}"    )
    45
    46 -    def _get_type_qualifiers(self):
    47          return self._type_qualifiers
    48 -    def _set_type_qualifiers(self, type_qualifiers):
    49          self._type_qualifiers = type_qualifiers
    50      type_qualifiers = property( _get_type_qualifiers, _set_type_qualifiers
    51                                  , doc="reference to the L{type_qualifiers_t} instance" )
    52
    53 -    def _get_value(self):
    54          return self._value
    55 -    def _set_value(self, value):
    56          self._value = value
    57      value = property( _get_value, _set_value
    58                        , doc="string, that contains the variable value"    )
    59
    60 -    def _get_bits(self):
    61          return self._bits
    62 -    def _set_bits(self, bits):
    63          self._bits = bits
    64      bits = property( _get_bits, _set_bits
    65                       , doc="integer, that contains information about how many bit takes bit field")
    66
    67 -    def _get_byte_offset(self):
    68          return self._byte_offset
    69 -    def _set_byte_offset(self, byte_offset):
    70          self._byte_offset = byte_offset
    71      byte_offset = property( _get_byte_offset, _set_byte_offset
    72                              , doc="integer, offset of the field from the beginning of class.")
    73
    74
    75      @property
    76 -    def access_type(self):
    77          if not isinstance( self.parent, class_declaration.class_t ):
    78              raise RuntimeError( "access_type functionality only available on member variables and not on global variables" )
    79          return self.parent.find_out_member_access_type( self )
    80
    81 -    def i_depend_on_them( self, recursive=True ):
    82          return [ dependencies.dependency_info_t( self, self.type ) ]
    83