Skip to content

Commit 6a5a53f

Browse files
authored
Merge branch 'master' into 25_06_rework_relocatable_macros
2 parents da53ed8 + ea0b18b commit 6a5a53f

129 files changed

Lines changed: 906 additions & 620 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/pr-label-checker.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,9 @@ jobs:
4141
'pr: clean',
4242
'pr: fix',
4343
'pr: new feature',
44-
'pr: test'
44+
'pr: test',
45+
'pr: revert(ed)',
46+
'pr: project-ci-infrastructure'
4547
];
4648
4749
// Check if any descriptive label is included in the 'labels' array

CHANGELOG.md

Lines changed: 177 additions & 0 deletions
Large diffs are not rendered by default.

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ include(CMakeDependentOption)
77

88
# Manually define VERSION
99
set(Sofa_VERSION_MAJOR 25)
10-
set(Sofa_VERSION_MINOR 06)
10+
set(Sofa_VERSION_MINOR 12)
1111
set(Sofa_VERSION_PATCH 99)
1212
set(Sofa_VERSION ${Sofa_VERSION_MAJOR}.${Sofa_VERSION_MINOR}.${Sofa_VERSION_PATCH})
1313

Sofa/Component/IO/Mesh/src/sofa/component/io/mesh/GIDMeshLoader.h

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -31,40 +31,41 @@ namespace sofa::component::io::mesh
3131
class SOFA_COMPONENT_IO_MESH_API GIDMeshLoader : public sofa::core::loader::MeshLoader
3232
{
3333
public :
34-
SOFA_CLASS(GIDMeshLoader, sofa::core::loader::MeshLoader);
34+
SOFA_CLASS(GIDMeshLoader, sofa::core::loader::MeshLoader);
3535

36-
typedef sofa::topology::Edge Edge;
37-
typedef sofa::topology::Triangle Triangle;
38-
typedef sofa::topology::Quad Quad;
39-
typedef sofa::topology::Tetrahedron Tetrahedron;
40-
typedef sofa::topology::Hexahedron Hexahedron;
36+
typedef sofa::core::topology::Topology::Edge Edge;
37+
typedef sofa::core::topology::Topology::Triangle Triangle;
38+
typedef sofa::core::topology::Topology::Quad Quad;
39+
typedef sofa::core::topology::Topology::Tetrahedron Tetrahedron;
40+
typedef sofa::core::topology::Topology::Hexahedron Hexahedron;
4141
typedef sofa::type::Vec3 Coord;
4242

4343

4444
public :
4545
bool doLoad() override;
4646

4747
protected :
48-
enum ElementType{ LINEAR, TRIANGLE, QUADRILATERAL, TETRAHEDRA, HEXAHEDRA, PRISM, PYRAMID, SPHERE, CIRCLE };
48+
enum ElementType{ LINEAR, TRIANGLE, QUADRILATERAL, TETRAHEDRA, HEXAHEDRA, PRISM, PYRAMID, SPHERE, CIRCLE };
4949

50-
GIDMeshLoader();
51-
~GIDMeshLoader() override;
50+
GIDMeshLoader();
51+
~GIDMeshLoader() override;
5252

53-
bool readGID(std::ifstream& file);
53+
bool readGID(std::ifstream& file);
5454

5555
void doClearBuffers() override;
5656

5757
private :
5858

59-
bool readLinearElements(std::ifstream& file);
60-
bool readTriangleElements(std::ifstream& file);
61-
bool readQuadrilateralElements(std::ifstream& file);
62-
bool readTetrahedralElements(std::ifstream& file);
63-
bool readHexahedralElements(std::ifstream& file);
59+
bool readLinearElements(std::ifstream& file);
60+
bool readTriangleElements(std::ifstream& file);
61+
bool readQuadrilateralElements(std::ifstream& file);
62+
bool readTetrahedralElements(std::ifstream& file);
63+
bool readHexahedralElements(std::ifstream& file);
6464

65-
unsigned short m_dimensions;
66-
ElementType m_eltType;
67-
unsigned short m_nNode;
65+
private :
66+
unsigned short m_dimensions;
67+
ElementType m_eltType;
68+
unsigned short m_nNode;
6869

6970
};
7071

