|
|
- #!/usr/bin/env python3
-
- # Note to python wizzes - I am not trying to be clever or efficient here. This
- # is a convenience tool for ridiculous engine debugging fun, and I don't write
- # python often. I am definitely not a member of the religion. YMMV, etc.
- #
- # If you break this, you buy it.
- #
-
- import sys
- import argparse
-
- def parse_enum_line(line, ct, r):
- line = line.strip()
- if (line.startswith("//") or line == ""):
- return
-
- parts = []
-
- if (ct):
- temp = line.split(",")
- if len(temp) == 0:
- return
- else:
- parts = temp[0].split()
-
- else:
- parts = line.split()
-
- if len(parts) < 3 or parts[1] != '=':
- return
- if r and not parts[0].startswith("PEP_rating"):
- return
- elif ct and not parts[0].startswith("PEP_ct_"):
- return
- elif not ct and not r and not parts[0].startswith("PEP_"):
- return
-
- key = int(parts[2].strip(','), 0)
- value = parts[0]
- valueDict[key] = value
-
- def get_error(code):
- try:
- error = valueDict[code]
- except:
- print("Hah buddy! You wish!")
- exit(-1)
-
- print(str(code) + " -> " + error)
-
- parser = argparse.ArgumentParser()
- parser.add_argument("value", type=int)
- parser.add_argument("--comm_type", "-ct", help="number represents a comm type", action='store_true')
- parser.add_argument("--rating", "-r", help="number represents a rating", action='store_true')
-
- args = parser.parse_args()
-
- error_val = args.value
-
- input_fname = ""
-
- if not args.rating:
- input_fname = "src/pEpEngine.h"
- else:
- input_fname = "src/message_api.h"
- print(input_fname)
- pEp_error = not (args.rating or args.comm_type)
-
- file = open(input_fname, 'r')
- content = file.readlines()
- file.close()
-
- inStruct = False
- valueDict = dict()
-
- # This is super fragile. C'est la vie.
- # If another struct is added first, expect chaos! ;)
- #
- for line in content:
- if args.rating:
- if line.startswith("} PEP_rating;"):
- break
- elif args.comm_type:
- if line.startswith("} PEP_comm_type;"):
- break
- elif line.startswith("} PEP_STATUS;"):
- break
-
- if not inStruct:
- if (args.rating and not line.startswith("typedef enum _PEP_rating {")) or \
- (args.comm_type and not line.startswith("typedef enum _PEP_comm_type {")) or \
- (pEp_error and not line.startswith("typedef enum {")):
- continue
- else:
- inStruct = True
- continue
-
- parse_enum_line(line, args.comm_type, args.rating)
-
- get_error(error_val)
-
|