-// Callback function for getting files from the database
-int populate_set( void *files_v, int, char **vals, char ** ) {
- file_set *files = reinterpret_cast<file_set*>( files_v );
- files->insert( new FileData( vals[0][0],
- vals[1],
- vals[2],
- vals[3],
- atoi( vals[4] ),
- atoi( vals[5] ),
- vals[6]) );
- return 0;
+template<class SET>
+void partition_sets( const SET ¤t, const SET &old,
+ SET &added, SET &common, SET &deleted ) {
+ FileDataNameCmp cmp;
+
+ set_difference( current.begin(), current.end(),
+ old.begin(), old.end(),
+ inserter( added, added.begin() ),
+ cmp );
+
+ set_difference( old.begin(), old.end(),
+ current.begin(), current.end(),
+ inserter( deleted, deleted.begin() ),
+ cmp );
+
+ set_union( current.begin(), current.end(),
+ old.begin(), old.end(),
+ inserter( common, common.begin() ),
+ cmp );