DYT/Tool/matlab/include/MatlabEngine/engine_factory.hpp
2024-11-22 23:19:31 +08:00

108 lines
3.5 KiB
C++

/* Copyright 2017 The MathWorks, Inc. */
#ifndef ENGINE_FACTORY_HPP
#define ENGINE_FACTORY_HPP
#include <vector>
#include <string>
#include <memory>
#include "engine_util.hpp"
namespace matlab {
namespace engine {
using namespace matlab::execution;
class MATLABEngine;
/**
* Start MATLAB synchronously with startup options
*
* @param options - Startup options used to launch MATLAB
* @return std::unique_ptr<MATLABEngine> - A unique pointer of MATLABEngine object
*
* @throw EngineException if failed to start MATLAB
*/
std::unique_ptr<MATLABEngine> startMATLAB(const std::vector<std::u16string>& options = std::vector<std::u16string>());
/**
* Start MATLAB asynchronously with startup options
*
* @param options - Startup options used to launch MATLAB
* @return FutureResult<std::unique_ptr<MATLABEngine>> - A future of a unique pointer of a MATLABEngine object
*
* @throw none
*/
FutureResult<std::unique_ptr<MATLABEngine>> startMATLABAsync(const std::vector<std::u16string>& options = std::vector<std::u16string>());
/**
* Find all shared MATLAB sessions synchronously
*
* @return std::vector<std::u16string> - A vector of names of shared MATLAB sessions
*
* @throw none
*/
std::vector<std::u16string> findMATLAB();
/**
* Find all shared MATLAB sessions synchronously
*
* @return FutureResult<std::vector<std::u16string>> - A future of a vector of names of shared MATLAB sessions
*
* @throw none
*/
FutureResult<std::vector<std::u16string>> findMATLABAsync();
/**
* Start or connect to a shared MATLAB session synchronously
*
* @return std::unique_ptr<MATLABEngine> - A unique pointer of a MATLABEngine object
*
* @throw EngineException if failed to start or connect to a shared MATLAB session
*/
std::unique_ptr<MATLABEngine> connectMATLAB();
/**
* Connect to a shared MATLAB session synchronously
*
* @param std::u16string - The name of a shared MATLAB session
* @return std::unique_ptr<MATLABEngine> - A unique pointer of a MATLABEngine object
*
* @throw EngineException if failed to connect to a shared MATLAB session
*/
std::unique_ptr<MATLABEngine> connectMATLAB(const std::u16string& name);
/**
* Start or connect to a shared MATLAB session asynchronously
*
* @return FutureResult<std::unique_ptr<MATLABEngine>> - A future of a unique pointer of a MATLABEngine object
*
* @throw none
*/
FutureResult<std::unique_ptr<MATLABEngine>> connectMATLABAsync();
/**
* Connect to a shared MATLAB session asynchronously
*
* @param std::u16string - The name of a shared MATLAB session
* @return FutureResult<std::unique_ptr<MATLABEngine>> - A future of a unique pointer of a MATLABEngine object
*
* @throw none
*/
FutureResult<std::unique_ptr<MATLABEngine>> connectMATLABAsync(const std::u16string& name);
/**
* Terminate the engine client. The Engine application will be no longer able to start MATLAB after calling this function.
*
* @return void
*
* @throw none
*/
void terminateEngineClient();
}
}
#endif //ENGINE_FACTORY_HPP