From ab7e39323276ade40d4af76766c6c14b6b3b48ad Mon Sep 17 00:00:00 2001 From: Gabriel Dos Reis Date: Sat, 18 Jul 2026 15:44:24 -0700 Subject: [PATCH 1/3] Define ArchiveMember structure Implement the Spec specification as detailed in https://github.com/microsoft/ifc-spec/pull/183 --- include/ifc/file.hxx | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/include/ifc/file.hxx b/include/ifc/file.hxx index 4425ebd..fe8d32a 100644 --- a/include/ifc/file.hxx +++ b/include/ifc/file.hxx @@ -205,6 +205,17 @@ namespace ifc { } }; + // -- ToC entry for a member of an archive IFC. + // -- When header.unit.sort() == UnitSort::Archive, header.toc addresses header.partition_count + // -- of these, sorted by canonical name with sort() being tie-breaker. + struct ArchiveMember { + UnitIndex name; // canonical name; with `sort` -- member's identity. + TextOffset path; // path to the member's IFC container when it was embedded. + ByteOffset offset; // location of the member within the archive + EntitySize size; // size of the member in bytes count. + }; + static_assert(sizeof(ArchiveMember) == 16); + // Exception tag used to signal target architecture mismatch. struct IfcArchMismatch { Pathname name; From 7b79bea46c3a58e86a3da98051dc65f44c38136a Mon Sep 17 00:00:00 2001 From: Gabriel Dos Reis Date: Sat, 18 Jul 2026 16:02:22 -0700 Subject: [PATCH 2/3] Update CMakePresets.json Fix VS generator name. --- CMakePresets.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakePresets.json b/CMakePresets.json index e21c079..aa7e001 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -99,7 +99,7 @@ { "name": "ci-win64", "inherits": ["flags-msvc", "ci-std"], - "generator": "Visual Studio 17 2022", + "generator": "Visual Studio 18 2026", "architecture": "x64", "hidden": true }, From 4772f6668f84c61fae4338bee6103b5d7a0efa47 Mon Sep 17 00:00:00 2001 From: Gabriel Dos Reis Date: Mon, 20 Jul 2026 04:29:33 -0700 Subject: [PATCH 3/3] Fix currently supported version --- test/basic.cxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/basic.cxx b/test/basic.cxx index 6058eba..fb484de 100644 --- a/test/basic.cxx +++ b/test/basic.cxx @@ -308,8 +308,8 @@ TEST_CASE("IFC spec - Test header") InputIfc ifc; Reader reader = create_ifc_reader(IFC_FILE, &buf, &ifc); - // The currently documented version of the IFC that the MSVC compiler will emit is 0.43. - constexpr auto expected_version = FormatVersion{ Version{ 0 }, Version{ 43 } }; + // The currently documented version of the IFC that the MSVC compiler will emit is 0.44. + constexpr auto expected_version = FormatVersion{ Version{ 0 }, Version{ 44 } }; CHECK_MESSAGE(reader.ifc.header()->version == expected_version, "minor/major"); CHECK_MESSAGE(reader.ifc.header()->abi == Abi{}, "abi - not currently set in MSVC"); // arch - since we compile this file in multiple modes, let's just ensure that 'arch' matches one of the known types.