diff --git a/api/GenApi.py b/api/GenApi.py index 4874d31dfb7fd6d253f453213a58ba43161840a3..548434d1b162c4b8e2fd4a60e3ba814b3667a943 100644 --- a/api/GenApi.py +++ b/api/GenApi.py @@ -160,7 +160,7 @@ def ivectordouble(name, value=None, python_value=None, julia_value=None): if julia_value == "[]": julia_value = "Cdouble[]" a = arg(name, value, python_value, julia_value, - "const std::vector<double> &", "const double **", False) + "const std::vector<double> &", "const double * const *", False) api_name = "api_" + name + "_" api_name_n = "api_" + name + "_n_" a.c_pre = (" std::vector<double> " + api_name + "(" + name + ", " + @@ -184,13 +184,13 @@ def ivectordouble(name, value=None, python_value=None, julia_value=None): def ivectorstring(name, value=None, python_value=None, julia_value=None): a = arg(name, value, python_value, julia_value, - "const std::vector<std::string> &", "const char **", False) + "const std::vector<std::string> &", "const char * const *", False) api_name = "api_" + name + "_" api_name_n = "api_" + name + "_n_" a.c_pre = (" std::vector<std::string> " + api_name + "(" + name + ", " + name + " + " + name + "_n);\n") a.c_arg = api_name - a.c = "const char ** " + name + ", const size_t " + name + "_n" + a.c = "const char * const * " + name + ", const size_t " + name + "_n" a.cwrap_pre = ("char **" + api_name + "; size_t " + api_name_n + "; " + "vectorstring2charptrptr(" + name + ", &" + api_name + ", &" + api_name_n + ");\n") @@ -243,7 +243,7 @@ def ivectorvectorint(name, value=None, python_value=None, julia_value=None): if julia_value == "[]": julia_value = "Vector{Cint}[]" a = arg(name, value, python_value, julia_value, - "const std::vector<std::vector<int> > &", "const int **", False) + "const std::vector<std::vector<int> > &", "const int * const *", False) api_name = "api_" + name + "_" api_name_n = "api_" + name + "_n_" api_name_nn = "api_" + name + "_nn_" @@ -253,13 +253,13 @@ def ivectorvectorint(name, value=None, python_value=None, julia_value=None): "[i] = std::vector<int>(" + name + "[i], " + name + "[i] + " + name + "_n[i]);\n") a.c_arg = api_name - a.c = ("const int ** " + name + ", const size_t * " + name + "_n, " + + a.c = ("const int * const * " + name + ", const size_t * " + name + "_n, " + "const size_t " + name + "_nn") a.cwrap_pre = ("int **" + api_name + "; size_t *" + api_name_n + ", " + api_name_nn + "; " + "vectorvector2ptrptr(" + name + ", &" + api_name + ", &" + api_name_n + ", &" + api_name_nn + ");\n") - a.cwrap_arg = "(const int **)" + api_name + ", " + api_name_n + ", " + api_name_nn + a.cwrap_arg = api_name + ", " + api_name_n + ", " + api_name_nn a.cwrap_post = ("for(size_t i = 0; i < " + api_name_nn + "; ++i){ " + ns + "Free(" + api_name + "[i]); } " + ns + "Free(" + api_name + "); " + ns + "Free(" + api_name_n + ");\n") @@ -283,7 +283,7 @@ def ivectorvectorsize(name, value=None, python_value=None, julia_value=None): julia_value = "Vector{Csize_t}[]" a = arg(name, value, python_value, julia_value, "const std::vector<std::vector<std::size_t> > &", - "const size_t **", False) + "const size_t * const *", False) api_name = "api_" + name + "_" api_name_n = "api_" + name + "_n_" api_name_nn = "api_" + name + "_nn_" @@ -293,13 +293,13 @@ def ivectorvectorsize(name, value=None, python_value=None, julia_value=None): "[i] = std::vector<std::size_t>(" + name + "[i], " + name + "[i] + " + name + "_n[i]);\n") a.c_arg = api_name - a.c = ("const size_t ** " + name + ", const size_t * " + name + "_n, " + + a.c = ("const size_t * const * " + name + ", const size_t * " + name + "_n, " + "const size_t " + name + "_nn") a.cwrap_pre = ("size_t **" + api_name + "; size_t *" + api_name_n + ", " + api_name_nn + "; " + "vectorvector2ptrptr(" + name + ", &" + api_name + ", &" + api_name_n + ", &" + api_name_nn + ");\n") - a.cwrap_arg = "(const size_t **)" + api_name + ", " + api_name_n + ", " + api_name_nn + a.cwrap_arg = api_name + ", " + api_name_n + ", " + api_name_nn a.cwrap_post = ("for(size_t i = 0; i < " + api_name_nn + "; ++i){ " + ns + "Free(" + api_name + "[i]); } " + ns + "Free(" + api_name + "); " + ns + "Free(" + api_name_n + ");\n") @@ -322,7 +322,7 @@ def ivectorvectordouble(name, value=None, python_value=None, julia_value=None): if julia_value == "[]": julia_value = "Vector{Cdouble}[]" a = arg(name, value, python_value, julia_value, - "const std::vector<std::vector<double> > &", "const double**", + "const std::vector<std::vector<double> > &", "const double * const *", False) api_name = "api_" + name + "_" api_name_n = "api_" + name + "_n_" @@ -333,13 +333,13 @@ def ivectorvectordouble(name, value=None, python_value=None, julia_value=None): "[i] = std::vector<double>(" + name + "[i], " + name + "[i] + " + name + "_n[i]);\n") a.c_arg = api_name - a.c = ("const double ** " + name + ", const size_t * " + name + "_n, " + + a.c = ("const double * const * " + name + ", const size_t * " + name + "_n, " + "const size_t " + name + "_nn") a.cwrap_pre = ("double **" + api_name + "; size_t *" + api_name_n + ", " + api_name_nn + "; " + "vectorvector2ptrptr(" + name + ", &" + api_name + ", &" + api_name_n + ", &" + api_name_nn + ");\n") - a.cwrap_arg = "(const double **)" + api_name + ", " + api_name_n + ", " + api_name_nn + a.cwrap_arg = api_name + ", " + api_name_n + ", " + api_name_nn a.cwrap_post = ("for(size_t i = 0; i < " + api_name_nn + "; ++i){ " + ns + "Free(" + api_name + "[i]); } " + ns + "Free(" + api_name + "); " + ns + "Free(" + api_name_n + ");\n") diff --git a/api/gmsh.h_cwrap b/api/gmsh.h_cwrap index ab62305f17ba4e7c4ff125a3eafc03c66e8e1c3e..8a13954d2cc2a5443bfb2f555a53354207b6300d 100644 --- a/api/gmsh.h_cwrap +++ b/api/gmsh.h_cwrap @@ -1499,7 +1499,7 @@ namespace gmsh { // Top-level functions int *api_elementTypes_; size_t api_elementTypes_n_; vector2ptr(elementTypes, &api_elementTypes_, &api_elementTypes_n_); size_t **api_elementTags_; size_t *api_elementTags_n_, api_elementTags_nn_; vectorvector2ptrptr(elementTags, &api_elementTags_, &api_elementTags_n_, &api_elementTags_nn_); size_t **api_nodeTags_; size_t *api_nodeTags_n_, api_nodeTags_nn_; vectorvector2ptrptr(nodeTags, &api_nodeTags_, &api_nodeTags_n_, &api_nodeTags_nn_); - gmshModelMeshAddElements(dim, tag, api_elementTypes_, api_elementTypes_n_, (const size_t **)api_elementTags_, api_elementTags_n_, api_elementTags_nn_, (const size_t **)api_nodeTags_, api_nodeTags_n_, api_nodeTags_nn_, &ierr); + gmshModelMeshAddElements(dim, tag, api_elementTypes_, api_elementTypes_n_, api_elementTags_, api_elementTags_n_, api_elementTags_nn_, api_nodeTags_, api_nodeTags_n_, api_nodeTags_nn_, &ierr); if(ierr) throwLastError(); gmshFree(api_elementTypes_); for(size_t i = 0; i < api_elementTags_nn_; ++i){ gmshFree(api_elementTags_[i]); } gmshFree(api_elementTags_); gmshFree(api_elementTags_n_); @@ -4783,7 +4783,7 @@ namespace gmsh { // Top-level functions int ierr = 0; size_t *api_tags_; size_t api_tags_n_; vector2ptr(tags, &api_tags_, &api_tags_n_); double **api_data_; size_t *api_data_n_, api_data_nn_; vectorvector2ptrptr(data, &api_data_, &api_data_n_, &api_data_nn_); - gmshViewAddModelData(tag, step, modelName.c_str(), dataType.c_str(), api_tags_, api_tags_n_, (const double **)api_data_, api_data_n_, api_data_nn_, time, numComponents, partition, &ierr); + gmshViewAddModelData(tag, step, modelName.c_str(), dataType.c_str(), api_tags_, api_tags_n_, api_data_, api_data_n_, api_data_nn_, time, numComponents, partition, &ierr); if(ierr) throwLastError(); gmshFree(api_tags_); for(size_t i = 0; i < api_data_nn_; ++i){ gmshFree(api_data_[i]); } gmshFree(api_data_); gmshFree(api_data_n_); diff --git a/api/gmshc.cpp b/api/gmshc.cpp index 49de165f88bfb14bd41b4a1ca8e6285c0bc735c4..4cabf493566b0caf21235a340314ec3e1a33221e 100644 --- a/api/gmshc.cpp +++ b/api/gmshc.cpp @@ -1307,7 +1307,7 @@ GMSH_API void gmshModelMeshPreallocateElementsByType(const int elementType, cons } } -GMSH_API void gmshModelMeshAddElements(const int dim, const int tag, const int * elementTypes, const size_t elementTypes_n, const size_t ** elementTags, const size_t * elementTags_n, const size_t elementTags_nn, const size_t ** nodeTags, const size_t * nodeTags_n, const size_t nodeTags_nn, int * ierr) +GMSH_API void gmshModelMeshAddElements(const int dim, const int tag, const int * elementTypes, const size_t elementTypes_n, const size_t * const * elementTags, const size_t * elementTags_n, const size_t elementTags_nn, const size_t * const * nodeTags, const size_t * nodeTags_n, const size_t nodeTags_nn, int * ierr) { if(ierr) *ierr = 0; try { @@ -4007,7 +4007,7 @@ GMSH_API void gmshViewGetTags(int ** tags, size_t * tags_n, int * ierr) } } -GMSH_API void gmshViewAddModelData(const int tag, const int step, const char * modelName, const char * dataType, const size_t * tags, const size_t tags_n, const double ** data, const size_t * data_n, const size_t data_nn, const double time, const int numComponents, const int partition, int * ierr) +GMSH_API void gmshViewAddModelData(const int tag, const int step, const char * modelName, const char * dataType, const size_t * tags, const size_t tags_n, const double * const * data, const size_t * data_n, const size_t data_nn, const double time, const int numComponents, const int partition, int * ierr) { if(ierr) *ierr = 0; try { @@ -4081,7 +4081,7 @@ GMSH_API void gmshViewGetListData(const int tag, char *** dataType, size_t * dat } } -GMSH_API void gmshViewAddListDataString(const int tag, const double * coord, const size_t coord_n, const char ** data, const size_t data_n, const char ** style, const size_t style_n, int * ierr) +GMSH_API void gmshViewAddListDataString(const int tag, const double * coord, const size_t coord_n, const char * const * data, const size_t data_n, const char * const * style, const size_t style_n, int * ierr) { if(ierr) *ierr = 0; try { @@ -4540,7 +4540,7 @@ GMSH_API void gmshParserSetNumber(const char * name, const double * value, const } } -GMSH_API void gmshParserSetString(const char * name, const char ** value, const size_t value_n, int * ierr) +GMSH_API void gmshParserSetString(const char * name, const char * const * value, const size_t value_n, int * ierr) { if(ierr) *ierr = 0; try { @@ -4649,7 +4649,7 @@ GMSH_API void gmshOnelabSetNumber(const char * name, const double * value, const } } -GMSH_API void gmshOnelabSetString(const char * name, const char ** value, const size_t value_n, int * ierr) +GMSH_API void gmshOnelabSetString(const char * name, const char * const * value, const size_t value_n, int * ierr) { if(ierr) *ierr = 0; try { diff --git a/api/gmshc.h b/api/gmshc.h index 5660fd28bde551645c1c0c0883deb6ae1d39034b..1297c283f98cfa24eeec1262980c6233739049ba 100644 --- a/api/gmshc.h +++ b/api/gmshc.h @@ -851,8 +851,8 @@ GMSH_API void gmshModelMeshPreallocateElementsByType(const int elementType, GMSH_API void gmshModelMeshAddElements(const int dim, const int tag, const int * elementTypes, const size_t elementTypes_n, - const size_t ** elementTags, const size_t * elementTags_n, const size_t elementTags_nn, - const size_t ** nodeTags, const size_t * nodeTags_n, const size_t nodeTags_nn, + const size_t * const * elementTags, const size_t * elementTags_n, const size_t elementTags_nn, + const size_t * const * nodeTags, const size_t * nodeTags_n, const size_t nodeTags_nn, int * ierr); /* Add elements of type `elementType' classified on the entity of tag `tag'. @@ -2815,7 +2815,7 @@ GMSH_API void gmshViewAddModelData(const int tag, const char * modelName, const char * dataType, const size_t * tags, const size_t tags_n, - const double ** data, const size_t * data_n, const size_t data_nn, + const double * const * data, const size_t * data_n, const size_t data_nn, const double time, const int numComponents, const int partition, @@ -2903,8 +2903,8 @@ GMSH_API void gmshViewGetListData(const int tag, * "CenterCenter", "CenterRight"). */ GMSH_API void gmshViewAddListDataString(const int tag, const double * coord, const size_t coord_n, - const char ** data, const size_t data_n, - const char ** style, const size_t style_n, + const char * const * data, const size_t data_n, + const char * const * style, const size_t style_n, int * ierr); /* Get list-based post-processing data strings (2D strings if `dim' = 2, 3D @@ -3168,7 +3168,7 @@ GMSH_API void gmshParserSetNumber(const char * name, /* Set the value of the string variable `name' in the Gmsh parser. Create the * variable if it does not exist; update the value if the variable exists. */ GMSH_API void gmshParserSetString(const char * name, - const char ** value, const size_t value_n, + const char * const * value, const size_t value_n, int * ierr); /* Get the value of the number variable `name' from the Gmsh parser. Return an @@ -3221,7 +3221,7 @@ GMSH_API void gmshOnelabSetNumber(const char * name, * the parameter if it does not exist; update the value if the parameter * exists. */ GMSH_API void gmshOnelabSetString(const char * name, - const char ** value, const size_t value_n, + const char * const * value, const size_t value_n, int * ierr); /* Get the value of the number parameter `name' from the ONELAB database.