Exemple #1
0
    def generate(self, result: scanner.ScannerResult,
                 output: io.IOBase) -> None:
        if self.generateIncludeGuard:
            incGuard = os.path.splitext(os.path.basename(
                self.fakeName.upper()))[0]
            if incGuard[0].isdigit():
                incGuard = '_' + incGuard

            fffHeader = os.path.expandvars(CONFIG[c.AUTOFFF_SECTION][
                c.SIMPLE_GENERATOR_SECTION][c.SIMPLE_GENERATOR_FFF_PATH])
            incGuard = f"{re.sub('([^A-Z0-9_]*)', '', incGuard)}_H_"
            LOGGER.debug(f"Generated include guard macro: '{incGuard}'.")
            incGuardBeginning = [
                f'#ifndef {incGuard}\n', f'#define {incGuard}\n\n',
                f'#include "{fffHeader}"\n'
            ]
            if self.includeFiles is not None:
                incGuardBeginning += [
                    f'#include "{os.path.basename(f)}"\n'
                    for f in self.includeFiles
                ]
            incGuardBeginning += f'#include "{os.path.basename(self.originalHeader)}"\n\n'
            incGuardBeginning += f"#ifdef __cplusplus\nextern \"C\" {{ \n #endif\n"
            incGuardEnd = [
                f"#ifdef __cplusplus\n}}\n#endif\n",
                f"\n#endif /* {incGuard} */\n"
            ]
            output.writelines(incGuardBeginning)

        for decl in filter(
                lambda decl: decl.type.args is not None and any(
                    map(
                        lambda param:
                        (not isinstance(param, EllipsisParam) and utils.
                         is_function_pointer_type(param.type)), decl.type.args.
                        params)), result.declarations):
            output.write(self._generateTypeDefForDecl(decl))
        for defin in filter(
                lambda defin: defin.decl.type.args is not None and any(
                    map(
                        lambda param:
                        (not isinstance(param, EllipsisParam) and utils.
                         is_function_pointer_type(param.type)), defin.decl.type
                        .args.params)), result.definitions):
            output.write(self._generateTypeDefForDecl(defin.decl))

        output.write("\n")
        for decl in result.declarations:
            output.write(self._generateFakeForDecl(decl))

        output.write("\n")
        for definition in result.definitions:
            output.write(self._generateBypassForFuncDef(definition))
            output.write(self._generateFakeForDecl(definition.decl))

        if self.generateIncludeGuard:
            output.writelines(incGuardEnd)
Exemple #2
0
 def write(self, stream: io.IOBase) -> None:
     """
     Write the record data to a file
     :param stream: A open file object to write to
     :return: None
     """
     stream.writelines([
         b'@',
         self.name.encode('ascii'),
         b' ' + self.desc1.encode('ascii') if self.desc1 != '' else '',
         b'\n',
         self.seq.encode('ascii'), b'\n',
         b'+ ' + self.desc2.encode('ascii') if self.desc2 != '' else b'+',
         b'\n',
         self.qual.encode('ascii'), b'\n'
     ])
Exemple #3
0
    def _log_optimizer(self, f: IOBase):
        opt_name = self.optimizer.__class__.__name__
        f.writelines("Optimizer: {}\n".format(opt_name))
        if opt_name == "Adam":
            f.writelines([
                "lr: {}\n".format(K.eval(self.optimizer.lr)),
                "beta_1: {}\n".format(K.eval(self.optimizer.beta_1)),
                "beta_2: {}\n".format(K.eval(self.optimizer.beta_2)),
                "epsilon: {}\n".format(self.optimizer.epsilon),
                "decay: {}\n".format(K.eval(self.optimizer.decay))
            ])
        elif opt_name == "SGD":
            f.writelines([
                "lr: {}\n".format(K.eval(self.optimizer.lr)),
                "momentum: {}\n".format(K.eval(self.optimizer.momentum)),
                "decay: {}\n".format(K.eval(self.optimizer.decay)),
                "initial_decay: {}\n".format(self.optimizer.initial_decay),
                "nesterov: {}\n".format(self.optimizer.nesterov)
            ])

        f.write(
            "_________________________________________________________________\n\n"
        )