from xml.dom import minidom
from volk_regexp import *

def make_h(funclist, arched_arglist) :
    tempstring = "";
    tempstring = tempstring + '/*this file is auto generated by make_h.py*/\n';

    tempstring = tempstring + '\n#ifndef INCLUDED_VOLK_RUNTIME';
    tempstring = tempstring + '\n#define INCLUDED_VOLK_RUNTIME';
    tempstring = tempstring + '\n\n#include<volk/volk_typedefs.h>\n';
    tempstring = tempstring + '#include<volk/volk_config_fixed.h>\n';
    tempstring = tempstring + '#include<volk/volk_common.h>\n';
    tempstring = tempstring + '#include<volk/volk_complex.h>\n';
    tempstring = tempstring + '__VOLK_DECL_BEGIN\n';

    tempstring = tempstring + '\n';

    tempstring += """
struct volk_func_desc {
     const char **indices;
     const int *arch_defs;
     const int n_archs;
};
"""
    for i in range(len(funclist)):
        tempstring += "extern " + replace_volk.sub("p", funclist[i]) + " " + funclist[i] + ";\n"
        tempstring += "extern VOLK_API void %s_manual%s;\n" % (funclist[i], arched_arglist[i])
        tempstring = strip_trailing(tempstring, " {")
        tempstring += "extern VOLK_API struct volk_func_desc %s_get_func_desc(void);\n" % (funclist[i])

    tempstring = tempstring + '__VOLK_DECL_END\n';
    tempstring = tempstring + "#endif /*INCLUDED_VOLK_RUNTIME*/\n";

    return tempstring;