fparser Reference Guide  0.0.14
fparser.one.statements.TypeIs Class Reference
Inheritance diagram for fparser.one.statements.TypeIs:
Collaboration diagram for fparser.one.statements.TypeIs:

Public Member Functions

def process_item (self)
 
def tofortran (self, isfix=None)
 
def analyze (self)
 
- Public Member Functions inherited from fparser.common.base_classes.Statement
def __init__ (self, parent, item)
 
def __repr__ (self)
 
def torepr (self, depth=-1, incrtab="")
 
def get_indent_tab (self, deindent=False, isfix=None)
 
def __str__ (self)
 
def asfix (self)
 
def format_message (self, kind, message)
 
def error (self, message)
 
def warning (self, message)
 
def info (self, message)
 
def analyze (self)
 
def get_variable (self, name)
 
def get_type (self, name)
 
def get_type_decl (self, kind)
 
def get_provides (self)
 
- Public Member Functions inherited from fparser.common.utils.classes
def __new__ (metacls, name, bases, dict)
 
- Public Member Functions inherited from fparser.common.utils.meta_classes
def __getattr__ (self, name)
 

Public Attributes

 items
 
 name
 
 isvalid
 
- Public Attributes inherited from fparser.common.base_classes.Statement
 parent
 
 reader
 
 top
 
 item
 
 programblock
 
 isvalid
 
 ignore
 
 a
 

Static Public Attributes

 match
 
- Static Public Attributes inherited from fparser.common.base_classes.Statement
list modes = ["free", "fix", "f77", "pyf"]
 

Detailed Description

TYPE IS <type-selector> [ <case-construct-name> ]
<type-selector> = ( <type-value-range-list> )
<type-value-range> = <case-value>
<case-value> = <char>

Definition at line 2300 of file statements.py.

Member Function Documentation

◆ process_item()

def fparser.one.statements.TypeIs.process_item (   self)
Populate the state of this object by parsing the associated
line of code

Definition at line 2310 of file statements.py.

References fparser.common.base_classes.Statement.isvalid, fparser.common.base_classes.Statement.item, fparser.one.statements.StatementWithNamelist.items, fparser.one.statements.Assign.items, fparser.one.statements.Call.items, fparser.one.statements.ComputedGoto.items, fparser.one.statements.AssignedGoto.items, fparser.one.statements.Print.items, fparser.one.statements.Read0.items, fparser.one.statements.Read1.items, fparser.one.statements.Write.items, fparser.one.statements.Allocate.items, fparser.one.statements.Deallocate.items, fparser.one.statements.ModuleProcedure.items, fparser.one.statements.Access.items, fparser.one.statements.Save.items, fparser.one.statements.Nullify.items, fparser.one.statements.Use.items, fparser.one.statements.Parameter.items, fparser.one.statements.Equivalence.items, fparser.one.statements.Dimension.items, fparser.one.statements.Target.items, fparser.one.statements.Pointer.items, fparser.one.statements.Inquire.items, fparser.one.statements.Namelist.items, fparser.one.statements.Common.items, fparser.one.statements.Intent.items, fparser.one.statements.Entry.items, fparser.one.statements.GenericBinding.items, fparser.one.statements.Allocatable.items, fparser.one.statements.Bind.items, fparser.one.statements.Case.items, fparser.one.statements.TypeIs.items, fparser.common.base_classes.Variable.name, fparser.common.readfortran.Line.name, fparser.one.block_statements.BeginSource.name, fparser.one.block_statements.Module.name, fparser.one.block_statements.PythonModule.name, fparser.one.block_statements.BlockData.name, fparser.one.block_statements.Interface.name, fparser.one.block_statements.SubProgramStatement.name, fparser.common.base_classes.BeginStatement.name, fparser.one.statements.Cycle.name, fparser.common.base_classes.EndStatement.name, fparser.one.block_statements.Select.name, fparser.one.block_statements.Where.name, fparser.one.block_statements.Forall.name, fparser.one.block_statements.IfThen.name, fparser.one.statements.Use.name, fparser.one.block_statements.Do.name, fparser.one.statements.Exit.name, fparser.one.block_statements.Type.name, fparser.one.statements.Entry.name, fparser.one.statements.SpecificBinding.name, fparser.one.statements.Else.name, fparser.one.statements.ElseIf.name, fparser.one.statements.Case.name, fparser.one.statements.TypeIs.name, fparser.common.base_classes.Variable.parent, fparser.common.base_classes.Statement.parent, fparser.common.base_classes.Variable.warning(), and fparser.common.base_classes.Statement.warning().

