// // Copyright (C) 2021 Greg Landrum // // @@ All Rights Reserved @@ // This file is part of the RDKit. // The contents are covered by the terms of the BSD license // which is included in the file license.txt, found at the root // of the RDKit source tree. // #pragma once #include #ifdef RDKIT_RDKITCFFI_BUILD #define RDKIT_RDKITCFFI_EXPORT RDKIT_EXPORT_API #else #define RDKIT_RDKITCFFI_EXPORT RDKIT_IMPORT_API #endif #ifdef __cplusplus extern "C" { #endif // I/O RDKIT_RDKITCFFI_EXPORT char *get_mol(const char *input, size_t *mol_sz, const char *details_json); RDKIT_RDKITCFFI_EXPORT char *get_qmol(const char *input, size_t *mol_sz, const char *details_json); RDKIT_RDKITCFFI_EXPORT char *get_molblock(const char *pkl, size_t pkl_sz, const char *details_json); RDKIT_RDKITCFFI_EXPORT char *get_v3kmolblock(const char *pkl, size_t pkl_sz, const char *details_json); RDKIT_RDKITCFFI_EXPORT char *get_v2kmolblock(const char *pkl, size_t pkl_sz, const char *details_json); RDKIT_RDKITCFFI_EXPORT char *get_smiles(const char *pkl, size_t pkl_sz, const char *details_json); RDKIT_RDKITCFFI_EXPORT char *get_smarts(const char *pkl, size_t pkl_sz, const char *details_json); RDKIT_RDKITCFFI_EXPORT char *get_cxsmiles(const char *pkl, size_t pkl_sz, const char *details_json); RDKIT_RDKITCFFI_EXPORT char *get_cxsmarts(const char *pkl, size_t pkl_sz, const char *details_json); RDKIT_RDKITCFFI_EXPORT char *get_json(const char *pkl, size_t pkl_sz, const char *details_json); #ifdef RDK_BUILD_INCHI_SUPPORT RDKIT_RDKITCFFI_EXPORT char *get_inchi(const char *pkl, size_t pkl_sz, const char *details_json); RDKIT_RDKITCFFI_EXPORT char *get_inchi_for_molblock(const char *ctab, const char *details_json); RDKIT_RDKITCFFI_EXPORT char *get_inchikey_for_inchi(const char *inchi); #endif RDKIT_RDKITCFFI_EXPORT char *get_rxn(const char *input, size_t *mol_sz, const char *details_json); RDKIT_RDKITCFFI_EXPORT char **get_mol_frags(const char *pkl, size_t pkl_sz, size_t **frags_pkl_sz_array, size_t *num_frags, const char *details_json, char **mappings_json); // substructure RDKIT_RDKITCFFI_EXPORT char *get_substruct_match(const char *mol_pkl, size_t mol_pkl_sz, const char *query_pkl, size_t query_pkl_sz, const char *options_json); RDKIT_RDKITCFFI_EXPORT char *get_substruct_matches(const char *mol_pkl, size_t mol_pkl_sz, const char *query_pkl, size_t query_pkl_sz, const char *options_json); // Drawing RDKIT_RDKITCFFI_EXPORT char *get_svg(const char *pkl, size_t pkl_sz, const char *details_json); RDKIT_RDKITCFFI_EXPORT char *get_rxn_svg(const char *pkl, size_t pkl_sz, const char *details_json); // Calculators RDKIT_RDKITCFFI_EXPORT char *get_descriptors(const char *pkl, size_t pkl_sz); RDKIT_RDKITCFFI_EXPORT char *get_morgan_fp(const char *pkl, size_t pkl_sz, const char *details_json); RDKIT_RDKITCFFI_EXPORT char *get_morgan_fp_as_bytes(const char *pkl, size_t pkl_sz, size_t *nbytes, const char *details_json); RDKIT_RDKITCFFI_EXPORT char *get_rdkit_fp(const char *pkl, size_t pkl_sz, const char *details_json); RDKIT_RDKITCFFI_EXPORT char *get_rdkit_fp_as_bytes(const char *pkl, size_t pkl_sz, size_t *nbytes, const char *details_json); RDKIT_RDKITCFFI_EXPORT char *get_pattern_fp(const char *pkl, size_t pkl_sz, const char *details_json); RDKIT_RDKITCFFI_EXPORT char *get_pattern_fp_as_bytes(const char *pkl, size_t pkl_sz, size_t *nbytes, const char *details_json); RDKIT_RDKITCFFI_EXPORT char *get_topological_torsion_fp( const char *pkl, size_t pkl_sz, const char *details_json); RDKIT_RDKITCFFI_EXPORT char *get_topological_torsion_fp_as_bytes( const char *pkl, size_t pkl_sz, size_t *nbytes, const char *details_json); RDKIT_RDKITCFFI_EXPORT char *get_atom_pair_fp(const char *pkl, size_t pkl_sz, const char *details_json); RDKIT_RDKITCFFI_EXPORT char *get_atom_pair_fp_as_bytes( const char *pkl, size_t pkl_sz, size_t *nbytes, const char *details_json); RDKIT_RDKITCFFI_EXPORT char *get_maccs_fp(const char *pkl, size_t pkl_sz); RDKIT_RDKITCFFI_EXPORT char *get_maccs_fp_as_bytes(const char *pkl, size_t pkl_sz, size_t *nbytes); #ifdef RDK_BUILD_AVALON_SUPPORT RDKIT_RDKITCFFI_EXPORT char *get_avalon_fp(const char *pkl, size_t pkl_sz, const char *details_json); RDKIT_RDKITCFFI_EXPORT char *get_avalon_fp_as_bytes(const char *pkl, size_t pkl_sz, size_t *nbytes, const char *details_json); #endif // modification RDKIT_RDKITCFFI_EXPORT short add_hs(char **pkl, size_t *pkl_sz); RDKIT_RDKITCFFI_EXPORT short remove_all_hs(char **pkl, size_t *pkl_sz); RDKIT_RDKITCFFI_EXPORT short remove_hs(char **pkl, size_t *pkl_sz, const char *details_json); // standardization RDKIT_RDKITCFFI_EXPORT short cleanup(char **pkl, size_t *pkl_sz, const char *details_json); RDKIT_RDKITCFFI_EXPORT short normalize(char **pkl, size_t *pkl_sz, const char *details_json); RDKIT_RDKITCFFI_EXPORT short neutralize(char **pkl, size_t *pkl_sz, const char *details_json); RDKIT_RDKITCFFI_EXPORT short reionize(char **pkl, size_t *pkl_sz, const char *details_json); RDKIT_RDKITCFFI_EXPORT short canonical_tautomer(char **pkl, size_t *pkl_sz, const char *details_json); RDKIT_RDKITCFFI_EXPORT short charge_parent(char **pkl, size_t *pkl_sz, const char *details_json); RDKIT_RDKITCFFI_EXPORT short fragment_parent(char **pkl, size_t *pkl_sz, const char *details_json); // coordinates RDKIT_RDKITCFFI_EXPORT void prefer_coordgen(short val); RDKIT_RDKITCFFI_EXPORT short has_coords(const char *mol_pkl, size_t mol_pkl_sz); RDKIT_RDKITCFFI_EXPORT short set_2d_coords(char **pkl, size_t *pkl_sz); RDKIT_RDKITCFFI_EXPORT short set_3d_coords(char **pkl, size_t *pkl_sz, const char *params_json); RDKIT_RDKITCFFI_EXPORT short set_2d_coords_aligned(char **pkl, size_t *pkl_sz, const char *template_pkl, size_t template_sz, const char *details_json, char **match_json); // housekeeping RDKIT_RDKITCFFI_EXPORT void free_ptr(char *ptr); RDKIT_RDKITCFFI_EXPORT char *version(); RDKIT_RDKITCFFI_EXPORT short enable_logging(); RDKIT_RDKITCFFI_EXPORT short enable_logger(const char *log_name); RDKIT_RDKITCFFI_EXPORT short disable_logging(); RDKIT_RDKITCFFI_EXPORT short disable_logger(const char *log_name); // chirality RDKIT_RDKITCFFI_EXPORT short use_legacy_stereo_perception(short value); RDKIT_RDKITCFFI_EXPORT short allow_non_tetrahedral_chirality(short value); // PNG metadata RDKIT_RDKITCFFI_EXPORT short add_mol_to_png_blob(char **png_blob, size_t *png_blob_sz, const char *mpkl, size_t mpkl_size, const char *details_json); RDKIT_RDKITCFFI_EXPORT short get_mol_from_png_blob(const char *png_blob, size_t png_blob_sz, char **mpkl, size_t *mpkl_sz, const char *details_json); RDKIT_RDKITCFFI_EXPORT short get_mols_from_png_blob(const char *png_blob, size_t png_blob_sz, char ***mpkl_array, size_t **mpkl_sz_array, const char *details_json); RDKIT_RDKITCFFI_EXPORT void free_mol_array(char ***pkl_array, size_t **pkl_sz_array); // logging RDKIT_RDKITCFFI_EXPORT void *set_log_tee(const char *log_name); RDKIT_RDKITCFFI_EXPORT void *set_log_capture(const char *log_name); RDKIT_RDKITCFFI_EXPORT short destroy_log_handle(void **log_handle); RDKIT_RDKITCFFI_EXPORT char *get_log_buffer(void *log_handle); RDKIT_RDKITCFFI_EXPORT short clear_log_buffer(void *log_handle); // props RDKIT_RDKITCFFI_EXPORT short has_prop(const char *mol_pkl, size_t mol_pkl_sz, const char *key); RDKIT_RDKITCFFI_EXPORT char **get_prop_list(const char *mol_pkl, size_t mol_pkl_sz, short includePrivate, short includeComputed); RDKIT_RDKITCFFI_EXPORT void set_prop(char **mol_pkl, size_t *mol_pkl_sz, const char *key, const char *val, short computed); RDKIT_RDKITCFFI_EXPORT char *get_prop(const char *mol_pkl, size_t mol_pkl_sz, const char *key); RDKIT_RDKITCFFI_EXPORT short clear_prop(char **mol_pkl, size_t *mol_pkl_sz, const char *key); RDKIT_RDKITCFFI_EXPORT void keep_props(char **mol_pkl, size_t *mol_pkl_sz, const char *details_json); #ifdef __cplusplus } #endif