Пример #1
0
static error_code_t on_document_end(generator_t *super, const YYLTYPE *yylloc, const char *file_name)
{	
	TDR_UNUSED(file_name);
	TDR_UNUSED(yylloc);

	generator_printline(super, 0, "");

	generator_close(super);
	return E_TD_NOERROR;
}
Пример #2
0
static error_code_t on_document_begin(generator_t *super, const YYLTYPE *yylloc, const char *file_name)
{
	char header[MAX_PACKAGE_NAME_LENGTH];	
	TDR_UNUSED(yylloc);

	generator_open(super, file_name, GENERATOR_WRITER_C_SUFFIX);

	generator_printline(super, 0, "/**");
    generator_printline(super, 0, " * Autogenerated by %s Compiler (%s)", PROJECT_NAME, VERSION);
    generator_printline(super, 0, " *");
    generator_printline(super, 0, " * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING");
    generator_printline(super, 0, " *  @generated");
    generator_printline(super, 0, " */");
	generator_printline(super, 0, "");

	
	//包含header的头文件
	strncpy_notdir(header, file_name, MAX_PACKAGE_NAME_LENGTH - 1);
	generator_replace_extension(header, MAX_PACKAGE_NAME_LENGTH, GENERATOR_WRITER_H_SUFFIX);
	generator_printline(super, 0, "#include \"%s\"", header);

	generator_printline(super, 0, "#include <stdint.h>");
	generator_printline(super, 0, "#include <tlibc_bool.h>");
	generator_printline(super, 0, "#include \"tlibc_define.h\"");

	generator_printline(super, 0, "");
	generator_printline(super, 0, "");
	return E_TD_NOERROR;
}
Пример #3
0
static error_code_t on_document_begin(generator_t *super, const YYLTYPE *yylloc, const char *file_name)
{
	TDR_UNUSED(yylloc);

	generator_open(super, file_name, GENERATOR_TYPES_H_SUFFIX);

	generator_printline(super, 0, "/**");
    generator_printline(super, 0, " * Autogenerated by %s Compiler (%s)", PROJECT_NAME, VERSION);
    generator_printline(super, 0, " *");
    generator_printline(super, 0, " * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING");
    generator_printline(super, 0, " *  @generated");
    generator_printline(super, 0, " */");
	generator_printline(super, 0, "");



	generator_printline(super, 0, "#ifndef _H_%s", super->document_name);
	generator_printline(super, 0, "#define _H_%s", super->document_name);
	generator_printline(super, 0, "");

	generator_printline(super, 0, "");
	generator_printline(super, 0, "#ifdef  __cplusplus");
	generator_printline(super, 0, "extern \"C\" {");
	generator_printline(super, 0, "#endif");
	generator_printline(super, 0, "");

	generator_printline(super, 0, "#include <stdint.h>");
	generator_printline(super, 0, "#include <tlibc_bool.h>");
	
	generator_printline(super, 0, "");
	generator_printline(super, 0, "");
	return E_TD_NOERROR;
}
Пример #4
0
static error_code_t on_document_end(generator_t *super, const YYLTYPE *yylloc, const char *file_name)
{
	TDR_UNUSED(yylloc);
	TDR_UNUSED(file_name);

	generator_printline(super, 0, "");
	generator_printline(super, 0, "#ifdef  __cplusplus");
	generator_printline(super, 0, "}");
	generator_printline(super, 0, "#endif");
	generator_printline(super, 0, "");

	generator_printline(super, 0, "");
	generator_printline(super, 0, "#endif //_H_%s", super->document_name);
	generator_printline(super, 0, "");

	generator_close(super);
	return E_TD_NOERROR;
}
Пример #5
0
static error_code_t on_document_begin(generator_t *super, const YYLTYPE *yylloc, const char *file_name)
{
	char types_header[MAX_PACKAGE_NAME_LENGTH];	
	TDR_UNUSED(yylloc);

	generator_open(super, file_name, GENERATOR_WRITER_H_SUFFIX);

	generator_printline(super, 0, "/**");
    generator_printline(super, 0, " * Autogenerated by %s Compiler (%s)", PROJECT_NAME, VERSION);
    generator_printline(super, 0, " *");
    generator_printline(super, 0, " * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING");
    generator_printline(super, 0, " *  @generated");
    generator_printline(super, 0, " */");
	generator_printline(super, 0, "");



	generator_printline(super, 0, "#ifndef _H_%s", super->document_name);
	generator_printline(super, 0, "#define _H_%s", super->document_name);

	generator_printline(super, 0, "");
	generator_printline(super, 0, "#ifdef  __cplusplus");
	generator_printline(super, 0, "extern \"C\" {");
	generator_printline(super, 0, "#endif");
	generator_printline(super, 0, "");

	generator_printline(super, 0, "");
	generator_printline(super, 0, "#include <stdint.h>");
	generator_printline(super, 0, "#include \"protocol/tlibc_abstract_writer.h\"");
	generator_printline(super, 0, "#include \"tlibc_error_code.h\"");
	
	//包含types的头文件
	strncpy_notdir(types_header, file_name, MAX_PACKAGE_NAME_LENGTH - 1);
	generator_replace_extension(types_header, MAX_PACKAGE_NAME_LENGTH, GENERATOR_TYPES_H_SUFFIX);
	generator_printline(super, 0, "#include \"%s\"", types_header);
	
	generator_printline(super, 0, "");
	generator_printline(super, 0, "");
	return E_TD_NOERROR;
}
Пример #6
0
static error_code_t on_definition(generator_t *super, const YYLTYPE *yylloc, const syn_definition_t *definition)
{
	generator_writer_c_t *self = TDR_CONTAINER_OF(super, generator_writer_c_t, super);
	TDR_UNUSED(yylloc);
	switch(definition->type)
	{
		case E_DT_IMPORT:
			return _on_import(self, &definition->definition.de_import);				
		case E_DT_CONST:
			return E_TD_NOERROR;
		case E_DT_ENUM:
			return _on_enum(self, &definition->definition.de_enum);
		case E_DT_STRUCT:
			return _on_struct(self, &definition->definition.de_struct);
		case E_DT_UNION:
			return _on_union(self, &definition->definition.de_union);
		case E_DT_TYPEDEF:
			return E_TD_NOERROR;
		case E_DT_UNIX_COMMENT:
			return E_TD_NOERROR;
		default:
			return E_TD_ERROR;
	}
}