source: PSPA/madxPSPA/src/mad_elem.h @ 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.9 KB
Line 
1#ifndef MAD_ELEM_H
2#define MAD_ELEM_H
3
4// types
5
6struct node;
7struct name_list;
8struct command;
9struct command_parameter;
10
11struct element  /* each element is unique */
12{
13  char name[NAME_L];
14  int def_type;                 /* 0 if defined separately,
15                                   1 if inside sequence */
16  int bv;                       /* bv: 0 false, 1 true (invert angle for
17                                   sequence bv = -1) */
18  double length;
19  struct command* def;          /* pointer to defining command */
20  struct element* parent;       /* pointer to parent of element */
21                                /* *this for base_type elements (rbend etc.) */
22  int stamp;
23  struct element* base_type;    /* pointer to base_type of element */
24                                /* *this for base_type elements (rbend etc.) */
25};
26
27struct el_list /* contains list of element pointers sorted by name */
28{
29  int stamp;
30  char name[NAME_L];
31  int  max,                     /* max. pointer array size */
32       curr;                    /* current occupation */
33  struct name_list* list;       /* index list of names */
34  struct element** elem;        /* element pointer list */
35};
36
37// interface
38
39struct element* make_element(char* name, char* parent, struct command*, int flag);
40struct element* clone_element(struct element*);
41struct element* delete_element(struct element*);
42void            update_element(struct element*, struct command* update);
43void            dump_element(struct element*);
44void            export_el_def(struct element*, char* string);
45void            export_el_def_8(struct element*, char* string);
46
47struct el_list* new_el_list(int length);
48struct el_list* delete_el_list(struct el_list*);
49struct element* find_element(char* name, struct el_list*);
50void            write_elems(struct el_list*, struct command_list*, FILE*);
51void            write_elems_8(struct el_list*, struct command_list*, FILE*);
52
53struct node*    new_elem_node(struct element*, int occ_cnt);
54void            make_elem_node(struct element*, int occ_cnt);
55char*           compound(char* e_name, int occ_cnt);
56
57void    enter_element(struct in_cmd*);
58void    element_name(char* name, int* l);
59double  element_value(struct node*, char* par);
60int     element_vector(struct element*, char* par, double* vector);
61
62int     belongs_to_class(struct element*, char* class);
63double  get_refpos(struct sequence*);
64void    get_node_vector(char* par, int* length, double* vector);
65int     el_par_vector(int* total, double* vect);
66double  el_par_value(char* par, struct element*);
67double  el_par_value_recurse(char* par, struct element*);
68void    fill_elem_var_list(struct element*, struct el_list*, struct var_list*);
69void    add_to_el_list(struct element**, int inf, struct el_list*, int flag);
70
71// used by mad_mkthin.c
72struct command_parameter* return_param(char* par, struct element*);
73struct command_parameter* return_param_recurse(char* par, struct element*);
74
75#endif // MAD_ELEM_H
76
Note: See TracBrowser for help on using the repository browser.