Beispiel #1
0
	void EnumTypes::installOn(Converter& converter) const {

		// registers type handler
		converter.getTypeManager().addTypeHandler(EnumTypeHandler);

		// register additional operators
		converter.getFunctionManager().getOperatorConverterTable().insertAll(getEnumTypeOperatorTable(converter.getNodeManager()));

		// register additional StatementConverter
		converter.getStmtConverter().addStmtHandler(EnumLiteralHandler);

	}
Beispiel #2
0
	Converter OCLHostBackend::buildConverter(core::NodeManager& manager) const {

		// get standard converter from runtime backend
		Converter converter = runtime::RuntimeBackend::buildConverter(manager);

		// update converter name
		converter.setConverterName("OpenCL Host Backend");

		// set up pre-processing
		PreProcessorPtr preprocessor =  makePreProcessor<PreProcessingSequence>(
			getBasicPreProcessorSequence(SKIP_POINTWISE_EXPANSION),
			makePreProcessor<ocl_kernel::KernelPreprocessor>(kernelDumpPath),
			makePreProcessor<HostPreprocessor>(),
			makePreProcessor<runtime::WorkItemizer>(),
			makePreProcessor<runtime::StandaloneWrapper>()
		);
		converter.setPreProcessor(preprocessor);

		// update type manager
		TypeManager& typeManager = converter.getTypeManager();
		addOCLTypeIncludes(typeManager.getTypeIncludeTable());
		typeManager.addTypeHandler(OclHostTypeHandler);


		// update statement converter
		StmtConverter& stmtConverter = converter.getStmtConverter();
		stmtConverter.addStmtHandler(OclHostStmtHandler);

		// update function manager
		FunctionManager& functionManager = converter.getFunctionManager();
		addOpenclHostFunctionIncludes(functionManager.getFunctionIncludeTable());
		addOpenCLHostSpecificOps(manager, functionManager.getOperatorConverterTable());

		// done
		return converter;
	}