2019-01-13 12:48:58 +00:00
|
|
|
//
|
|
|
|
// cpart.h
|
|
|
|
// Net
|
|
|
|
//
|
|
|
|
// Created by 胡一兵 on 2019/1/13.
|
|
|
|
// Copyright © 2019年 Bakantu. All rights reserved.
|
|
|
|
//
|
|
|
|
|
|
|
|
#ifndef cpart_h
|
|
|
|
#define cpart_h
|
|
|
|
|
2019-01-17 14:55:52 +00:00
|
|
|
#include "type.h"
|
2019-01-18 03:09:08 +00:00
|
|
|
#include "memory.h"
|
2019-01-18 17:28:24 +00:00
|
|
|
#include "compute.h"
|
2019-01-14 09:19:45 +00:00
|
|
|
|
2019-01-17 14:55:52 +00:00
|
|
|
//整型
|
2019-01-13 16:57:56 +00:00
|
|
|
#define INT 0
|
2019-01-17 14:55:52 +00:00
|
|
|
//浮点型
|
2019-01-13 16:57:56 +00:00
|
|
|
#define DOUBLE 1
|
2019-01-14 10:35:09 +00:00
|
|
|
|
2019-01-17 14:55:52 +00:00
|
|
|
//计算模块入口函数类型
|
2019-01-14 09:19:45 +00:00
|
|
|
typedef int(*PCSFUNC)(void);
|
2019-01-13 12:48:58 +00:00
|
|
|
|
2019-02-02 12:06:49 +00:00
|
|
|
struct farg_info {
|
|
|
|
string type;
|
|
|
|
int size = 1;
|
|
|
|
};
|
|
|
|
|
2019-01-17 14:55:52 +00:00
|
|
|
//计算模块类
|
2019-01-13 12:48:58 +00:00
|
|
|
class CPart{
|
|
|
|
public:
|
2019-01-18 17:28:24 +00:00
|
|
|
// 参数格式信息列表
|
2019-02-02 12:06:49 +00:00
|
|
|
vector<farg_info> fargs_in, fargs_out;
|
2019-01-18 17:28:24 +00:00
|
|
|
// 输入参数与输出参数缓冲区
|
2019-01-13 12:48:58 +00:00
|
|
|
vector<void *> args_in, args_out;
|
2019-01-18 17:28:24 +00:00
|
|
|
// 计算过程入口与出口管理类
|
2019-01-18 14:57:54 +00:00
|
|
|
LibArgsTransfer libargs_in, libargs_out;
|
2019-01-18 17:28:24 +00:00
|
|
|
// 计算过程的入口函数的地址
|
2019-01-19 19:10:45 +00:00
|
|
|
PCSFUNC func = nullptr;
|
2019-01-18 17:28:24 +00:00
|
|
|
// 动态链接库操作柄
|
|
|
|
void *handle = nullptr;
|
2019-01-14 10:35:09 +00:00
|
|
|
// 源文件所在目录
|
|
|
|
string src_path;
|
|
|
|
// 计算模块名
|
|
|
|
string name;
|
2019-01-18 17:28:24 +00:00
|
|
|
// 动态链接库路径
|
|
|
|
string lib_path;
|
|
|
|
// 动态链接库名
|
|
|
|
string lib_name;
|
2019-01-14 10:35:09 +00:00
|
|
|
// 源文件名
|
|
|
|
string src_name;
|
|
|
|
|
2019-02-02 12:06:49 +00:00
|
|
|
// 构造函数
|
2019-01-18 17:28:24 +00:00
|
|
|
CPart(string src_path,string lib_path,string src_name,string name,bool ffresh = true);
|
2019-02-02 12:06:49 +00:00
|
|
|
// 根据数据库信息构造
|
|
|
|
CPart(string func_name, sqlite3 *psql);
|
2019-01-14 10:35:09 +00:00
|
|
|
// 析构函数
|
2019-01-14 09:19:45 +00:00
|
|
|
~CPart();
|
2019-01-18 17:28:24 +00:00
|
|
|
// 设置输入输出参数格式信息列表
|
2019-02-02 12:06:49 +00:00
|
|
|
void setArgsType(vector<farg_info> fargs_in, vector<farg_info> fargs_out);
|
2019-01-14 10:35:09 +00:00
|
|
|
// 编译源文件
|
|
|
|
int BuildSo(void);
|
2019-01-18 17:28:24 +00:00
|
|
|
// 获得动态链接库操作柄
|
|
|
|
int GetSoHandle(void);
|
|
|
|
// 运行计算过程
|
2019-01-14 09:19:45 +00:00
|
|
|
int Run(void);
|
2019-01-18 17:28:24 +00:00
|
|
|
// 清空传入传出参数缓冲区
|
2019-01-14 09:19:45 +00:00
|
|
|
void Clear(void);
|
2019-01-18 17:28:24 +00:00
|
|
|
// 在传入参数缓冲区中添加参数
|
|
|
|
void AddCPArgsIn(void *arg);
|
2019-01-13 12:48:58 +00:00
|
|
|
};
|
|
|
|
|
2019-01-18 14:57:54 +00:00
|
|
|
|
2019-01-13 12:48:58 +00:00
|
|
|
#endif /* cpart_h */
|