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

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

CLASS <class-selector>
<class-selector> = ( IS <type-value-range-list> | DEFAULT )
<type-value-range> = <case-value>
<case-value> = <char>

Definition at line 2351 of file statements.py.

Member Function Documentation

◆ process_item()

def fparser.one.statements.ClassIs.process_item (   self)
Populate the state of this object by parsing the string

Definition at line 2361 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.one.statements.ClassIs.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.one.statements.ClassIs.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().

2361  def process_item(self):
2362  """Populate the state of this object by parsing the string"""
2363  line = self.item.get_line()[5:].lstrip()
2364  try:
2365  self.items = extract_bracketed_list_items(line, self.item)
2366  # We have a 'class is ...' statement. At this point
2367  # any expression used for the class specifier will have
2368  # been replaced with e.g. F2PY_EXPR_TUPLE_3 and so
2369  # will not contain any parentheses.
2370  idx = line.rfind(")")
2371  self.name = line[idx + 1 :].lstrip()
2372  except ParseError:
2373  # We have a 'class default' statement
2374  if not line.lower().startswith("default"):
2375  # We should never get here because such a string should
2376  # not have generated a match
2377  self.warning(
2378  "Internal error when parsing CLASS statement: {0}".format(line)
2379  )
2380  self.isvalid = False
2381  return
2382  self.items = []
2383  self.name = line[7:].lstrip()
2384  parent_name = getattr(self.parent, "name", "")
2385  if self.name and self.name != parent_name:
2386  self.warning(
2387  "expected class-construct-name %r but got %r, skipping."
2388  % (parent_name, self.name)
2389  )
2390  self.isvalid = False
2391  return
2392 
Here is the call graph for this function:

◆ tofortran()

def fparser.one.statements.ClassIs.tofortran (   self,
  isfix = None 
)
Returns the Fortran for this object as a string

Definition at line 2393 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.one.statements.ClassIs.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, and fparser.one.statements.ClassIs.name.

2393  def tofortran(self, isfix=None):
2394  """Returns the Fortran for this object as a string"""
2395  tab = self.get_indent_tab(isfix=isfix)
2396  text = tab + "CLASS"
2397  if self.items:
2398  text += " IS"
2399  lchar = []
2400  for item in self.items:
2401  lchar.append((" : ".join(item)).strip())
2402  text += " ( %s )" % (", ".join(lchar))
2403  else:
2404  text += " DEFAULT"
2405  if self.name:
2406  text += " " + self.name
2407  return text
2408 
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: