// Filter
typedef clitk::RelativePositionAnalyzerGenericFilter<args_info_clitkRelativePositionAnalyzer> FilterType;
FilterType::Pointer filter = FilterType::New();
-
+
+ // Set filename from the AFDB if needed
+#define SetOptionFromAFDBMacro(ARGS, OPTIONNAME, OPTION) \
+ if (ARGS.OPTIONNAME##_given) { \
+ if (ARGS.OPTION##_given) { \
+ std::cerr << "Warning --"#OPTION" is ignored" << std::endl; \
+ } \
+ std::string f = afdb->GetTagValue(ARGS.OPTIONNAME##_arg); \
+ f = std::string(args_info.afdb_path_arg)+"/"+f; \
+ filter->AddInputFilename(f); \
+ } \
+ else if (!ARGS.OPTION##_given) { \
+ std::cerr << "Error on the command line please provide --"#OPTION" or --"#OPTIONNAME"." << std::endl; \
+ return EXIT_FAILURE; \
+ }
+
+ // Set options
filter->SetArgsInfo(args_info);
+ NewAFDB(afdb, args_info.afdb_arg);
+ // The order is important. If --supportName and --support are
+ // given, the first is set before, so the second ignored
+ SetOptionFromAFDBMacro(args_info, supportName, support);
+ SetOptionFromAFDBMacro(args_info, objectName, object);
+ SetOptionFromAFDBMacro(args_info, targetName, target);
+
+ // Go !
try {
filter->Update();
} catch(std::runtime_error e) {