Skip to content
Snippets Groups Projects
Commit c2b5429e authored by Jianfeng Yan's avatar Jianfeng Yan Committed by Jianfeng Yan
Browse files

ENH: add pinned array; add cmake option to choose between marshal array and pinned array

parent 9437c229
No related branches found
No related tags found
No related merge requests found
......@@ -67,14 +67,15 @@ endif()
# SWIG
option(${PROJECT_NAME}_WRAP_CSHARP "Build iMSTK-C# wrapper code and lib" OFF)
option(${PROJECT_NAME}_SWIG_PINNED_ARRAY "Managed C# arrays using pinning" ON)
mark_as_advanced(${PROJECT_NAME}_SWIG_PINNED_ARRAY)
if (${PROJECT_NAME}_WRAP_CSHARP)
find_package(SWIG REQUIRED)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
set(CMAKE_SWIG_FLAGS "")
set(CMAKE_SWIG_OUTDIR ${CMAKE_CURRENT_SOURCE_DIR}/newton_out)
set(cmAKE_SWIG_FLAGS "")
endif()
# CUDA
......
......@@ -10,6 +10,9 @@ swig_add_library(iMSTKCWrapper
SOURCES imstkCWrapper.i)
set_target_properties(iMSTKCWrapper PROPERTIES SWIG_COMPILE_OPTIONS "-namespace;imstk")
if(iMSTK_SWIG_PINNED_ARRAY)
set_target_properties(iMSTKCWrapper PROPERTIES SWIG_COMPILE_DEFINITIONS "SWIG_PINNED_ARRAY")
endif()
if(iMSTK_USE_OpenHaptics)
set_target_properties(iMSTKCWrapper PROPERTIES SWIG_COMPILE_DEFINITIONS "iMSTK_USE_OpenHaptics")
target_compile_definitions(iMSTKCWrapper PRIVATE iMSTK_USE_OpenHaptics)
......
......@@ -17,6 +17,7 @@
%ignore imstk::VecDataArray::cbegin() const; /* fix the multiple-definition problem. */
%ignore imstk::VecDataArray::end(); /* fix the multiple-definition problem. */
%ignore imstk::VecDataArray::cend() const; /* fix the multiple-definition problem. */
%ignore imstk::VecDataArray::setData();
%ignore imstk::stdSink;
%ignore imstk::LogManager;
%ignore imstk::Logger::Logger();
......
......@@ -186,16 +186,32 @@ namespace std {
%template(ModuleDriverWeakPtr) std::weak_ptr<imstk::ModuleDriver>;
%template(SimulationManagerWeakPtr) std::weak_ptr<imstk::SimulationManager>;
#ifdef SWIG_PINNED_ARRAY
%csmethodmodifiers imstk::VecDataArray::setValues "public unsafe";
%csmethodmodifiers imstk::VecDataArray::getValues "public unsafe";
#endif
%include "cpointer.i"
%include "arrays_csharp.i"
%apply unsigned char INPUT[] {const unsigned char* val}
%apply int INPUT[] {const int* val}
%apply float INPUT[] {const float * val}
%apply double INPUT[] {const double* val}
%apply unsigned char OUTPUT[] {unsigned char* val}
%apply int OUTPUT[] {int* val}
%apply float OUTPUT[] {float * val}
%apply double OUTPUT[] {double* val}
#ifdef SWIG_PINNED_ARRAY
%apply unsigned char FIXED[] {unsigned char* val}
%apply unsigned char FIXED[] {const unsigned char* val}
%apply int FIXED[] {int* val}
%apply int FIXED[] {const int* val}
%apply float FIXED[] {float * val}
%apply float FIXED[] {const float * val}
%apply double FIXED[] {double* val}
%apply double FIXED[] {const double* val}
#else
%apply unsigned char INPUT[] {const unsigned char* val}
%apply unsigned char OUTPUT[] {unsigned char* val}
%apply int INPUT[] {const int* val}
%apply int OUTPUT[] {int* val}
%apply float INPUT[] {const float * val}
%apply float OUTPUT[] {float * val}
%apply double INPUT[] {const double* val}
%apply double OUTPUT[] {double* val}
#endif
%include "ignored.i"
%include "modifiers.i"
%include "type_cast.i"
......
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