Sofa/Component/IO/Mesh/src/sofa/component/io/mesh/GridMeshCreator.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ class SOFA_COMPONENT_IO_MESH_API GridMeshCreator : public sofa::core::loader::Me
5252
unsigned vert( unsigned x, unsigned y) { return x + y * d_resolution.getValue()[0]; }
5353

5454
// To avoid edge redundancy, we insert the edges to a set, an then dump the set. Edge (a,b) is considered equal to (b,a), so only one of them is inserted
55-
std::set<topology::Edge> uniqueEdges; ///< edges without redundancy
55+
std::set<Edge> uniqueEdges; ///< edges without redundancy
5656
void insertUniqueEdge(unsigned a, unsigned b); ///< insert an edge if it is not redundant
5757
void insertTriangle(unsigned a, unsigned b, unsigned c); ///< insert a triangle (no reduncy checking !) and unique edges
5858
void insertQuad(unsigned a, unsigned b, unsigned c, unsigned d); ///< insert a quad (no reduncy checking !) and unique edges

Sofa/Component/IO/Mesh/src/sofa/component/io/mesh/MeshGmshLoader.cpp

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -286,7 +286,7 @@ bool MeshGmshLoader::readGmsh(std::ifstream &file, const unsigned int gmshFormat
286286
nodes.resize(nnodes);
287287
const unsigned int edgesInQuadraticTriangle[3][2] = { {0,1}, {1,2}, {2,0} };
288288
const unsigned int edgesInQuadraticTetrahedron[6][2] = { {0,1}, {1,2}, {0,2},{0,3},{2,3},{1,3} };
289-
std::set<topology::Edge> edgeSet;
289+
std::set<Edge> edgeSet;
290290
size_t j;
291291
for (int n = 0; n < nnodes; ++n)
292292
{
@@ -299,26 +299,26 @@ bool MeshGmshLoader::readGmsh(std::ifstream &file, const unsigned int gmshFormat
299299
{
300300
case 1: // Line
301301
addInGroup(my_edgesGroups.wref(), tag, my_edges.size());
302-
addEdge(my_edges.wref(), topology::Edge(nodes[0], nodes[1]));
302+
addEdge(my_edges.wref(), Edge(nodes[0], nodes[1]));
303303
break;
304304
case 2: // Triangle
305305
addInGroup(my_trianglesGroups.wref(), tag, my_triangles.size());
306-
addTriangle(my_triangles.wref(), topology::Triangle(nodes[0], nodes[1], nodes[2]));
306+
addTriangle(my_triangles.wref(), Triangle(nodes[0], nodes[1], nodes[2]));
307307
break;
308308
case 3: // Quad
309-
addQuad(my_quads.wref(), topology::Quad(nodes[0], nodes[1], nodes[2], nodes[3]));
309+
addQuad(my_quads.wref(), Quad(nodes[0], nodes[1], nodes[2], nodes[3]));
310310
break;
311311
case 4: // Tetra
312312
addInGroup(my_tetrahedraGroups.wref(), tag, my_tetrahedra.size());
313-
addTetrahedron(my_tetrahedra.wref(), topology::Tetrahedron(nodes[0], nodes[1], nodes[2], nodes[3]));
313+
addTetrahedron(my_tetrahedra.wref(), Tetrahedron(nodes[0], nodes[1], nodes[2], nodes[3]));
314314
break;
315315
case 5: // Hexa
316316
addInGroup(my_hexahedraGroups.wref(), tag, my_hexahedra.size());
317-
addHexahedron(my_hexahedra.wref(), topology::Hexahedron(nodes[0], nodes[1], nodes[2], nodes[3], nodes[4], nodes[5], nodes[6], nodes[7]));
317+
addHexahedron(my_hexahedra.wref(), Hexahedron(nodes[0], nodes[1], nodes[2], nodes[3], nodes[4], nodes[5], nodes[6], nodes[7]));
318318
break;
319319
case 8: // quadratic edge
320320
addInGroup(my_edgesGroups.wref(), tag, my_edges.size());
321-
addEdge(my_edges.wref(), topology::Edge(nodes[0], nodes[1]));
321+
addEdge(my_edges.wref(), Edge(nodes[0], nodes[1]));
322322
{
323323
HighOrderEdgePosition hoep;
324324
hoep[0] = nodes[2];
@@ -330,15 +330,15 @@ bool MeshGmshLoader::readGmsh(std::ifstream &file, const unsigned int gmshFormat
330330
break;
331331
case 9: // quadratic triangle
332332
addInGroup(my_trianglesGroups.wref(), tag, my_triangles.size());
333-
addTriangle(my_triangles.wref(), topology::Triangle(nodes[0], nodes[1], nodes[2]));
333+
addTriangle(my_triangles.wref(), Triangle(nodes[0], nodes[1], nodes[2]));
334334
{
335335
HighOrderEdgePosition hoep;
336336
for (j = 0; j < 3; ++j) {
337337
size_t v0 = std::min(nodes[edgesInQuadraticTriangle[j][0]],
338338
nodes[edgesInQuadraticTriangle[j][1]]);
339339
size_t v1 = std::max(nodes[edgesInQuadraticTriangle[j][0]],
340340
nodes[edgesInQuadraticTriangle[j][1]]);
341-
topology::Edge e(v0, v1);
341+
Edge e(v0, v1);
342342
if (!edgeSet.contains(e)) {
343343
edgeSet.insert(e);
344344
addEdge(my_edges.wref(), v0, v1);
@@ -353,15 +353,15 @@ bool MeshGmshLoader::readGmsh(std::ifstream &file, const unsigned int gmshFormat
353353
break;
354354
case 11: // quadratic tetrahedron
355355
addInGroup(my_tetrahedraGroups.wref(), tag, my_tetrahedra.size());
356-
addTetrahedron(my_tetrahedra.wref(), topology::Tetrahedron(nodes[0], nodes[1], nodes[2], nodes[3]));
356+
addTetrahedron(my_tetrahedra.wref(), Tetrahedron(nodes[0], nodes[1], nodes[2], nodes[3]));
357357
{
358358
HighOrderEdgePosition hoep;
359359
for (j = 0; j < 6; ++j) {
360360
size_t v0 = std::min(nodes[edgesInQuadraticTetrahedron[j][0]],
361361
nodes[edgesInQuadraticTetrahedron[j][1]]);
362362
size_t v1 = std::max(nodes[edgesInQuadraticTetrahedron[j][0]],
363363
nodes[edgesInQuadraticTetrahedron[j][1]]);
364-
topology::Edge e(v0, v1);
364+
Edge e(v0, v1);
365365
if (!edgeSet.contains(e)) {
366366
edgeSet.insert(e);
367367
addEdge(my_edges.wref(), v0, v1);
@@ -434,7 +434,7 @@ bool MeshGmshLoader::readGmsh(std::ifstream &file, const unsigned int gmshFormat
434434
// Common information to add second order triangles (elementType = 9) and tetrahedra (elementType = 11)
435435
const unsigned int edgesInQuadraticTriangle[3][2] = { {0,1}, {1,2}, {2,0} };
436436
const unsigned int edgesInQuadraticTetrahedron[6][2] = { {0,1}, {1,2}, {0,2},{0,3},{2,3},{1,3} };
437-
std::set<topology::Edge> edgeSet;
437+
std::set<Edge> edgeSet;
438438

439439
for (unsigned int entityIndex = 0; entityIndex < nbEntityBlocks; entityIndex++) // looping over the entity blocks
440440
{
@@ -502,26 +502,26 @@ bool MeshGmshLoader::readGmsh(std::ifstream &file, const unsigned int gmshFormat
502502
{
503503
case 1: // Line
504504
addInGroup(my_edgesGroups.wref(), elementTag, my_edges.size());
505-
addEdge(my_edges.wref(), topology::Edge(nodes[0], nodes[1]));
505+
addEdge(my_edges.wref(), Edge(nodes[0], nodes[1]));
506506
break;
507507
case 2: // Triangle
508508
addInGroup(my_trianglesGroups.wref(), elementTag, my_triangles.size());
509-
addTriangle(my_triangles.wref(), topology::Triangle(nodes[0], nodes[1], nodes[2]));
509+
addTriangle(my_triangles.wref(), Triangle(nodes[0], nodes[1], nodes[2]));
510510
break;
511511
case 3: // Quadrangle
512-
addQuad(my_quads.wref(), topology::Quad(nodes[0], nodes[1], nodes[2], nodes[3]));
512+
addQuad(my_quads.wref(), Quad(nodes[0], nodes[1], nodes[2], nodes[3]));
513513
break;
514514
case 4: // Tetrahedron
515515
addInGroup(my_tetrahedraGroups.wref(), elementTag, my_tetrahedra.size());
516-
addTetrahedron(my_tetrahedra.wref(), topology::Tetrahedron(nodes[0], nodes[1], nodes[2], nodes[3]));
516+
addTetrahedron(my_tetrahedra.wref(), Tetrahedron(nodes[0], nodes[1], nodes[2], nodes[3]));
517517
break;
518518
case 5: // Hexahedron
519519
addInGroup(my_hexahedraGroups.wref(), elementTag, my_hexahedra.size());
520-
addHexahedron(my_hexahedra.wref(), topology::Hexahedron(nodes[0], nodes[1], nodes[2], nodes[3], nodes[4], nodes[5], nodes[6], nodes[7]));
520+
addHexahedron(my_hexahedra.wref(), Hexahedron(nodes[0], nodes[1], nodes[2], nodes[3], nodes[4], nodes[5], nodes[6], nodes[7]));
521521
break;
522522
case 8: // Second order line
523523
addInGroup(my_edgesGroups.wref(), elementTag, my_edges.size());
524-
addEdge(my_edges.wref(), topology::Edge(nodes[0], nodes[1]));
524+
addEdge(my_edges.wref(), Edge(nodes[0], nodes[1]));
525525
{
526526
HighOrderEdgePosition hoep;
527527
hoep[0] = nodes[2];
@@ -533,7 +533,7 @@ bool MeshGmshLoader::readGmsh(std::ifstream &file, const unsigned int gmshFormat
533533
break;
534534
case 9: // Second order triangle
535535
addInGroup(my_trianglesGroups.wref(), elementTag, my_triangles.size());
536-
addTriangle(my_triangles.wref(), topology::Triangle(nodes[0], nodes[1], nodes[2]));
536+
addTriangle(my_triangles.wref(), Triangle(nodes[0], nodes[1], nodes[2]));
537537
{
538538
HighOrderEdgePosition hoep;
539539
for (size_t j = 0; j < 3; ++j)
@@ -542,7 +542,7 @@ bool MeshGmshLoader::readGmsh(std::ifstream &file, const unsigned int gmshFormat
542542
nodes[edgesInQuadraticTriangle[j][1]]);
543543
size_t v1 = std::max(nodes[edgesInQuadraticTriangle[j][0]],
544544
nodes[edgesInQuadraticTriangle[j][1]]);
545-
topology::Edge e(v0, v1);
545+
Edge e(v0, v1);
546546
if (!edgeSet.contains(e))
547547
{
548548
edgeSet.insert(e);
@@ -558,7 +558,7 @@ bool MeshGmshLoader::readGmsh(std::ifstream &file, const unsigned int gmshFormat
558558
break;
559559
case 11: // Second order tetrahedron
560560
addInGroup(my_tetrahedraGroups.wref(), elementTag, my_tetrahedra.size());
561-
addTetrahedron(my_tetrahedra.wref(), topology::Tetrahedron(nodes[0], nodes[1], nodes[2], nodes[3]));
561+
addTetrahedron(my_tetrahedra.wref(), Tetrahedron(nodes[0], nodes[1], nodes[2], nodes[3]));
562562
{
563563
HighOrderEdgePosition hoep;
564564
for (size_t j = 0; j < 6; ++j)
@@ -567,7 +567,7 @@ bool MeshGmshLoader::readGmsh(std::ifstream &file, const unsigned int gmshFormat
567567
nodes[edgesInQuadraticTetrahedron[j][1]]);
568568
size_t v1 = std::max(nodes[edgesInQuadraticTetrahedron[j][0]],
569569
nodes[edgesInQuadraticTetrahedron[j][1]]);
570-
topology::Edge e(v0, v1);
570+
Edge e(v0, v1);
571571
if (!edgeSet.contains(e))
572572
{
573573
edgeSet.insert(e);

Sofa/Component/IO/Mesh/src/sofa/component/io/mesh/MeshOffLoader.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,8 +81,8 @@ bool MeshOffLoader::readOFF (std::ifstream &file, const char* /* filename */ )
8181
size_t numberOfVertices = 0, numberOfFaces = 0, numberOfEdges = 0;
8282
size_t currentNumberOfVertices = 0, currentNumberOfFaces = 0;
8383
Vec3d vertex;
84-
topology::Triangle triangle;
85-
topology::Quad quad;
84+
Triangle triangle;
85+
Quad quad;
8686
std::string line;
8787

8888
while( !file.eof() && (numberOfVertices == 0) )

Sofa/Component/IO/Mesh/src/sofa/component/io/mesh/MeshSTLLoader.cpp

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -129,8 +129,8 @@ bool MeshSTLLoader::readBinarySTL(const char *filename)
129129
auto my_normals = getWriteOnlyAccessor(d_normals);
130130
auto my_triangles = getWriteOnlyAccessor(this->d_triangles);
131131

132-
std::map< sofa::type::Vec3f, sofa::Index > my_map;
133-
sofa::Index positionCounter = 0;
132+
std::map< sofa::type::Vec3f, core::topology::Topology::Index > my_map;
133+
core::topology::Topology::Index positionCounter = 0;
134134
const bool useMap = d_mergePositionUsingMap.getValue();
135135

136136
std::ifstream dataFile(filename, std::ios::in | std::ifstream::binary);
@@ -171,7 +171,7 @@ bool MeshSTLLoader::readBinarySTL(const char *filename)
171171
// Parsing d_facets
172172
for (uint32_t i = 0; i<nbrFacet; ++i)
173173
{
174-
topology::Triangle the_tri;
174+
Triangle the_tri;
175175

176176
// Normal:
177177
dataFile.read((char*)&normal[0], 4);
@@ -208,7 +208,7 @@ bool MeshSTLLoader::readBinarySTL(const char *filename)
208208
if ( (vertex[0] == my_positions[k][0]) && (vertex[1] == my_positions[k][1]) && (vertex[2] == my_positions[k][2]))
209209
{
210210
find = true;
211-
the_tri[j] = static_cast<sofa::Index>(k);
211+
the_tri[j] = static_cast<core::topology::Topology::PointID>(k);
212212
break;
213213
}
214214

@@ -257,11 +257,11 @@ bool MeshSTLLoader::readSTL(std::ifstream& dataFile)
257257
auto my_normals = getWriteOnlyAccessor(d_normals);
258258
auto my_triangles = getWriteOnlyAccessor(d_triangles);
259259

260-
std::map< sofa::type::Vec3f, sofa::Index > my_map;
261-
sofa::Index positionCounter = 0, vertexCounter = 0;
260+
std::map< sofa::type::Vec3f, core::topology::Topology::Index > my_map;
261+
core::topology::Topology::Index positionCounter = 0, vertexCounter = 0;
262262
const bool useMap = d_mergePositionUsingMap.getValue();
263263

264-
topology::Triangle the_tri;
264+
Triangle the_tri;
265265

266266
while (std::getline(dataFile, line))
267267
{
@@ -304,14 +304,14 @@ bool MeshSTLLoader::readSTL(std::ifstream& dataFile)
304304
if ( (result[0] == my_positions[i][0]) && (result[1] == my_positions[i][1]) && (result[2] == my_positions[i][2]))
305305
{
306306
find = true;
307-
the_tri[vertexCounter] = static_cast<sofa::Index>(i);
307+
the_tri[vertexCounter] = static_cast<core::topology::Topology::PointID>(i);
308308
break;
309309
}
310310

311311
if (!find)
312312
{
313313
my_positions.push_back(result);
314-
the_tri[vertexCounter] = static_cast<sofa::Index>(my_positions.size()-1);
314+
the_tri[vertexCounter] = static_cast<core::topology::Topology::PointID>(my_positions.size()-1);
315315
}
316316
}
317317
vertexCounter++;

Sofa/Component/IO/Mesh/src/sofa/component/io/mesh/MeshTrianLoader.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ bool MeshTrianLoader::readTrian (const char* filename)
127127

128128
for (unsigned int i=0; i<nbTriangles; ++i)
129129
{
130-
topology::Triangle nodes;
130+
Triangle nodes;
131131
type::fixed_array <int,3> ngh;
132132

133133
dataFile >> nodes[0] >> nodes[1] >> nodes[2] >> ngh[0] >> ngh[1] >> ngh[2];
@@ -225,7 +225,7 @@ bool MeshTrianLoader::readTrian2 (const char* filename)
225225

226226
for (unsigned int i=0; i<nbTriangles; ++i)
227227
{
228-
topology::Triangle nodes;
228+
Triangle nodes;
229229

230230
dataFile >> nodes[0] >> nodes[1] >> nodes[2] ;
231231

Sofa/Component/IO/Mesh/src/sofa/component/io/mesh/MeshVTKLoader.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -349,7 +349,7 @@ bool MeshVTKLoader::setInputsMesh()
349349

350350
const unsigned int edgesInQuadraticTriangle[3][2] = {{0, 1}, {1, 2}, {2, 0}};
351351
const unsigned int edgesInQuadraticTetrahedron[6][2] = {{0, 1}, {1, 2}, {0, 2}, {0, 3}, {1, 3}, {2, 3}};
352-
std::set<topology::Edge> edgeSet;
352+
std::set<Edge> edgeSet;
353353
size_t j;
354354
int nbf = reader->numberOfCells;
355355
int i = 0;
@@ -448,7 +448,7 @@ bool MeshVTKLoader::setInputsMesh()
448448
inFP[i + edgesInQuadraticTriangle[j][1]]);
449449
sofa::Index v1 = std::max( inFP[i + edgesInQuadraticTriangle[j][0]],
450450
inFP[i + edgesInQuadraticTriangle[j][1]]);
451-
topology::Edge e(v0, v1);
451+
Edge e(v0, v1);
452452
if (!edgeSet.contains(e))
453453
{
454454
edgeSet.insert(e);
@@ -472,7 +472,7 @@ bool MeshVTKLoader::setInputsMesh()
472472
inFP[i + edgesInQuadraticTetrahedron[j][1]]);
473473
sofa::Index v1 = std::max( inFP[i + edgesInQuadraticTetrahedron[j][0]],
474474
inFP[i + edgesInQuadraticTetrahedron[j][1]]);
475-
topology::Edge e(v0, v1);
475+
Edge e(v0, v1);
476476
if (!edgeSet.contains(e))
477477
{
478478
edgeSet.insert(e);

0 commit comments

Comments
 (0)