MeshLib C Docs
Loading...
Searching...
No Matches
MRGraph.h File Reference
#include <MRCMesh/MRId.h>
#include <MRCMisc/common.h>
#include <MRCMisc/exports.h>
#include <stdbool.h>
#include <stddef.h>

Go to the source code of this file.

Typedefs

typedef struct MR_GraphEdgeBitSet MR_GraphEdgeBitSet
 
typedef struct MR_GraphVertBitSet MR_GraphVertBitSet
 
typedef struct MR_Vector_MR_Graph_EndVertices_MR_GraphEdgeId MR_Vector_MR_Graph_EndVertices_MR_GraphEdgeId
 
typedef struct MR_Vector_std_vector_MR_GraphEdgeId_MR_GraphVertId MR_Vector_std_vector_MR_GraphEdgeId_MR_GraphVertId
 
typedef struct MR_std_function_void_from_MR_GraphEdgeId_MR_GraphEdgeId MR_std_function_void_from_MR_GraphEdgeId_MR_GraphEdgeId
 
typedef struct MR_std_vector_MR_GraphEdgeId MR_std_vector_MR_GraphEdgeId
 
typedef struct MR_Graph MR_Graph
 
typedef struct MR_Graph_EndVertices MR_Graph_EndVertices
 Generated from class MR::Graph::EndVertices.
 

Functions

MRC_API MR_GraphMR_Graph_DefaultConstruct (void)
 
MRC_API MR_GraphMR_Graph_DefaultConstructArray (size_t num_elems)
 
MRC_API const MR_GraphMR_Graph_OffsetPtr (const MR_Graph *ptr, ptrdiff_t i)
 Offsets a pointer to an array element by i positions (not bytes). Use only if you're certain that the pointer points to an array element.
 
MRC_API MR_GraphMR_Graph_OffsetMutablePtr (MR_Graph *ptr, ptrdiff_t i)
 Offsets a pointer to an array element by i positions (not bytes). Use only if you're certain that the pointer points to an array element.
 
MRC_API MR_GraphMR_Graph_ConstructFromAnother (MR_PassBy _other_pass_by, MR_Graph *_other)
 
MRC_API void MR_Graph_Destroy (const MR_Graph *_this)
 Destroys a heap-allocated instance of MR_Graph. Does nothing if the pointer is null.
 
MRC_API void MR_Graph_DestroyArray (const MR_Graph *_this)
 Destroys a heap-allocated array of MR_Graph. Does nothing if the pointer is null.
 
MRC_API MR_GraphMR_Graph_AssignFromAnother (MR_Graph *_this, MR_PassBy _other_pass_by, MR_Graph *_other)
 
MRC_API void MR_Graph_construct (MR_Graph *_this, MR_PassBy neighboursPerVertex_pass_by, MR_Vector_std_vector_MR_GraphEdgeId_MR_GraphVertId *neighboursPerVertex, MR_PassBy endsPerEdge_pass_by, MR_Vector_MR_Graph_EndVertices_MR_GraphEdgeId *endsPerEdge)
 
MRC_API MR_uint64_t MR_Graph_vertSize (const MR_Graph *_this)
 
MRC_API const MR_GraphVertBitSetMR_Graph_validVerts (const MR_Graph *_this)
 
MRC_API bool MR_Graph_valid_MR_GraphVertId (const MR_Graph *_this, MR_GraphVertId v)
 
MRC_API MR_uint64_t MR_Graph_edgeSize (const MR_Graph *_this)
 
MRC_API const MR_GraphEdgeBitSetMR_Graph_validEdges (const MR_Graph *_this)
 
MRC_API bool MR_Graph_valid_MR_GraphEdgeId (const MR_Graph *_this, MR_GraphEdgeId e)
 
MRC_API const MR_std_vector_MR_GraphEdgeIdMR_Graph_neighbours (const MR_Graph *_this, MR_GraphVertId v)
 
MRC_API const MR_Graph_EndVerticesMR_Graph_ends (const MR_Graph *_this, MR_GraphEdgeId e)
 
MRC_API MR_GraphEdgeId MR_Graph_findEdge (const MR_Graph *_this, MR_GraphVertId a, MR_GraphVertId b)
 
MRC_API bool MR_Graph_areNeighbors (const MR_Graph *_this, MR_GraphVertId a, MR_GraphVertId b)
 
