Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 8 additions & 6 deletions co_sim_io/c/co_sim_io_c.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ CoSimIO_Info CoSimIO_ImportData(
CoSimIO_Info CoSimIO_ExportData(
const CoSimIO_Info I_Info,
const int I_Size,
const double** I_Data)
const double* I_Data)
{
using namespace CoSimIO::Internals;
std::unique_ptr<DataContainer<double>> p_container(new DataContainerRawMemoryReadOnly<double>(I_Data, I_Size));
Expand All @@ -67,13 +67,14 @@ CoSimIO_Info CoSimIO_ImportMesh(
const CoSimIO_Info I_Info,
int* I_NumberOfNodes,
int* I_NumberOfElements,
int* I_NumberOfElementConnectivities,
double** I_NodalCoordinates,
int** I_ElementConnectivities,
int** I_ElementTypes)
{
using namespace CoSimIO::Internals;
std::unique_ptr<DataContainer<double>> p_container_coords(new DataContainerRawMemory<double>(I_NodalCoordinates, *I_NumberOfNodes));
std::unique_ptr<DataContainer<int>> p_container_conn(new DataContainerRawMemory<int>(I_ElementConnectivities, *I_NumberOfElements)); // using "NumberOfElements" here is wrong! => has to be computed! Or sth like this ... (maybe even has to be passed...)
std::unique_ptr<DataContainer<int>> p_container_conn(new DataContainerRawMemory<int>(I_ElementConnectivities, *I_NumberOfElementConnectivities));
std::unique_ptr<DataContainer<int>> p_container_types(new DataContainerRawMemory<int>(I_ElementTypes, *I_NumberOfElements));
auto info = ConvertInfo(CoSimIO::ImportMesh(ConvertInfo(I_Info), *p_container_coords, *p_container_conn, *p_container_types));
*I_NumberOfNodes = static_cast<int>(p_container_coords->size());
Expand All @@ -85,13 +86,14 @@ CoSimIO_Info CoSimIO_ExportMesh(
const CoSimIO_Info I_Info,
const int O_NumberOfNodes,
const int O_NumberOfElements,
const double** O_NodalCoordinates,
const int** O_ElementConnectivities,
const int** O_ElementTypes)
const int O_NumberOfElementConnectivities,
const double* O_NodalCoordinates,
const int* O_ElementConnectivities,
const int* O_ElementTypes)
{
using namespace CoSimIO::Internals;
std::unique_ptr<DataContainer<double>> p_container_coords(new DataContainerRawMemoryReadOnly<double>(O_NodalCoordinates, O_NumberOfNodes));
std::unique_ptr<DataContainer<int>> p_container_conn(new DataContainerRawMemoryReadOnly<int>(O_ElementConnectivities, O_NumberOfElements)); // using "NumberOfElements" here is wrong! => has to be computed! Or sth like this ... (maybe even has to be passed...)
std::unique_ptr<DataContainer<int>> p_container_conn(new DataContainerRawMemoryReadOnly<int>(O_ElementConnectivities, O_NumberOfElementConnectivities));
std::unique_ptr<DataContainer<int>> p_container_types(new DataContainerRawMemoryReadOnly<int>(O_ElementTypes, O_NumberOfElements));
return ConvertInfo(CoSimIO::ExportMesh(ConvertInfo(I_Info), *p_container_coords, *p_container_conn, *p_container_types));
}
Expand Down
30 changes: 16 additions & 14 deletions co_sim_io/c/co_sim_io_c.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,29 +30,31 @@ CoSimIO_Info CoSimIO_Disconnect(

CoSimIO_Info CoSimIO_ImportData(
const CoSimIO_Info I_Info,
int* pSize,
double** ppData);
int* O_Size,
double** O_Data);

CoSimIO_Info CoSimIO_ExportData(
const CoSimIO_Info* I_Info,
const CoSimIO_Info I_Info,
const int I_Size,
const double** pData);
const double* I_Data);

CoSimIO_Info CoSimIO_ImportMesh(
const CoSimIO_Info I_Info,
int* pNumberOfNodes,
int* pNumberOfElements,
double** O_NodalCoordinates,
int** ppElementConnectivities,
int** ppElementTypes);
int* I_NumberOfNodes,
int* I_NumberOfElements,
int* I_NumberOfElementConnectivities,
double** I_NodalCoordinates,
int** I_ElementConnectivities,
int** I_ElementTypes);

CoSimIO_Info CoSimIO_ExportMesh(
const CoSimIO_Info I_Info,
const int NumberOfNodes,
const int NumberOfElements,
const double** pNodalCoordinates,
const int** pElementConnectivities,
const int** pElementTypes);
const int O_NumberOfNodes,
const int O_NumberOfElements,
const int O_NumberOfElementConnectivities,
const double* O_NodalCoordinates,
const int* O_ElementConnectivities,
const int* O_ElementTypes);


CoSimIO_Info CoSimIO_ImportInfo(
Expand Down
8 changes: 4 additions & 4 deletions co_sim_io/impl/data_container.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -137,16 +137,16 @@ template<typename TDataType>
class DataContainerRawMemoryReadOnly : public DataContainer<TDataType>
{
public:
explicit DataContainerRawMemoryReadOnly(const TDataType** ppData, const std::size_t Size)
: mppData(ppData), mSize(Size) {}
explicit DataContainerRawMemoryReadOnly(const TDataType* pData, const std::size_t Size)
: mpData(pData), mSize(Size) {}

std::size_t size() const override {return mSize;};
void resize(const std::size_t NewSize) override {CO_SIM_IO_ERROR << "Using non-const member of readonly object!" << std::endl;};
const TDataType* data() const override {return *mppData;}
const TDataType* data() const override {return mpData;}
TDataType* data() override {CO_SIM_IO_ERROR << "Using non-const member of readonly object!" << std::endl; return nullptr;}

private:
const TDataType** mppData;
const TDataType* mpData;
const std::size_t mSize;
};

Expand Down