17 #define YUILogComponent "ncurses"
18 #include <yui/YUILog.h>
19 #include <yui/YTableItem.h>
21 #include "NCTableSort.h"
35 std::stable_sort( begin, end,
36 Compare( sortCol(), reverse() ) );
41 NCTableSortDefault::Compare::operator() ( YItem * item1,
44 std::wstring w1 = smartSortKey( item1 );
45 std::wstring w2 = smartSortKey( item2 );
48 long long number1 = toNumber( w1, &ok1 );
49 long long number2 = toNumber( w2, &ok2 );
54 return !_reverse ? number1 < number2 : number1 > number2;
56 else if ( ok1 && !ok2 )
61 else if ( !ok1 && ok2 )
69 int result = std::wcscoll( w1.c_str(), w2.c_str() );
71 return !_reverse ? result < 0 : result > 0;
77 NCTableSortDefault::Compare::toNumber(
const std::wstring & str,
bool * ok )
const
82 return std::stoll( str );
93 NCTableSortDefault::Compare::smartSortKey( YItem * item )
const
100 YTableItem * tableItem =
dynamic_cast<YTableItem *
>( item );
105 YTableCell * tableCell = tableItem->cell( _sortCol );
112 if ( tableCell->hasSortKey() )
113 result =
NCstring( tableCell->sortKey() );
115 result =
NCstring( tableCell->label() );