MRC_API void MR_Graph_merge (MR_Graph *_this, MR_GraphVertId remnant, MR_GraphVertId dead, MR_PassBy onMergeEdges_pass_by, MR_std_function_void_from_MR_GraphEdgeId_MR_GraphEdgeId *onMergeEdges)
 
MRC_API bool MR_Graph_checkValidity (const MR_Graph *_this)
 
MRC_API const MR_GraphVertIdMR_Graph_EndVertices_Get_v0 (const MR_Graph_EndVertices *_this)
 
MRC_API void MR_Graph_EndVertices_Set_v0 (MR_Graph_EndVertices *_this, MR_GraphVertId value)
 
MRC_API MR_GraphVertIdMR_Graph_EndVertices_GetMutable_v0 (MR_Graph_EndVertices *_this)
 
MRC_API const MR_GraphVertIdMR_Graph_EndVertices_Get_v1 (const MR_Graph_EndVertices *_this)
 
MRC_API void MR_Graph_EndVertices_Set_v1 (MR_Graph_EndVertices *_this, MR_GraphVertId value)
 
MRC_API MR_GraphVertIdMR_Graph_EndVertices_GetMutable_v1 (MR_Graph_EndVertices *_this)
 
MRC_API MR_Graph_EndVerticesMR_Graph_EndVertices_DefaultConstruct (void)
 
MRC_API MR_Graph_EndVerticesMR_Graph_EndVertices_DefaultConstructArray (size_t num_elems)
 
MRC_API MR_Graph_EndVerticesMR_Graph_EndVertices_ConstructFrom (MR_GraphVertId v0, MR_GraphVertId v1)
 
MRC_API const MR_Graph_EndVerticesMR_Graph_EndVertices_OffsetPtr (const MR_Graph_EndVertices *ptr, ptrdiff_t i)
 Offsets a pointer to an array element by i positions (not bytes). Use only if you're certain that the pointer points to an array element.
 
MRC_API MR_Graph_EndVerticesMR_Graph_EndVertices_OffsetMutablePtr (MR_Graph_EndVertices *ptr, ptrdiff_t i)
 Offsets a pointer to an array element by i positions (not bytes). Use only if you're certain that the pointer points to an array element.
 
MRC_API MR_Graph_EndVerticesMR_Graph_EndVertices_ConstructFromAnother (const MR_Graph_EndVertices *_other)
 
MRC_API void MR_Graph_EndVertices_Destroy (const MR_Graph_EndVertices *_this)
 Destroys a heap-allocated instance of MR_Graph_EndVertices. Does nothing if the pointer is null.
 
MRC_API void MR_Graph_EndVertices_DestroyArray (const MR_Graph_EndVertices *_this)
 Destroys a heap-allocated array of MR_Graph_EndVertices. Does nothing if the pointer is null.
 
MRC_API MR_Graph_EndVerticesMR_Graph_EndVertices_AssignFromAnother (MR_Graph_EndVertices *_this, const MR_Graph_EndVertices *_other)
 
MRC_API MR_GraphVertId MR_Graph_EndVertices_otherEnd (const MR_Graph_EndVertices *_this, MR_GraphVertId a)
 
MRC_API void MR_Graph_EndVertices_replaceEnd (MR_Graph_EndVertices *_this, MR_GraphVertId what, MR_GraphVertId with)
 

Typedef Documentation

◆ MR_Graph

typedef struct MR_Graph MR_Graph

mathematical graph consisting from vertices and undirected edges Generated from class MR::Graph.

◆ MR_Graph_EndVertices

◆ MR_GraphEdgeBitSet

◆ MR_GraphVertBitSet

◆ MR_std_function_void_from_MR_GraphEdgeId_MR_GraphEdgeId

◆ MR_std_vector_MR_GraphEdgeId

◆ MR_Vector_MR_Graph_EndVertices_MR_GraphEdgeId

◆ MR_Vector_std_vector_MR_GraphEdgeId_MR_GraphVertId

Function Documentation

◆ MR_Graph_areNeighbors()

MRC_API bool MR_Graph_areNeighbors ( const MR_Graph * _this,
MR_GraphVertId a,
MR_GraphVertId b )

returns true if the vertices a and b are neighbors Generated from a method of class MR::Graph named areNeighbors. Parameter _this can not be null. It is a single object.

◆ MR_Graph_AssignFromAnother()

