Exemple #1
0
 def isObservableListName(self, name, func, cl):
   """
   list of struct, robject
   """
   parts = self.dot_re.split(name)
   firstName = parts[0]
   # if begin from this then search in class variables
   if firstName == 'this' and cl:
     vname = parts[1]
     va = cl.variables[vname]
     if self.isArrayType(va) == False:
       return False
     firstType = va.decltype[0].word
     if firstType == 'robject' or common.isStructName(firstType):
       return True
   elif firstName == 'world':
     # TODO(dem) check struct field is array type
     return self.isWorldListName(name)
   else:
     if func:
       for pname, pdecltype in func.params:
         if firstName == pname:
           firstType = pdecltype[0].word
           if firstType == 'robject' or common.isStructName(self.module, firstType):
             return True
   return False
Exemple #2
0
  def isObservableValueName(self, name, func, cl):
    """
    Search name type, must be struct simple field or robject
    struct, robject
    """
    # raise Exception('implement isStructFieldSimple')
    # split name
    parts = self.dot_re.split(name)
    count = len(parts)
    firstName = parts[0]

    if count == 1:
      return False

    # if name begin from this then search in class variables
    if firstName == 'this' and cl:
      vname = parts[1]
      va = cl.variables.get(vname, None)
      # is function name
      if va == None: return False
        # raise Exception('module "%s", class "%s" not contain "%s" variable, class variables "%s"' % (self.module.name, cl.name, vname, cl.getVariablesName()))
      if self.isStructType(va) or va.decltype[0].word == 'robject':
        return True
    # is value from world
    elif firstName == 'world':
      # TODO(dem) remove this hack
      if len(parts) == 1:
        return False
      # return True
      return not self.isObservableListName(name, func, cl)
    else:
      # check if value from func params
      if func:
        for pname, pdecltype in func.params:
          if firstName == pname:
            firstType = pdecltype[0].word
            if firstType == 'robject' or common.isStructName(self.module, firstType):
              return True
    # if value from robject list
    # if value from struct
    return False
Exemple #3
0
 def isArrayOfStructType(self, va):
   return self.isArrayType(va) and common.isStructName(self.module, va.decltype[0].word)
Exemple #4
0
 def isStructType(self, va):
   return (len(va.decltype) == 1) and common.isStructName(self.module, va.decltype[0].word)