diff --git a/docs/Makefile b/docs/Makefile index d0b249be..90fbce18 100644 --- a/docs/Makefile +++ b/docs/Makefile @@ -34,6 +34,10 @@ pristine: clean .PHONY: clean clean: rm -rf $(BUILDDIR)/* + # We need to use git clean instead of rm -rf because + # source/api/index.rst is actually tracked by git. + git clean -f -d -X $(SOURCEDIR)/api/ + rm -rf ../doxygen/* # Generate output commands .PHONY: dirhtml diff --git a/docs/source/conf.py b/docs/source/conf.py index 60b9bf76..07104204 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -3,6 +3,7 @@ import re import sys import warnings +import xml.etree.ElementTree as ET from datetime import date from sphinx_scylladb_theme.utils import multiversion_regex_builder @@ -112,7 +113,7 @@ def _generate_structs(outdir, structs, project): """Write structs docs in the designated outdir folder""" for obj in structs: - with open(outdir + "/struct." + obj + ".rst", "w") as t_file: + with open(outdir / f"struct.{obj}.rst", "w") as t_file: t_file.write( obj + "\n" @@ -125,25 +126,58 @@ def _generate_structs(outdir, structs, project): ) +def _generate_groups(outdir, groups, project): + """Write structs docs in the designated outdir folder""" + for obj in groups: + with open(outdir / f"group.{obj}.rst", "w") as t_file: + t_file.write( + obj + + "\n" + + "=" * len(obj) + + "\n\n" + + ".. doxygengroup:: " + + obj + + "\n :project: " + + breathe_default_project + + "\n :content-only:" + ) + + def _generate_doxygen_rst(xmldir, outdir): """Autogenerate doxygen docs in the designated outdir folder""" structs = [] - files = os.listdir(os.path.join(os.path.dirname(__file__), xmldir)) + groups = [] + group_structs = set() + xml_path = os.path.join(os.path.dirname(__file__), xmldir) + files = os.listdir(xml_path) + for file_name in files: + if file_name.startswith("group__") and file_name.endswith(".xml"): + tree = ET.parse(os.path.join(xml_path, file_name)) + root = tree.getroot() + compoundname = root.find(".//compoundname") + if compoundname is not None and compoundname.text: + group_name = compoundname.text + groups.append(group_name) + for inner in root.iter("innerclass"): + group_structs.add(inner.text) for file_name in files: if "struct" in file_name and "__" not in file_name: - structs.append( + name = ( file_name.replace("struct_", "") .replace("_", " ") .replace(".xml", "") .title() .replace(" ", "") ) + if name not in group_structs: + structs.append(name) _generate_structs(outdir, structs, breathe_default_project) + _generate_groups(outdir, groups, breathe_default_project) def generate_doxygen(app): DOXYGEN_XML_DIR = breathe_projects[breathe_default_project] - _generate_doxygen_rst(DOXYGEN_XML_DIR, app.builder.srcdir + "/api") + _generate_doxygen_rst(DOXYGEN_XML_DIR, app.builder.srcdir / "api") # -- Options for sitemap extension diff --git a/include/cassandra.h b/include/cassandra.h index 526c690b..e1d8db8a 100644 --- a/include/cassandra.h +++ b/include/cassandra.h @@ -60,26 +60,65 @@ extern "C" { #endif +/** + * @ingroup BasicTypes + */ typedef enum { cass_false = 0, cass_true = 1 } cass_bool_t; +/** + * @ingroup BasicTypes + */ typedef float cass_float_t; +/** + * @ingroup BasicTypes + */ typedef double cass_double_t; +/** + * @ingroup BasicTypes + */ typedef int8_t cass_int8_t; +/** + * @ingroup BasicTypes + */ typedef uint8_t cass_uint8_t; +/** + * @ingroup BasicTypes + */ typedef int16_t cass_int16_t; +/** + * @ingroup BasicTypes + */ typedef uint16_t cass_uint16_t; +/** + * @ingroup BasicTypes + */ typedef int32_t cass_int32_t; +/** + * @ingroup BasicTypes + */ typedef uint32_t cass_uint32_t; +/** + * @ingroup BasicTypes + */ typedef int64_t cass_int64_t; +/** + * @ingroup BasicTypes + */ typedef uint64_t cass_uint64_t; #define CASS_UINT64_MAX 18446744073709551615ULL +/** + * @ingroup BasicTypes + */ typedef cass_uint8_t cass_byte_t; +/** + * @ingroup BasicTypes + */ typedef cass_uint64_t cass_duration_t; /** @@ -435,6 +474,9 @@ typedef struct CassSpeculativeExecutionMetrics_ { cass_double_t percentage; /**< Fraction of requests that are aborted speculative retries */ } CassSpeculativeExecutionMetrics; +/** + * @ingroup CassConsistency + */ typedef enum CassConsistency_ { CASS_CONSISTENCY_UNKNOWN = 0xFFFF, CASS_CONSISTENCY_ANY = 0x0000, @@ -468,6 +510,9 @@ typedef enum CassConsistency_ { #define CASS_CONSISTENCY_MAP CASS_CONSISTENCY_MAPPING /* Deprecated */ /* @endcond */ +/** + * @ingroup CassError + */ typedef enum CassWriteType_ { CASS_WRITE_TYPE_UNKNOWN, CASS_WRITE_TYPE_SIMPLE, @@ -494,6 +539,9 @@ typedef enum CassWriteType_ { #define CASS_WRITE_TYPE_MAP CASS_WRITE_TYPE_MAPPING /* Deprecated */ /* @endcond */ +/** + * @memberof CassColumnMeta + */ typedef enum CassColumnType_ { CASS_COLUMN_TYPE_REGULAR, CASS_COLUMN_TYPE_PARTITION_KEY, @@ -502,6 +550,9 @@ typedef enum CassColumnType_ { CASS_COLUMN_TYPE_COMPACT_VALUE } CassColumnType; +/** + * @memberof CassIndexMeta + */ typedef enum CassIndexType_ { CASS_INDEX_TYPE_UNKNOWN, CASS_INDEX_TYPE_KEYS, @@ -538,6 +589,9 @@ typedef enum CassIndexType_ { XX(CASS_VALUE_TYPE_UDT, 0x0030, "", "") \ XX(CASS_VALUE_TYPE_TUPLE, 0x0031, "tuple", "org.apache.cassandra.db.marshal.TupleType") +/** + * @ingroup CassValueType + */ typedef enum CassValueType_ { CASS_VALUE_TYPE_UNKNOWN = 0xFFFF, #define XX_VALUE_TYPE(name, type, cql, klass) name = type, @@ -548,24 +602,36 @@ typedef enum CassValueType_ { /* @endcond */ } CassValueType; +/** + * @ingroup Miscellaneous + */ typedef enum CassClusteringOrder_ { CASS_CLUSTERING_ORDER_NONE, CASS_CLUSTERING_ORDER_ASC, CASS_CLUSTERING_ORDER_DESC } CassClusteringOrder; +/** + * @memberof CassCollection + */ typedef enum CassCollectionType_ { CASS_COLLECTION_TYPE_LIST = CASS_VALUE_TYPE_LIST, CASS_COLLECTION_TYPE_MAP = CASS_VALUE_TYPE_MAP, CASS_COLLECTION_TYPE_SET = CASS_VALUE_TYPE_SET } CassCollectionType; +/** + * @memberof CassBatch + */ typedef enum CassBatchType_ { CASS_BATCH_TYPE_LOGGED = 0x00, CASS_BATCH_TYPE_UNLOGGED = 0x01, CASS_BATCH_TYPE_COUNTER = 0x02 } CassBatchType; +/** + * @memberof CassIterator + */ typedef enum CassIteratorType_ { CASS_ITERATOR_TYPE_RESULT, CASS_ITERATOR_TYPE_ROW, @@ -597,6 +663,9 @@ typedef enum CassIteratorType_ { #define CASS_LOG_LEVEL_MAP CASS_LOG_LEVEL_MAPPING /* Deprecated */ /* @endcond */ +/** + * @ingroup Logging + */ typedef enum CassLogLevel_ { #define XX_LOG(log_level, _) log_level, CASS_LOG_LEVEL_MAPPING(XX_LOG) @@ -606,6 +675,9 @@ typedef enum CassLogLevel_ { /* @endcond */ } CassLogLevel; +/** + * @memberof CassSsl + */ typedef enum CassSslVerifyFlags_ { CASS_SSL_VERIFY_NONE = 0x00, CASS_SSL_VERIFY_PEER_CERT = 0x01, @@ -613,6 +685,9 @@ typedef enum CassSslVerifyFlags_ { CASS_SSL_VERIFY_PEER_IDENTITY_DNS = 0x04 } CassSslVerifyFlags; +/** + * @ingroup Miscellaneous + */ typedef enum CassProtocolVersion_ { CASS_PROTOCOL_VERSION_V1 = 0x01, /**< Deprecated */ CASS_PROTOCOL_VERSION_V2 = 0x02, /**< Deprecated */ @@ -625,6 +700,9 @@ typedef enum CassProtocolVersion_ { driver with DataStax Enterprise */ } CassProtocolVersion; +/** + * @ingroup CassError + */ typedef enum CassErrorSource_ { CASS_ERROR_SOURCE_NONE, CASS_ERROR_SOURCE_LIB, @@ -701,6 +779,9 @@ typedef enum CassErrorSource_ { #define CASS_ERROR(source, code) ((source << 24) | code) +/** + * @ingroup CassError + */ typedef enum CassError_ { CASS_OK = 0, #define XX_ERROR(source, name, code, _) name = CASS_ERROR(source, code), @@ -714,7 +795,9 @@ typedef enum CassError_ { /** * A callback that's notified when the future is set. * - * @param[in] message + * @memberof CassFuture + * + * @param[in] future * @param[in] data user defined data provided when the callback * was registered. * @@ -730,6 +813,8 @@ typedef void (*CassFutureCallback)(CassFuture* future, /** * A log message. + * + * @ingroup Logging */ typedef struct CassLogMessage_ { /** @@ -746,6 +831,8 @@ typedef struct CassLogMessage_ { /** * A callback that's used to handle logging. * + * @ingroup Logging + * * @param[in] message * @param[in] data user defined data provided when the callback * was registered. @@ -759,6 +846,8 @@ typedef void (*CassLogCallback)(const CassLogMessage* message, * A custom malloc function. This function should allocate "size" bytes and * return a pointer to that memory * + * @ingroup CustomAllocator + * * @param[in] size The size of the memory to allocate * * @see CassFreeFunction @@ -771,6 +860,8 @@ typedef void* (*CassMallocFunction)(size_t size); * memory pointed to by "ptr". If the memory cannot be resized then new memory * should be allocated and contain the contents of the original memory at "ptr". * + * @ingroup CustomAllocator + * * @param[in] ptr A pointer to the original memory. If NULL it should behave the * same as "CassMallocFunction" * @param[in] size The size of the memory to allocate/resize. @@ -786,6 +877,8 @@ typedef void* (*CassReallocFunction)(void* ptr, size_t size); * "ptr" that was previously allocated by a "CassMallocFunction" or * "CassReallocFunction" function. * + * @ingroup CustomAllocator + * * @param[in] ptr A pointer to memory that should be deallocated. If NULL then * this will perform no operation. * @@ -805,6 +898,8 @@ typedef struct CassAuthenticator_ CassAuthenticator; /** * A callback used to initiate an authentication exchange. * + * @memberof CassAuthenticatorCallbacks + * * Use cass_authenticator_set_response() to set the response token. * * Use cass_authenticator_set_error() if an error occurred during @@ -820,6 +915,8 @@ typedef void (*CassAuthenticatorInitialCallback)(CassAuthenticator* auth, * A callback used when an authentication challenge initiated * by the server. * + * @memberof CassAuthenticatorCallbacks + * * Use cass_authenticator_set_response() to set the response token. * * Use cass_authenticator_set_error() if an error occurred during the @@ -838,6 +935,8 @@ typedef void (*CassAuthenticatorChallengeCallback)(CassAuthenticator* auth, * A callback used to indicate the success of the authentication * exchange. * + * @memberof CassAuthenticatorCallbacks + * * Use cass_authenticator_set_error() if an error occurred while evaluating * the success token. * @@ -855,6 +954,8 @@ typedef void (*CassAuthenticatorSuccessCallback)(CassAuthenticator* auth, * the process of the authentication exchange. This is called after * the termination of the exchange regardless of the outcome. * + * @memberof CassAuthenticatorCallbacks + * * @param[in] auth * @param[in] data */ @@ -864,6 +965,8 @@ typedef void (*CassAuthenticatorCleanupCallback)(CassAuthenticator* auth, /** * A callback used to cleanup resources. * + * @memberof CassAuthenticatorCallbacks + * * @param[in] data */ typedef void (*CassAuthenticatorDataCleanupCallback)(void* data); @@ -878,6 +981,9 @@ typedef struct CassAuthenticatorCallbacks_ { CassAuthenticatorCleanupCallback cleanup_callback; } CassAuthenticatorCallbacks; +/** + * @ingroup Miscellaneous + */ typedef enum CassHostListenerEvent_ { CASS_HOST_LISTENER_EVENT_UP, CASS_HOST_LISTENER_EVENT_DOWN, @@ -888,6 +994,8 @@ typedef enum CassHostListenerEvent_ { /** * A callback used to indicate the host state for a node in the cluster. * + * @ingroup Miscellaneous + * * @param[in] event * @param[in] address * @param[in] data @@ -897,12 +1005,57 @@ typedef void(*CassHostListenerCallback)(CassHostListenerEvent event, const CassInet address, void* data); +/** + * @ingroup Miscellaneous + */ typedef enum CassCompressionType_ { CASS_COMPRESSION_LZ4, CASS_COMPRESSION_SNAPPY, CASS_COMPRESSION_NONE } CassCompressionType; +/** + * @defgroup BasicTypes Basic types + * + * Primitive type aliases used throughout the driver API. + */ + +/** + * @defgroup Logging Logging + * + * Functions for configuring logging in the driver. + */ + +/** + * @defgroup CassError CassError + * + * Error codes and related types. + */ + +/** + * @defgroup CassConsistency CassConsistency + * + * Consistency levels for queries. + */ + +/** + * @defgroup CassValueType CassValueType + * + * Data type representations for values. + */ + +/** + * @defgroup CustomAllocator Custom allocator + * + * Custom memory allocation functions. + */ + +/** + * @defgroup Miscellaneous Miscellaneous + * + * Utility and miscellaneous functions. + */ + /*********************************************************************************** * * Execution Profile @@ -1102,6 +1255,8 @@ cass_execution_profile_set_load_balance_rack_aware(CassExecProfile* profile, * @param[in] profile * @param[in] local_dc * @param[in] local_dc_length + * @param[in] local_rack + * @param[in] local_rack_length * @return same cass_execution_profile_set_load_balance_rack_aware() * * @see cass_execution_profile_set_load_balance_rack_aware() @@ -1987,7 +2142,6 @@ cass_cluster_set_credentials(CassCluster* cluster, * @param[in] username_length * @param[in] password * @param[in] password_length - * @return same as cass_cluster_set_credentials() * * @see cass_cluster_set_credentials(); */ @@ -2094,6 +2248,8 @@ cass_cluster_set_load_balance_rack_aware(CassCluster* cluster, * @param[in] cluster * @param[in] local_dc * @param[in] local_dc_length + * @param[in] local_rack + * @param[in] local_rack_length * @return same as cass_cluster_set_load_balance_dc_aware() * * @see cass_cluster_set_load_balance_dc_aware() @@ -2234,7 +2390,6 @@ cass_cluster_set_whitelist_filtering(CassCluster* cluster, * @param[in] cluster * @param[in] hosts * @param[in] hosts_length - * @return same as cass_cluster_set_whitelist_filtering() * * @see cass_cluster_set_whitelist_filtering() */ @@ -2276,7 +2431,6 @@ cass_cluster_set_blacklist_filtering(CassCluster* cluster, * @param[in] cluster * @param[in] hosts * @param[in] hosts_length - * @return same as cass_cluster_set_blacklist_filtering() * * @see cass_cluster_set_blacklist_filtering() */ @@ -2310,7 +2464,6 @@ cass_cluster_set_whitelist_dc_filtering(CassCluster* cluster, * @param[in] cluster * @param[in] dcs * @param[in] dcs_length - * @return same as cass_cluster_set_whitelist_dc_filtering() * * @see cass_cluster_set_whitelist_dc_filtering() */ @@ -2344,7 +2497,6 @@ cass_cluster_set_blacklist_dc_filtering(CassCluster* cluster, * @param[in] cluster * @param[in] dcs * @param[in] dcs_length - * @return same as cass_cluster_set_blacklist_dc_filtering() * * @see cass_cluster_set_blacklist_dc_filtering() */ @@ -4163,7 +4315,6 @@ cass_ssl_add_trusted_cert_n(CassSsl* ssl, * * @param[in] ssl * @param[in] flags - * @return CASS_OK if successful, otherwise an error occurred * * @see cass_cluster_set_use_hostname_resolution() */ @@ -6221,7 +6372,7 @@ cass_batch_set_custom_payload(CassBatch* batch, /** * Sets whether the batch should use tracing. * - * @public @memberof CassStatement + * @public @memberof CassBatch * * @param[in] batch * @param[in] enabled @@ -6350,6 +6501,8 @@ cass_data_type_free(CassDataType* data_type); /** * Gets the value type of the specified data type. * + * @public @memberof CassDataType + * * @param[in] data_type * @return The value type */ @@ -6359,6 +6512,8 @@ cass_data_type_type(const CassDataType* data_type); /** * Gets whether a data type is frozen. * + * @public @memberof CassDataType + * * @param[in] data_type * @return cass_true if the data type is frozen, otherwise cass_false. */ @@ -6370,6 +6525,8 @@ cass_data_type_is_frozen(const CassDataType* data_type); * * Note: Only valid for UDT data types. * + * @public @memberof CassDataType + * * @param[in] data_type * @param[out] type_name * @param[out] type_name_length @@ -6385,6 +6542,8 @@ cass_data_type_type_name(const CassDataType* data_type, * * Note: Only valid for UDT data types. * + * @public @memberof CassDataType + * * @param[in] data_type * @param[in] type_name * @return CASS_OK if successful, otherwise an error occurred. @@ -6414,6 +6573,8 @@ cass_data_type_set_type_name_n(CassDataType* data_type, * * Note: Only valid for UDT data types. * + * @public @memberof CassDataType + * * @param[in] data_type * @param[out] keyspace * @param[out] keyspace_length @@ -6429,6 +6590,8 @@ cass_data_type_keyspace(const CassDataType* data_type, * * Note: Only valid for UDT data types. * + * @public @memberof CassDataType + * * @param[in] data_type * @param[in] keyspace * @return CASS_OK if successful, otherwise an error occurred. @@ -6458,6 +6621,8 @@ cass_data_type_set_keyspace_n(CassDataType* data_type, * * Note: Only valid for custom data types. * + * @public @memberof CassDataType + * * @param[in] data_type * @param[out] class_name * @param[out] class_name_length @@ -6473,6 +6638,8 @@ cass_data_type_class_name(const CassDataType* data_type, * * Note: Only valid for custom data types. * + * @public @memberof CassDataType + * * @param[in] data_type * @param[in] class_name * @return CASS_OK if successful, otherwise an error occurred. @@ -6503,6 +6670,8 @@ cass_data_type_set_class_name_n(CassDataType* data_type, * * Note: Only valid for UDT, tuple and collection data types. * + * @public @memberof CassDataType + * * @param[in] data_type * @return Returns the number of sub-data types */ @@ -6515,22 +6684,14 @@ cass_data_type_sub_type_count(const CassDataType* data_type); CASS_EXPORT CASS_DEPRECATED(size_t cass_data_sub_type_count(const CassDataType* data_type)); -/** - * Gets the sub-data type count of a UDT (user defined type), tuple - * or collection. - * - * Note: Only valid for UDT, tuple and collection data types. - * - * @param[in] data_type - * @return Returns the number of sub-data types - */ - /** * Gets the sub-data type of a UDT (user defined type), tuple or collection at * the specified index. * * Note: Only valid for UDT, tuple and collection data types. * + * @public @memberof CassDataType + * * @param[in] data_type * @param[in] index * @return Returns a reference to a child data type. Do not free this @@ -6546,6 +6707,8 @@ cass_data_type_sub_data_type(const CassDataType* data_type, * * Note: Only valid for UDT data types. * + * @public @memberof CassDataType + * * @param[in] data_type * @param[in] name * @return Returns a reference to a child data type. Do not free this @@ -6579,6 +6742,8 @@ cass_data_type_sub_data_type_by_name_n(const CassDataType* data_type, * * Note: Only valid for UDT data types. * + * @public @memberof CassDataType + * * @param[in] data_type * @param[in] index * @param[out] name @@ -6596,6 +6761,8 @@ cass_data_type_sub_type_name(const CassDataType* data_type, * * Note: Only valid for tuple and collection data types. * + * @public @memberof CassDataType + * * @param[in] data_type * @param[in] sub_data_type * @return CASS_OK if successful, otherwise an error occurred. @@ -6609,6 +6776,8 @@ cass_data_type_add_sub_type(CassDataType* data_type, * * Note: Only valid for UDT data types. * + * @public @memberof CassDataType + * * @param[in] data_type * @param[in] name * @param[in] sub_data_type @@ -6625,6 +6794,8 @@ cass_data_type_add_sub_type_by_name(CassDataType* data_type, * * Note: Only valid for UDT data types. * + * @public @memberof CassDataType + * * @param[in] data_type * @param[in] name * @param[in] name_length @@ -6642,6 +6813,8 @@ cass_data_type_add_sub_type_by_name_n(CassDataType* data_type, * * Note: Only valid for tuple and collection data types. * + * @public @memberof CassDataType + * * @param[in] data_type * @param[in] sub_value_type * @return CASS_OK if successful, otherwise an error occurred. @@ -6656,6 +6829,8 @@ cass_data_type_add_sub_value_type(CassDataType* data_type, * * Note: Only valid for UDT data types. * + * @public @memberof CassDataType + * * @param[in] data_type * @param[in] name * @param[in] sub_value_type @@ -6672,6 +6847,8 @@ cass_data_type_add_sub_value_type_by_name(CassDataType* data_type, * * Note: Only valid for UDT data types. * + * @public @memberof CassDataType + * * @param[in] data_type * @param[in] name * @param[in] name_length @@ -6733,6 +6910,8 @@ cass_collection_free(CassCollection* collection); /** * Gets the data type of a collection. * + * @public @memberof CassCollection + * * @param[in] collection * @return Returns a reference to the data type of the collection. Do not free * this reference as it is bound to the lifetime of the collection. @@ -7042,6 +7221,8 @@ cass_tuple_free(CassTuple* tuple); /** * Gets the data type of a tuple. * + * @public @memberof CassTuple + * * @param[in] tuple * @return Returns a reference to the data type of the tuple. Do not free * this reference as it is bound to the lifetime of the tuple. @@ -7385,6 +7566,8 @@ cass_user_type_free(CassUserType* user_type); /** * Gets the data type of a user defined type. * + * @public @memberof CassUserType + * * @param[in] user_type * @return Returns a reference to the data type of the user defined type. * Do not free this reference as it is bound to the lifetime of the @@ -9805,6 +9988,8 @@ cass_timestamp_gen_monotonic_new(); * Same as cass_timestamp_gen_monotonic_new(), but with settings for controlling * warnings about clock skew. * + * @public @memberof CassTimestampGen + * * @param warning_threshold_us The amount of clock skew, in microseconds, that * must be detected before a warning is triggered. A threshold less than 0 can * be used to disable warnings. @@ -10050,6 +10235,8 @@ cass_custom_payload_remove_n(CassCustomPayload* payload, /** * Gets the string for a consistency. * + * @ingroup CassConsistency + * * @param[in] consistency * @return A null-terminated string for the consistency. * Example: "ALL", "ONE", "QUORUM", etc. @@ -10065,6 +10252,8 @@ cass_consistency_string(CassConsistency consistency); /** * Gets the string for a write type. * + * @ingroup CassError + * * @param[in] write_type * @return A null-terminated string for the write type. * Example: "BATCH", "SIMPLE", "COUNTER", etc. @@ -10081,6 +10270,8 @@ cass_write_type_string(CassWriteType write_type); /** * Gets a description for an error code. * + * @ingroup CassError + * * @param[in] error * @return A null-terminated string describing the error. */ @@ -10096,6 +10287,8 @@ cass_error_desc(CassError error); /** * Sets the log level. * + * @ingroup Logging + * * Note: This needs to be done before any call that might log, such as * any of the cass_cluster_*() or cass_ssl_*() functions. * @@ -10109,6 +10302,8 @@ cass_log_set_level(CassLogLevel log_level); /** * Sets a callback for handling logging events. * + * @ingroup Logging + * * Note: This needs to be done before any call that might log, such as * any of the cass_cluster_*() or cass_ssl_*() functions. * @@ -10125,6 +10320,8 @@ cass_log_set_callback(CassLogCallback callback, /** * Analogous getter - useful for restoring logger to previous values. * + * @ingroup Logging + * * @param[out] callback_out Current logging callback. Must point to a valid memory area. * @param[out] data_out Current Logger instance. Must point to a valid memory area. */ @@ -10134,6 +10331,8 @@ cass_log_get_callback_and_data(CassLogCallback* callback_out, void** data_out); /** * Gets the string for a log level. * + * @ingroup Logging + * * @param[in] log_level * @return A null-terminated string for the log level. * Example: "ERROR", "WARN", "INFO", etc. @@ -10224,6 +10423,8 @@ cass_inet_from_string_n(const char* str, * represents the number of days since the Epoch (1970-01-01) with the Epoch centered at * the value 2^31. * + * @ingroup Miscellaneous + * * @param[in] epoch_secs * @return the number of days since the date -5877641-06-23 */ @@ -10234,6 +10435,8 @@ cass_date_from_epoch(cass_int64_t epoch_secs); * Converts a unix timestamp (in seconds) to the Cassandra "time" type. The "time" type * represents the number of nanoseconds since midnight (range 0 to 86399999999999). * + * @ingroup Miscellaneous + * * @param[in] epoch_secs * @return nanoseconds since midnight */ @@ -10243,6 +10446,8 @@ cass_time_from_epoch(cass_int64_t epoch_secs); /** * Combines the Cassandra "date" and "time" types to Epoch time in seconds. * + * @ingroup Miscellaneous + * * @param[in] date * @param[in] time * @return Epoch time in seconds. Negative times are possible if the date @@ -10261,6 +10466,8 @@ cass_date_time_to_epoch(cass_uint32_t date, /** * Set custom allocation functions. * + * @ingroup CustomAllocator + * * Warning: This function is not yet implemented. * * Note: This is not thread-safe. The allocation functions must be set