MRC_API MR_Graph * MR_Graph_AssignFromAnother ( MR_Graph * _this,
MR_PassBy _other_pass_by,
MR_Graph * _other )

Generated from a method of class MR::Graph named operator=. Parameter _this can not be null. It is a single object. The returned pointer will never be null. It is non-owning, do NOT destroy it.

◆ MR_Graph_checkValidity()

MRC_API bool MR_Graph_checkValidity ( const MR_Graph * _this)

verifies that all internal data structures are valid Generated from a method of class MR::Graph named checkValidity. Parameter _this can not be null. It is a single object.

◆ MR_Graph_construct()

MRC_API void MR_Graph_construct ( MR_Graph * _this,
MR_PassBy neighboursPerVertex_pass_by,
MR_Vector_std_vector_MR_GraphEdgeId_MR_GraphVertId * neighboursPerVertex,
MR_PassBy endsPerEdge_pass_by,
MR_Vector_MR_Graph_EndVertices_MR_GraphEdgeId * endsPerEdge )

constructs the graph from all valid vertices and edges Generated from a method of class MR::Graph named construct. Parameter _this can not be null. It is a single object.

◆ MR_Graph_ConstructFromAnother()

MRC_API MR_Graph * MR_Graph_ConstructFromAnother ( MR_PassBy _other_pass_by,
MR_Graph * _other )

Generated from a constructor of class MR::Graph. Never returns null. Returns an instance allocated on the heap! Must call MR_Graph_Destroy() to free it when you're done using it.

◆ MR_Graph_DefaultConstruct()

MRC_API MR_Graph * MR_Graph_DefaultConstruct ( void )

Constructs an empty (default-constructed) instance. Never returns null. Returns an instance allocated on the heap! Must call MR_Graph_Destroy() to free it when you're done using it.

◆ MR_Graph_DefaultConstructArray()

MRC_API MR_Graph * MR_Graph_DefaultConstructArray ( size_t num_elems)

Constructs an array of empty (default-constructed) instances, of the specified size. Will never return null. The array must be destroyed using MR_Graph_DestroyArray(). Use MR_Graph_OffsetMutablePtr() and MR_Graph_OffsetPtr() to access the array elements.

◆ MR_Graph_Destroy()

MRC_API void MR_Graph_Destroy ( const MR_Graph * _this)

Destroys a heap-allocated instance of MR_Graph. Does nothing if the pointer is null.

◆ MR_Graph_DestroyArray()

MRC_API void MR_Graph_DestroyArray ( const MR_Graph * _this)

Destroys a heap-allocated array of MR_Graph. Does nothing if the pointer is null.

◆ MR_Graph_edgeSize()

MRC_API MR_uint64_t MR_Graph_edgeSize ( const MR_Graph * _this)

returns the number of edge records, including invalid ones Generated from a method of class MR::Graph named edgeSize. Parameter _this can not be null. It is a single object.

◆ MR_Graph_ends()

MRC_API const MR_Graph_EndVertices * MR_Graph_ends ( const MR_Graph * _this,
MR_GraphEdgeId e )

returns the ends of given edge Generated from a method of class MR::Graph named ends. Parameter _this can not be null. It is a single object. The returned pointer will never be null. It is non-owning, do NOT destroy it.

◆ MR_Graph_EndVertices_AssignFromAnother()

MRC_API MR_Graph_EndVertices * MR_Graph_EndVertices_AssignFromAnother ( MR_Graph_EndVertices * _this,
const MR_Graph_EndVertices * _other )

Generated from a method of class MR::Graph::EndVertices named operator=. Parameter _this can not be null. It is a single object. Parameter _other can not be null. It is a single object. The returned pointer will never be null. It is non-owning, do NOT destroy it.

◆ MR_Graph_EndVertices_ConstructFrom()

MRC_API MR_Graph_EndVertices * MR_Graph_EndVertices_ConstructFrom ( MR_GraphVertId v0,
MR_GraphVertId v1 )

Constructs MR::Graph::EndVertices elementwise. Never returns null. Returns an instance allocated on the heap! Must call MR_Graph_EndVertices_Destroy() to free it when you're done using it.

◆ MR_Graph_EndVertices_ConstructFromAnother()

MRC_API MR_Graph_EndVertices * MR_Graph_EndVertices_ConstructFromAnother ( const MR_Graph_EndVertices * _other)

