]> Creatis software - clitk.git/blobdiff - utilities/gengetopt/skels/generic_option.cc
Sync gengetopt cmake files with rtk
[clitk.git] / utilities / gengetopt / skels / generic_option.cc
diff --git a/utilities/gengetopt/skels/generic_option.cc b/utilities/gengetopt/skels/generic_option.cc
new file mode 100644 (file)
index 0000000..36166f7
--- /dev/null
@@ -0,0 +1,268 @@
+/*
+ * File automatically generated by
+ * gengen 1.2 by Lorenzo Bettini 
+ * http://www.gnu.org/software/gengen
+ */
+
+#include "generic_option.h"
+
+void
+generic_option_gen_class::generate_generic_option(ostream &stream, unsigned int indent)
+{
+  string indent_str (indent, ' ');
+  indent = 0;
+
+  if (has_short_option)
+    {
+      stream << "case '";
+      generate_string (short_option, stream, indent + indent_str.length ());
+      stream << "':    /* ";
+      generate_string (option_comment, stream, indent + indent_str.length ());
+      stream << ".  */";
+      stream << "\n";
+      stream << indent_str;
+      if (( short_option == "?" ))
+        {
+          stream << "\n";
+          stream << indent_str;
+          stream << "  if (optopt) /* '?' represents an unrecognized option */";
+          stream << "\n";
+          stream << indent_str;
+          stream << "    goto failure;";
+          stream << "\n";
+          stream << indent_str;
+        }
+    }
+  else
+    {
+      stream << "/* ";
+      generate_string (option_comment, stream, indent + indent_str.length ());
+      stream << ".  */";
+      stream << "\n";
+      stream << indent_str;
+      generate_string (gen_else, stream, indent + indent_str.length ());
+      stream << "if (strcmp (long_options[option_index].name, \"";
+      generate_string (long_option, stream, indent + indent_str.length ());
+      stream << "\") == 0)";
+      stream << "\n";
+      stream << indent_str;
+      stream << "{";
+      stream << "\n";
+      stream << indent_str;
+    }
+  if (option_has_mode)
+    {
+      stream << "  args_info->";
+      generate_string (group_var_name, stream, indent + indent_str.length ());
+      stream << "_mode_counter += 1;";
+      stream << "\n";
+      stream << indent_str;
+    }
+  stream << "\n";
+  stream << indent_str;
+  if (multiple)
+    {
+      if (option_has_type)
+        {
+          stream << "  if (update_multiple_arg_temp(&";
+          generate_string (structure, stream, indent + indent_str.length ());
+          stream << ", ";
+          stream << "\n";
+          stream << indent_str;
+          stream << "      &(local_args_info.";
+          generate_string (option_var_name, stream, indent + indent_str.length ());
+          stream << "_given), optarg, ";
+          generate_string (possible_values, stream, indent + indent_str.length ());
+          stream << ", ";
+          generate_string (default_value, stream, indent + indent_str.length ());
+          stream << ", ";
+          generate_string (arg_type, stream, indent + indent_str.length ());
+          stream << ",";
+          stream << "\n";
+          stream << indent_str;
+          stream << "      \"";
+          generate_string (long_option, stream, indent + indent_str.length ());
+          stream << "\", '";
+          generate_string (short_option, stream, indent + indent_str.length ());
+          stream << "',";
+          stream << "\n";
+          stream << indent_str;
+          stream << "      additional_error))";
+          stream << "\n";
+          stream << indent_str;
+          stream << "    goto failure;";
+          stream << "\n";
+          stream << indent_str;
+        }
+      else
+        {
+          stream << "  local_args_info.";
+          generate_string (option_var_name, stream, indent + indent_str.length ());
+          stream << "_given++;";
+          stream << "\n";
+          stream << indent_str;
+        }
+      if (option_has_group)
+        {
+          stream << "  if (!args_info->";
+          generate_string (option_var_name, stream, indent + indent_str.length ());
+          stream << "_group)";
+          stream << "\n";
+          stream << indent_str;
+          stream << "    {";
+          stream << "\n";
+          stream << indent_str;
+          stream << "      args_info->";
+          generate_string (option_var_name, stream, indent + indent_str.length ());
+          stream << "_group = 1;";
+          stream << "\n";
+          stream << indent_str;
+          stream << "      args_info->";
+          generate_string (group_var_name, stream, indent + indent_str.length ());
+          stream << "_group_counter += 1;";
+          stream << "\n";
+          stream << indent_str;
+          stream << "    }";
+          stream << "\n";
+          stream << indent_str;
+        }
+    }
+  else
+    {
+      if (option_has_group)
+        {
+          stream << "  if (args_info->";
+          generate_string (group_var_name, stream, indent + indent_str.length ());
+          stream << "_group_counter && override)";
+          stream << "\n";
+          stream << indent_str;
+          stream << "    reset_group_";
+          generate_string (group_var_name, stream, indent + indent_str.length ());
+          stream << " (args_info);";
+          stream << "\n";
+          stream << indent_str;
+          stream << "  args_info->";
+          generate_string (group_var_name, stream, indent + indent_str.length ());
+          stream << "_group_counter += 1;";
+          stream << "\n";
+          stream << indent_str;
+        }
+      stream << "\n";
+      stream << indent_str;
+      if (( arg_type == "ARG_FLAG" ))
+        {
+          stream << "  if (update_arg((void *)&(args_info->";
+          generate_string (option_var_name, stream, indent + indent_str.length ());
+          stream << "_flag), 0, &(args_info->";
+          generate_string (option_var_name, stream, indent + indent_str.length ());
+          stream << "_given),";
+          stream << "\n";
+          stream << indent_str;
+          stream << "      &(local_args_info.";
+          generate_string (option_var_name, stream, indent + indent_str.length ());
+          stream << "_given), optarg, 0, 0, ";
+          generate_string (arg_type, stream, indent + indent_str.length ());
+          stream << ",";
+          stream << "\n";
+          stream << indent_str;
+          stream << "      check_ambiguity, override, 1, 0, \"";
+          generate_string (long_option, stream, indent + indent_str.length ());
+          stream << "\", '";
+          generate_string (short_option, stream, indent + indent_str.length ());
+          stream << "',";
+          stream << "\n";
+          stream << indent_str;
+          stream << "      additional_error))";
+          stream << "\n";
+          stream << indent_str;
+          stream << "    goto failure;";
+          stream << "\n";
+          stream << indent_str;
+        }
+      else
+        {
+          stream << "  if (update_arg(";
+          if (( arg_type == "ARG_NO" ))
+            {
+              stream << " 0 ";
+            }
+          else
+            {
+              stream << " (void *)&(args_info->";
+              generate_string (option_var_name, stream, indent + indent_str.length ());
+              stream << "_arg)";
+            }
+          stream << ", ";
+          stream << "\n";
+          stream << indent_str;
+          indent = 6;
+          stream << "      ";
+          if (( arg_type == "ARG_NO" ))
+            {
+              stream << " 0 ";
+            }
+          else
+            {
+              stream << " &(args_info->";
+              generate_string (option_var_name, stream, indent + indent_str.length ());
+              stream << "_orig)";
+            }
+          stream << ", &(args_info->";
+          generate_string (option_var_name, stream, indent + indent_str.length ());
+          stream << "_given),";
+          indent = 0;
+          stream << "\n";
+          stream << indent_str;
+          stream << "      &(local_args_info.";
+          generate_string (option_var_name, stream, indent + indent_str.length ());
+          stream << "_given), optarg, ";
+          generate_string (possible_values, stream, indent + indent_str.length ());
+          stream << ", ";
+          generate_string (default_value, stream, indent + indent_str.length ());
+          stream << ", ";
+          generate_string (arg_type, stream, indent + indent_str.length ());
+          stream << ",";
+          stream << "\n";
+          stream << indent_str;
+          stream << "      check_ambiguity, override, 0, 0,";
+          stream << "\n";
+          stream << indent_str;
+          stream << "      \"";
+          generate_string (long_option, stream, indent + indent_str.length ());
+          stream << "\", '";
+          generate_string (short_option, stream, indent + indent_str.length ());
+          stream << "',";
+          stream << "\n";
+          stream << indent_str;
+          stream << "      additional_error))";
+          stream << "\n";
+          stream << indent_str;
+          stream << "    goto failure;";
+          stream << "\n";
+          stream << indent_str;
+        }
+      if (( final_instructions != "" ))
+        {
+          indent = 2;
+          stream << "  ";
+          generate_string (final_instructions, stream, indent + indent_str.length ());
+          indent = 0;
+          stream << "\n";
+          stream << indent_str;
+        }
+    }
+  if (has_short_option)
+    {
+      stream << "\n";
+      stream << indent_str;
+      stream << "  break;";
+    }
+  else
+    {
+      stream << "\n";
+      stream << indent_str;
+      stream << "}";
+      stream << "\n";
+      stream << indent_str;
+    }
+}