| 299 | self.Error("Guard does not match the filename") |
| 300 | |
| 301 | def CheckParent(self): |
| 302 | if not self.HasClass: |
| 303 | return |
| 304 | |
| 305 | classre = "^class(\\s+VTK_DEPRECATED)?(\\s+[^\\s]*_EXPORT)?\\s+(vtkm?[A-Z0-9_][^ :\n]*)\\s*<?[^\n\\{]*>?\\s*:\\s*public\\s+(vtk[^ \n\\{<>]*)<?[^\n\\{]*>?" |
| 306 | cname = "" |
| 307 | pname = "" |
| 308 | classlines = [] |
| 309 | regx = re.compile(classre) |
| 310 | cc = 0 |
| 311 | lastline = "" |
| 312 | for a in self.FileLines: |
| 313 | line = a.strip() |
| 314 | rm = regx.match(line) |
| 315 | if not rm and not cname: |
| 316 | rm = regx.match(lastline + line) |
| 317 | if rm: |
| 318 | export = rm.group(2) |
| 319 | if export: |
| 320 | export = export.strip() |
| 321 | cname = rm.group(3) |
| 322 | pname = rm.group(4) |
| 323 | classlines.append(" %4d: %s" % (cc, line)) |
| 324 | if not export: |
| 325 | self.Print("File: %s defines 1 class with no export macro:" % self.FileName) |
| 326 | self.Print(" %4d: %s" % (cc, line)) |
| 327 | self.Error("No export macro") |
| 328 | elif self.Export and self.Export != export: |
| 329 | self.Print("File: %s defines 1 class with wrong export macro:" % self.FileName) |
| 330 | self.Print(" %4d: %s" % (cc, line)) |
| 331 | self.Print(" The export macro should be: %s" % (self.Export)) |
| 332 | self.Error("Wrong export macro") |
| 333 | cc = cc + 1 |
| 334 | lastline = a |
| 335 | if len(classlines) > 1: |
| 336 | self.Print() |
| 337 | self.Print( "File: %s defines %d classes: " % |
| 338 | (self.FileName, len(classlines)) ) |
| 339 | for a in classlines: |
| 340 | self.Print( a ) |
| 341 | self.Error("Multiple classes defined") |
| 342 | if len(classlines) < 1: |
| 343 | self.Print() |
| 344 | self.Print( "File: %s does not define any classes" % self.FileName ) |
| 345 | self.Error("No class defined") |
| 346 | return |
| 347 | #self.Print( "Classname: %s ParentName: %s" % (cname, pname) |
| 348 | self.ClassName = cname |
| 349 | self.ParentName = pname |
| 350 | |
| 351 | def CheckTypeMacro(self): |
| 352 | if not self.HasClass or not self.ExcludeTypeMacro: |