source: PSPA/madxPSPA/src/mad_option.c @ 430

Last change on this file since 430 was 430, checked in by touze, 11 years ago

import madx-5.01.00

File size: 2.2 KB
Line 
1#include "madx.h"
2
3int
4get_option(char* str)
5{
6/* This function is called by fortran to get option of a command */
7  int i; // , k; not used
8  mycpy(c_dum->c, str);
9  if (options != NULL
10      && (i = name_list_pos(c_dum->c, options->par_names)) > -1)
11    return options->par->parameters[i]->double_value; // (k = not used
12  else if (strcmp(c_dum->c, "warn") == 0) return init_warn;
13  else return 0;
14}
15
16void
17set_option(char* str, int* opt)
18  /* sets an (old or new) option with name "str",
19     value *opt (0 flase, 1 true) */
20{
21  int i, k; //, j not used
22  char* bc;
23  mycpy(c_dum->c, str); bc = permbuff(c_dum->c);
24  if ((i = name_list_pos(bc, options->par_names)) < 0)
25  {
26    add_to_name_list(bc, 0, options->par_names); // j = not used
27    if ((k = options->par->curr) == options->par->max)
28      grow_command_parameter_list(options->par);
29    options->par->parameters[options->par->curr++]
30      = new_command_parameter(bc, 0);
31    options->par->parameters[k]->double_value = *opt;
32  }
33  else options->par->parameters[i]->double_value = *opt;
34}
35
36void
37set_defaults(char* string) /* reset options, beam etc. to defaults */
38{
39  int i, pos;
40  struct command* beam_clone;
41
42  if ((pos = name_list_pos(string, defined_commands->list)) > -1)
43  {
44    if (strcmp(string, "option") == 0)
45    {
46      if (options != NULL) delete_command(options);
47      options = clone_command(defined_commands->commands[pos]);
48    }
49    else if (strcmp(string, "set") == 0)
50      store_set(defined_commands->commands[pos], 0);
51    else if (strcmp(string, "setplot") == 0)
52    {
53      if (plot_options != NULL) delete_command(plot_options);
54      plot_options = clone_command(defined_commands->commands[pos]);
55    }
56    else if (strcmp(string, "threader") == 0)
57    {
58      if (threader_par != NULL)  delete_command(threader_par);
59      threader_par = clone_command(defined_commands->commands[pos]);
60    }
61    else if (strcmp(string, "beam") == 0)
62    {
63      if (current_beam == NULL)
64        current_beam = clone_command(defined_commands->commands[pos]);
65      beam_clone = clone_command(defined_commands->commands[pos]);
66      for (i = 0; i < beam_clone->par_names->curr; i++)
67        beam_clone->par_names->inform[i] = 1; /* mark as "read" */
68      update_beam(beam_clone);
69      delete_command(beam_clone);
70    }
71  }
72}
73
Note: See TracBrowser for help on using the repository browser.