Generated from a constructor of class MR::Graph::EndVertices. Parameter _other can not be null. It is a single object. Never returns null. Returns an instance allocated on the heap! Must call MR_Graph_EndVertices_Destroy() to free it when you're done using it.

◆ MR_Graph_EndVertices_DefaultConstruct()

MRC_API MR_Graph_EndVertices * MR_Graph_EndVertices_DefaultConstruct ( void )

Constructs an empty (default-constructed) instance. Never returns null. Returns an instance allocated on the heap! Must call MR_Graph_EndVertices_Destroy() to free it when you're done using it.

◆ MR_Graph_EndVertices_DefaultConstructArray()

MRC_API MR_Graph_EndVertices * MR_Graph_EndVertices_DefaultConstructArray ( size_t num_elems)

Constructs an array of empty (default-constructed) instances, of the specified size. Will never return null. The array must be destroyed using MR_Graph_EndVertices_DestroyArray(). Use MR_Graph_EndVertices_OffsetMutablePtr() and MR_Graph_EndVertices_OffsetPtr() to access the array elements.

◆ MR_Graph_EndVertices_Destroy()

MRC_API void MR_Graph_EndVertices_Destroy ( const MR_Graph_EndVertices * _this)

Destroys a heap-allocated instance of MR_Graph_EndVertices. Does nothing if the pointer is null.

◆ MR_Graph_EndVertices_DestroyArray()

MRC_API void MR_Graph_EndVertices_DestroyArray ( const MR_Graph_EndVertices * _this)

Destroys a heap-allocated array of MR_Graph_EndVertices. Does nothing if the pointer is null.

◆ MR_Graph_EndVertices_Get_v0()

MRC_API const MR_GraphVertId * MR_Graph_EndVertices_Get_v0 ( const MR_Graph_EndVertices * _this)

Returns a pointer to a member variable of class MR::Graph::EndVertices named v0. Parameter _this can not be null. It is a single object. The returned pointer will never be null. It is non-owning, do NOT destroy it.

◆ MR_Graph_EndVertices_Get_v1()

MRC_API const MR_GraphVertId * MR_Graph_EndVertices_Get_v1 ( const MR_Graph_EndVertices * _this)

Returns a pointer to a member variable of class MR::Graph::EndVertices named v1. Parameter _this can not be null. It is a single object. The returned pointer will never be null. It is non-owning, do NOT destroy it.

◆ MR_Graph_EndVertices_GetMutable_v0()

MRC_API MR_GraphVertId * MR_Graph_EndVertices_GetMutable_v0 ( MR_Graph_EndVertices * _this)

Returns a mutable pointer to a member variable of class MR::Graph::EndVertices named v0. Parameter _this can not be null. It is a single object. The returned pointer will never be null. It is non-owning, do NOT destroy it.

◆ MR_Graph_EndVertices_GetMutable_v1()

MRC_API MR_GraphVertId * MR_Graph_EndVertices_GetMutable_v1 ( MR_Graph_EndVertices * _this)

Returns a mutable pointer to a member variable of class MR::Graph::EndVertices named v1. Parameter _this can not be null. It is a single object. The returned pointer will never be null. It is non-owning, do NOT destroy it.

◆ MR_Graph_EndVertices_OffsetMutablePtr()

MRC_API MR_Graph_EndVertices * MR_Graph_EndVertices_OffsetMutablePtr ( MR_Graph_EndVertices * ptr,
ptrdiff_t i )

Offsets a pointer to an array element by i positions (not bytes). Use only if you're certain that the pointer points to an array element.

◆ MR_Graph_EndVertices_OffsetPtr()

MRC_API const MR_Graph_EndVertices * MR_Graph_EndVertices_OffsetPtr ( const MR_Graph_EndVertices * ptr,
ptrdiff_t i )

Offsets a pointer to an array element by i positions (not bytes). Use only if you're certain that the pointer points to an array element.

◆ MR_Graph_EndVertices_otherEnd()

MRC_API MR_GraphVertId MR_Graph_EndVertices_otherEnd ( const MR_Graph_EndVertices * _this,
MR_GraphVertId a )

Generated from a method of class MR::Graph::EndVertices named otherEnd. Parameter _this can not be null. It is a single object.

◆ MR_Graph_EndVertices_replaceEnd()

