- there are exceptions (NoAdaptor etc) which are not in the spec, which is not allowed. (what is the application supposed to do?) - exception types should be subclasses of saga;:exception, not enums in a saga;:exception, otherwise one would alway need to catch all exceptions, and the following would not work (at least not straight forward). If there is a good reason for the current scheme, which deviates from the spec, it must be well motivated. try { f.copy (src, tgt); } catch ( const saga::exception::AlreadyExists & e ) { // we don't mind that error. Let all other exceptions fall // through... cout << "exists!\n"; } Currently, the code would be: try { f.copy (src, tgt); } catch ( const saga::exception & e ) { if ( exception.get_error () == saga::AlreadyExists ) { // we don't mind that error. cout << "exists!\n"; } else { // all other exceptions need to be forwarded! throw (e); } } - URL has a couple of additional methods. Again, these need to go away, or need to be put into a different namespace (i.e. in a different class outside the saga:: namespace), or need to be very well motivated (i.e. why are they not in the spec, but in the lang bindings). - saga::url::translate should take a string, and return a URL! - I don't understand why some operators are members or URL, and some are free functions/operators... *scratch* I assume there is a good reason ;) - why does the buffer c'tor not use the default deleter (just as set_data)? - many calls return a void_t, but should be void. Not sure if that has any implications... - job should not have an constructor ------------------------------------------------------------------- - I realizides that we have namespaces for the functional packages, but not for the others: saga::task::task saga::task::container etc. should we? - should we have saga::url make a deep copy on assign? -