Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
d6dc293
Added unit test prototype for testing OutputINCHI_StereoLayer
cm-beilstein Dec 19, 2025
e5f4403
Added new unit-tests
cm-beilstein Dec 19, 2025
4b8e52b
Merge branch 'refactor_main' into enh_stereo
cm-beilstein Dec 22, 2025
3cff56f
Changed gtest test_suite names
cm-beilstein Dec 22, 2025
321856d
Merge branch 'refactor_main' into enh_stereo
cm-beilstein Dec 22, 2025
bc49dca
New units for enh stereochemistry
cm-beilstein Dec 22, 2025
0cf17b9
Added/corrected unit tests for enh stereo
cm-beilstein Dec 23, 2025
e0b38cb
Added unit tests for stereo-layer tags
cm-beilstein Dec 30, 2025
2e9f95c
Added unit tests for m-layer
cm-beilstein Jan 5, 2026
01ca153
Added doxygen comments
cm-beilstein Jan 7, 2026
ddd3c7a
Added unit tests and initial modification for enh stereo
cm-beilstein Jan 8, 2026
892521a
Added functions for changing parities based on abs, rel, rac
cm-beilstein Jan 9, 2026
65e5eb5
prototypes and unit-test for t and m-layer changes
cm-beilstein Jan 12, 2026
0555b4f
added code for parity change (t+m-layer)
cm-beilstein Jan 21, 2026
7988584
added unit test and param for enh stereochem
cm-beilstein Jan 22, 2026
2d12b3b
fixed parity change bug for enhanced stereochemistry
cm-beilstein Jan 23, 2026
0784a98
Removed inchi warning about enh stereo and added test for multiple fr…
cm-beilstein Jan 23, 2026
9dacaa2
fixed s-layer duplication and unknown canonical atom mapping
cm-beilstein Jan 26, 2026
7c62770
Fixed enh stereochem, added more unit-tests and modified CMakeLists f…
cm-beilstein Jan 27, 2026
5766fec
Adjusted assert to account for missing enh stereo chem message
cm-beilstein Jan 27, 2026
4ddd959
added fix if no collection available, standard functionality will be …
cm-beilstein Jan 28, 2026
7e2da23
added m-layer change to 0 if no abs center present
cm-beilstein Jan 29, 2026
37ad158
changed m layer based on feedback (no abs)
cm-beilstein Jan 30, 2026
e6fb59c
Bugfix for mol v2 files
cm-beilstein Jan 30, 2026
99628bc
changed InChI-Prefix to InChI=1B (beta)
cm-beilstein Jan 30, 2026
2ca5281
added unit tests and doxygen for functions used in enhanced stereoche…
cm-beilstein Feb 2, 2026
5886446
added unit test fix for log message in MakeINCHIFromMolfileText
cm-beilstein Feb 2, 2026
556adde
bug when switching from debug and release...
cm-beilstein Feb 2, 2026
7d1fde3
Fixed unit test for testing batch test_file_1 (sdf)
cm-beilstein Feb 3, 2026
6f16320
changed directory
cm-beilstein Feb 3, 2026
5cd2aa7
added another unit test for testing enh stereo grps stretching over 2…
cm-beilstein Feb 4, 2026
8b07bff
added atropisomer test for enh stereo
cm-beilstein Feb 5, 2026
04a1c5b
added flags for gcov: needs to be run with cmake -DCOVERAGE=ON -B CMa…
cm-beilstein Feb 5, 2026
cf6d7ce
fixed unit test for atropisomer in enh stereo
cm-beilstein Feb 5, 2026
3fad65a
added 2 unit tests with faulty molblocks
cm-beilstein Feb 6, 2026
b4446a0
added code for handling empty data
cm-beilstein Feb 6, 2026
0ecfdf3
changed comments
cm-beilstein Feb 9, 2026
578ab2d
Merge branch 'dev' into enh_stereo
cm-beilstein Feb 9, 2026
39f053b
Merge branch 'refactor_main' into enh_stereo
cm-beilstein Feb 9, 2026
d2fd2be
clean up unit test code
cm-beilstein Feb 9, 2026
abb99e9
Merge branch 'dev' into enh_stereo
cm-beilstein Feb 12, 2026
114bd64
Merge branch 'dev' into enh_stereo
cm-beilstein Feb 16, 2026
9d4f720
removed sorting of stereo groups by index
cm-beilstein Feb 18, 2026
5e193b4
Release v1.07.5
JanCBrammer Oct 20, 2025
fdb33c4
changed sorting of stereo groups to first canonical atom number in st…
cm-beilstein Feb 18, 2026
8e02c7d
Merge branch 'dev' into enh_stereo
cm-beilstein Feb 19, 2026
5c55589
Added comments and minor clean up
cm-beilstein Feb 19, 2026
801a93f
Merge branch 'dev' into enh_stereo
cm-beilstein Feb 19, 2026
d0e2798
Added unit test for same molecules with different AND group numbering
cm-beilstein Feb 19, 2026
bad9cf6
Fix for Release #68 test run (github action workflow)
cm-beilstein Feb 19, 2026
f63ffb0
Fix for Release [#68](https://github.com/IUPAC-InChI/InChI/issues/68)…
cm-beilstein Feb 19, 2026
faa56a8
Fix for Release [(https://github.com/IUPAC-InChI/InChI/issues/68)] te…
cm-beilstein Feb 19, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 20 additions & 3 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,22 @@ cmake_minimum_required(VERSION 3.21 FATAL_ERROR)

project(InChI C CXX)

option(COVERAGE "Enable coverage reporting" OFF)

if(COVERAGE)
message(STATUS "Building with code coverage enabled")
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
add_compile_options(--coverage -O0 -g)
add_link_options(--coverage)
else()
message(WARNING "Coverage only supported with GCC or Clang")
endif()
endif()

set(CMAKE_C_STANDARD 99)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)

# set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address")
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address")

include(FetchContent)
FetchContent_Declare(
googletest
Expand All @@ -26,3 +35,11 @@ add_subdirectory(INCHI-1-SRC/INCHI_EXE/inchi-1/src)
add_subdirectory(INCHI-1-SRC/INCHI_API/libinchi/src)
add_subdirectory(INCHI-1-TEST/tests/test_unit)

if(COVERAGE)
add_custom_target(coverage
COMMAND ${CMAKE_CTEST_COMMAND} --output-on-failure
COMMAND find . -name '*.gcno' -exec gcov -b -c {} +
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
COMMENT "Running tests and generating .gcov coverage reports"
)
endif()
21 changes: 16 additions & 5 deletions INCHI-1-SRC/INCHI_API/libinchi/src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,18 @@ project(LibInChI_API VERSION 1.7)
add_library(libinchi_compiler_flags INTERFACE)
target_compile_features(libinchi_compiler_flags INTERFACE c_std_11)

set(gcc_like_cxx "$<COMPILE_LANG_AND_ID:C,ARMClang,AppleClang,Clang,GNU,LCC>")
set(msvc_cxx "$<COMPILE_LANG_AND_ID:C,MSVC>")
# set(gcc_like_cxx "$<COMPILE_LANG_AND_ID:C,ARMClang,AppleClang,Clang,GNU,LCC>")
# set(msvc_cxx "$<COMPILE_LANG_AND_ID:C,MSVC>")
target_compile_options(libinchi_compiler_flags INTERFACE
"$<${gcc_like_cxx}:$<BUILD_INTERFACE:-g;-O1;-c;-fno-strict-aliasing;-Wno-all>>"
"$<${msvc_cxx}:$<BUILD_INTERFACE:-W3;-MT;-O2>>"
# "$<$<CONFIG:Release>:<${gcc_like_cxx}:$<BUILD_INTERFACE:-g;-O1;-c;-fno-strict-aliasing;-Wno-all>>"
# "$<$<CONFIG:Release>:<${msvc_cxx}:$<BUILD_INTERFACE:-W3;-MT;-O2>>"
# "$<$<CONFIG:Debug>:<${gcc_like_cxx}:$<BUILD_INTERFACE:-g;-O0;-fsanitize=address;-c;-fno-strict-aliasing;-Wno-all>>"
# "$<$<CONFIG:Debug>:<${msvc_cxx}:$<BUILD_INTERFACE:-W3;-MT;-g;-O0;-fsanitize=address>>"

"$<$<AND:$<CONFIG:Release>,$<COMPILE_LANG_AND_ID:C,ARMClang,AppleClang,Clang,GNU,LCC>>:-g;-O1;-c;-fno-strict-aliasing;-Wno-all>"
"$<$<AND:$<CONFIG:Release>,$<COMPILE_LANG_AND_ID:C,MSVC>>:-W3;-MT;-O2>"
"$<$<AND:$<CONFIG:Debug>,$<COMPILE_LANG_AND_ID:C,ARMClang,AppleClang,Clang,GNU,LCC>>:-g;-O0;-fsanitize=address;-c;-fno-strict-aliasing;-Wno-all>"
"$<$<AND:$<CONFIG:Debug>,$<COMPILE_LANG_AND_ID:C,MSVC>>:-W3;-MT;-g;-O0>"
)

set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/lib/static")
Expand Down Expand Up @@ -165,8 +172,12 @@ string(REGEX REPLACE "/RTC(su|[1su])" "" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAG
set_target_properties(libinchi PROPERTIES PREFIX "")


target_link_options(libinchi PRIVATE
"$<$<AND:$<CONFIG:Debug>,$<COMPILE_LANG_AND_ID:C,ARMClang,AppleClang,Clang,GNU,LCC>>:-fsanitize=address>"
)

if(UNIX AND NOT APPLE)
target_link_options(libinchi PRIVATE "LINKER:--version-script=${P_LIBINCHI_MAP}/libinchi.map,-z,relro")
elseif(WIN32 AND NOT MSVC)
target_link_options(libinchi PRIVATE "LINKER:--version-script=${P_LIBINCHI_MAP}/libinchi.map")
endif()
endif()
2 changes: 1 addition & 1 deletion INCHI-1-SRC/INCHI_BASE/src/ichi_io.c
Original file line number Diff line number Diff line change
Expand Up @@ -1679,7 +1679,7 @@ int inchi_strbuf_addline(INCHI_IOS_STRING* buf,
/****************************************************************************/
/* djb-rwth: placed as a global variable to avoid function buffer issues */
char it_buffer[32767];
int _inchi_trace(char* format, ...)
int _inchi_trace(const char* format, ...)
{
/*
TCHAR buffer[32767];
Expand Down
1 change: 1 addition & 0 deletions INCHI-1-SRC/INCHI_BASE/src/ichidrp.h
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,7 @@ typedef struct tagInputParms {
int bNoWarnings; /* v. 1.06+ suppress warning messages */
int bHideInChI; /* v. 1.06+ Do not print InChI itself */

int bEnhancedStereo;

/* */
INCHI_MODE bTautFlags;
Expand Down
2 changes: 1 addition & 1 deletion INCHI-1-SRC/INCHI_BASE/src/ichimain.h
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ typedef struct tagINCHI_OUT_CTL
int iCurTautMode;

int num_components;
int nNumRemovedProtons;
int nNumRemovedProtons;
int nTag;
int bTag1;
int bTag2;
Expand Down
25 changes: 12 additions & 13 deletions INCHI-1-SRC/INCHI_BASE/src/ichimake.c
Original file line number Diff line number Diff line change
Expand Up @@ -608,22 +608,21 @@ int GetSp3RelRacAbs(const INChI* pINChI, INChI_Stereo* Stereo)
nRet = SP3_REL;
#endif
}
else
if (pINChI->nFlags & INCHI_FLAG_RAC_STEREO)
{
else if (pINChI->nFlags & INCHI_FLAG_RAC_STEREO)
{
#if ( REL_RAC_STEREO_IGN_1_SC == 1 )
if (1 < Stereo->nNumberOfStereoCenters)
{
nRet = SP3_REL;
}
#else
nRet = SP3_RAC;
#endif
}
else
if (1 < Stereo->nNumberOfStereoCenters)
{
nRet = SP3_ABS;
nRet = SP3_REL;
}
#else
nRet = SP3_RAC;
#endif
}
else
{
nRet = SP3_ABS;
}
}
else
#if ( REL_RAC_STEREO_IGN_1_SC == 1 )
Expand Down
14 changes: 14 additions & 0 deletions INCHI-1-SRC/INCHI_BASE/src/ichimake.h
Original file line number Diff line number Diff line change
Expand Up @@ -208,6 +208,20 @@ const char *EquString( int EquVal );
INCHI_IOS_STRING *buf,
int nCtMode,
int *bOverflow );
int MakeEnhStereoString( INChI_Aux *pAux,
INCHI_IOS_STRING *strbuf,
const char* conf_stereo_string,
int **enh_stereo,
int nof_stereo_groups,
int nCtMode,
int *bOverflow );
int MakeSlayerString( ORIG_ATOM_DATA *orig_inp_data,
INCHI_SORT *pINChISort,
INCHI_IOS_STRING *strbuf,
int bOutType,
int num_components,
int nCtMode,
int *bOverflow );
int MakeCRVString( ORIG_INFO *OrigInfo,
int nLenCT,
int bAddDelim,
Expand Down
20 changes: 16 additions & 4 deletions INCHI-1-SRC/INCHI_BASE/src/ichiparm.c
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,8 @@ int set_common_options_by_parg(const char* pArg,
int* pbNPZz,
int* pbNoWarnings,
int* pbMergeHash,
int* pbHideInChI);
int* pbHideInChI,
int* pbEnhancedStereochemistry);


/****************************************************************************
Expand Down Expand Up @@ -165,7 +166,8 @@ int set_common_options_by_parg(const char* pArg,
int* pbNPZz,
int* pbNoWarnings,
int* pbMergeHash,
int* pbHideInChI
int* pbHideInChI,
int* pbEnhancedStereochemistry
)
{
int got = 0;
Expand Down Expand Up @@ -266,6 +268,11 @@ int set_common_options_by_parg(const char* pArg,
(*pbLooseTSACheck) = 1;
got = 1;
}
else if (!inchi_stricmp(pArg, "EnhancedStereochemistry"))
{
*pbEnhancedStereochemistry = 1;
got = 1;
}

#ifndef USE_STDINCHI_API
/* These options DO TURN OFF Std flag */
Expand Down Expand Up @@ -643,6 +650,7 @@ int ReadCommandLineParms(int argc,
int bAcidTautomerism = (DISCONNECT_SALTS == 1) ? (TEST_REMOVE_S_ATOMS == 1 ? 2 : 1) : 0;
int bUnchargedAcidTaut = (CHARGED_SALTS_ONLY == 0);
int bMergeSaltTGroups = (DISCONNECT_SALTS == 1);
int bEnhancedStereochemistry = 0;
#if ( MIN_SB_RING_SIZE > 0 )
int nMinDbRinSize = MIN_SB_RING_SIZE, mdbr = 0;
#endif
Expand Down Expand Up @@ -795,7 +803,8 @@ int ReadCommandLineParms(int argc,
&bLargeMolecules, &bPolymers,
&bFoldPolymerSRU, &bFrameShiftScheme,
&bStereoAtZz, &bNPZz,
&bNoWarnings, &bMergeHash, &bHideInChI);
&bNoWarnings, &bMergeHash, &bHideInChI,
&bEnhancedStereochemistry);
if (got)
{
;
Expand Down Expand Up @@ -1243,7 +1252,8 @@ int ReadCommandLineParms(int argc,
&bLargeMolecules, &bPolymers,
&bFoldPolymerSRU, &bFrameShiftScheme,
&bStereoAtZz, &bNPZz,
&bNoWarnings, &bMergeHash, &bHideInChI);
&bNoWarnings, &bMergeHash, &bHideInChI,
&bEnhancedStereochemistry);

if (got)
{
Expand Down Expand Up @@ -2120,6 +2130,8 @@ int ReadCommandLineParms(int argc,

ip->bINChIOutputOptions2 = bINChIOutputOptions2;

ip->bEnhancedStereo = bEnhancedStereochemistry;

return 0;
}

Expand Down
Loading
Loading