Class HostEnvironmentDirectedGraph
Defined in File HostEnvironmentDirectedGraph.cuh
Nested Relationships
Nested Types
Class Documentation
-
class HostEnvironmentDirectedGraph
HostAPI handle to a specific directed graph stored within the environment.
Allows a specific directed graph to be updated by creating new vertices/edges, or updating properties assigned to them
Public Functions
-
void importGraph(const std::string &in_file)
Attempts to import edge and vertex data from the specified file
This file must be in the appropriate format as documented in the FLAMEGPU documentation
See also
- Parameters:
in_file – Path to the file on disk containing the graph
- Throws:
exception::InvalidFilePath – If the file does not exist, or cannot be opened
exception::UnsupportedFileType – If the specified file type does not correspond to a known format
exception::InvalidInputFile – If the loaded file cannot be parsed as a valid graph
-
void exportGraph(const std::string &out_file)
Attempts to export the edge and vertex data to the specified file
See also
- Parameters:
out_file – Path to the file on disk containing to store the graph
- Throws:
exception::InvalidFilePath – If the file cannot be opened for writing
exception::UnsupportedFileType – If the specified file type does not correspond to a known format
exception::RapidJSONError – If conversion to JSON fails for any reason
-
void setVertexCount(flamegpu::size_type count)
Set the number of vertices present in the graph This causes the internal data structure to be (re)allocated, and existing vertex data is not retained. Calling this regularly may harm performance
Note
Calling this will also invalidate any existing edges (as the vertices will nolonger exist)
- Parameters:
count – The number of vertices
-
void setEdgeCount(flamegpu::size_type count)
Set the number of edges present in the graph This causes the internal data structure to be (re)allocated, and existing edge data is not retained. Calling this regularly may harm performance
- Parameters:
count – The number of edges
-
VertexMap vertices()
Returns a map for accessing vertices The vertices are accessed via their ID, and will be created if they don’t already exist It is necessary to first call setVertexCount() to initialise the storage for vertices
-
EdgeMap edges()
Returns a map for accessing edges The edges are accessed via their source-destination pair, and will be created if they don’t already exist It is necessary to first call setEdgeCount() to initialise the storage for edges
-
class EdgeMap
A map for accessing edge storage via vertex ID
Public Functions
-
Edge operator[](SrcDestPair source_dest_vertex_ids)
Return a view into the edge map of the specified edge If the edge has not already been created, it will be created
- Parameters:
source_dest_vertex_ids – Identifier of the source vertex of the edge
- Throws:
exception::IDOutOfBounds – 0 is not a valid value of edge_id
exception::OutOfBoundsException – If more vertices have been created, than were allocated via HostEnvironmentGraph::setEdgeCount()
-
class Edge
Public Functions
-
void setSourceVertexID(id_t source_vertex_id)
Set the source vertex’s id for the current edge
- Parameters:
source_vertex_id – The value to set the current edge’s source vertex id
-
void setDestinationVertexID(id_t dest_vertex_id)
Set the destination vertex’s id for the current edge
- Parameters:
dest_vertex_id – The value to set the current edge’s destination vertex id
-
void setSourceDestinationVertexID(id_t source_vertex_id, id_t dest_vertex_id)
Set the source and destination vertices’ ids for the current edge
- Parameters:
source_vertex_id – The value to set the current edge’s source vertex id
dest_vertex_id – The value to set the current edge’s destination vertex id
-
template<typename T>
void setProperty(const std::string &property_name, T property_value) Set the value of the specified property of the current edge
- Parameters:
property_name – The name of the property to set
property_value – The value to set the current edge’s property
- Template Parameters:
T – The type of the property
- Throws:
exception::InvalidArgument – If property_name does not refer to a valid edge property
-
template<typename T, flamegpu::size_type N = 0>
void setProperty(const std::string &property_name, flamegpu::size_type element_index, T property_value)
-
template<typename T, flamegpu::size_type N>
void setProperty(const std::string &property_name, const std::array<T, N> &property_value)
-
template<typename T>
T getProperty(const std::string &property_name) const Returns the value of the specified property of the current edge
- Parameters:
property_name – The name of the property to set
- Template Parameters:
T – The type of the property
- Throws:
exception::InvalidArgument – If property_name does not refer to a valid edge property
exception::InvalidGraphProperty – If a edge property with the matching name and type does not exist
-
void setSourceVertexID(id_t source_vertex_id)
-
Edge operator[](SrcDestPair source_dest_vertex_ids)
-
class VertexMap
A map for accessing vertex storage via vertex ID
Public Functions
-
Vertex operator[](id_t vertex_id)
Return a view into the vertex map of the specified vertex If the vertex has not already been created, it will be created
- Parameters:
vertex_id – Identifier of the vertex to access
- Throws:
exception::IDOutOfBounds – 0 is not a valid value of vertex_id
exception::OutOfBoundsException – If more vertices have been created, than were allocated via HostEnvironmentGraph::setVertexCount()
-
class Vertex
Public Functions
-
void setID(id_t vertex_id)
Set the id for the current vertex
- Parameters:
vertex_id – The value to set the current vertex’s id
-
template<typename T>
void setProperty(const std::string &property_name, T property_value) Set the value of the specified property of the current vertex
- Parameters:
property_name – The name of the property to set
property_value – The value to set the current vertex’s property
- Template Parameters:
T – The type of the property
- Throws:
exception::InvalidArgument – If property_name does not refer to a valid vertex property
-
template<typename T, flamegpu::size_type N = 0>
void setProperty(const std::string &property_name, flamegpu::size_type element_index, T property_value)
-
template<typename T, flamegpu::size_type N>
void setProperty(const std::string &property_name, const std::array<T, N> &property_value)
-
template<typename T>
T getProperty(const std::string &property_name) const Returns the value of the specified property of the current vertex
- Parameters:
property_name – The name of the property to set
- Template Parameters:
T – The type of the property
- Throws:
exception::InvalidArgument – If property_name does not refer to a valid vertex property
exception::InvalidGraphProperty – If a vertex property with the matching name and type does not exist
-
void setID(id_t vertex_id)
-
Vertex operator[](id_t vertex_id)
-
void importGraph(const std::string &in_file)