2310  def process_item(self):
2311  """Populate the state of this object by parsing the associated
2312  line of code"""
2313  line = self.item.get_line()
2314  # We have a 'type is (...)' statement. At this point
2315  # any expression used for the type specifier will have
2316  # been replaced with e.g. F2PY_EXPR_TUPLE_3 and so
2317  # will not itself contain any parentheses.
2318  self.items = extract_bracketed_list_items(line, self.item)
2319  # Get and store the case-construct-name (if any)
2320  idx2 = line.rfind(")")
2321  self.name = line[idx2 + 1 :].lstrip()
2322  parent_name = getattr(self.parent, "name", "")
2323  if self.name and self.name != parent_name:
2324  self.warning(
2325  "expected type-is-construct-name %r but got %r, skipping."
2326  % (parent_name, self.name)
2327  )
2328  self.isvalid = False
2329  return
2330 
Here is the call graph for this function:

◆ tofortran()

def fparser.one.statements.TypeIs.tofortran (   self,
  isfix = None 
)
Create the Fortran representation of this object and return
it as a string

Definition at line 2331 of file statements.py.

References fparser.common.base_classes.Statement.get_indent_tab(), fparser.one.statements.StatementWithNamelist.items, fparser.one.statements.Assign.items, fparser.one.statements.Call.items, fparser.one.statements.ComputedGoto.items, fparser.one.statements.AssignedGoto.items, fparser.one.statements.Print.items, fparser.one.statements.Read0.items, fparser.one.statements.Read1.items, fparser.one.statements.Write.items, fparser.one.statements.Allocate.items, fparser.one.statements.Deallocate.items, fparser.one.statements.ModuleProcedure.items, fparser.one.statements.Access.items, fparser.one.statements.Save.items, fparser.one.statements.Nullify.items, fparser.one.statements.Use.items, fparser.one.statements.Parameter.items, fparser.one.statements.Equivalence.items, fparser.one.statements.Dimension.items, fparser.one.statements.Target.items, fparser.one.statements.Pointer.items, fparser.one.statements.Inquire.items, fparser.one.statements.Namelist.items, fparser.one.statements.Common.items, fparser.one.statements.Intent.items, fparser.one.statements.Entry.items, fparser.one.statements.GenericBinding.items, fparser.one.statements.Allocatable.items, fparser.one.statements.Bind.items, fparser.one.statements.Case.items, fparser.one.statements.TypeIs.items, fparser.common.base_classes.Variable.name, fparser.common.readfortran.Line.name, fparser.one.block_statements.BeginSource.name, fparser.one.block_statements.Module.name, fparser.one.block_statements.PythonModule.name, fparser.one.block_statements.BlockData.name, fparser.one.block_statements.Interface.name, fparser.one.block_statements.SubProgramStatement.name, fparser.common.base_classes.BeginStatement.name, fparser.one.statements.Cycle.name, fparser.common.base_classes.EndStatement.name, fparser.one.block_statements.Select.name, fparser.one.block_statements.Where.name, fparser.one.block_statements.Forall.name, fparser.one.block_statements.IfThen.name, fparser.one.statements.Use.name, fparser.one.block_statements.Do.name, fparser.one.statements.Exit.name, fparser.one.block_statements.Type.name, fparser.one.statements.Entry.name, fparser.one.statements.SpecificBinding.name, fparser.one.statements.Else.name, fparser.one.statements.ElseIf.name, fparser.one.statements.Case.name, and fparser.one.statements.TypeIs.name.

2331  def tofortran(self, isfix=None):
2332  """Create the Fortran representation of this object and return
2333  it as a string"""
2334  tab = self.get_indent_tab(isfix=isfix)
2335  text = tab + "TYPE IS"
2336  if self.items:
2337  lst = []
2338  for item in self.items:
2339  lst.append((" : ".join(item)).strip())
2340  text += " ( %s )" % (", ".join(lst))
2341  else:
2342  raise ParseError("TYPE IS construct must have arguments")
2343  if self.name:
2344  text += " " + self.name
2345  return text
2346 
Here is the call graph for this function:
Here is the caller graph for this function:

The documentation for this class was generated from the following file: