Skip to content

Commit

Permalink
chore: Update vendored sources to igraph/igraph@0f38345
Browse files Browse the repository at this point in the history
feat: added generic, algorithm-agnostic versions of igraph_count_automorphisms(), igraph_automorphism_group() and igraph_canonical_permutation()
refactor!: rename BLISS-specific isomorphism functions so they always have _bliss in the suffix - part 2
refactor!: rename BLISS-specific isomorphism functions so they always have _bliss in the suffix
Merge branch 'master' into develop
fix: fix segfault in GraphML reader
refactor: remove unneeded include
refactor: remove deprecated igraph_decompose_destroy()
Merge branch 'master' into develop
Merge branch 'master' into develop
Merge branch 'master' into develop
Merge branch 'master' into develop
Merge branch 'master' into develop
Merge branch 'master' into develop
Merge branch 'master' into develop
Merge branch 'master' into develop
Merge branch 'master' into develop
Merge branch 'master' into develop
Merge branch 'master' into develop
Merge pull request igraph/igraph#2470 from igraph/feat/is-biconnected
Merge branch 'master' into develop
Merge pull request igraph/igraph#2462 from igraph/feat/attribute-record-list
Merge branch 'master' into develop
fix: re-added missing master header in changelog
Merge branch 'master' into develop
Merge branch 'master' into develop
refactor: consistently use ARPACK_DEFAULTS as the default arpack options
chore: updated changelog
feat: include Texinfo docs in source tarball
fix: fix typo
fix: look for either docbook2x-texi or docbook2texi
fix: replace utf8 with utf-8 to prevent a warning when building texinfo docs
ci: make sure that the Texinfo docs are also built
Add target to build documentation in info format
docs: clarify that Infomap considers edge directions
fuzzer: update libxml2 to 2.12.3
fix: correct header includion in cliquer
chore(deps): bump github/codeql-action from 2 to 3
chore(deps): bump actions/upload-artifact from 3 to 4
doc: clarify the effect of loop edges in igraph_similarity_inverse_log_weighted(), closes igraph/igraph#2448
refactor: rename deprecated functions in generated interfaces
docs: fix typos
refactor: clean up dfs/bfs and their docs
refactor: replace void* with const igraph_vector_ptr_t* in attribute-related functions; more refactoring coming soon
refactor!: strvector now contains pointers to const
Merge branch 'master' into develop
refactor: rename igraph_i_attribute_gettype() to igraph_i_attribute_get_type() for sake of consistency
refactor: simplify attribute table init, copy and destroy methods
chore: post-release tasks
Merge branch 'master' into develop
fix: fix stimulus function spec
Merge branch 'master' into develop
fix: community_spinglass_single() now uses igraph_real_t for output parameters that return real values, fixes igraph/igraph#2435
Merge branch 'master' into develop
fix: fix jdm unit test and add rate-limited interruption to erdos_renyi_gnm_multi()
fix: fix Stimulus type specs
Merge branch 'master' into develop
Merge branch 'master' into develop
Merge branch 'master' into develop
Merge branch 'master' into develop
fix: fix Stimulus type specs
fix: allow interruption for multigaph case of G(n,m) generator
Merge branch 'master' into develop
Merge branch 'master' into develop
Merge branch 'master' into develop
Merge branch 'master' into develop
chore: fixed line endings and stale whitespace
fix!: NCOL and LGL readers now use a default weight of 1, closes igraph/igraph#2395
fix: EDGEWEIGHTS type parameter was renamed to EDGE_WEIGHTS earlier
Merge branch 'master' into develop
Merge branch 'master' into develop
refactor!: igraph_vector_swap() and igraph_matrix_swap() no longer return an error code
Merge branch 'master' into develop
Merge branch 'master' into develop
Merge branch 'master' into develop
Merge branch 'master' into develop
Merge branch 'master' into develop
Multi edge support for igraph_bipartite_game_gnm (igraph/igraph#2375)
Merge branch 'master' into develop
Merge branch 'master' into develop
Merge branch 'master' into develop
correct number of erdos_renyi arguments in voronoi test
chore: fix mismerged changelog
refactor!: remove deprecated allocation macros
Merge branch 'master' into develop
Merge branch 'master' into develop
Merge branch 'master' into develop
docs: clarify that usage of sub-headers is not supported closes igraph/igraph#2332
Merge branch 'master' into develop
refactor: more readable variable named in similarity code
Use two vertex selectors in Jaccard and Dice (igraph/igraph#2346)
Merge branch 'master' into develop
chore: update changelog, mentioning the the Pajek reader/writer now uses the 'name' attribute
docs: update Pajek docs, mentioning that the 'name' attribute is used
Merge pull request igraph/igraph#2276 from igraph/fix/pajek-names
Merge pull request igraph/igraph#2265 from VRajesh7649/feat/erdos_penyi_gnm_multiedges
Merge branch 'master' into develop
Merge branch 'master' into develop
Merge branch 'master' into develop
refactor: fixed singular/plural issues with abstract types in types.yaml, now they are consistent
fix: fix typo in functions.yaml
refactor: rename igraph_delete_vertices_idx() to igraph_delete_vertices_map(), closes igraph/igraph#2310
Merge branch 'master' into develop
Merge branch 'master' into develop
Merge branch 'master' into develop
Merge branch 'master' into develop
Merge branch 'master' into develop
Merge branch 'master' into develop
Merge branch 'master' into develop
Merge branch 'master' into develop
Merge branch 'master' into develop
Merge branch 'master' into develop
chore: update changelog [skip ci]
refactor: igraph_rng_set_default() now returns old RNG, fixes igraph/igraph#2273
Merge branch 'master' into develop
Merge branch 'master' into develop
move community_fastgreedy example to tests
move community_edge_betweenness example to tests (igraph/igraph#2270)
Revert "move community_edge_betweenness example to tests"
move community_edge_betweenness example to tests
Merge branch 'master' into develop
refactor!: igraph_vector_shuffle() no longer returns an error code, closes igraph/igraph#2268
Merge branch 'master' into develop
Merge branch 'master' into develop
Merge branch 'master' into develop
Merge branch 'master' into develop
fix: standards-complient definition for igraph_allow_interruption()
refactor: replace IGRAPH_SUCCESS by false in IGRAPH_ALLOW_INTERRUPTION()
refactor!: interruption handlers now return igraph_bool_t
Merge branch 'master' into develop
refactor!: removed void* argument of interruption handlers
Merge branch 'master' into develop
refactor!: igraph_induced_subgraph_map() does not offset the vertex IDs in the mapping any more
refactor!: igraph_delete_vertices_idx() does not offset the vertex IDs in the mapping any more
Merge branch 'master' into develop
Merge branch 'master' into develop
Merge branch 'master' into develop
add mode parameter to distances_johnson (igraph/igraph#2218)
Merge branch 'master' into develop
chore: added 'develop' section to changelog
Merge branch 'master' into develop
Merge branch 'master' into develop
refactor: remove unused 'destroy' field from heap data types; ABI-breaking change; refs igraph/igraph#2214
  • Loading branch information
krlmlr authored and aviator-bot committed Mar 12, 2024
1 parent 254dae4 commit 837c3c6
Show file tree
Hide file tree
Showing 93 changed files with 4,158 additions and 5,993 deletions.
931 changes: 101 additions & 830 deletions R/aaa-auto.R

Large diffs are not rendered by default.

940 changes: 474 additions & 466 deletions src/cpp11.cpp

Large diffs are not rendered by default.

1,098 changes: 272 additions & 826 deletions src/rinterface.c

Large diffs are not rendered by default.

40 changes: 40 additions & 0 deletions src/vendor/cigraph/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,44 @@
# igraph C library changelog

## [develop]

### Breaking changes

- Interruption handlers do not take a `void*` argument any more; this is relevant to maintainers of higher-level interfaces only.
- Interruption handlers now return an `igraph_bool_t` instead of an `igraph_error_t`; the returned value must be true if the calculation has to be interrupted and false otherwise.
- `igraph_delete_vertices_map()` (formerly called `igraph_delete_vertices_idx()`) and `igraph_induced_subgraph_map()` now use -1 to represent unmapped vertices in the returned forward mapping vector and they do not offset vertex indices by 1 any more. (Note that the inverse map always behaved this way, this change makes the two mappings consistent).
- `igraph_distances_johnson()` now takes a mode parameter to determine in which direction paths should be followed.
- `igraph_vector_shuffle()` no longer returns an error code.
- `igraph_vector_swap()` no longer returns an error code.
- `igraph_matrix_swap()` no longer returns an error code.
- `igraph_rng_set_default()` now returns a pointer to the previous RNG. Furthermore, this function now only stores a pointer to the `igraph_rng_t` struct passed to it, instead of copying the struct. Thus the `igraph_rng_t` must continue to exist for as long as it is used as the default RNG.
- `igraph_similarity_jaccard()` and `igraph_similarity_dice()` now take two sets of vertices to create vertex pairs of, instead of one.
- `igraph_read_graph_ncol()` and `igraph_read_graph_lgl()` now uses a default edge weight of 1 instead of 0 for files that do not contain edge weights for at least some of the edges.
- `igraph_count_automorphisms()` has been renamed to `igraph_count_automorphisms_bliss()` because it has a BLISS-specific interface. A new `igraph_count_automorphisms()` function was added with a simplified interface that does not depend on BLISS.
- `igraph_automorphism_group()` has been renamed to `igraph_automorphism_group_bliss()` because it has a BLISS-specific interface. A new `igraph_automorphism_group()` function was added with a simplified interface that does not depend on BLISS.
- `igraph_canonical_permutation()` has been renamed to `igraph_canonical_permutation_bliss()` because it has a BLISS-specific interface. A new `igraph_canonical_permutation()` function was added with a simplified interface that does not depend on BLISS.

### Added

- `igraph_erdos_renyi_game_gnm()` gained a `multiple` Boolean argument to generate Erdős-Rényi graphs with multi-edges
- `igraph_bipartite_game_gnm()` gained a `multiple` Boolean argument to generate random bipartite graphs with multi-edges

### Changed

- The Pajek format reader and writer now map vertex labels to the `name` vertex attribute in igraph. The `id` attribute is no longer used.

### Fixed

- `igraph_community_spinglass_single()` now uses `igraph_real_t` for its `inner_links` and `outer_links` output parameters, as these return not simply edge counts, but the sum of the weights of some edges.

### Removed

- Removed `igraph_Calloc()`, `igraph_Realloc()` and `igraph_Free()`. Use `IGRAPH_CALLOC()`, `IGRAPH_REALLOC()` and `IGRAPH_FREE()` instead.

### Deprecated

- `igraph_delete_vertices_idx()` is now deprecated in favour of `igraph_delete_vertices_map()`, which is functionally equivalent but has a name that is consistent with `igraph_induced_subgraph_map()`.

## [master]

### Added
Expand Down Expand Up @@ -1308,6 +1347,7 @@ Some of the highlights are:
- Provide proper support for Windows, using `__declspec(dllexport)` and `__declspec(dllimport)` for `DLL`s and static usage by using `#define IGRAPH_STATIC 1`.
- Provided integer versions of `dqueue` and `stack` data types.

[develop]: https://github.com/igraph/igraph/compare/master..develop
[master]: https://github.com/igraph/igraph/compare/0.10.10..master
[0.10.10]: https://github.com/igraph/igraph/compare/0.10.9..0.10.10
[0.10.9]: https://github.com/igraph/igraph/compare/0.10.8..0.10.9
Expand Down
5 changes: 5 additions & 0 deletions src/vendor/cigraph/etc/cmake/cpack_install_script.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -79,4 +79,9 @@ if(CPACK_SOURCE_INSTALLED_DIRECTORIES)
"${CPACK_PACKAGE_DIRECTORY}/doc/html"
DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/doc"
)
file(
INSTALL
"${CPACK_PACKAGE_DIRECTORY}/doc/igraph-docs.info"
DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/doc"
)
endif()
8 changes: 4 additions & 4 deletions src/vendor/cigraph/etc/cmake/packaging.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ set(CPACK_PACKAGE_VENDOR "The igraph development team")

set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/COPYING")

if(TARGET html)
if(TARGET html AND TARGET info)
# Alias "dist" to "package_source"
add_custom_target(dist
COMMAND "${CMAKE_COMMAND}"
Expand All @@ -14,13 +14,13 @@ if(TARGET html)
USES_TERMINAL
)

# We want to include the HTML docs in the source package so add a dependency
add_dependencies(dist html)
# Add dependencies to "dist"
add_dependencies(dist html info)
else()
add_custom_target(dist
COMMAND "${CMAKE_COMMAND}" -E false
COMMENT
"Cannot build source tarball since the HTML documentation was not built."
"Cannot build source tarball since the HTML or the Texinfo documentation was not built."
VERBATIM
USES_TERMINAL
)
Expand Down
243 changes: 148 additions & 95 deletions src/vendor/cigraph/include/igraph_attributes.h
Original file line number Diff line number Diff line change
Expand Up @@ -41,108 +41,135 @@ __BEGIN_DECLS
/* Attributes */
/* -------------------------------------------------- */

/**
* \section about_attributes
*
* <para>Attributes are numbers, boolean values or strings associated with
* the vertices or edges of a graph, or with the graph itself. E.g. you may
* label vertices with symbolic names or attach numeric weights to the edges
* of a graph. In addition to these three basic types, a custom object
* type is supported as well.</para>
*
* <para>igraph attributes are designed to be flexible and extensible.
* In igraph attributes are implemented via an interface abstraction:
* any type implementing the functions in the interface, can be used
* for storing vertex, edge and graph attributes. This means that
* different attribute implementations can be used together with
* igraph. This is reasonable: if igraph is used from Python attributes can be
* of any Python type, from R all R types are allowed. There is also an
* experimental attribute implementation to be used when programming
* in C, but by default it is currently turned off.</para>
*
* <para>First we briefly look over how attribute handlers can be
* implemented. This is not something a user does every day. It is
* rather typically the job of the high level interface writers. (But
* it is possible to write an interface without implementing
* attributes.) Then we show the experimental C attribute handler.</para>
*/

/**
* \section about_attribute_table
* <para>It is possible to attach an attribute handling
* interface to \a igraph. This is simply a table of functions, of
* type \ref igraph_attribute_table_t. These functions are invoked to
* notify the attribute handling code about the structural changes in
* a graph. See the documentation of this type for details.</para>
*
* <para>By default there is no attribute interface attached to \a igraph.
* To attach one, call \ref igraph_set_attribute_table with your new
* table. This is normally done on program startup, and is kept untouched
* for the program's lifetime. It must be done before any graph object
* is created, as graphs created with a given attribute handler
* cannot be manipulated while a different attribute handler is
* active.</para>
*/

/**
* \section about_attribute_combination
*
* <para>Several graph operations may collapse multiple vertices or edges into
* a single one. Attribute combination lists are used to indicate to the attribute
* handler how to combine the attributes of the original vertices or edges and
* how to derive the final attribute value that is to be assigned to the collapsed
* vertex or edge. For example, \ref igraph_simplify() removes loops and combines
* multiple edges into a single one; in case of a graph with an edge attribute
* named \c weight the attribute combination list can tell the attribute handler
* whether the weight of a collapsed edge should be the sum, the mean or some other
* function of the weights of the original edges that were collapsed into one.</para>
*
* <para>One attribute combination list may contain several attribute combination
* records, one for each vertex or edge attribute that is to be handled during the
* operation.</para>
*/

/**
* \typedef igraph_attribute_type_t
* The possible types of the attributes.
*
* Note that this is only the
* type communicated by the attribute interface towards igraph
* functions. E.g. in the R attribute handler, it is safe to say
* that all complex R object attributes are strings, as long as this
* interface is able to serialize them into strings. See also \ref
* igraph_attribute_table_t.
* \brief The possible types of the attributes.
*
* Values of this enum are used by the attribute interface to communicate the
* type of an attribute to igraph's C core. When igraph is integrated in a
* high-level language, the attribute type reported by the interface may not
* necessarily have to match the exact data type in the high-level language as
* long as the attribute interface can provide a conversion from the native
* high-level attribute value to one of the data types listed here. When the
* high-level data type is complex and has no suitable conversion to one of the
* atomic igraph attribute types (numeric, string or Boolean), the attribute
* interface should report the attribute as having an "object" type, which is
* ignored by the C core. See also \ref igraph_attribute_table_t.
*
* \enumval IGRAPH_ATTRIBUTE_UNSPECIFIED Currently used internally
* as a "null value" or "placeholder value" in some algorithms.
* Attribute records with this type must not be passed to igraph
* functions.
* \enumval IGRAPH_ATTRIBUTE_NUMERIC Numeric attribute.
* \enumval IGRAPH_ATTRIBUTE_BOOLEAN Logical values, true or false.
* \enumval IGRAPH_ATTRIBUTE_STRING Attribute that can be converted to
* a string.
* \enumval IGRAPH_ATTRIBUTE_STRING String attribute.
* \enumval IGRAPH_ATTRIBUTE_OBJECT Custom attribute type, to be
* used for special data types by client applications. The R and
* Python interfaces use this for attributes that hold R or Python
* objects. Usually ignored by igraph functions.
*/
typedef enum { IGRAPH_ATTRIBUTE_UNSPECIFIED = 0,
IGRAPH_ATTRIBUTE_DEFAULT IGRAPH_DEPRECATED_ENUMVAL = IGRAPH_ATTRIBUTE_UNSPECIFIED,
IGRAPH_ATTRIBUTE_NUMERIC = 1,
IGRAPH_ATTRIBUTE_BOOLEAN = 2,
IGRAPH_ATTRIBUTE_STRING = 3,
IGRAPH_ATTRIBUTE_OBJECT = 127
} igraph_attribute_type_t;
typedef enum {
IGRAPH_ATTRIBUTE_UNSPECIFIED = 0,
IGRAPH_ATTRIBUTE_DEFAULT IGRAPH_DEPRECATED_ENUMVAL = IGRAPH_ATTRIBUTE_UNSPECIFIED,
IGRAPH_ATTRIBUTE_NUMERIC = 1,
IGRAPH_ATTRIBUTE_BOOLEAN = 2,
IGRAPH_ATTRIBUTE_STRING = 3,
IGRAPH_ATTRIBUTE_OBJECT = 127
} igraph_attribute_type_t;

/**
* \typedef igraph_attribute_elemtype_t
* \brief Types of objects to which attributes can be attached.
*
* \enumval IGRAPH_ATTRIBUTE_GRAPH Denotes that an attribute belongs to the
* entire graph.
* \enumval IGRAPH_ATTRIBUTE_VERTEX Denotes that an attribute belongs to the
* vertices of a graph.
* \enumval IGRAPH_ATTRIBUTE_EDGE Denotes that an attribute belongs to the
* edges of a graph.
*/
typedef enum {
IGRAPH_ATTRIBUTE_GRAPH = 0,
IGRAPH_ATTRIBUTE_VERTEX,
IGRAPH_ATTRIBUTE_EDGE
} igraph_attribute_elemtype_t;

/* -------------------------------------------------- */
/* Attribute records */
/* -------------------------------------------------- */

/**
* \typedef igraph_attribute_record_t
* \brief An attribute record holding the name, type and values of an attribute.
*
* This composite data type is used in the attribute interface to specify a
* name-type-value triplet where the name is the name of a graph, vertex or
* edge attribute, the type is the corresponding igraph type of the attribute
* and the value is a \em vector of attribute values. Note that for graph
* attributes we use a vector of length 1. The type of the vector depends on
* the attribute type: it is \ref igraph_vector_t for numeric attributes,
* \c igraph_strvector_t for string attributes and \c igraph_vector_bool_t
* for Boolean attributes.
*
* </para><para>
* The record also stores default values for the attribute. The default values
* are used when the value vector of the record is resized with
* \ref igraph_attribute_record_resize(). It is important that the record
* stores \em one default value only, corresponding to the type of the
* attribute record. The default value is \em cleared when the type of the
* record is changed.
*/
typedef struct igraph_attribute_record_t {
const char *name;
char *name;
igraph_attribute_type_t type;
const void *value;
union {
void *as_raw;
igraph_vector_t *as_vector;
igraph_strvector_t *as_strvector;
igraph_vector_bool_t *as_vector_bool;
} value;
union {
igraph_real_t numeric;
igraph_bool_t boolean;
char *string;
} default_value;
} igraph_attribute_record_t;

typedef enum { IGRAPH_ATTRIBUTE_GRAPH = 0,
IGRAPH_ATTRIBUTE_VERTEX,
IGRAPH_ATTRIBUTE_EDGE
} igraph_attribute_elemtype_t;
IGRAPH_EXPORT igraph_error_t igraph_attribute_record_init(
igraph_attribute_record_t *attr, const char* name, igraph_attribute_type_t type
);
IGRAPH_EXPORT igraph_error_t igraph_attribute_record_init_copy(
igraph_attribute_record_t *to, const igraph_attribute_record_t *from
);
IGRAPH_EXPORT igraph_error_t igraph_attribute_record_check_type(
const igraph_attribute_record_t *attr, igraph_attribute_type_t type
);
IGRAPH_EXPORT igraph_integer_t igraph_attribute_record_size(
const igraph_attribute_record_t *attr
);
IGRAPH_EXPORT igraph_error_t igraph_attribute_record_resize(
igraph_attribute_record_t *attr, igraph_integer_t new_size
);
IGRAPH_EXPORT igraph_error_t igraph_attribute_record_set_name(
igraph_attribute_record_t *attr, const char* name
);
IGRAPH_EXPORT igraph_error_t igraph_attribute_record_set_default_numeric(
igraph_attribute_record_t *attr, igraph_real_t value
);
IGRAPH_EXPORT igraph_error_t igraph_attribute_record_set_default_boolean(
igraph_attribute_record_t *attr, igraph_bool_t value
);
IGRAPH_EXPORT igraph_error_t igraph_attribute_record_set_default_string(
igraph_attribute_record_t *attr, const char* value
);
IGRAPH_EXPORT igraph_error_t igraph_attribute_record_set_type(
igraph_attribute_record_t *attr, igraph_attribute_type_t type
);
IGRAPH_EXPORT void igraph_attribute_record_destroy(igraph_attribute_record_t *attr);

/* -------------------------------------------------- */
/* Attribute combinations */
/* -------------------------------------------------- */

/**
* \typedef igraph_attribute_combination_type_t
Expand Down Expand Up @@ -207,6 +234,22 @@ IGRAPH_EXPORT igraph_error_t igraph_attribute_combination_query(const igraph_att
igraph_attribute_combination_type_t *type,
igraph_function_pointer_t *func);

/* -------------------------------------------------- */
/* List of attribute records */
/* -------------------------------------------------- */

#define ATTRIBUTE_RECORD_LIST
#define BASE_ATTRIBUTE_RECORD
#include "igraph_pmt.h"
#include "igraph_typed_list_pmt.h"
#include "igraph_pmt_off.h"
#undef BASE_ATTRIBUTE_RECORD
#undef ATTRIBUTE_RECORD_LIST

/* -------------------------------------------------- */
/* Attribute handler interface */
/* -------------------------------------------------- */

/**
* \struct igraph_attribute_table_t
* \brief Table of functions to perform operations on attributes.
Expand All @@ -218,18 +261,23 @@ IGRAPH_EXPORT igraph_error_t igraph_attribute_combination_query(const igraph_att
* created, right after it is created but before any vertices or
* edges are added. It is supposed to set the \c attr member of the \c
* igraph_t object, which is guaranteed to be set to a null pointer
* before this function is called. It is expected to return an error code.
* before this function is called. It is expected to set the \c attr member
* to a non-null value \em or return an error code. Leaving the \c attr
* member at a null value while returning success is invalid and will trigger
* an error in the C core of igraph itself.
* \member destroy This function is called whenever the graph object
* is destroyed, right before freeing the allocated memory. It is supposed
* to do any cleanup operations that are need to dispose of the \c attr
* member of the \c igraph_t object properly. The caller will set the
* \c attr member to a null pointer after this function returns.
* \member copy This function is called when copying a graph with \ref
* igraph_copy, after the structure of the graph has been already
* copied. It is supposed to populate the \c attr member of the target
* \c igraph_t object. The \c attr member of the target is guaranteed to be
* set to a null pointer before this function is called. It is expected to
* return an error code.
* \member copy This function is called when the C core wants to populate the
* attributes of a graph from another graph. The struvture of the target
* graph is already initialized by the time this function is called, and the
* \c attr member of the graph is set to null pointer. The function is
* supposed to populate the \c attr member of the target \c igraph_t object
* to a non-null value \em or return an error code. Leaving the \c attr
* member at a null value while returning success is invalid and will trigger
* an error in the C core of igraph itself.
* \member add_vertices Called when vertices are added to a
* graph, before adding the vertices themselves.
* The number of vertices to add is supplied as an
Expand Down Expand Up @@ -311,20 +359,25 @@ IGRAPH_EXPORT igraph_error_t igraph_attribute_combination_query(const igraph_att
*/

typedef struct igraph_attribute_table_t {
igraph_error_t (*init)(igraph_t *graph, igraph_vector_ptr_t *attr);
igraph_error_t (*init)(igraph_t *graph, const igraph_attribute_record_list_t *attr);
void (*destroy)(igraph_t *graph);
igraph_error_t (*copy)(igraph_t *to, const igraph_t *from, igraph_bool_t ga,
igraph_bool_t va, igraph_bool_t ea);
igraph_error_t (*add_vertices)(igraph_t *graph, igraph_integer_t nv, igraph_vector_ptr_t *attr);
igraph_error_t (*add_vertices)(
igraph_t *graph, igraph_integer_t nv,
const igraph_attribute_record_list_t *attr
);
igraph_error_t (*permute_vertices)(const igraph_t *graph,
igraph_t *newgraph,
const igraph_vector_int_t *idx);
igraph_error_t (*combine_vertices)(const igraph_t *graph,
igraph_t *newgraph,
const igraph_vector_int_list_t *merges,
const igraph_attribute_combination_t *comb);
igraph_error_t (*add_edges)(igraph_t *graph, const igraph_vector_int_t *edges,
igraph_vector_ptr_t *attr);
igraph_error_t (*add_edges)(
igraph_t *graph, const igraph_vector_int_t *edges,
const igraph_attribute_record_list_t *attr
);
igraph_error_t (*permute_edges)(const igraph_t *graph,
igraph_t *newgraph, const igraph_vector_int_t *idx);
igraph_error_t (*combine_edges)(const igraph_t *graph,
Expand Down
Loading

0 comments on commit 837c3c6

Please sign in to comment.