@@ -17,10 +17,10 @@ executed by an agent and includes specific tasks, files to modify, and tests to
1717| Step | Description | Status | Commit |
1818| ------| -------------| --------| --------|
1919| 1.1 | Add ` is_edge_list_descriptor_v ` trait | ✅ Complete | 4997cb3 |
20- | 1.2 | Add ` _has_edge_info_member ` concept to ` source_id ` CPO | ✅ Complete | |
20+ | 1.2 | Add ` _has_edge_data_member ` concept to ` source_id ` CPO | ✅ Complete | |
2121| 1.3 | Add ` _is_tuple_like_edge ` concept to ` source_id ` CPO | ✅ Complete | |
22- | 1.3a | Add ` _has_edge_info_member ` and ` _is_tuple_like_edge ` to ` target_id ` CPO | ✅ Complete | |
23- | 1.3b | Add ` _has_edge_info_member ` and ` _is_tuple_like_edge ` to ` edge_value ` CPO | ✅ Complete | |
22+ | 1.3a | Add ` _has_edge_data_member ` and ` _is_tuple_like_edge ` to ` target_id ` CPO | ✅ Complete | |
23+ | 1.3b | Add ` _has_edge_data_member ` and ` _is_tuple_like_edge ` to ` edge_value ` CPO | ✅ Complete | |
2424| 1.4 | Extend ` source_id ` CPO with tiers 5-7 | ✅ Complete | |
2525| 1.5 | Create tests for ` source_id ` CPO extensions | ✅ Complete | |
2626| 2.1 | Extend ` target_id ` CPO with tiers 5-7 | ✅ Complete | |
@@ -93,24 +93,24 @@ inline constexpr bool is_edge_list_descriptor_v = is_edge_list_descriptor<T>::va
9393
9494---
9595
96- ### Step 1.2: Add `_has_edge_info_member ` Concept
96+ ### Step 1.2: Add `_has_edge_data_member ` Concept
9797
98- **Goal**: Add concept to detect edge_info -style data member access (Tier 6).
98+ **Goal**: Add concept to detect edge_data -style data member access (Tier 6).
9999
100100**Files to modify**:
101101- `include/graph/adj_list/detail/graph_cpo.hpp`
102102
103103**Tasks**:
1041041. Locate `namespace _source_id` in `graph_cpo.hpp`
1051052. Add include for `edge_list_traits.hpp` at top of file
106- 3. Add `_has_edge_info_member ` concept after existing concepts
106+ 3. Add `_has_edge_data_member ` concept after existing concepts
107107
108108**Code to add** (inside `namespace _source_id`):
109109```cpp
110- // Tier 6: Check for edge_info -style direct data member access
110+ // Tier 6: Check for edge_data -style direct data member access
111111// Must NOT be a descriptor type (to avoid ambiguity with method calls)
112112template<typename UV>
113- concept _has_edge_info_member =
113+ concept _has_edge_data_member =
114114 !is_edge_descriptor_v<std::remove_cvref_t<UV>> &&
115115 !edge_list::is_edge_list_descriptor_v<std::remove_cvref_t<UV>> &&
116116 requires(const UV& uv) {
@@ -123,7 +123,7 @@ concept _has_edge_info_member =
123123
124124** Tests** : Created in Step 1.5
125125
126- ** Commit message** : ` Add _has_edge_info_member concept to source_id CPO `
126+ ** Commit message** : ` Add _has_edge_data_member concept to source_id CPO `
127127
128128---
129129
@@ -136,17 +136,17 @@ concept _has_edge_info_member =
136136
137137** Tasks** :
1381381 . Locate ` namespace _source_id ` in ` graph_cpo.hpp `
139- 2 . Add ` _is_tuple_like_edge ` concept after ` _has_edge_info_member `
139+ 2 . Add ` _is_tuple_like_edge ` concept after ` _has_edge_data_member `
140140
141141** Code to add** (inside ` namespace _source_id ` ):
142142``` cpp
143143// Tier 7: Check for tuple-like edge (pair, tuple)
144- // Must NOT be any descriptor type or have edge_info members
144+ // Must NOT be any descriptor type or have edge_data members
145145template <typename UV>
146146concept _is_tuple_like_edge =
147147 !is_edge_descriptor_v<std::remove_cvref_t <UV>> &&
148148 !edge_list::is_edge_list_descriptor_v<std::remove_cvref_t <UV>> &&
149- !_has_edge_info_member <UV> &&
149+ !_has_edge_data_member <UV> &&
150150 requires {
151151 std::tuple_size<std::remove_cvref_t<UV>>::value;
152152 } &&
@@ -171,7 +171,7 @@ concept _is_tuple_like_edge =
171171
172172**Tasks**:
1731731. Locate `namespace _target_id` in `graph_cpo.hpp`
174- 2. Add `_has_edge_info_member ` concept (checks `uv.target_id` data member)
174+ 2. Add `_has_edge_data_member ` concept (checks `uv.target_id` data member)
1751753. Add `_is_tuple_like_edge` concept (same as source_id)
176176
177177**Status**: ✅ Complete (implemented alongside source_id concepts)
@@ -187,12 +187,12 @@ concept _is_tuple_like_edge =
187187
188188**Tasks**:
1891891. Locate `namespace _edge_value` in `graph_cpo.hpp`
190- 2. Add `_has_edge_info_member ` concept (checks `uv.value` data member)
190+ 2. Add `_has_edge_data_member ` concept (checks `uv.value` data member)
1911913. Add `_is_tuple_like_edge` concept (checks for `std::get<2>` since edge value is third element)
192192
193193**Status**: ✅ Complete (implemented alongside source_id concepts)
194194
195- **Commit message** (for 1.2, 1.3, 1.3a, 1.3b combined): `Add edge_info and tuple-like concepts to all three CPOs`
195+ **Commit message** (for 1.2, 1.3, 1.3a, 1.3b combined): `Add edge_data and tuple-like concepts to all three CPOs`
196196
197197---
198198
@@ -205,7 +205,7 @@ concept _is_tuple_like_edge =
205205
206206**Tasks**:
2072071. Rename `_descriptor` to `_adj_list_descriptor` in `_St` enum
208- 2. Add new enum values: `_edge_list_descriptor`, `_edge_info_member `, `_tuple_like`
208+ 2. Add new enum values: `_edge_list_descriptor`, `_edge_data_member `, `_tuple_like`
2092093. Update `_Choose()` function to check new tiers in order
2102104. Update `_fn::operator()` to handle new strategies
2112115. Ensure noexcept propagation for new tiers
@@ -219,7 +219,7 @@ enum class _St {
219219 _adl,
220220 _adj_list_descriptor, // RENAMED from _descriptor
221221 _edge_list_descriptor, // NEW
222- _edge_info_member , // NEW
222+ _edge_data_member , // NEW
223223 _tuple_like // NEW
224224};
225225```
@@ -229,8 +229,8 @@ enum class _St {
229229} else if constexpr (_has_edge_list_descriptor<UV>) {
230230 return {_St::_edge_list_descriptor,
231231 noexcept (std::declval<const UV&>().source_id())};
232- } else if constexpr (_has_edge_info_member <UV>) {
233- return {_St::_edge_info_member ,
232+ } else if constexpr (_has_edge_data_member <UV>) {
233+ return {_St::_edge_data_member ,
234234 noexcept (std::declval<const UV&>().source_id)};
235235} else if constexpr (_is_tuple_like_edge<UV>) {
236236 return {_St::_tuple_like,
@@ -241,7 +241,7 @@ enum class _St {
241241```cpp
242242} else if constexpr (_Choice<_G, _UV>._Strategy == _St::_edge_list_descriptor) {
243243 return uv.source_id();
244- } else if constexpr (_Choice<_G, _UV>._Strategy == _St::_edge_info_member ) {
244+ } else if constexpr (_Choice<_G, _UV>._Strategy == _St::_edge_data_member ) {
245245 return uv.source_id;
246246} else if constexpr (_Choice<_G, _UV>._Strategy == _St::_tuple_like) {
247247 return std::get<0>(uv);
@@ -269,9 +269,9 @@ enum class _St {
269269
270270** Test cases to implement** :
271271``` cpp
272- // Test Tier 6: edge_info data member
273- TEST_CASE ("source_id with edge_info ", "[ cpo] [ source_id ] ") {
274- using EI = graph::edge_info <int, true, void, void>;
272+ // Test Tier 6: edge_data data member
273+ TEST_CASE ("source_id with edge_data ", "[ cpo] [ source_id ] ") {
274+ using EI = graph::edge_data <int, true, void, void>;
275275 EI ei{1, 2};
276276 std::vector<EI > el{ei};
277277
@@ -340,7 +340,7 @@ add_test(NAME test_edge_list_cpo COMMAND test_edge_list_cpo)
3403404 . Update ` _Choose() ` and ` operator() ` functions
341341
342342** Key differences from ` source_id ` ** :
343- - ` _has_edge_info_member ` checks ` uv.target_id ` instead of ` uv.source_id `
343+ - ` _has_edge_data_member ` checks ` uv.target_id ` instead of ` uv.source_id `
344344- Tuple tier uses ` std::get<1>(uv) ` instead of ` std::get<0>(uv) `
345345
346346** Commit message** : ` Extend target_id CPO with tiers 5-7 for edge_list support `
@@ -378,7 +378,7 @@ add_test(NAME test_edge_list_cpo COMMAND test_edge_list_cpo)
3783784 . Update ` _Choose() ` and ` operator() ` functions
379379
380380** Key differences** :
381- - ` _has_edge_info_member ` checks ` uv.value ` instead of ` uv.source_id `
381+ - ` _has_edge_data_member ` checks ` uv.value ` instead of ` uv.source_id `
382382- Tuple tier uses ` std::get<2>(uv) ` for the edge value
383383- Not all edge types have values (pair<T,T> does not)
384384
@@ -388,15 +388,15 @@ add_test(NAME test_edge_list_cpo COMMAND test_edge_list_cpo)
388388
389389### Step 3.2: Create Tests for ` edge_value ` CPO Extensions
390390
391- ** Goal** : Test edge_value with edge_info and tuple types.
391+ ** Goal** : Test edge_value with edge_data and tuple types.
392392
393393** Files to modify** :
394394- ` tests/edge_list/test_edge_list_cpo.cpp `
395395
396396** Tasks** :
397- 1 . Add test cases for ` edge_value ` with ` edge_info <VId,true,void,EV>`
397+ 1 . Add test cases for ` edge_value ` with ` edge_data <VId,true,void,EV>`
3983982 . Add test cases for ` edge_value ` with ` tuple<T,T,EV> `
399- 3 . Verify types without values (pair, edge_info without EV) don't satisfy edge_value
399+ 3 . Verify types without values (pair, edge_data without EV) don't satisfy edge_value
400400
401401** Commit message** : ` Add tests for edge_value CPO tiers 5-7 `
402402
@@ -651,7 +651,7 @@ concept basic_sourced_edgelist =
651651
652652**Status**: ✅ COMPLETE (2026-01-31) - Tests already created in Step 5.1
653653- test_edge_list_concepts.cpp covers all required test cases
654- - Includes concept satisfaction tests for pairs, tuples, edge_info , edge_descriptor
654+ - Includes concept satisfaction tests for pairs, tuples, edge_data , edge_descriptor
655655- Tests with string vertex IDs to verify non-integral support
656656- Type alias validation tests
657657- Runtime behavior tests with CPOs
@@ -669,7 +669,7 @@ concept basic_sourced_edgelist =
669669- `tests/edge_list/test_edge_list_concepts.cpp` (NEW)
670670
671671**Tasks**:
672- 1. Test concept satisfaction with pair, tuple, edge_info
672+ 1. Test concept satisfaction with pair, tuple, edge_data
6736732. Test concept satisfaction with edge_list::edge_descriptor
6746743. Verify adjacency_list does NOT satisfy basic_sourced_edgelist
675675
@@ -680,7 +680,7 @@ TEST_CASE("basic_sourced_edgelist concept", "[edge_list][concepts]") {
680680
681681 static_assert(basic_sourced_edgelist<std::vector<std::pair<int,int>>>);
682682 static_assert(basic_sourced_edgelist<std::vector<std::tuple<int,int,double>>>);
683- static_assert(basic_sourced_edgelist<std::vector<graph::edge_info <int,true,void,void>>>);
683+ static_assert(basic_sourced_edgelist<std::vector<graph::edge_data <int,true,void,void>>>);
684684 static_assert(basic_sourced_edgelist<std::vector<edge_descriptor<int,void>>>);
685685
686686 // Should NOT satisfy (nested range = adjacency list pattern)
@@ -751,8 +751,8 @@ TEST_CASE("Algorithm works with different edge sources", "[integration]") {
751751 std::vector< std::pair<int,int > > pairs{{1,2}, {3,3}, {4,4}};
752752 REQUIRE(count_self_loops(pairs) == 2);
753753
754- // With edge_info
755- using EI = graph::edge_info <int, true, void, void>;
754+ // With edge_data
755+ using EI = graph::edge_data <int, true, void, void>;
756756 std::vector<EI > infos{{1,2}, {5,5}};
757757 REQUIRE(count_self_loops(infos) == 1);
758758
@@ -768,7 +768,7 @@ TEST_CASE("Algorithm works with different edge sources", "[integration]") {
768768**Status**: ✅ COMPLETE (2026-01-31)
769769- Created test_edge_list_integration.cpp with 16 comprehensive test cases
770770- Implemented generic algorithms (count_self_loops, sum_edge_values) that work with ANY edge type
771- - Verified all edge types work: pairs, tuples, edge_info , edge_list::edge_descriptor
771+ - Verified all edge types work: pairs, tuples, edge_data , edge_list::edge_descriptor
772772- Tested string vertex IDs (non-integral types)
773773- Verified multiple edge types can coexist in same compilation unit
774774- All 32 assertions passing
0 commit comments