def parse_prototype(prototype):

    prototype = prototype.strip()
    prototype_split = prototype.split(" ")
    type = prototype_split[0]
    prototype_obj = Container()

    if prototype_split[1] == "*":
        is_pointer = True
        function_name = prototype_split[2]
        params = " ".join(prototype_split[3:])
    else:
        is_pointer = False
        function_name = prototype_split[1]
        params = " ".join(prototype_split[2:])

    # if the function's open paren is stuck to the function name, remove it
    if function_name.endswith("("):
        function_name = function_name.rstrip('(')
        params = "(" + params

    # if the pointer was stuck to the function name, remove it
    if function_name.startswith('*'):
        is_pointer = True
        function_name = function_name.lstrip('*')

    try:
        params = params[params.index("(")+1:params.index(")")].strip().split(",")

        #debug("type: %s, function: %s, is_pointer: %s, params: %s" % \
            # (type, function_name, is_pointer, params))
    except:
        #debug("unable to parse params for function %s" % function_name)
        debug(function_name[-1])

    prototype_obj.type = type
    prototype_obj.is_pointer = is_pointer
    prototype_obj.function_name = function_name
    prototype_obj.params = params
    determine_py_type(prototype_obj)

    #debug('function_name: %s, type: %s, py_string: %s\n' % \
        # (prototype_obj.function_name,
        #  prototype_obj.type,
        #  prototype_obj.py_string))

    return prototype_obj
Take the given function prototype and break it up into the type of
dataset/ETHPy150Open rca/PySPICE/mkwrapper.py/parse_prototype