Files
rdkit/Code/MinimalLib/cffiwrapper.h
Paolo Tosco 23ffd85f60 - fix #8481 (#8808)
- implement get_v2Kmolblock() in MinimalLib
- add the possibility to specify the MDL version preference as a get_molblock() forceMDLVersion JSON parameter, which is ignored by get_v3Kmolblock() and get_v2Kmolblock()
- changes in response to review

Co-authored-by: ptosco <paolo.tosco@novartis.com>
2025-09-29 17:33:02 +02:00

210 lines
11 KiB
C

//
// 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 <RDGeneral/export.h>
#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