Add graph references

This commit is contained in:
Abdelrahman Said
2026-06-28 13:49:01 +01:00
parent 0a9807e448
commit a11edf0c53
2578 changed files with 868045 additions and 0 deletions
@@ -0,0 +1,28 @@
# Check whether the user has Stimulus on its PATH
find_program(STIMULUS_COMMAND stimulus)
# Add a custom targer that checks functions.yaml and types.yaml
if(STIMULUS_COMMAND)
add_custom_command(
OUTPUT test_stimulus_specifications.cpp
COMMAND ${STIMULUS_COMMAND}
-l ci:validate
-f ${CMAKE_CURRENT_SOURCE_DIR}/functions.yaml
-t ${CMAKE_CURRENT_SOURCE_DIR}/types.yaml
-o test_stimulus_specifications.cpp
DEPENDS
${CMAKE_CURRENT_SOURCE_DIR}/functions.yaml
${CMAKE_CURRENT_SOURCE_DIR}/types.yaml
COMMENT "Generating C++ checker for Stimulus function and type specifications..."
USES_TERMINAL
)
add_executable(test_stimulus test_stimulus_specifications.cpp)
target_include_directories(test_stimulus PRIVATE ${CMAKE_SOURCE_DIR}/include ${CMAKE_BINARY_DIR}/include)
add_custom_target(
check_stimulus
COMMAND test_stimulus
DEPENDS test_stimulus
COMMENT "Running C++ checker for Stimulus function and type specifications..."
)
endif(STIMULUS_COMMAND)
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,652 @@
# vim:set ts=4 sw=4 sts=4 et:
#
# This file is a YAML representation of the types used in the functions.yaml
# function specification file. It provides the meaning of each type in comments
# and also specifies the C types corresponding to each abstract type.
#
# See https://github.com/igraph/stimulus for more information
###############################################################################
## Core igraph data types
###############################################################################
INTEGER:
# An ordinary igraph integer
CTYPE: igraph_int_t
REAL:
# An ordinary igraph floating-point number
CTYPE: igraph_real_t
BOOLEAN:
# An ordinary igraph Boolean value
CTYPE: igraph_bool_t
COMPLEX:
# An ordinary igraph complex number
CTYPE: igraph_complex_t
ERROR:
# An igraph error code
CTYPE: igraph_error_t
###############################################################################
## C data types
###############################################################################
INT:
# A C integer
CTYPE: int
CSTRING:
# A null-terminated immutable C string
CTYPE: const char*
INFILE:
# A file, already open for reading
CTYPE: FILE*
OUTFILE:
# A file, already open for writing
CTYPE: FILE*
DOUBLE:
# A C double
CTYPE: double
VOID:
# C void
CTYPE: void
###############################################################################
# Vectors, matrices and other template types
###############################################################################
INDEX_VECTOR:
# A vector of integer indices that should adapt to the conventions of the
# host language (i.e. 1-based for R, Mathematica, Octave etc., 0-based for
# Python and similar).
CTYPE: igraph_vector_int_t
FLAGS: BY_REF
VECTOR:
# A vector of floating-point numbers
CTYPE: igraph_vector_t
FLAGS: BY_REF
VECTOR_INT:
# A vector of igraph integers
CTYPE: igraph_vector_int_t
FLAGS: BY_REF
VECTOR_BOOL:
# A vector of Boolean values
CTYPE: igraph_vector_bool_t
FLAGS: BY_REF
VECTOR_COMPLEX:
# A vector of igraph complex numbers
CTYPE: igraph_vector_complex_t
VECTOR_STR:
# A vector of strings
CTYPE: igraph_strvector_t
FLAGS: BY_REF
VECTOR_LIST:
# A list containing vectors of floating-point numbers
CTYPE: igraph_vector_list_t
FLAGS: BY_REF
VECTOR_INT_LIST:
# A list containing vectors of integers
CTYPE: igraph_vector_int_list_t
FLAGS: BY_REF
MATRIX:
# A matrix of floating-point numbers
CTYPE: igraph_matrix_t
FLAGS: BY_REF
MATRIX_INT:
# A matrix of igraph integers
CTYPE: igraph_matrix_int_t
FLAGS: BY_REF
MATRIX_COMPLEX:
# A matrix of igraph complex numbers
CTYPE: igraph_matrix_complex_t
MATRIX_LIST:
# A list containing matrices of floating-point numbers
CTYPE: igraph_matrix_list_t
FLAGS: BY_REF
SPARSEMAT:
# A sparse matrix of floating-point numbers
CTYPE: igraph_sparsemat_t
FLAGS: BY_REF
###############################################################################
# Vertices, edges, vertex and edge selectors
###############################################################################
EDGE:
# A single edge index
CTYPE: igraph_int_t
EDGE_INDICES:
# An integer vector containing edge indices.
CTYPE: igraph_vector_int_t
FLAGS: BY_REF
EDGE_SELECTOR:
# An igraph edge selector. Typically used only as an input argument type.
CTYPE: igraph_es_t
VERTEX:
# A single vertex index
CTYPE: igraph_int_t
VERTEX_INDICES:
# An integer vector containing vertex indices.
CTYPE: igraph_vector_int_t
FLAGS: BY_REF
VERTEX_INDEX_PAIRS:
# An integer vector containing pairs of vertex indices, in a flattened
# representation
CTYPE: igraph_vector_int_t
FLAGS: BY_REF
VERTEX_SELECTOR:
# An igraph vertex selector. Typically used only as an input argument type.
CTYPE: igraph_vs_t
###############################################################################
# Specialized vectors with semantic meaning
###############################################################################
BIPARTITE_TYPES:
# A vector containing Booleans that define the two partitions of a
# bipartite graph
CTYPE: igraph_vector_bool_t
FLAGS: BY_REF
EDGE_CAPACITIES:
# A vector containing edge capacities (typically for max-flow algorithms)
CTYPE: igraph_vector_t
FLAGS: BY_REF
EDGE_COLORS:
# A vector containing edge colors
CTYPE: igraph_vector_int_t
FLAGS: BY_REF
EDGE_LENGTHS:
# A vector containing edge lengths
CTYPE: igraph_vector_t
FLAGS: BY_REF
EDGE_WEIGHTS:
# A vector containing edge weights
CTYPE: igraph_vector_t
FLAGS: BY_REF
EDGE_INDICES_LIST:
# A list containing vectors of igraph integers where each such
# vector represents a sequence of edge indices.
CTYPE: igraph_vector_int_list_t
FLAGS: BY_REF
GRAPH_LIST:
# A list containing graphs (owned by the list itself)
CTYPE: igraph_graph_list_t
FLAGS: BY_REF
GRAPH_PTR_LIST:
# A vector containing pointers to graph objects (not owned by the vector)
CTYPE: igraph_vector_ptr_t
FLAGS: BY_REF
ALL_VERTEX_QTY:
# A vector of floating-point numbers where each entry corresponds to
# one of the vertices in a graph and its value represents some quantity
# associated to the vertex with the same index. Higher-level interfaces may
# use this type to provide a "named vector" such that each entry can be
# indexed either by the vertex index or by the vertex name.
CTYPE: igraph_vector_t
FLAGS: BY_REF
VERTEX_QTY:
# Same as ALL_VERTEX_QTY, but only for a subset of vertices,
# typically referred to by a `vids` argument.
CTYPE: igraph_vector_t
FLAGS: BY_REF
SIR_LIST:
# A vector containing pointers to igraph_sir_t objects
CTYPE: igraph_vector_ptr_t
FLAGS: BY_REF
VERTEX_INDICES_LIST:
# A list containing vectors of igraph integers where each such
# vector represents a sequence of vertex indices.
CTYPE: igraph_vector_int_list_t
FLAGS: BY_REF
VERTEX_COLORS:
# A vector containing vertex colors
CTYPE: igraph_vector_int_t
FLAGS: BY_REF
VERTEX_WEIGHTS:
# A vector containing vertex weights
CTYPE: igraph_vector_t
FLAGS: BY_REF
###############################################################################
# Graph representations
###############################################################################
GRAPH:
# An igraph graph
CTYPE: igraph_t
FLAGS: BY_REF
ADJLIST:
# A graph represented as an adjacency list
CTYPE: igraph_adjlist_t
FLAGS: BY_REF
INCLIST:
# A graph represented as an incidence list
CTYPE: igraph_inclist_t
FLAGS: BY_REF
###############################################################################
# Enums
###############################################################################
ADD_WEIGHTS:
# Whether to add the weights of the edges read from a file to the graph
# being created
CTYPE: igraph_add_weights_t
FLAGS: ENUM
ADJACENCY_MODE:
# Enum that describes how an adjacency matrix should be constructed
CTYPE: igraph_adjacency_t
FLAGS: ENUM
BARABASI_ALGORITHM:
# Enum that describes the various implementations of the Barabasi model
# that igraph supports
CTYPE: igraph_barabasi_algorithm_t
FLAGS: ENUM
BLISSSH:
# Enum containing splitting heuristics for the Bliss algorithm
CTYPE: igraph_bliss_sh_t
FLAGS: ENUM
CHUNG_LU_VARIANT:
# Enum that describes the Chung-Lu model variants supported by igraph
CTYPE: igraph_chung_lu_t
FLAGS: ENUM
COMMCMP:
# Enum containing identifiers for community comparison methods
CTYPE: igraph_community_comparison_t
FLAGS: ENUM
CONNECTEDNESS:
# Enum that selects between weak and strong connectivity
CTYPE: igraph_connectedness_t
FLAGS: ENUM
DEGSEQ_MODE:
# Enum that describes the various implementations of generating a graph
# with an arbitrary degree sequence
CTYPE: igraph_degseq_t
FLAGS: ENUM
EIGENALGO:
# Enum used for selecting an algorithm that determines the eigenvalues
# and eigenvectors of some input
CTYPE: igraph_eigen_algorithm_t
FLAGS: ENUM
EIGENWHICHPOS:
# Enum representing which eigenvalues to use in the spectral embedding
# algorithm
CTYPE: igraph_eigen_which_position_t
FLAGS: ENUM
FAS_ALGORITHM:
# Enum representing feedback arc set algorithms
CTYPE: igraph_fas_algorithm_t
FLAGS: ENUM
FVS_ALGORITHM:
# Enum representing feedback vertex set algorithms
CTYPE: igraph_fvs_algorithm_t
FLAGS: ENUM
FWALGORITHM:
# Enum that describes the variant of the Floyd-Warshall algorithm to use in
# Floyd-Warshall graph distances computing function
CTYPE: igraph_floyd_warshall_algorithm_t
FLAGS: ENUM
GETADJACENCY:
# Enum storing how to retrieve the adjacency matrix from a graph
CTYPE: igraph_get_adjacency_t
FLAGS: ENUM
GREEDY_COLORING_HEURISTIC:
# Enum representing different heuristics for a greedy vertex coloring
CTYPE: igraph_coloring_greedy_t
FLAGS: ENUM
LAPLACIAN_NORMALIZATION:
# Enum representing the possible normalization methods of a Laplacian
# matrix
CTYPE: igraph_laplacian_normalization_t
FLAGS: ENUM
LAYOUT_GRID:
# Whether to use the fast (but less accurate) grid-based version of a
# layout algorithm that supports it (typically the Fruchterman-Reingold
# layout)
CTYPE: igraph_layout_grid_t
FLAGS: ENUM
LEIDEN_OBJECTIVE:
# The objective function to maximize with the Leiden community detection
# method.
CTYPE: igraph_leiden_objective_t
FLAGS: ENUM
LOOPS:
# Enum that describes how loop edges should be handled in undirected graphs
# in functions that support it. Possible options are: no loops, loops
# counted once, loops counted twice
CTYPE: igraph_loops_t
FLAGS: ENUM
LSETYPE:
# Enum storing the possible types (definitions) of the Laplacian matrix
# to use in the Laplacian spectral embedding algorithms
CTYPE: igraph_laplacian_spectral_embedding_type_t
FLAGS: ENUM
METRIC:
# Enum that describes the metric to be used for spatial algorithms
CTYPE: igraph_metric_t
FLAGS: ENUM
MSTALGORITHM:
# Enum that describes the algorithm for computing a minimum spanning tree
CTYPE: igraph_mst_algorithm_t
FLAGS: ENUM
NEIMODE:
# Enum that describes how a particular function should take into account
# the neighbors of vertices
CTYPE: igraph_neimode_t
FLAGS: ENUM
ORDER:
# Whether ordering should be ascending or descending
CTYPE: igraph_order_t
FLAGS: ENUM
PAGERANKALGO:
# Enum that describes the various implementations of the PageRank algorithm
CTYPE: igraph_pagerank_algo_t
FLAGS: ENUM
GRAPH_PRODUCT_TYPE:
# Enum that describes the various implementations of the graph products
CTYPE: igraph_product_t
FLAGS: ENUM
RANDOM_TREE_METHOD:
# Enum that describes the various implementation of the uniform random tree
# sampling method
CTYPE: igraph_random_tree_t
FLAGS: ENUM
REALIZE_DEGSEQ_METHOD:
# Enum that describes the various methods for realizing a graph with an
# arbitrary degree sequence
CTYPE: igraph_realize_degseq_t
FLAGS: ENUM
RECIP:
# Enum that describes how the reciprocity of a graph should be calculated
CTYPE: igraph_reciprocity_t
FLAGS: ENUM
ROOTCHOICE:
# Enum for the heuristic of igraph_roots_for_tree_layout()
CTYPE: igraph_root_choice_t
FLAGS: ENUM
RWSTUCK:
# Enum that describes what igraph should do when a random walk gets stuck
# in a sink vertex
CTYPE: igraph_random_walk_stuck_t
FLAGS: ENUM
SPINCOMMUPDATE:
# Enum containing update modes for the spinglass community detection
# algorithm
CTYPE: igraph_spincomm_update_t
FLAGS: ENUM
SPINGLASS_IMPLEMENTATION:
# Enum that describes the various implementations of the spinglass community
# detection algorithm
CTYPE: igraph_spinglass_implementation_t
FLAGS: ENUM
STAR_MODE:
# Enum that describes how a star graph should be constructed
CTYPE: igraph_star_mode_t
FLAGS: ENUM
SUBGRAPH_IMPL:
# Enum that describes how igraph should create an induced subgraph of a
# graph
CTYPE: igraph_subgraph_implementation_t
FLAGS: ENUM
TODIRECTED:
# Enum representing the possible ways to convert an undirected graph to a
# directed one
CTYPE: igraph_to_directed_t
FLAGS: ENUM
TOUNDIRECTED:
# Enum representing the possible ways to convert a directed graph to an
# undirected one
CTYPE: igraph_to_undirected_t
FLAGS: ENUM
TRANSITIVITY_MODE:
# Enum that specifies how isolated vertices should be handled in transitivity
# calcuations
CTYPE: igraph_transitivity_mode_t
FLAGS: ENUM
TREE_MODE:
# Enum that describes how a tree graph should be constructed
CTYPE: igraph_tree_mode_t
FLAGS: ENUM
VCONNNEI:
# Enum specifying what to do in vertex connectivity tests when the two
# vertices being tested are already connected
CTYPE: igraph_vconn_nei_t
FLAGS: ENUM
VORONOI_TIEBREAKER:
# Enum specifying what to do when two vertices are at equal distance from
# multiple generators while computing Voronoi partitionings
CTYPE: igraph_voronoi_tiebreaker_t
FLAGS: ENUM
WHEEL_MODE:
# Enum that describes how a wheel graph should be constructed
CTYPE: igraph_wheel_mode_t
FLAGS: ENUM
LPA_VARIANT:
# Enum that describes the label propagation algorithm variant
CTYPE: igraph_lpa_variant_t
FLAGS: ENUM
###############################################################################
# Switches / flags / bits
###############################################################################
EDGE_TYPE_SW:
# Flag bitfield that specifies what sort of edges are allowed in an
# algorithm
CTYPE: igraph_edge_type_sw_t
FLAGS: BITS
WRITE_GML_SW:
# Flag bitfield that specifies how to write GML files.
CTYPE: igraph_write_gml_sw_t
FLAGS: BITS
###############################################################################
# Callbacks
###############################################################################
ARPACK_FUNC:
# ARPACK matrix multiplication function.
CTYPE: igraph_arpack_function_t
CLIQUE_FUNC:
# Callback function for igraph_cliques_callback(). Called with every clique
# that was found by the function.
CTYPE: igraph_clique_handler_t
CYCLE_FUNC:
# Callback function for igraph_simple_cycles_callback(). Called with every
# cycle that was found by the function.
CTYPE: igraph_cycle_handler_t
BFS_FUNC:
# Callback function for igraph_bfs(). Called with every vertex that was
# visited during the BFS traversal.
CTYPE: igraph_bfshandler_t
DFS_FUNC:
# Callback function for igraph_dfs(). Called with every vertex that was
# visited during the DFS traversal.
CTYPE: igraph_dfshandler_t
ISOCOMPAT_FUNC:
# Callback function for isomorphism algorithms that determines whether two
# vertices are compatible or not.
CTYPE: igraph_isocompat_t
ISOMORPHISM_FUNC:
# Callback function that is called by isomorphism functions when an
# isomorphism is found
CTYPE: igraph_isohandler_t
LEVC_FUNC:
# Callback function for igraph_leading_eigenvector_community(). Called
# after each eigenvalue / eigenvector calculation.
CTYPE: igraph_community_leading_eigenvector_callback_t
###############################################################################
# Miscellaneous
###############################################################################
ARPACK_OPTIONS:
# Structure that contains the options of the ARPACK eigensolver.
CTYPE: igraph_arpack_options_t
FLAGS: BY_REF
ARPACK_STORAGE:
# Pointer to a general-purpose memory block that ARPACK-based algorithms
# may use as a working area.
CTYPE: igraph_arpack_storage_t
FLAGS: BY_REF
ASTAR_HEURISTIC_FUNC:
# A* heuristic function
CTYPE: igraph_astar_heuristic_func_t
ATTRIBUTES:
# A data structure specifying graph/vertex/edge attributes to add to a
# graph in a low-level igraph C function
CTYPE: igraph_attribute_record_list_t
FLAGS: BY_REF
BLISSINFO:
# Struct holding information about the internal statistics of a single
# run of the Bliss algorithm
CTYPE: igraph_bliss_info_t
DRL_OPTIONS:
# Structure containing the options of the DrL layout algorithm
CTYPE: igraph_layout_drl_options_t
FLAGS: BY_REF
EDGE_ATTRIBUTE_COMBINATION:
# Structure specifying how the attributes of edges should be combined
# during graph operations that may merge multiple edges into a single one
CTYPE: igraph_attribute_combination_t
FLAGS: BY_REF
EIGENWHICH:
# Structure representing which eigenvalue(s) to use in the spectral embedding
# algorithm
CTYPE: igraph_eigen_which_t
FLAGS: BY_REF
EXTRA:
# Thunk argument that usually accompanies callback functions and can be used
# to provide user-specific data or context to the callback function
CTYPE: void
FLAGS: BY_REF
HRG:
# Structure storing a fitted hierarchical random graph model
CTYPE: igraph_hrg_t
FLAGS: BY_REF
MAXFLOW_STATS:
# Structure storing statistics about a single run of a max-flow algorithm
CTYPE: igraph_maxflow_stats_t
FLAGS: BY_REF
PAGERANKOPT:
# Enum that describes the PageRank options pointer, which is used only if
# the PageRank implementation uses ARPACK
CTYPE: igraph_arpack_options_t
FLAGS: BY_REF
PLFIT:
# Structure representing the result of a power-law fitting algorithms
CTYPE: igraph_plfit_result_t
FLAGS: BY_REF
REWIRING_STATS:
# Structure storing statistics about degree-preserving edge rewiring
CTYPE: igraph_rewiring_stats_t
FLAGS: BY_REF
VERTEX_ATTRIBUTE_COMBINATION:
# Structure specifying how the attributes of vertices should be combined
# during graph operations that may merge multiple vertices into a single one
CTYPE: igraph_attribute_combination_t
FLAGS: BY_REF