def __init__(self, root_module, origin, out=StdOut(), config=CGenConfig()):

        CodeGenerator.__init__(self, root_module, origin, out)

        self._config = config

        self._dir_stack = []
        self._cur_dir = ""

        self._name_creator = NameCreator()

        self._template_dir = os.path.dirname(
            __file__) + os.sep + "templates" + os.sep + "c"
        self._refresh_template_processor()

        self._regex_type_w_ptrs = re.compile(r"(\w+)(\s*)(\*+)")