コード例 #1
0
ファイル: tetra.c プロジェクト: Alfandorachk/Tetra
void patch(void)
{
    TTR_Node *node, *stored;
    int type;

    SET_GLOBAL_SCOPE();
    for (   node = dll_pop_head(call_patch_list);
            node != NULL;
            node = dll_pop_head(call_patch_list)) {
        stored = GET_SYMBOL(N_STR(node));    
        if (stored == NULL) {
            fprintf(stderr, "<Line %d> Function \"%s\" never defined\n",
                    N_LINE(node), N_STR(node));
            err_exit("Fatal error");
        } else {
            N_DTYPE(node) = N_DTYPE(stored);
            if (COMPARE_TYPES(N_CHILD(stored, 0), N_CHILD(node, 0))) {
                fprintf(stderr, 
                        "<Line %d> Incompatible types in call to %s.\n",
                        N_LINE(node), N_STR(node));
                err_exit("Fatal error");
            }
        }
    }

    for (   node = dll_pop_head(var_patch_list);
            node != NULL;
            node = dll_pop_head(var_patch_list)) {
        SET_GLOBAL_SCOPE();
        ENTER_SCOPE(N_SCOPE(node));
        if (N_TYPE(node) == N_ASSIGN) {
            TTR_set_ident_data_type(symbol_table,
                    N_CHILD(node, 0), N_DTYPE(N_CHILD(node, 1)));
        }
        type = TTR_infer_data_type(node);
        if (type == INVALID_T) {
            fprintf(stderr, "<Line %d> Incompatible types.\n",
                    N_LINE(node));
            err_exit("Fatal error");
        } else if (type == UNDEFINED_T) {
            fprintf(stderr, "<Line %d> Unknown symbol.\n", N_LINE(node));
            print_tree(node, 0);
            err_exit("Fatal error");
        }
    }

}
コード例 #2
0
ファイル: NMTReader.cpp プロジェクト: gan74/n
MaterialData *NmtMaterialReader::operator()(core::String fileName) {
	if(!fileName.endsWith(".nmt")) {
		return 0;
	}
	io::File file(fileName);

	if(!file.open(io::IODevice::Read)) {
		logMsg(file.getName() + " not found", ErrorLog);
		return 0;
	}
	N_LOG_PERF;
	uint fs = file.size();
	char *data = new char[fs + 1];
	file.readBytes(data);
	data[fs] = 0;
	file.close();
	N_SCOPE(delete[] data);

	NmtReader reader;
	return reader.load(data);
}
コード例 #3
0
ファイル: MaterialCompiler.cpp プロジェクト: gan74/nStudio
bool MaterialCompiler::serialize(Node *n, const QList<NodeLink *> &links) {
	Timer timer;
	N_SCOPE(logMsg(String("shader generated in ") + (timer.elapsed() * 1000) + "ms"));
	QString tpe;
	return serialize(n, links, tpe);
}