#!/usr/bin/python

import re

strip_comments_and_strings = True

def evaluate_matches(lines, fn):
   errors = []

   for lineno, line in enumerate(lines):

      # Exception for Microsoft fix in src/network/network_system.h
      if line.count("in_port_t = uint16_t") or line.count("in_addr_t = uint32_t"):
         continue

      if re.match("(^\s*((class|struct)\s+((\S+_)|([a-z]\S+)).*{)|((enum)\s+((\S+_)|(([abd-z])|(c(?!lass))\S+)).*{)|((using)\s+((\S+_)|([a-z]\S+)).*=).*$)", line):

         errors.append((fn, lineno+1, "Use CapitalLetterWithCamelCase when naming an enum class, struct, or \"using\"."))

   return errors
# /end evaluate_matches

forbidden = [
    "class my_class",
    "class myClass",
    "struct my_struct",
    "struct myStruct",
    "using my_typedef",
    "using myTypedef",
    "enum class my_enum",
    "enum class myEnum"
    "enum my_enum",
    "enum myEnum"
]

allowed = [
    "class MyClass",
    "struct MyStruct",
    "using MyTypedef",
    "enum class MyEnum",
    "enum MyEnum"
]
