void SortByAttribute(GArgReader& args) { GMatrix* pData = loadData(args.pop_string()); Holder<GMatrix> hData(pData); size_t nAttr = args.pop_uint(); size_t attrCount = pData->relation()->size(); if(nAttr >= attrCount) ThrowError("Index out of range"); // Parse options bool descending = false; while(args.size() > 0) { if(args.if_pop("-descending")) descending = true; else ThrowError("Invalid option: ", args.peek()); } pData->sort(nAttr); if(descending) pData->reverseRows(); pData->print(cout); }