Skip to content
Snippets Groups Projects
Commit 2c7bc130 authored by Daniel Hornung's avatar Daniel Hornung
Browse files

WIP: Compiles now for multiple cpp files.

- Fixed CMakeLists.txt.
- New caosdbClass.m, just for development for now.
- New _info.cpp which converts some data.
parent 884fddfd
No related branches found
No related tags found
1 merge request!1Initial functionality
Pipeline #10871 failed
......@@ -54,7 +54,7 @@ endif()
#######################################################
### Compile *.mex files
### Compile into *.mex files
#######################################################
add_subdirectory(src)
set(PKG_INST_DIR "${PROJECT_SOURCE_DIR}/inst")
......@@ -68,9 +68,11 @@ string(REGEX REPLACE ";" ":" _MKOCTFILE_RPATH "${CONAN_LIB_DIRS}")
set(_MKOCTFILE_OPTIONS "-Wl,-rpath,${_MKOCTFILE_RPATH}" "--mex" "-std=gnu++17"
"-L/usr/local/lib" ${_MKOCTFILE_INCLUDES} ${_MKOCTFILE_LIB_DIRS} ${_MKOCTFILE_LIBS})
add_custom_target(mex ALL)
file(GLOB_RECURSE _CPP_SOURCES RELATIVE "${PROJECT_SOURCE_DIR}/src" src/*.cpp)
foreach(sourcefile ${_CPP_SOURCES})
STRING(REGEX REPLACE ".cpp$" ".mex" _mex_ext_file ${sourcefile})
string(REGEX REPLACE ".cpp$" ".mex" _mex_ext_file ${sourcefile})
STRING(REGEX REPLACE "/" "__" _target_name "${sourcefile}")
set(_mex_ext_file "${PKG_INST_DIR}/${_mex_ext_file}")
set(_mkoct_output "-o" "${_mex_ext_file}")
set(_abs_source "${PROJECT_SOURCE_DIR}/src/${sourcefile}")
......@@ -79,7 +81,8 @@ foreach(sourcefile ${_CPP_SOURCES})
ARGS ${_MKOCTFILE_OPTIONS} ${_mkoct_output} ${_abs_source}
MAIN_DEPENDENCY ${_abs_source}
)
add_custom_target(mex ALL DEPENDS ${_mex_ext_file})
add_custom_target(${_target_name} DEPENDS ${_mex_ext_file})
add_dependencies(mex ${_target_name})
endforeach(sourcefile)
......
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Hello %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
classdef caosdbClass < handle
properties
connection; % Will use the default connection
endproperties
methods
function obj = caosdbClass(connection="")
obj.connection = connection;
disp(["created: >", connection, "<"]);
endfunction
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% info %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function res = info(obj)
info_result = _info(obj.connection)
res = info_result
endfunction
endmethods
endclassdef
#include "caosdb/connection.h" // for Connection, ConnectionManager
#include "caosdb/constants.h" // for LIBCAOSDB_VERSION_MAJOR, LIBCAOSDB_VE...
#include "caosdb/info.h" // for VersionInfo
#include "mex.h" // for mxArray, mexFunction
#include "mexproto.h" // for mexPrintf, mxCreateString, mxGetChars
#include <cstring> // for strcmp
#include <memory> // for unique_ptr, __shared_ptr_access, shar...
#include <string> // for allocator, char_traits, operator+
using std::string;
mxArray* info(const string &connection_name);
// auto print_version() -> const char * {
// mexPrintf("Octave caosdb client %s\n\n", FULL_VERSION.c_str());
// mexPrintf("We don't miss the H of caos.\n");
// return FULL_VERSION.c_str();
// };
mxArray* info(string const &connection_name) {
const auto &connection =
caosdb::connection::ConnectionManager::GetDefaultConnection();
const auto &version_info = connection->GetVersionInfo();
mexPrintf("Server Version: v%d.%d.%d-%s-%s\n", version_info->GetMajor(),
version_info->GetMinor(), version_info->GetPatch(),
version_info->GetPreRelease().c_str(),
version_info->GetBuild().c_str());
const char *keys[] = {"major", "minor", "patch", "pre_release", "build"};
mwSize dims[2] = {1, 1};
mxArray* info_struct = mxCreateStructArray(2, dims, 5, keys);
auto* major = mxCreateNumericMatrix(1, 1, mxUINT64_CLASS, mxREAL);
UINT64_T* major_data = (UINT64_T*) mxGetData(major);
major_data[0] = version_info->GetMajor();
mxSetData(major, major_data);
mxSetField(info_struct, 0, "major", major);
mxSetField(info_struct, 0, "pre_release",
mxCreateString(version_info->GetPreRelease().c_str()));
mxSetField(info_struct, 0, "build",
mxCreateString("foobuild"));
return info_struct;
}
/**
*
*/
/**
* @brief Get info about the server
*
* @details At the moment, this is just the version of the server.
*
* @param connection_name A string with the connection name. May be omitted or an empty string.
*
* @return return type
*/
void mexFunction(int nlhs, mxArray *plhs[], int nrhs,
const mxArray *prhs[]) {
string conn_name("");
if (nrhs >= 1) {
conn_name = mxGetChars(prhs[0]);
}
auto info_struct = info(conn_name);
plhs[0] = info_struct;
// plhs[0] = mxCreateString("foostring");
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment