Skip to content

Commit 2eded42

Browse files
committed
Build on top of Roger's changes
1 parent c5938a9 commit 2eded42

File tree

6 files changed

+44
-46
lines changed

6 files changed

+44
-46
lines changed

dynadjust/dynadjust/dnaadjust/dnaadjust_printer.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -743,13 +743,26 @@ void DynAdjustPrinter::PrintMeasurementsToStation() {
743743
// Print measurement to station summary, sort stations as required
744744
switch (adjust_.projectSettings_.o._sort_msr_to_stn)
745745
{
746+
case name_stn_sort_ui:
747+
{
748+
CompareStnNameOrder<station_t, UINT32> stnnameCompareFunc(&adjust_.bstBinaryRecords_);
749+
std::sort(vStationList.begin(), vStationList.end(), stnnameCompareFunc);
750+
}
751+
break;
746752
case meas_stn_sort_ui:
747753
{
748754
CompareMeasCount<CAStationList, UINT32> msrcountCompareFunc(&adjust_.vAssocStnList_);
749755
std::sort(vStationList.begin(), vStationList.end(), msrcountCompareFunc);
750756
}
751757
break;
758+
case saem_stn_sort_ui:
759+
{
760+
CompareMeasCountDesc<CAStationList, UINT32> msrcountCompareFunc(&adjust_.vAssocStnList_);
761+
std::sort(vStationList.begin(), vStationList.end(), msrcountCompareFunc);
762+
}
763+
break;
752764
case orig_stn_sort_ui:
765+
default:
753766
{
754767
CompareStnFileOrder<station_t, UINT32> stnorderCompareFunc(&adjust_.bstBinaryRecords_);
755768
std::sort(vStationList.begin(), vStationList.end(), stnorderCompareFunc);

dynadjust/dynadjust/dnaadjustwrapper/dnaadjustwrapper.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -874,10 +874,10 @@ int main(int argc, char* argv[])
874874
"Output summary of measurements connected to each station.")
875875
(OUTPUT_MSR_TO_STN_SORTBY, boost::program_options::value<UINT16>(&p.o._sort_msr_to_stn),
876876
std::string("Sort order for measurement to stations summary.\n " +
877-
StringFromT(alpha_stn_sort_ui) + ": Alphanumeric station name order (default)\n " +
877+
StringFromT(orig_stn_sort_ui) + ": Original station order (default)\n " +
878+
StringFromT(name_stn_sort_ui) + ": Alphanumeric station name order\n " +
878879
StringFromT(meas_stn_sort_ui) + ": Measurement count (increasing)\n " +
879-
StringFromT(orig_stn_sort_ui) + ": Original station order\n " +
880-
StringFromT(meas_dec_stn_sort_ui) + ": Measurement count (decreasing)").c_str())
880+
StringFromT(saem_stn_sort_ui) + ": Measurement count (decreasing)").c_str())
881881
(OUTPUT_ADJ_STN_ITER,
882882
"Output adjusted station coordinates on each iteration.")
883883
(OUTPUT_ADJ_STAT_ITER,

dynadjust/dynadjust/dnaimport/dnainterop.cpp

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4925,27 +4925,26 @@ void dna_import::PrintMeasurementsToStations(std::string& m2s_file, MsrTally* pa
49254925
// Print measurement to station summary, sort stations as required
49264926
switch (projectSettings_.o._sort_msr_to_stn)
49274927
{
4928+
case name_stn_sort_ui:
4929+
{
4930+
CompareStnNameOrder<station_t, UINT32> stnnameCompareFunc(&bstBinaryRecords);
4931+
std::sort(vStationList.begin(), vStationList.end(), stnnameCompareFunc);
4932+
break;
4933+
}
49284934
case meas_stn_sort_ui:
4929-
{ // sort summary according to measurement to station count (ascending)
4930-
// Note: this is the default sort order
4935+
{
49314936
CompareMeasCount2<ASLPtr, UINT32> msrcountCompareFunc(vAssocStnList);
49324937
std::sort(vStationList.begin(), vStationList.end(), msrcountCompareFunc);
49334938
break;
49344939
}
4935-
case saem_stn_sort_ui: {
4936-
// sort summary according to measurement to station count (descending)
4937-
CompareMeasCount2Desc<ASLPtr, UINT32> msrcountCompareFunc(vAssocStnList);
4938-
std::sort(vStationList.begin(), vStationList.end(), msrcountCompareFunc);
4939-
break;
4940-
}
4941-
case name_stn_sort_ui:
4940+
case saem_stn_sort_ui:
49424941
{
4943-
// sort summary according to station name
4944-
CompareStnNameOrder<station_t, UINT32> stnnameCompareFunc(&bstBinaryRecords);
4945-
std::sort(vStationList.begin(), vStationList.end(), stnnameCompareFunc);
4942+
CompareMeasCount2Desc<ASLPtr, UINT32> msrcountCompareFunc(vAssocStnList);
4943+
std::sort(vStationList.begin(), vStationList.end(), msrcountCompareFunc);
49464944
break;
49474945
}
49484946
case orig_stn_sort_ui:
4947+
default:
49494948
{
49504949
CompareStnFileOrder<station_t, UINT32> stnorderCompareFunc(&bstBinaryRecords);
49514950
std::sort(vStationList.begin(), vStationList.end(), stnorderCompareFunc);

dynadjust/dynadjust/dnaimportwrapper/dnaimportwrapper.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1354,11 +1354,11 @@ int main(int argc, char* argv[]) {
13541354

13551355
output_options.add_options()(OUTPUT_MSR_TO_STN, "Output summary of measurements connected to each station.")(
13561356
OUTPUT_MSR_TO_STN_SORTBY, boost::program_options::value<UINT16>(&p.o._sort_msr_to_stn),
1357-
std::string("Sort order for measurement to stations summary.\n " +
1358-
StringFromT(orig_stn_sort_ui) + ": Original station order (default)\n " +
1359-
StringFromT(name_stn_sort_ui) + ": Station name\n " +
1360-
StringFromT(meas_stn_sort_ui) + ": Measurement count (ascending)\n " +
1361-
StringFromT(saem_stn_sort_ui) + ": Measurement count (descending)")
1357+
std::string("Sort order for measurement to stations summary.\n " + StringFromT(orig_stn_sort_ui) +
1358+
": Original station order (default)\n " + StringFromT(name_stn_sort_ui) +
1359+
": Alphanumeric station name order\n " + StringFromT(meas_stn_sort_ui) +
1360+
": Measurement count (increasing)\n " + StringFromT(saem_stn_sort_ui) +
1361+
": Measurement count (decreasing)")
13621362
.c_str());
13631363

13641364
export_options.add_options()(EXPORT_XML_FILES,

dynadjust/include/functions/dnatemplatefuncs.hpp

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -514,7 +514,7 @@ class CompareMeasCount2Desc {
514514

515515
bool operator()(const U& lhs, const U& rhs) {
516516
if (_a->at(lhs).get()->GetAssocMsrCount() == _a->at(rhs).get()->GetAssocMsrCount())
517-
return _a->at(lhs).get()->GetAMLStnIndex() > _a->at(rhs).get()->GetAMLStnIndex();
517+
return _a->at(lhs).get()->GetAMLStnIndex() < _a->at(rhs).get()->GetAMLStnIndex();
518518
return _a->at(lhs).get()->GetAssocMsrCount() > _a->at(rhs).get()->GetAssocMsrCount();
519519
}
520520

@@ -639,20 +639,6 @@ class CompareStnFileOrder
639639
std::vector<S>* _s;
640640
};
641641

642-
// S = station_t, U = UINT32
643-
template<typename S, typename U>
644-
class CompareStnNameOrder
645-
{
646-
public:
647-
CompareStnNameOrder(std::vector<S>* s) : _s(s) {}
648-
bool operator()(const U& lhs, const U& rhs) {
649-
return std::string(_s->at(lhs).stationName) < std::string(_s->at(rhs).stationName);
650-
}
651-
private:
652-
std::vector<S>* _s;
653-
};
654-
655-
656642

657643
// S = station_t, U = UINT32
658644
template <typename S, typename U>

tests/test_msr_to_stn_sort.cpp

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,10 @@ TEST_CASE("MSR_TO_STN_SORT_UI enum values match issue #305 specification", "[m2s
3434
// 1 = measurement count (increasing)
3535
// 2 = original station order
3636
// 3 = measurement count (decreasing)
37-
REQUIRE(alpha_stn_sort_ui == 0);
38-
REQUIRE(meas_stn_sort_ui == 1);
39-
REQUIRE(orig_stn_sort_ui == 2);
40-
REQUIRE(meas_dec_stn_sort_ui == 3);
37+
REQUIRE(orig_stn_sort_ui == 0);
38+
REQUIRE(name_stn_sort_ui == 1);
39+
REQUIRE(meas_stn_sort_ui == 2);
40+
REQUIRE(saem_stn_sort_ui == 3);
4141
}
4242

4343
TEST_CASE("CompareStnNameOrder sorts stations alphabetically", "[m2s][sort][alpha]") {
@@ -142,11 +142,11 @@ TEST_CASE("Decreasing measurement count is reverse of increasing", "[m2s][sort][
142142
REQUIRE(increasing[i] == decreasing[increasing.size() - 1 - i]);
143143
}
144144

145-
TEST_CASE("Default sort (alpha_stn_sort_ui=0) is the default value", "[m2s][default]") {
146-
// alpha_stn_sort_ui == 0 means it is the default when _sort_msr_to_stn is
147-
// initialised to 0 (the zero-initialised value)
145+
TEST_CASE("Default sort (orig_stn_sort_ui=0) is the default value", "[m2s][default]") {
146+
// orig_stn_sort_ui == 0 means it is the default when _sort_msr_to_stn is
147+
// zero-initialised, preserving backwards compatibility
148148
UINT16 default_sort = 0;
149-
REQUIRE(default_sort == alpha_stn_sort_ui);
149+
REQUIRE(default_sort == orig_stn_sort_ui);
150150
}
151151

152152
TEST_CASE("CompareStnNameOrder handles duplicate station names", "[m2s][sort][duplicates]") {
@@ -212,10 +212,10 @@ TEST_CASE("Switch statement covers all enum values", "[m2s][enum][coverage]") {
212212
for (int i = 0; i <= 3; ++i) {
213213
bool handled = false;
214214
switch (i) {
215-
case alpha_stn_sort_ui: handled = true; break;
215+
case orig_stn_sort_ui: handled = true; break;
216+
case name_stn_sort_ui: handled = true; break;
216217
case meas_stn_sort_ui: handled = true; break;
217-
case orig_stn_sort_ui: handled = true; break;
218-
case meas_dec_stn_sort_ui: handled = true; break;
218+
case saem_stn_sort_ui: handled = true; break;
219219
}
220220
REQUIRE(handled);
221221
}

0 commit comments

Comments
 (0)