GateQuantumActivator.cpp 1.61 KB
Newer Older
1
2
3
4
5
6
7
8
/*******************************************************************************
 * Copyright (c) 2017 UT-Battelle, LLC.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * and Eclipse Distribution License v1.0 which accompanies this
 * distribution. The Eclipse Public License is available at
 * http://www.eclipse.org/legal/epl-v10.html and the Eclipse Distribution License
 * is available at https://eclipse.org/org/documents/edl-v10.php
9
10
 *
 * Contributors:
11
12
 *   Alexander J. McCaskey - initial API and implementation
 *******************************************************************************/
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include "QFT.hpp"
#include "InverseQFT.hpp"
#include "KernelReplacementPreprocessor.hpp"

#include "cppmicroservices/BundleActivator.h"
#include "cppmicroservices/BundleContext.h"
#include "cppmicroservices/ServiceProperties.h"

#include <memory>
#include <set>

using namespace cppmicroservices;

namespace {

/**
 */
class US_ABI_LOCAL GateQuantumActivator: public BundleActivator {

public:

	GateQuantumActivator() {
	}

	/**
	 */
	void Start(BundleContext context) {
		auto qft = std::make_shared<xacc::quantum::QFT>();
		auto iqft = std::make_shared<xacc::quantum::InverseQFT>();
		auto kp =
				std::make_shared<xacc::quantum::KernelReplacementPreprocessor>();
		context.RegisterService<xacc::Preprocessor>(kp);
45
46
		context.RegisterService<xacc::IRGenerator>(iqft);
		context.RegisterService<xacc::IRGenerator>(qft);
47
48
49
50
51
52
53
54
55
56
57
58
	}

	/**
	 */
	void Stop(BundleContext /*context*/) {
	}

};

}

CPPMICROSERVICES_EXPORT_BUNDLE_ACTIVATOR(GateQuantumActivator)