MRC_API void MR_Graph_EndVertices_replaceEnd ( MR_Graph_EndVertices * _this,
MR_GraphVertId what,
MR_GraphVertId with )

Generated from a method of class MR::Graph::EndVertices named replaceEnd. Parameter _this can not be null. It is a single object.

◆ MR_Graph_EndVertices_Set_v0()

MRC_API void MR_Graph_EndVertices_Set_v0 ( MR_Graph_EndVertices * _this,
MR_GraphVertId value )

Modifies a member variable of class MR::Graph::EndVertices named v0. Parameter _this can not be null. It is a single object.

◆ MR_Graph_EndVertices_Set_v1()

MRC_API void MR_Graph_EndVertices_Set_v1 ( MR_Graph_EndVertices * _this,
MR_GraphVertId value )

Modifies a member variable of class MR::Graph::EndVertices named v1. Parameter _this can not be null. It is a single object.

◆ MR_Graph_findEdge()

MRC_API MR_GraphEdgeId MR_Graph_findEdge ( const MR_Graph * _this,
MR_GraphVertId a,
MR_GraphVertId b )

finds and returns edge between vertices a and b; returns invalid edge otherwise Generated from a method of class MR::Graph named findEdge. Parameter _this can not be null. It is a single object.

◆ MR_Graph_merge()

MRC_API void MR_Graph_merge ( MR_Graph * _this,
MR_GraphVertId remnant,
MR_GraphVertId dead,
MR_PassBy onMergeEdges_pass_by,
MR_std_function_void_from_MR_GraphEdgeId_MR_GraphEdgeId * onMergeEdges )

unites two vertices into one (deleting the second one), which leads to deletion and merge of some edges, for which callback is called Generated from a method of class MR::Graph named merge. Parameter _this can not be null. It is a single object.

◆ MR_Graph_neighbours()

MRC_API const MR_std_vector_MR_GraphEdgeId * MR_Graph_neighbours ( const MR_Graph * _this,
MR_GraphVertId v )

returns all edges adjacent to given vertex Generated from a method of class MR::Graph named neighbours. Parameter _this can not be null. It is a single object. The returned pointer will never be null. It is non-owning, do NOT destroy it.

◆ MR_Graph_OffsetMutablePtr()

MRC_API MR_Graph * MR_Graph_OffsetMutablePtr ( MR_Graph * ptr,
ptrdiff_t i )

Offsets a pointer to an array element by i positions (not bytes). Use only if you're certain that the pointer points to an array element.

◆ MR_Graph_OffsetPtr()

MRC_API const MR_Graph * MR_Graph_OffsetPtr ( const MR_Graph * ptr,
ptrdiff_t i )

Offsets a pointer to an array element by i positions (not bytes). Use only if you're certain that the pointer points to an array element.

◆ MR_Graph_valid_MR_GraphEdgeId()

MRC_API bool MR_Graph_valid_MR_GraphEdgeId ( const MR_Graph * _this,
MR_GraphEdgeId e )

returns true if given edge is valid Generated from a method of class MR::Graph named valid. Parameter _this can not be null. It is a single object.

◆ MR_Graph_valid_MR_GraphVertId()

MRC_API bool MR_Graph_valid_MR_GraphVertId ( const MR_Graph * _this,
MR_GraphVertId v )

returns true if given vertex is valid Generated from a method of class MR::Graph named valid. Parameter _this can not be null. It is a single object.

◆ MR_Graph_validEdges()

MRC_API const MR_GraphEdgeBitSet * MR_Graph_validEdges ( const MR_Graph * _this)

returns all valid edges in the graph Generated from a method of class MR::Graph named validEdges. Parameter _this can not be null. It is a single object. The returned pointer will never be null. It is non-owning, do NOT destroy it.

◆ MR_Graph_validVerts()

MRC_API const MR_GraphVertBitSet * MR_Graph_validVerts ( const MR_Graph * _this)

returns all valid vertices in the graph Generated from a method of class MR::Graph named validVerts. Parameter _this can not be null. It is a single object. The returned pointer will never be null. It is non-owning, do NOT destroy it.

◆ MR_Graph_vertSize()

MRC_API MR_uint64_t MR_Graph_vertSize ( const MR_Graph * _this)

returns the number of vertex records, including invalid ones Generated from a method of class MR::Graph named vertSize. Parameter _this can not be null. It is a single object.