Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Modify Trace for msg_vm_t
authorJonathan Rouzaud-Cornabas <jonathan.rouzaud-cornabas@ens-lyon.fr>
Thu, 9 Aug 2012 12:12:43 +0000 (14:12 +0200)
committerJonathan Rouzaud-Cornabas <jonathan.rouzaud-cornabas@ens-lyon.fr>
Thu, 9 Aug 2012 12:12:43 +0000 (14:12 +0200)
18 files changed:
buildtools/Cmake/DefinePackages.cmake
examples/msg/cloud/masterslave_virtual_machines.c
include/instr/instr.h
include/msg/datatypes.h
include/msg/msg.h
include/surf/simgrid_dtd.h
include/xbt/graphxml.h
src/instr/instr_config.c
src/instr/instr_interface.c
src/instr/instr_msg_vm.c [new file with mode: 0644]
src/instr/instr_private.h
src/instr/instr_routing.c
src/msg/msg_private.h
src/msg/msg_vm.c
src/simdag/dax_dtd.c
src/simdag/dax_dtd.h
src/surf/simgrid_dtd.c
src/xbt/graphxml.c

index 6e6c711..f1d9159 100644 (file)
@@ -347,6 +347,7 @@ set(TRACING_SRC
   src/instr/instr_config.c
   src/instr/instr_interface.c
   src/instr/instr_msg_process.c
+  src/instr/instr_msg_vm.c
   src/instr/instr_msg_task.c
   src/instr/instr_paje_containers.c
   src/instr/instr_paje_trace.c
index 8e11b09..8edf3b7 100644 (file)
@@ -63,7 +63,11 @@ int master(int argc, char *argv[]) {
     argv[0] = xbt_strdup(slavename);
     argv[1] = bprintf("%d",i);
     argv[2] = NULL;
-    msg_vm_t vm = MSG_vm_start(slaves[i],2);
+
+    char vmName[64];
+    snprintf(vmName, 64, "vm_%d", i);
+
+    msg_vm_t vm = MSG_vm_start(slaves[i],vmName,2);
     MSG_vm_bind(vm, MSG_process_create_with_arguments(slavename,slave_fun,NULL,slaves[i],2,argv));
   }
 
index 3cb23ad..654112d 100644 (file)
@@ -42,6 +42,18 @@ XBT_PUBLIC(int) TRACE_platform_graph_export_graphviz (const char *filename);
 /*
  * User-variables related functions
  */
+/* for VM variables */
+XBT_PUBLIC(void) TRACE_vm_variable_declare (const char *variable);
+XBT_PUBLIC(void) TRACE_vm_variable_declare_with_color (const char *variable, const char *color);
+XBT_PUBLIC(void) TRACE_vm_variable_set (const char *vm, const char *variable, double value);
+XBT_PUBLIC(void) TRACE_vm_variable_add (const char *vm, const char *variable, double value);
+XBT_PUBLIC(void) TRACE_vm_variable_sub (const char *vm, const char *variable, double value);
+XBT_PUBLIC(void) TRACE_vm_variable_set_with_time (double time, const char *vm, const char *variable, double value);
+XBT_PUBLIC(void) TRACE_vm_variable_add_with_time (double time, const char *vm, const char *variable, double value);
+XBT_PUBLIC(void) TRACE_vm_variable_sub_with_time (double time, const char *vm, const char *variable, double value);
+XBT_PUBLIC(xbt_dynar_t) TRACE_get_vm_variables (void);
+
+
 /* for host variables */
 XBT_PUBLIC(void) TRACE_host_variable_declare (const char *variable);
 XBT_PUBLIC(void) TRACE_host_variable_declare_with_color (const char *variable, const char *color);
index 483c582..fd86ffa 100644 (file)
@@ -72,6 +72,22 @@ typedef struct msg_task {
  */
 typedef struct msg_task *msg_task_t;
 
+/* ********************************  VM ************************************* */
+typedef struct msg_vm *msg_vm_t;
+
+typedef enum {
+  msg_vm_state_suspended, msg_vm_state_running, msg_vm_state_migrating
+} e_msg_vm_state_t;
+
+typedef struct msg_vm {
+  const char *name;
+  s_xbt_swag_hookup_t all_vms_hookup;
+  s_xbt_swag_hookup_t host_vms_hookup;
+  xbt_dynar_t processes;
+  e_msg_vm_state_t state;
+  msg_host_t location;
+  int coreAmount;
+} s_msg_vm_t;
 
 /* ******************************** File ************************************ */
 typedef struct simdata_file *simdata_file_t;
index 192c44f..195f90b 100644 (file)
@@ -310,8 +310,6 @@ XBT_PUBLIC(msg_error_t) MSG_set_channel_number(int number);
 XBT_PUBLIC(int) MSG_get_channel_number(void);
 #endif
 
-#include "instr/instr.h"
-
 /** @brief Opaque type describing a Virtual Machine.
  *  @ingroup msg_VMs
  *
@@ -320,9 +318,8 @@ XBT_PUBLIC(int) MSG_get_channel_number(void);
  * Usual lack of guaranty of any kind applies here, and is even increased.
  *
  */
-typedef struct msg_vm *msg_vm_t;
 /* This function should not be called directly, but rather from MSG_vm_start_from_template that does not exist yet*/
-XBT_PUBLIC(msg_vm_t) MSG_vm_start(msg_host_t location, int coreAmount);
+XBT_PUBLIC(msg_vm_t) MSG_vm_start(msg_host_t location, const char *name, int coreAmount);
 
 XBT_PUBLIC(int) MSG_vm_is_suspended(msg_vm_t);
 XBT_PUBLIC(int) MSG_vm_is_running(msg_vm_t);
@@ -365,6 +362,8 @@ xbt_dynar_t<msg_vm_t> MSG_vm_get_list_from_host(msg_host_t)
 xbt_dynar_t<msg_vm_t> MSG_vm_get_list_from_hosts(msg_dynar_t<msg_host_t>)
 + des fonctions de filtrage sur les dynar
 */
+#include "instr/instr.h"
+
 
 
 /* ****************************************************************************************** */
index f865286..3856968 100644 (file)
@@ -2,8 +2,8 @@
  *
  * This program was generated with the FleXML XML processor generator.
  * FleXML is Copyright (C) 1999-2005 Kristoffer Rose.  All rights reserved.
- * FleXML is Copyright (C) 2003-2011 Martin Quinson.  All rights reserved.
- * (Id: flexml.pl,v 1.67 2011/11/01 20:49:21 mquinson Exp).
+ * FleXML is Copyright (C) 2003-2006 Martin Quinson.  All rights reserved.
+ * (Id: flexml.pl,v 1.62 2007/10/11 10:00:14 mquinson Exp).
  * 
  * There are two, intertwined parts to this program, part A and part B.
  *
@@ -12,7 +12,7 @@
  * 
  * Some parts, here collectively called "Part A", are found in the 
  * FleXML package.  They are Copyright (C) 1999-2005 Kristoffer Rose
- * and Copyright (C) 2003-2011 Martin Quinson. All rights reserved.
+ * and Copyright (C) 2003-2006 Martin Quinson. All rights reserved.
  *
  * You can redistribute, use, perform, display and/or modify "Part A"
  * provided the following two conditions hold:
@@ -315,328 +315,220 @@ XBT_PUBLIC_DATA(char *) surfxml_bufferstack;
 #define surfxml_pcdata (surfxml_bufferstack + surfxml_pcdata_ix)
 XBT_PUBLIC_DATA(AT_surfxml_mount_name ) AX_surfxml_mount_name;
 #define A_surfxml_mount_name (surfxml_bufferstack + AX_surfxml_mount_name)
-XBT_PUBLIC_DATA(short ) int surfxml_mount_name_isset;
 XBT_PUBLIC_DATA(AT_surfxml_random_generator ) AX_surfxml_random_generator;
 #define A_surfxml_random_generator AX_surfxml_random_generator
-XBT_PUBLIC_DATA(short ) int surfxml_random_generator_isset;
 XBT_PUBLIC_DATA(AT_surfxml_ASroute_gw_dst ) AX_surfxml_ASroute_gw_dst;
 #define A_surfxml_ASroute_gw_dst (surfxml_bufferstack + AX_surfxml_ASroute_gw_dst)
-XBT_PUBLIC_DATA(short ) int surfxml_ASroute_gw_dst_isset;
 XBT_PUBLIC_DATA(AT_surfxml_trace_connect_element ) AX_surfxml_trace_connect_element;
 #define A_surfxml_trace_connect_element (surfxml_bufferstack + AX_surfxml_trace_connect_element)
-XBT_PUBLIC_DATA(short ) int surfxml_trace_connect_element_isset;
 XBT_PUBLIC_DATA(AT_surfxml_prop_id ) AX_surfxml_prop_id;
 #define A_surfxml_prop_id (surfxml_bufferstack + AX_surfxml_prop_id)
-XBT_PUBLIC_DATA(short ) int surfxml_prop_id_isset;
 XBT_PUBLIC_DATA(AT_surfxml_host_link_up ) AX_surfxml_host_link_up;
 #define A_surfxml_host_link_up (surfxml_bufferstack + AX_surfxml_host_link_up)
-XBT_PUBLIC_DATA(short ) int surfxml_host_link_up_isset;
 XBT_PUBLIC_DATA(AT_surfxml_host_id ) AX_surfxml_host_id;
 #define A_surfxml_host_id (surfxml_bufferstack + AX_surfxml_host_id)
-XBT_PUBLIC_DATA(short ) int surfxml_host_id_isset;
 XBT_PUBLIC_DATA(AT_surfxml_ASroute_symmetrical ) AX_surfxml_ASroute_symmetrical;
 #define A_surfxml_ASroute_symmetrical AX_surfxml_ASroute_symmetrical
-XBT_PUBLIC_DATA(short ) int surfxml_ASroute_symmetrical_isset;
 XBT_PUBLIC_DATA(AT_surfxml_peer_lat ) AX_surfxml_peer_lat;
 #define A_surfxml_peer_lat (surfxml_bufferstack + AX_surfxml_peer_lat)
-XBT_PUBLIC_DATA(short ) int surfxml_peer_lat_isset;
 XBT_PUBLIC_DATA(AT_surfxml_process_on_failure ) AX_surfxml_process_on_failure;
 #define A_surfxml_process_on_failure AX_surfxml_process_on_failure
-XBT_PUBLIC_DATA(short ) int surfxml_process_on_failure_isset;
 XBT_PUBLIC_DATA(AT_surfxml_link_latency_file ) AX_surfxml_link_latency_file;
 #define A_surfxml_link_latency_file (surfxml_bufferstack + AX_surfxml_link_latency_file)
-XBT_PUBLIC_DATA(short ) int surfxml_link_latency_file_isset;
 XBT_PUBLIC_DATA(AT_surfxml_peer_availability_file ) AX_surfxml_peer_availability_file;
 #define A_surfxml_peer_availability_file (surfxml_bufferstack + AX_surfxml_peer_availability_file)
-XBT_PUBLIC_DATA(short ) int surfxml_peer_availability_file_isset;
 XBT_PUBLIC_DATA(AT_surfxml_link_ctn_direction ) AX_surfxml_link_ctn_direction;
 #define A_surfxml_link_ctn_direction AX_surfxml_link_ctn_direction
-XBT_PUBLIC_DATA(short ) int surfxml_link_ctn_direction_isset;
 XBT_PUBLIC_DATA(AT_surfxml_host_state ) AX_surfxml_host_state;
 #define A_surfxml_host_state AX_surfxml_host_state
-XBT_PUBLIC_DATA(short ) int surfxml_host_state_isset;
 XBT_PUBLIC_DATA(AT_surfxml_AS_id ) AX_surfxml_AS_id;
 #define A_surfxml_AS_id (surfxml_bufferstack + AX_surfxml_AS_id)
-XBT_PUBLIC_DATA(short ) int surfxml_AS_id_isset;
 XBT_PUBLIC_DATA(AT_surfxml_host_power ) AX_surfxml_host_power;
 #define A_surfxml_host_power (surfxml_bufferstack + AX_surfxml_host_power)
-XBT_PUBLIC_DATA(short ) int surfxml_host_power_isset;
 XBT_PUBLIC_DATA(AT_surfxml_cabinet_suffix ) AX_surfxml_cabinet_suffix;
 #define A_surfxml_cabinet_suffix (surfxml_bufferstack + AX_surfxml_cabinet_suffix)
-XBT_PUBLIC_DATA(short ) int surfxml_cabinet_suffix_isset;
 XBT_PUBLIC_DATA(AT_surfxml_router_id ) AX_surfxml_router_id;
 #define A_surfxml_router_id (surfxml_bufferstack + AX_surfxml_router_id)
-XBT_PUBLIC_DATA(short ) int surfxml_router_id_isset;
 XBT_PUBLIC_DATA(AT_surfxml_storage_type_id ) AX_surfxml_storage_type_id;
 #define A_surfxml_storage_type_id (surfxml_bufferstack + AX_surfxml_storage_type_id)
-XBT_PUBLIC_DATA(short ) int surfxml_storage_type_id_isset;
 XBT_PUBLIC_DATA(AT_surfxml_process_start_time ) AX_surfxml_process_start_time;
 #define A_surfxml_process_start_time (surfxml_bufferstack + AX_surfxml_process_start_time)
-XBT_PUBLIC_DATA(short ) int surfxml_process_start_time_isset;
 XBT_PUBLIC_DATA(AT_surfxml_cabinet_bw ) AX_surfxml_cabinet_bw;
 #define A_surfxml_cabinet_bw (surfxml_bufferstack + AX_surfxml_cabinet_bw)
-XBT_PUBLIC_DATA(short ) int surfxml_cabinet_bw_isset;
 XBT_PUBLIC_DATA(AT_surfxml_cluster_suffix ) AX_surfxml_cluster_suffix;
 #define A_surfxml_cluster_suffix (surfxml_bufferstack + AX_surfxml_cluster_suffix)
-XBT_PUBLIC_DATA(short ) int surfxml_cluster_suffix_isset;
 XBT_PUBLIC_DATA(AT_surfxml_bypassASroute_dst ) AX_surfxml_bypassASroute_dst;
 #define A_surfxml_bypassASroute_dst (surfxml_bufferstack + AX_surfxml_bypassASroute_dst)
-XBT_PUBLIC_DATA(short ) int surfxml_bypassASroute_dst_isset;
 XBT_PUBLIC_DATA(AT_surfxml_host_link_id ) AX_surfxml_host_link_id;
 #define A_surfxml_host_link_id (surfxml_bufferstack + AX_surfxml_host_link_id)
-XBT_PUBLIC_DATA(short ) int surfxml_host_link_id_isset;
 XBT_PUBLIC_DATA(AT_surfxml_ASroute_src ) AX_surfxml_ASroute_src;
 #define A_surfxml_ASroute_src (surfxml_bufferstack + AX_surfxml_ASroute_src)
-XBT_PUBLIC_DATA(short ) int surfxml_ASroute_src_isset;
 XBT_PUBLIC_DATA(AT_surfxml_cluster_prefix ) AX_surfxml_cluster_prefix;
 #define A_surfxml_cluster_prefix (surfxml_bufferstack + AX_surfxml_cluster_prefix)
-XBT_PUBLIC_DATA(short ) int surfxml_cluster_prefix_isset;
 XBT_PUBLIC_DATA(AT_surfxml_cabinet_prefix ) AX_surfxml_cabinet_prefix;
 #define A_surfxml_cabinet_prefix (surfxml_bufferstack + AX_surfxml_cabinet_prefix)
-XBT_PUBLIC_DATA(short ) int surfxml_cabinet_prefix_isset;
 XBT_PUBLIC_DATA(AT_surfxml_trace_file ) AX_surfxml_trace_file;
 #define A_surfxml_trace_file (surfxml_bufferstack + AX_surfxml_trace_file)
-XBT_PUBLIC_DATA(short ) int surfxml_trace_file_isset;
 XBT_PUBLIC_DATA(AT_surfxml_link_sharing_policy ) AX_surfxml_link_sharing_policy;
 #define A_surfxml_link_sharing_policy AX_surfxml_link_sharing_policy
-XBT_PUBLIC_DATA(short ) int surfxml_link_sharing_policy_isset;
 XBT_PUBLIC_DATA(AT_surfxml_storage_typeId ) AX_surfxml_storage_typeId;
 #define A_surfxml_storage_typeId (surfxml_bufferstack + AX_surfxml_storage_typeId)
-XBT_PUBLIC_DATA(short ) int surfxml_storage_typeId_isset;
 XBT_PUBLIC_DATA(AT_surfxml_random_min ) AX_surfxml_random_min;
 #define A_surfxml_random_min (surfxml_bufferstack + AX_surfxml_random_min)
-XBT_PUBLIC_DATA(short ) int surfxml_random_min_isset;
 XBT_PUBLIC_DATA(AT_surfxml_link_ctn_id ) AX_surfxml_link_ctn_id;
 #define A_surfxml_link_ctn_id (surfxml_bufferstack + AX_surfxml_link_ctn_id)
-XBT_PUBLIC_DATA(short ) int surfxml_link_ctn_id_isset;
 XBT_PUBLIC_DATA(AT_surfxml_peer_bw_out ) AX_surfxml_peer_bw_out;
 #define A_surfxml_peer_bw_out (surfxml_bufferstack + AX_surfxml_peer_bw_out)
-XBT_PUBLIC_DATA(short ) int surfxml_peer_bw_out_isset;
 XBT_PUBLIC_DATA(AT_surfxml_cluster_availability_file ) AX_surfxml_cluster_availability_file;
 #define A_surfxml_cluster_availability_file (surfxml_bufferstack + AX_surfxml_cluster_availability_file)
-XBT_PUBLIC_DATA(short ) int surfxml_cluster_availability_file_isset;
 XBT_PUBLIC_DATA(AT_surfxml_storage_content ) AX_surfxml_storage_content;
 #define A_surfxml_storage_content (surfxml_bufferstack + AX_surfxml_storage_content)
-XBT_PUBLIC_DATA(short ) int surfxml_storage_content_isset;
 XBT_PUBLIC_DATA(AT_surfxml_process_kill_time ) AX_surfxml_process_kill_time;
 #define A_surfxml_process_kill_time (surfxml_bufferstack + AX_surfxml_process_kill_time)
-XBT_PUBLIC_DATA(short ) int surfxml_process_kill_time_isset;
 XBT_PUBLIC_DATA(AT_surfxml_cluster_bb_bw ) AX_surfxml_cluster_bb_bw;
 #define A_surfxml_cluster_bb_bw (surfxml_bufferstack + AX_surfxml_cluster_bb_bw)
-XBT_PUBLIC_DATA(short ) int surfxml_cluster_bb_bw_isset;
 XBT_PUBLIC_DATA(AT_surfxml_argument_value ) AX_surfxml_argument_value;
 #define A_surfxml_argument_value (surfxml_bufferstack + AX_surfxml_argument_value)
-XBT_PUBLIC_DATA(short ) int surfxml_argument_value_isset;
 XBT_PUBLIC_DATA(AT_surfxml_link_state ) AX_surfxml_link_state;
 #define A_surfxml_link_state AX_surfxml_link_state
-XBT_PUBLIC_DATA(short ) int surfxml_link_state_isset;
 XBT_PUBLIC_DATA(AT_surfxml_ASroute_gw_src ) AX_surfxml_ASroute_gw_src;
 #define A_surfxml_ASroute_gw_src (surfxml_bufferstack + AX_surfxml_ASroute_gw_src)
-XBT_PUBLIC_DATA(short ) int surfxml_ASroute_gw_src_isset;
 XBT_PUBLIC_DATA(AT_surfxml_AS_routing ) AX_surfxml_AS_routing;
 #define A_surfxml_AS_routing AX_surfxml_AS_routing
-XBT_PUBLIC_DATA(short ) int surfxml_AS_routing_isset;
 XBT_PUBLIC_DATA(AT_surfxml_link_bandwidth ) AX_surfxml_link_bandwidth;
 #define A_surfxml_link_bandwidth (surfxml_bufferstack + AX_surfxml_link_bandwidth)
-XBT_PUBLIC_DATA(short ) int surfxml_link_bandwidth_isset;
 XBT_PUBLIC_DATA(AT_surfxml_cluster_id ) AX_surfxml_cluster_id;
 #define A_surfxml_cluster_id (surfxml_bufferstack + AX_surfxml_cluster_id)
-XBT_PUBLIC_DATA(short ) int surfxml_cluster_id_isset;
 XBT_PUBLIC_DATA(AT_surfxml_peer_bw_in ) AX_surfxml_peer_bw_in;
 #define A_surfxml_peer_bw_in (surfxml_bufferstack + AX_surfxml_peer_bw_in)
-XBT_PUBLIC_DATA(short ) int surfxml_peer_bw_in_isset;
 XBT_PUBLIC_DATA(AT_surfxml_random_mean ) AX_surfxml_random_mean;
 #define A_surfxml_random_mean (surfxml_bufferstack + AX_surfxml_random_mean)
-XBT_PUBLIC_DATA(short ) int surfxml_random_mean_isset;
 XBT_PUBLIC_DATA(AT_surfxml_storage_type_size ) AX_surfxml_storage_type_size;
 #define A_surfxml_storage_type_size (surfxml_bufferstack + AX_surfxml_storage_type_size)
-XBT_PUBLIC_DATA(short ) int surfxml_storage_type_size_isset;
 XBT_PUBLIC_DATA(AT_surfxml_cluster_bb_lat ) AX_surfxml_cluster_bb_lat;
 #define A_surfxml_cluster_bb_lat (surfxml_bufferstack + AX_surfxml_cluster_bb_lat)
-XBT_PUBLIC_DATA(short ) int surfxml_cluster_bb_lat_isset;
 XBT_PUBLIC_DATA(AT_surfxml_link_latency ) AX_surfxml_link_latency;
 #define A_surfxml_link_latency (surfxml_bufferstack + AX_surfxml_link_latency)
-XBT_PUBLIC_DATA(short ) int surfxml_link_latency_isset;
 XBT_PUBLIC_DATA(AT_surfxml_backbone_bandwidth ) AX_surfxml_backbone_bandwidth;
 #define A_surfxml_backbone_bandwidth (surfxml_bufferstack + AX_surfxml_backbone_bandwidth)
-XBT_PUBLIC_DATA(short ) int surfxml_backbone_bandwidth_isset;
 XBT_PUBLIC_DATA(AT_surfxml_backbone_id ) AX_surfxml_backbone_id;
 #define A_surfxml_backbone_id (surfxml_bufferstack + AX_surfxml_backbone_id)
-XBT_PUBLIC_DATA(short ) int surfxml_backbone_id_isset;
 XBT_PUBLIC_DATA(AT_surfxml_trace_connect_kind ) AX_surfxml_trace_connect_kind;
 #define A_surfxml_trace_connect_kind AX_surfxml_trace_connect_kind
-XBT_PUBLIC_DATA(short ) int surfxml_trace_connect_kind_isset;
 XBT_PUBLIC_DATA(AT_surfxml_cabinet_lat ) AX_surfxml_cabinet_lat;
 #define A_surfxml_cabinet_lat (surfxml_bufferstack + AX_surfxml_cabinet_lat)
-XBT_PUBLIC_DATA(short ) int surfxml_cabinet_lat_isset;
 XBT_PUBLIC_DATA(AT_surfxml_random_seed ) AX_surfxml_random_seed;
 #define A_surfxml_random_seed (surfxml_bufferstack + AX_surfxml_random_seed)
-XBT_PUBLIC_DATA(short ) int surfxml_random_seed_isset;
 XBT_PUBLIC_DATA(AT_surfxml_cluster_state_file ) AX_surfxml_cluster_state_file;
 #define A_surfxml_cluster_state_file (surfxml_bufferstack + AX_surfxml_cluster_state_file)
-XBT_PUBLIC_DATA(short ) int surfxml_cluster_state_file_isset;
 XBT_PUBLIC_DATA(AT_surfxml_link_bandwidth_file ) AX_surfxml_link_bandwidth_file;
 #define A_surfxml_link_bandwidth_file (surfxml_bufferstack + AX_surfxml_link_bandwidth_file)
-XBT_PUBLIC_DATA(short ) int surfxml_link_bandwidth_file_isset;
 XBT_PUBLIC_DATA(AT_surfxml_storage_type_content ) AX_surfxml_storage_type_content;
 #define A_surfxml_storage_type_content (surfxml_bufferstack + AX_surfxml_storage_type_content)
-XBT_PUBLIC_DATA(short ) int surfxml_storage_type_content_isset;
 XBT_PUBLIC_DATA(AT_surfxml_route_symmetrical ) AX_surfxml_route_symmetrical;
 #define A_surfxml_route_symmetrical AX_surfxml_route_symmetrical
-XBT_PUBLIC_DATA(short ) int surfxml_route_symmetrical_isset;
 XBT_PUBLIC_DATA(AT_surfxml_random_id ) AX_surfxml_random_id;
 #define A_surfxml_random_id (surfxml_bufferstack + AX_surfxml_random_id)
-XBT_PUBLIC_DATA(short ) int surfxml_random_id_isset;
 XBT_PUBLIC_DATA(AT_surfxml_mstorage_name ) AX_surfxml_mstorage_name;
 #define A_surfxml_mstorage_name (surfxml_bufferstack + AX_surfxml_mstorage_name)
-XBT_PUBLIC_DATA(short ) int surfxml_mstorage_name_isset;
 XBT_PUBLIC_DATA(AT_surfxml_random_max ) AX_surfxml_random_max;
 #define A_surfxml_random_max (surfxml_bufferstack + AX_surfxml_random_max)
-XBT_PUBLIC_DATA(short ) int surfxml_random_max_isset;
 XBT_PUBLIC_DATA(AT_surfxml_link_id ) AX_surfxml_link_id;
 #define A_surfxml_link_id (surfxml_bufferstack + AX_surfxml_link_id)
-XBT_PUBLIC_DATA(short ) int surfxml_link_id_isset;
 XBT_PUBLIC_DATA(AT_surfxml_process_host ) AX_surfxml_process_host;
 #define A_surfxml_process_host (surfxml_bufferstack + AX_surfxml_process_host)
-XBT_PUBLIC_DATA(short ) int surfxml_process_host_isset;
 XBT_PUBLIC_DATA(AT_surfxml_cabinet_id ) AX_surfxml_cabinet_id;
 #define A_surfxml_cabinet_id (surfxml_bufferstack + AX_surfxml_cabinet_id)
-XBT_PUBLIC_DATA(short ) int surfxml_cabinet_id_isset;
 XBT_PUBLIC_DATA(AT_surfxml_host_availability_file ) AX_surfxml_host_availability_file;
 #define A_surfxml_host_availability_file (surfxml_bufferstack + AX_surfxml_host_availability_file)
-XBT_PUBLIC_DATA(short ) int surfxml_host_availability_file_isset;
 XBT_PUBLIC_DATA(AT_surfxml_cluster_lat ) AX_surfxml_cluster_lat;
 #define A_surfxml_cluster_lat (surfxml_bufferstack + AX_surfxml_cluster_lat)
-XBT_PUBLIC_DATA(short ) int surfxml_cluster_lat_isset;
 XBT_PUBLIC_DATA(AT_surfxml_router_coordinates ) AX_surfxml_router_coordinates;
 #define A_surfxml_router_coordinates (surfxml_bufferstack + AX_surfxml_router_coordinates)
-XBT_PUBLIC_DATA(short ) int surfxml_router_coordinates_isset;
 XBT_PUBLIC_DATA(AT_surfxml_trace_periodicity ) AX_surfxml_trace_periodicity;
 #define A_surfxml_trace_periodicity (surfxml_bufferstack + AX_surfxml_trace_periodicity)
-XBT_PUBLIC_DATA(short ) int surfxml_trace_periodicity_isset;
 XBT_PUBLIC_DATA(AT_surfxml_cluster_bb_sharing_policy ) AX_surfxml_cluster_bb_sharing_policy;
 #define A_surfxml_cluster_bb_sharing_policy AX_surfxml_cluster_bb_sharing_policy
-XBT_PUBLIC_DATA(short ) int surfxml_cluster_bb_sharing_policy_isset;
 XBT_PUBLIC_DATA(AT_surfxml_peer_state_file ) AX_surfxml_peer_state_file;
 #define A_surfxml_peer_state_file (surfxml_bufferstack + AX_surfxml_peer_state_file)
-XBT_PUBLIC_DATA(short ) int surfxml_peer_state_file_isset;
 XBT_PUBLIC_DATA(AT_surfxml_peer_coordinates ) AX_surfxml_peer_coordinates;
 #define A_surfxml_peer_coordinates (surfxml_bufferstack + AX_surfxml_peer_coordinates)
-XBT_PUBLIC_DATA(short ) int surfxml_peer_coordinates_isset;
 XBT_PUBLIC_DATA(AT_surfxml_bypassASroute_src ) AX_surfxml_bypassASroute_src;
 #define A_surfxml_bypassASroute_src (surfxml_bufferstack + AX_surfxml_bypassASroute_src)
-XBT_PUBLIC_DATA(short ) int surfxml_bypassASroute_src_isset;
 XBT_PUBLIC_DATA(AT_surfxml_prop_value ) AX_surfxml_prop_value;
 #define A_surfxml_prop_value (surfxml_bufferstack + AX_surfxml_prop_value)
-XBT_PUBLIC_DATA(short ) int surfxml_prop_value_isset;
 XBT_PUBLIC_DATA(AT_surfxml_mstorage_typeId ) AX_surfxml_mstorage_typeId;
 #define A_surfxml_mstorage_typeId (surfxml_bufferstack + AX_surfxml_mstorage_typeId)
-XBT_PUBLIC_DATA(short ) int surfxml_mstorage_typeId_isset;
 XBT_PUBLIC_DATA(AT_surfxml_ASroute_dst ) AX_surfxml_ASroute_dst;
 #define A_surfxml_ASroute_dst (surfxml_bufferstack + AX_surfxml_ASroute_dst)
-XBT_PUBLIC_DATA(short ) int surfxml_ASroute_dst_isset;
 XBT_PUBLIC_DATA(AT_surfxml_link_state_file ) AX_surfxml_link_state_file;
 #define A_surfxml_link_state_file (surfxml_bufferstack + AX_surfxml_link_state_file)
-XBT_PUBLIC_DATA(short ) int surfxml_link_state_file_isset;
 XBT_PUBLIC_DATA(AT_surfxml_random_radical ) AX_surfxml_random_radical;
 #define A_surfxml_random_radical (surfxml_bufferstack + AX_surfxml_random_radical)
-XBT_PUBLIC_DATA(short ) int surfxml_random_radical_isset;
 XBT_PUBLIC_DATA(AT_surfxml_bypassASroute_gw_src ) AX_surfxml_bypassASroute_gw_src;
 #define A_surfxml_bypassASroute_gw_src (surfxml_bufferstack + AX_surfxml_bypassASroute_gw_src)
-XBT_PUBLIC_DATA(short ) int surfxml_bypassASroute_gw_src_isset;
 XBT_PUBLIC_DATA(AT_surfxml_trace_connect_trace ) AX_surfxml_trace_connect_trace;
 #define A_surfxml_trace_connect_trace (surfxml_bufferstack + AX_surfxml_trace_connect_trace)
-XBT_PUBLIC_DATA(short ) int surfxml_trace_connect_trace_isset;
 XBT_PUBLIC_DATA(AT_surfxml_mount_id ) AX_surfxml_mount_id;
 #define A_surfxml_mount_id (surfxml_bufferstack + AX_surfxml_mount_id)
-XBT_PUBLIC_DATA(short ) int surfxml_mount_id_isset;
 XBT_PUBLIC_DATA(AT_surfxml_cluster_power ) AX_surfxml_cluster_power;
 #define A_surfxml_cluster_power (surfxml_bufferstack + AX_surfxml_cluster_power)
-XBT_PUBLIC_DATA(short ) int surfxml_cluster_power_isset;
 XBT_PUBLIC_DATA(AT_surfxml_process_function ) AX_surfxml_process_function;
 #define A_surfxml_process_function (surfxml_bufferstack + AX_surfxml_process_function)
-XBT_PUBLIC_DATA(short ) int surfxml_process_function_isset;
 XBT_PUBLIC_DATA(AT_surfxml_peer_id ) AX_surfxml_peer_id;
 #define A_surfxml_peer_id (surfxml_bufferstack + AX_surfxml_peer_id)
-XBT_PUBLIC_DATA(short ) int surfxml_peer_id_isset;
 XBT_PUBLIC_DATA(AT_surfxml_cluster_router_id ) AX_surfxml_cluster_router_id;
 #define A_surfxml_cluster_router_id (surfxml_bufferstack + AX_surfxml_cluster_router_id)
-XBT_PUBLIC_DATA(short ) int surfxml_cluster_router_id_isset;
 XBT_PUBLIC_DATA(AT_surfxml_cabinet_radical ) AX_surfxml_cabinet_radical;
 #define A_surfxml_cabinet_radical (surfxml_bufferstack + AX_surfxml_cabinet_radical)
-XBT_PUBLIC_DATA(short ) int surfxml_cabinet_radical_isset;
 XBT_PUBLIC_DATA(AT_surfxml_cluster_sharing_policy ) AX_surfxml_cluster_sharing_policy;
 #define A_surfxml_cluster_sharing_policy AX_surfxml_cluster_sharing_policy
-XBT_PUBLIC_DATA(short ) int surfxml_cluster_sharing_policy_isset;
 XBT_PUBLIC_DATA(AT_surfxml_bypassRoute_dst ) AX_surfxml_bypassRoute_dst;
 #define A_surfxml_bypassRoute_dst (surfxml_bufferstack + AX_surfxml_bypassRoute_dst)
-XBT_PUBLIC_DATA(short ) int surfxml_bypassRoute_dst_isset;
 XBT_PUBLIC_DATA(AT_surfxml_cabinet_power ) AX_surfxml_cabinet_power;
 #define A_surfxml_cabinet_power (surfxml_bufferstack + AX_surfxml_cabinet_power)
-XBT_PUBLIC_DATA(short ) int surfxml_cabinet_power_isset;
 XBT_PUBLIC_DATA(AT_surfxml_host_core ) AX_surfxml_host_core;
 #define A_surfxml_host_core (surfxml_bufferstack + AX_surfxml_host_core)
-XBT_PUBLIC_DATA(short ) int surfxml_host_core_isset;
 XBT_PUBLIC_DATA(AT_surfxml_storage_type_model ) AX_surfxml_storage_type_model;
 #define A_surfxml_storage_type_model (surfxml_bufferstack + AX_surfxml_storage_type_model)
-XBT_PUBLIC_DATA(short ) int surfxml_storage_type_model_isset;
 XBT_PUBLIC_DATA(AT_surfxml_host_availability ) AX_surfxml_host_availability;
 #define A_surfxml_host_availability (surfxml_bufferstack + AX_surfxml_host_availability)
-XBT_PUBLIC_DATA(short ) int surfxml_host_availability_isset;
 XBT_PUBLIC_DATA(AT_surfxml_bypassRoute_src ) AX_surfxml_bypassRoute_src;
 #define A_surfxml_bypassRoute_src (surfxml_bufferstack + AX_surfxml_bypassRoute_src)
-XBT_PUBLIC_DATA(short ) int surfxml_bypassRoute_src_isset;
 XBT_PUBLIC_DATA(AT_surfxml_backbone_latency ) AX_surfxml_backbone_latency;
 #define A_surfxml_backbone_latency (surfxml_bufferstack + AX_surfxml_backbone_latency)
-XBT_PUBLIC_DATA(short ) int surfxml_backbone_latency_isset;
 XBT_PUBLIC_DATA(AT_surfxml_route_src ) AX_surfxml_route_src;
 #define A_surfxml_route_src (surfxml_bufferstack + AX_surfxml_route_src)
-XBT_PUBLIC_DATA(short ) int surfxml_route_src_isset;
 XBT_PUBLIC_DATA(AT_surfxml_storage_id ) AX_surfxml_storage_id;
 #define A_surfxml_storage_id (surfxml_bufferstack + AX_surfxml_storage_id)
-XBT_PUBLIC_DATA(short ) int surfxml_storage_id_isset;
 XBT_PUBLIC_DATA(AT_surfxml_host_coordinates ) AX_surfxml_host_coordinates;
 #define A_surfxml_host_coordinates (surfxml_bufferstack + AX_surfxml_host_coordinates)
-XBT_PUBLIC_DATA(short ) int surfxml_host_coordinates_isset;
 XBT_PUBLIC_DATA(AT_surfxml_trace_id ) AX_surfxml_trace_id;
 #define A_surfxml_trace_id (surfxml_bufferstack + AX_surfxml_trace_id)
-XBT_PUBLIC_DATA(short ) int surfxml_trace_id_isset;
 XBT_PUBLIC_DATA(AT_surfxml_peer_power ) AX_surfxml_peer_power;
 #define A_surfxml_peer_power (surfxml_bufferstack + AX_surfxml_peer_power)
-XBT_PUBLIC_DATA(short ) int surfxml_peer_power_isset;
 XBT_PUBLIC_DATA(AT_surfxml_cluster_radical ) AX_surfxml_cluster_radical;
 #define A_surfxml_cluster_radical (surfxml_bufferstack + AX_surfxml_cluster_radical)
-XBT_PUBLIC_DATA(short ) int surfxml_cluster_radical_isset;
 XBT_PUBLIC_DATA(AT_surfxml_config_id ) AX_surfxml_config_id;
 #define A_surfxml_config_id (surfxml_bufferstack + AX_surfxml_config_id)
-XBT_PUBLIC_DATA(short ) int surfxml_config_id_isset;
 XBT_PUBLIC_DATA(AT_surfxml_bypassASroute_gw_dst ) AX_surfxml_bypassASroute_gw_dst;
 #define A_surfxml_bypassASroute_gw_dst (surfxml_bufferstack + AX_surfxml_bypassASroute_gw_dst)
-XBT_PUBLIC_DATA(short ) int surfxml_bypassASroute_gw_dst_isset;
 XBT_PUBLIC_DATA(AT_surfxml_host_link_down ) AX_surfxml_host_link_down;
 #define A_surfxml_host_link_down (surfxml_bufferstack + AX_surfxml_host_link_down)
-XBT_PUBLIC_DATA(short ) int surfxml_host_link_down_isset;
 XBT_PUBLIC_DATA(AT_surfxml_include_file ) AX_surfxml_include_file;
 #define A_surfxml_include_file (surfxml_bufferstack + AX_surfxml_include_file)
-XBT_PUBLIC_DATA(short ) int surfxml_include_file_isset;
 XBT_PUBLIC_DATA(AT_surfxml_random_std_deviation ) AX_surfxml_random_std_deviation;
 #define A_surfxml_random_std_deviation (surfxml_bufferstack + AX_surfxml_random_std_deviation)
-XBT_PUBLIC_DATA(short ) int surfxml_random_std_deviation_isset;
 XBT_PUBLIC_DATA(AT_surfxml_cluster_core ) AX_surfxml_cluster_core;
 #define A_surfxml_cluster_core (surfxml_bufferstack + AX_surfxml_cluster_core)
-XBT_PUBLIC_DATA(short ) int surfxml_cluster_core_isset;
 XBT_PUBLIC_DATA(AT_surfxml_host_state_file ) AX_surfxml_host_state_file;
 #define A_surfxml_host_state_file (surfxml_bufferstack + AX_surfxml_host_state_file)
-XBT_PUBLIC_DATA(short ) int surfxml_host_state_file_isset;
 XBT_PUBLIC_DATA(AT_surfxml_route_dst ) AX_surfxml_route_dst;
 #define A_surfxml_route_dst (surfxml_bufferstack + AX_surfxml_route_dst)
-XBT_PUBLIC_DATA(short ) int surfxml_route_dst_isset;
 XBT_PUBLIC_DATA(AT_surfxml_cluster_bw ) AX_surfxml_cluster_bw;
 #define A_surfxml_cluster_bw (surfxml_bufferstack + AX_surfxml_cluster_bw)
-XBT_PUBLIC_DATA(short ) int surfxml_cluster_bw_isset;
 XBT_PUBLIC_DATA(AT_surfxml_platform_version ) AX_surfxml_platform_version;
 #define A_surfxml_platform_version (surfxml_bufferstack + AX_surfxml_platform_version)
-XBT_PUBLIC_DATA(short ) int surfxml_platform_version_isset;
 
 /* XML application utilities. */
 XBT_PUBLIC(int ) surfxml_element_context(int);
index 9c5fdbf..556b0c0 100644 (file)
@@ -2,8 +2,8 @@
  *
  * This program was generated with the FleXML XML processor generator.
  * FleXML is Copyright (C) 1999-2005 Kristoffer Rose.  All rights reserved.
- * FleXML is Copyright (C) 2003-2011 Martin Quinson.  All rights reserved.
- * (Id: flexml.pl,v 1.67 2011/11/01 20:49:21 mquinson Exp).
+ * FleXML is Copyright (C) 2003-2006 Martin Quinson.  All rights reserved.
+ * (Id: flexml.pl,v 1.62 2007/10/11 10:00:14 mquinson Exp).
  * 
  * There are two, intertwined parts to this program, part A and part B.
  *
@@ -12,7 +12,7 @@
  * 
  * Some parts, here collectively called "Part A", are found in the 
  * FleXML package.  They are Copyright (C) 1999-2005 Kristoffer Rose
- * and Copyright (C) 2003-2011 Martin Quinson. All rights reserved.
+ * and Copyright (C) 2003-2006 Martin Quinson. All rights reserved.
  *
  * You can redistribute, use, perform, display and/or modify "Part A"
  * provided the following two conditions hold:
@@ -86,40 +86,28 @@ XBT_PUBLIC_DATA(char *) graphxml_bufferstack;
 #define graphxml_pcdata (graphxml_bufferstack + graphxml_pcdata_ix)
 XBT_PUBLIC_DATA(AT_graphxml_node_name ) AX_graphxml_node_name;
 #define A_graphxml_node_name (graphxml_bufferstack + AX_graphxml_node_name)
-XBT_PUBLIC_DATA(short ) int graphxml_node_name_isset;
 XBT_PUBLIC_DATA(AT_graphxml_edge_source ) AX_graphxml_edge_source;
 #define A_graphxml_edge_source (graphxml_bufferstack + AX_graphxml_edge_source)
-XBT_PUBLIC_DATA(short ) int graphxml_edge_source_isset;
 XBT_PUBLIC_DATA(AT_graphxml_node_position_y ) AX_graphxml_node_position_y;
 #define A_graphxml_node_position_y (graphxml_bufferstack + AX_graphxml_node_position_y)
-XBT_PUBLIC_DATA(short ) int graphxml_node_position_y_isset;
 XBT_PUBLIC_DATA(AT_graphxml_node_position_x ) AX_graphxml_node_position_x;
 #define A_graphxml_node_position_x (graphxml_bufferstack + AX_graphxml_node_position_x)
-XBT_PUBLIC_DATA(short ) int graphxml_node_position_x_isset;
 XBT_PUBLIC_DATA(AT_graphxml_edge_data ) AX_graphxml_edge_data;
 #define A_graphxml_edge_data (graphxml_bufferstack + AX_graphxml_edge_data)
-XBT_PUBLIC_DATA(short ) int graphxml_edge_data_isset;
 XBT_PUBLIC_DATA(AT_graphxml_edge_target ) AX_graphxml_edge_target;
 #define A_graphxml_edge_target (graphxml_bufferstack + AX_graphxml_edge_target)
-XBT_PUBLIC_DATA(short ) int graphxml_edge_target_isset;
 XBT_PUBLIC_DATA(AT_graphxml_graph_isDirected ) AX_graphxml_graph_isDirected;
 #define A_graphxml_graph_isDirected AX_graphxml_graph_isDirected
-XBT_PUBLIC_DATA(short ) int graphxml_graph_isDirected_isset;
 XBT_PUBLIC_DATA(AT_graphxml_node_label ) AX_graphxml_node_label;
 #define A_graphxml_node_label (graphxml_bufferstack + AX_graphxml_node_label)
-XBT_PUBLIC_DATA(short ) int graphxml_node_label_isset;
 XBT_PUBLIC_DATA(AT_graphxml_node_data ) AX_graphxml_node_data;
 #define A_graphxml_node_data (graphxml_bufferstack + AX_graphxml_node_data)
-XBT_PUBLIC_DATA(short ) int graphxml_node_data_isset;
 XBT_PUBLIC_DATA(AT_graphxml_edge_label ) AX_graphxml_edge_label;
 #define A_graphxml_edge_label (graphxml_bufferstack + AX_graphxml_edge_label)
-XBT_PUBLIC_DATA(short ) int graphxml_edge_label_isset;
 XBT_PUBLIC_DATA(AT_graphxml_edge_length ) AX_graphxml_edge_length;
 #define A_graphxml_edge_length (graphxml_bufferstack + AX_graphxml_edge_length)
-XBT_PUBLIC_DATA(short ) int graphxml_edge_length_isset;
 XBT_PUBLIC_DATA(AT_graphxml_edge_name ) AX_graphxml_edge_name;
 #define A_graphxml_edge_name (graphxml_bufferstack + AX_graphxml_edge_name)
-XBT_PUBLIC_DATA(short ) int graphxml_edge_name_isset;
 
 /* XML application utilities. */
 XBT_PUBLIC(int ) graphxml_element_context(int);
index 089bfea..3e783a1 100644 (file)
@@ -19,6 +19,7 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY (instr_config, instr, "Configuration");
 #define OPT_TRACING_CATEGORIZED   "tracing/categorized"
 #define OPT_TRACING_UNCATEGORIZED "tracing/uncategorized"
 #define OPT_TRACING_MSG_PROCESS   "tracing/msg/process"
+#define OPT_TRACING_MSG_VM        "tracing/msg/vm"
 #define OPT_TRACING_FILENAME      "tracing/filename"
 #define OPT_TRACING_BUFFER        "tracing/buffer"
 #define OPT_TRACING_ONELINK_ONLY  "tracing/onelink_only"
@@ -35,6 +36,7 @@ static int trace_smpi_grouped;
 static int trace_categorized;
 static int trace_uncategorized;
 static int trace_msg_process_enabled;
+static int trace_msg_vm_enabled;
 static int trace_buffer;
 static int trace_onelink_only;
 static int trace_disable_destroy;
@@ -51,6 +53,7 @@ static void TRACE_getopts(void)
   trace_categorized = xbt_cfg_get_int(_surf_cfg_set, OPT_TRACING_CATEGORIZED);
   trace_uncategorized = xbt_cfg_get_int(_surf_cfg_set, OPT_TRACING_UNCATEGORIZED);
   trace_msg_process_enabled = xbt_cfg_get_int(_surf_cfg_set, OPT_TRACING_MSG_PROCESS);
+  trace_msg_vm_enabled = xbt_cfg_get_int(_surf_cfg_set, OPT_TRACING_MSG_VM);
   trace_buffer = xbt_cfg_get_int(_surf_cfg_set, OPT_TRACING_BUFFER);
   trace_onelink_only = xbt_cfg_get_int(_surf_cfg_set, OPT_TRACING_ONELINK_ONLY);
   trace_disable_destroy = xbt_cfg_get_int(_surf_cfg_set, OPT_TRACING_DISABLE_DESTROY);
@@ -83,6 +86,7 @@ int TRACE_start()
   created_categories = xbt_dict_new_homogeneous(xbt_free);
   declared_marks = xbt_dict_new_homogeneous (xbt_free);
   user_host_variables = xbt_dict_new_homogeneous (xbt_free);
+  user_vm_variables = xbt_dict_new_homogeneous (xbt_free);
   user_link_variables = xbt_dict_new_homogeneous (xbt_free);
   TRACE_surf_alloc();
   TRACE_smpi_alloc();
@@ -112,6 +116,8 @@ int TRACE_end()
   TRACE_surf_release();
   xbt_dict_free(&user_link_variables);
   xbt_dict_free(&user_host_variables);
+  xbt_dict_free(&user_vm_variables);
+
   xbt_dict_free(&declared_marks);
   xbt_dict_free(&created_categories);
 
@@ -128,6 +134,7 @@ int TRACE_end()
 int TRACE_needs_platform (void)
 {
   return TRACE_msg_process_is_enabled() ||
+         TRACE_msg_vm_is_enabled() ||
          TRACE_categorized() ||
          TRACE_uncategorized() ||
          TRACE_platform () ||
@@ -175,6 +182,12 @@ int TRACE_msg_process_is_enabled(void)
   return trace_msg_process_enabled && TRACE_is_enabled();
 }
 
+int TRACE_msg_vm_is_enabled(void)
+{
+  return trace_msg_vm_enabled && TRACE_is_enabled();
+}
+
+
 int TRACE_buffer (void)
 {
   return trace_buffer && TRACE_is_enabled();
@@ -274,6 +287,13 @@ void TRACE_global_init(int *argc, char **argv)
                    xbt_cfgelm_int, &default_tracing_msg_process, 0, 1,
                    NULL, NULL);
 
+  /* msg process */
+  int default_tracing_msg_vm = 0;
+  xbt_cfg_register(&_surf_cfg_set, OPT_TRACING_MSG_VM,
+                   "Tracing of MSG process behavior.",
+                   xbt_cfgelm_int, &default_tracing_msg_vm, 0, 1,
+                   NULL, NULL);
+
   /* tracing buffer */
   int default_buffer = 1;
   xbt_cfg_register(&_surf_cfg_set, OPT_TRACING_BUFFER,
index 0a80054..ae16b2e 100644 (file)
@@ -22,6 +22,7 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY (instr_api, instr, "API");
 xbt_dict_t created_categories = NULL;
 xbt_dict_t declared_marks = NULL;
 xbt_dict_t user_host_variables = NULL;
+xbt_dict_t user_vm_variables = NULL;
 xbt_dict_t user_link_variables = NULL;
 extern xbt_dict_t trivaNodeTypes;
 extern xbt_dict_t trivaEdgeTypes;
@@ -406,6 +407,165 @@ int TRACE_platform_graph_export_graphviz (const char *filename)
  * into functions so the user can track them using gdb.
  */
 
+/* for VM variables */
+/** \ingroup TRACE_user_variables
+ *  \brief Declare a new user variable associated to VMs.
+ *
+ *  Declare a user variable that will be associated to VMs.
+ *  A user vm variable can be used to trace user variables
+ *  such as the number of tasks in a VM, the number of
+ *  clients in an application (for VMs), and so on. The color
+ *  associated to this new variable will be random.
+ *
+ *  \param variable The name of the new variable to be declared.
+ *
+ *  \see TRACE_vm_variable_declare_with_color
+ */
+void TRACE_vm_variable_declare (const char *variable)
+{
+  instr_user_variable(0, NULL, variable, "VM", 0, INSTR_US_DECLARE, NULL, user_vm_variables);
+}
+
+/** \ingroup TRACE_user_variables
+ *  \brief Declare a new user variable associated to VMs with a color.
+ *
+ *  Same as #TRACE_vm_variable_declare, but associated a color
+ *  to the newly created user host variable. The color needs to be
+ *  a string with three numbers separated by spaces in the range [0,1].
+ *  A light-gray color can be specified using "0.7 0.7 0.7" as color.
+ *
+ *  \param variable The name of the new variable to be declared.
+ *  \param color The color for the new variable.
+ *
+ */
+void TRACE_vm_variable_declare_with_color (const char *variable, const char *color)
+{
+  instr_user_variable(0, NULL, variable, "HOST", 0, INSTR_US_DECLARE, color, user_vm_variables);
+}
+
+/** \ingroup TRACE_user_variables
+ *  \brief Set the value of a variable of a host.
+ *
+ *  \param vm The name of the VM to be considered.
+ *  \param variable The name of the variable to be considered.
+ *  \param value The new value of the variable.
+ *
+ *  \see TRACE_vm_variable_declare, TRACE_vm_variable_add, TRACE_vm_variable_sub
+ */
+void TRACE_vm_variable_set (const char *vm, const char *variable, double value)
+{
+  TRACE_vm_variable_set_with_time (MSG_get_clock(), vm, variable, value);
+}
+
+/** \ingroup TRACE_user_variables
+ *  \brief Add a value to a variable of a VM.
+ *
+ *  \param vm The name of the VM to be considered.
+ *  \param variable The name of the variable to be considered.
+ *  \param value The value to be added to the variable.
+ *
+ *  \see TRACE_vm_variable_declare, TRACE_vm_variable_set, TRACE_vm_variable_sub
+ */
+void TRACE_vm_variable_add (const char *vm, const char *variable, double value)
+{
+  TRACE_vm_variable_add_with_time (MSG_get_clock(), vm, variable, value);
+}
+
+/** \ingroup TRACE_user_variables
+ *  \brief Subtract a value from a variable of a VM.
+ *
+ *  \param vm The name of the vm to be considered.
+ *  \param variable The name of the variable to be considered.
+ *  \param value The value to be subtracted from the variable.
+ *
+ *  \see TRACE_vm_variable_declare, TRACE_vm_variable_set, TRACE_vm_variable_add
+ */
+void TRACE_vm_variable_sub (const char *vm, const char *variable, double value)
+{
+  TRACE_vm_variable_sub_with_time (MSG_get_clock(), vm, variable, value);
+}
+
+/** \ingroup TRACE_user_variables
+ *  \brief Set the value of a variable of a VM at a given timestamp.
+ *
+ *  Same as #TRACE_vm_variable_set, but let user specify
+ *  the time used to trace it. Users can specify a time that
+ *  is not the simulated clock time as defined by the core
+ *  simulator. This allows a fine-grain control of time
+ *  definition, but should be used with caution since the trace
+ *  can be inconsistent if resource utilization traces are also traced.
+ *
+ *  \param time The timestamp to be used to tag this change of value.
+ *  \param vm The name of the VM to be considered.
+ *  \param variable The name of the variable to be considered.
+ *  \param value The new value of the variable.
+ *
+ *  \see TRACE_vm_variable_declare, TRACE_vm_variable_add_with_time, TRACE_vm_variable_sub_with_time
+ */
+void TRACE_vm_variable_set_with_time (double time, const char *vm, const char *variable, double value)
+{
+  instr_user_variable(time, vm, variable, "VM", value, INSTR_US_SET, NULL, user_vm_variables);
+}
+
+/** \ingroup TRACE_user_variables
+ *  \brief Add a value to a variable of a VM at a given timestamp.
+ *
+ *  Same as #TRACE_vm_variable_add, but let user specify
+ *  the time used to trace it. Users can specify a time that
+ *  is not the simulated clock time as defined by the core
+ *  simulator. This allows a fine-grain control of time
+ *  definition, but should be used with caution since the trace
+ *  can be inconsistent if resource utilization traces are also traced.
+ *
+ *  \param time The timestamp to be used to tag this change of value.
+ *  \param vm The name of the VM to be considered.
+ *  \param variable The name of the variable to be considered.
+ *  \param value The value to be added to the variable.
+ *
+ *  \see TRACE_vm_variable_declare, TRACE_vm_variable_set_with_time, TRACE_vm_variable_sub_with_time
+ */
+void TRACE_vm_variable_add_with_time (double time, const char *vm, const char *variable, double value)
+{
+  instr_user_variable(time, vm, variable, "VM", value, INSTR_US_ADD, NULL, user_vm_variables);
+}
+
+/** \ingroup TRACE_user_variables
+ *  \brief Subtract a value from a variable of a VM at a given timestamp.
+ *
+ *  Same as #TRACE_vm_variable_sub, but let user specify
+ *  the time used to trace it. Users can specify a time that
+ *  is not the simulated clock time as defined by the core
+ *  simulator. This allows a fine-grain control of time
+ *  definition, but should be used with caution since the trace
+ *  can be inconsistent if resource utilization traces are also traced.
+ *
+ *  \param time The timestamp to be used to tag this change of value.
+ *  \param vm The name of the VM to be considered.
+ *  \param variable The name of the variable to be considered.
+ *  \param value The value to be subtracted from the variable.
+ *
+ *  \see TRACE_vm_variable_declare, TRACE_vm_variable_set_with_time, TRACE_vm_variable_add_with_time
+ */
+void TRACE_vm_variable_sub_with_time (double time, const char *vm, const char *variable, double value)
+{
+  instr_user_variable(time, vm, variable, "VM", value, INSTR_US_SUB, NULL, user_vm_variables);
+}
+
+/** \ingroup TRACE_user_variables
+ *  \brief Get declared user vm variables
+ *
+ * This function should be used to get VM variables that were already
+ * declared with #TRACE_vm_variable_declare or with #TRACE_vm_variable_declare_with_color.
+ *
+ * \return A dynar with the declared host variables, must be freed with xbt_dynar_free.
+ */
+xbt_dynar_t TRACE_get_vm_variables (void)
+{
+  return instr_dict_to_dynar (user_vm_variables);
+}
+
+
+
 /* for host variables */
 /** \ingroup TRACE_user_variables
  *  \brief Declare a new user variable associated to hosts.
diff --git a/src/instr/instr_msg_vm.c b/src/instr/instr_msg_vm.c
new file mode 100644 (file)
index 0000000..441c115
--- /dev/null
@@ -0,0 +1,143 @@
+/* Copyright (c) 2012. The SimGrid Team.
+ * All rights reserved.                                                     */
+
+/* This program is free software; you can redistribute it and/or modify it
+  * under the terms of the license (GNU LGPL) which comes with this package. */
+
+#include "instr/instr_private.h"
+
+#ifdef HAVE_TRACING
+
+XBT_LOG_NEW_DEFAULT_SUBCATEGORY (instr_msg_vm, instr, "MSG VM");
+
+
+char *instr_vm_id (msg_vm_t vm, char *str, int len)
+{
+  return instr_vm_id_2 (vm->name, str, len);
+}
+
+char *instr_vm_id_2 (const char *vm_name, char *str, int len)
+{
+  snprintf (str, len, "%s", vm_name);
+  return str;
+}
+
+/*
+ * Instrumentation functions to trace MSG VMs (msg_vm_t)
+ */
+void TRACE_msg_vm_change_host(msg_vm_t vm, msg_host_t old_host, msg_host_t new_host)
+{
+  if (TRACE_msg_vm_is_enabled()){
+    static long long int counter = 0;
+    char key[INSTR_DEFAULT_STR_SIZE];
+    snprintf (key, INSTR_DEFAULT_STR_SIZE, "%lld", counter++);
+
+    int len = INSTR_DEFAULT_STR_SIZE;
+    char str[INSTR_DEFAULT_STR_SIZE];
+
+    //start link
+    container_t msg = PJ_container_get (instr_vm_id(vm, str, len));
+    type_t type = PJ_type_get ("MSG_VM_LINK", PJ_type_get_root());
+    new_pajeStartLink (MSG_get_clock(), PJ_container_get_root(), type, msg, "M", key);
+
+    //destroy existing container of this vm
+    container_t existing_container = PJ_container_get(instr_vm_id(vm, str, len));
+    PJ_container_remove_from_parent (existing_container);
+    PJ_container_free(existing_container);
+
+    //create new container on the new_host location
+    msg = PJ_container_new(instr_vm_id(vm, str, len), INSTR_MSG_VM, PJ_container_get(SIMIX_host_get_name(new_host->smx_host)));
+
+    //end link
+    msg = PJ_container_get(instr_vm_id(vm, str, len));
+    type = PJ_type_get ("MSG_VM_LINK", PJ_type_get_root());
+    new_pajeEndLink (MSG_get_clock(), PJ_container_get_root(), type, msg, "M", key);
+  }
+}
+
+void TRACE_msg_vm_create (const char *vm_name, msg_host_t host)
+{
+  if (TRACE_msg_vm_is_enabled()){
+    int len = INSTR_DEFAULT_STR_SIZE;
+    char str[INSTR_DEFAULT_STR_SIZE];
+
+    container_t host_container = PJ_container_get (SIMIX_host_get_name(host->smx_host));
+    PJ_container_new(instr_vm_id_2(vm_name, str, len), INSTR_MSG_VM, host_container);
+  }
+}
+
+void TRACE_msg_vm_kill(msg_vm_t vm)
+{
+  if (TRACE_msg_vm_is_enabled()){
+    int len = INSTR_DEFAULT_STR_SIZE;
+    char str[INSTR_DEFAULT_STR_SIZE];
+
+    //kill means that this vm no longer exists, let's destroy it
+    PJ_container_free (PJ_container_get (instr_vm_id(vm, str, len)));
+  }
+}
+
+void TRACE_msg_vm_suspend(msg_vm_t vm)
+{
+  if (TRACE_msg_vm_is_enabled()){
+    int len = INSTR_DEFAULT_STR_SIZE;
+    char str[INSTR_DEFAULT_STR_SIZE];
+
+    container_t vm_container = PJ_container_get (instr_vm_id(vm, str, len));
+    type_t type = PJ_type_get ("MSG_VM_STATE", vm_container->type);
+    val_t value = PJ_value_get ("suspend", type);
+    new_pajePushState (MSG_get_clock(), vm_container, type, value);
+  }
+}
+
+void TRACE_msg_vm_resume(msg_vm_t vm)
+{
+  if (TRACE_msg_vm_is_enabled()){
+    int len = INSTR_DEFAULT_STR_SIZE;
+    char str[INSTR_DEFAULT_STR_SIZE];
+
+    container_t vm_container = PJ_container_get (instr_vm_id(vm, str, len));
+    type_t type = PJ_type_get ("MSG_VM_STATE", vm_container->type);
+    new_pajePopState (MSG_get_clock(), vm_container, type);
+  }
+}
+
+void TRACE_msg_vm_sleep_in(msg_vm_t vm)
+{
+  if (TRACE_msg_vm_is_enabled()){
+    int len = INSTR_DEFAULT_STR_SIZE;
+    char str[INSTR_DEFAULT_STR_SIZE];
+
+    container_t vm_container = PJ_container_get (instr_vm_id(vm, str, len));
+    type_t type = PJ_type_get ("MSG_VM_STATE", vm_container->type);
+    val_t value = PJ_value_get ("sleep", type);
+    new_pajePushState (MSG_get_clock(), vm_container, type, value);
+  }
+}
+
+void TRACE_msg_vm_sleep_out(msg_vm_t vm)
+{
+  if (TRACE_msg_vm_is_enabled()){
+    int len = INSTR_DEFAULT_STR_SIZE;
+    char str[INSTR_DEFAULT_STR_SIZE];
+
+    container_t vm_container = PJ_container_get (instr_vm_id(vm, str, len));
+    type_t type = PJ_type_get ("MSG_VM_STATE", vm_container->type);
+    new_pajePopState (MSG_get_clock(), vm_container, type);
+  }
+}
+
+void TRACE_msg_vm_end(msg_vm_t vm)
+{
+  if (TRACE_msg_vm_is_enabled()) {
+    int len = INSTR_DEFAULT_STR_SIZE;
+    char str[INSTR_DEFAULT_STR_SIZE];
+
+    //that's the end, let's destroy it
+    container_t container = PJ_container_get (instr_vm_id(vm, str, len));
+    PJ_container_remove_from_parent (container);
+    PJ_container_free (container);
+  }
+}
+
+#endif /* HAVE_TRACING */
index 1b6068f..fe73bf0 100644 (file)
@@ -57,6 +57,7 @@ typedef enum {
   INSTR_ROUTER,
   INSTR_AS,
   INSTR_SMPI,
+  INSTR_MSG_VM,
   INSTR_MSG_PROCESS,
   INSTR_MSG_TASK
 } e_container_types;
@@ -76,6 +77,7 @@ typedef struct s_container {
 extern xbt_dict_t created_categories;
 extern xbt_dict_t declared_marks;
 extern xbt_dict_t user_host_variables;
+extern xbt_dict_t user_vm_variables;
 extern xbt_dict_t user_link_variables;
 extern double TRACE_last_timestamp_to_dump;
 
@@ -127,6 +129,19 @@ void TRACE_msg_process_sleep_in(msg_process_t process);   //called from msg/gos.
 void TRACE_msg_process_sleep_out(msg_process_t process);
 void TRACE_msg_process_end(msg_process_t process);
 
+/* declaration of instrumentation functions from instr_msg_vm.c */
+char *instr_vm_id (msg_vm_t vm, char *str, int len);
+char *instr_vm_id_2 (const char *vm_name, char *str, int len);
+void TRACE_msg_vm_change_host(msg_vm_t vm, msg_host_t old_host,
+                                   msg_host_t new_host);
+void TRACE_msg_vm_create (const char *vm_name, msg_host_t host);
+void TRACE_msg_vm_kill(msg_vm_t process);
+void TRACE_msg_vm_suspend(msg_vm_t vm);
+void TRACE_msg_vm_resume(msg_vm_t vm);
+void TRACE_msg_vm_sleep_in(msg_vm_t vm); 
+void TRACE_msg_vm_sleep_out(msg_vm_t vm);
+void TRACE_msg_vm_end(msg_vm_t vm);
+
 /* from surf_instr.c */
 void TRACE_surf_alloc(void);
 void TRACE_surf_release(void);
index e305860..274b93b 100644 (file)
@@ -133,12 +133,12 @@ static void recursiveGraphExtraction (AS_t rc, container_t container, xbt_dict_t
   container_t child1, child2;
   const char *child1_name, *child2_name;
   xbt_dict_foreach(container->children, cursor1, child1_name, child1) {
-    //if child1 is not a link, a smpi node, a msg process or a msg task
-    if (child1->kind == INSTR_LINK || child1->kind == INSTR_SMPI || child1->kind == INSTR_MSG_PROCESS || child1->kind == INSTR_MSG_TASK) continue;
+    //if child1 is not a link, a smpi node, a msg process, a msg vm or a msg task
+    if (child1->kind == INSTR_LINK || child1->kind == INSTR_SMPI || child1->kind == INSTR_MSG_PROCESS || child1->kind == INSTR_MSG_VM || child1->kind == INSTR_MSG_TASK) continue;
 
     xbt_dict_foreach(container->children, cursor2, child2_name, child2) {
-      //if child2 is not a link, a smpi node, a msg process or a msg task
-      if (child2->kind == INSTR_LINK || child2->kind == INSTR_SMPI || child2->kind == INSTR_MSG_PROCESS || child2->kind == INSTR_MSG_TASK) continue;
+      //if child2 is not a link, a smpi node, a msg process, a msg vm or a msg task
+      if (child2->kind == INSTR_LINK || child2->kind == INSTR_SMPI || child2->kind == INSTR_MSG_PROCESS || child2->kind == INSTR_MSG_VM || child2->kind == INSTR_MSG_TASK) continue;
 
       //if child1 is not child2
       if (strcmp (child1_name, child2_name) == 0) continue;
@@ -316,6 +316,22 @@ static void instr_routing_parse_start_host (sg_platf_host_cbarg_t host)
       PJ_type_link_new ("MSG_PROCESS_TASK_LINK", PJ_type_get_root(), msg_process, msg_process);
     }
   }
+
+  if (TRACE_msg_vm_is_enabled()) {
+    type_t msg_vm = PJ_type_get_or_null ("MSG_VM", new->type);
+    if (msg_vm == NULL){
+      msg_vm = PJ_type_container_new("MSG_VM", new->type);
+      type_t state = PJ_type_state_new ("MSG_VM_STATE", msg_vm);
+      PJ_value_new ("suspend", "1 0 1", state);
+      PJ_value_new ("sleep", "1 1 0", state);
+      PJ_value_new ("receive", "1 0 0", state);
+      PJ_value_new ("send", "0 0 1", state);
+      PJ_value_new ("task_execute", "0 1 1", state);
+      PJ_type_link_new ("MSG_VM_LINK", PJ_type_get_root(), msg_vm, msg_vm);
+      PJ_type_link_new ("MSG_VM_PROCESS_LINK", PJ_type_get_root(), msg_vm, msg_vm);
+    }
+  }
+
 }
 
 static void instr_routing_parse_start_router (sg_platf_router_cbarg_t router)
@@ -360,7 +376,12 @@ static void recursiveNewVariableType (const char *new_typename, const char *colo
     snprintf (tnstr, INSTR_DEFAULT_STR_SIZE, "p%s", new_typename);
     PJ_type_variable_new (tnstr, color, root);
   }
-  if (!strcmp (root->name, "LINK")){
+  if (!strcmp (root->name, "VM")){
+    char tnstr[INSTR_DEFAULT_STR_SIZE];
+    snprintf (tnstr, INSTR_DEFAULT_STR_SIZE, "p%s", new_typename);
+    PJ_type_variable_new (tnstr, color, root);
+  }
+ if (!strcmp (root->name, "LINK")){
     char tnstr[INSTR_DEFAULT_STR_SIZE];
     snprintf (tnstr, INSTR_DEFAULT_STR_SIZE, "b%s", new_typename);
     PJ_type_variable_new (tnstr, color, root);
@@ -494,12 +515,12 @@ static void recursiveXBTGraphExtraction (xbt_graph_t graph, xbt_dict_t nodes, xb
   container_t child1, child2;
   const char *child1_name, *child2_name;
   xbt_dict_foreach(container->children, cursor1, child1_name, child1) {
-    //if child1 is not a link, a smpi node, a msg process or a msg task
-    if (child1->kind == INSTR_LINK || child1->kind == INSTR_SMPI || child1->kind == INSTR_MSG_PROCESS || child1->kind == INSTR_MSG_TASK) continue;
+    //if child1 is not a link, a smpi node, a msg process, a msg vm or a msg task
+    if (child1->kind == INSTR_LINK || child1->kind == INSTR_SMPI || child1->kind == INSTR_MSG_PROCESS || child1->kind == INSTR_MSG_VM || child1->kind == INSTR_MSG_TASK) continue;
 
     xbt_dict_foreach(container->children, cursor2, child2_name, child2) {
       //if child2 is not a link, a smpi node, a msg process or a msg task
-      if (child2->kind == INSTR_LINK || child2->kind == INSTR_SMPI || child2->kind == INSTR_MSG_PROCESS || child2->kind == INSTR_MSG_TASK) continue;
+      if (child2->kind == INSTR_LINK || child2->kind == INSTR_SMPI || child2->kind == INSTR_MSG_PROCESS || child2->kind == INSTR_MSG_VM || child2->kind == INSTR_MSG_TASK) continue;
 
       //if child1 is not child2
       if (strcmp (child1_name, child2_name) == 0) continue;
index 97af923..d5a93f6 100644 (file)
@@ -92,12 +92,13 @@ typedef struct msg_comm {
   msg_task_t *task_received;      /* where the task will be received (NULL for the sender) */
   msg_error_t status;           /* status of the communication once finished */
 } s_msg_comm_t;
-
+/*
 typedef enum {
   msg_vm_state_suspended, msg_vm_state_running, msg_vm_state_migrating
 } e_msg_vm_state_t;
 
 typedef struct msg_vm {
+  const char *name;
   s_xbt_swag_hookup_t all_vms_hookup;
   s_xbt_swag_hookup_t host_vms_hookup;
   xbt_dynar_t processes;
@@ -105,7 +106,7 @@ typedef struct msg_vm {
   msg_host_t location;
   int coreAmount;
 } s_msg_vm_t;
-
+*/
 /************************** Global variables ********************************/
 typedef struct MSG_Global {
   xbt_fifo_t host;
index 4e06196..426bbb7 100644 (file)
@@ -17,18 +17,24 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(msg_vm, msg,
  *  to add extra constraints on the execution, but the argument is ignored for now.
  */
 
-msg_vm_t MSG_vm_start(msg_host_t location, int coreAmount) {
+msg_vm_t MSG_vm_start(msg_host_t location, const char *name, int coreAmount) {
   msg_vm_t res = xbt_new0(s_msg_vm_t,1);
   res->all_vms_hookup.prev = NULL;
   res->host_vms_hookup.prev = NULL;
   res->state = msg_vm_state_running;
   res->location = location;
   res->coreAmount = coreAmount;
+  res->name = xbt_strdup(name);
   res->processes = xbt_dynar_new(sizeof(msg_process_t),NULL);
 
   xbt_swag_insert(res,msg_global->vms);
   xbt_swag_insert(res,location->vms);
 
+  #ifdef HAVE_TRACING
+  TRACE_msg_vm_create(name, location);
+  #endif
+
+
   return res;
 }
 /** @brief Returns a newly constructed dynar containing all existing VMs in the system.
@@ -107,6 +113,11 @@ void MSG_vm_migrate(msg_vm_t vm, msg_host_t destination) {
   }
   xbt_swag_remove(vm,vm->location->vms);
   xbt_swag_insert_at_tail(vm,destination->vms);
+  
+  #ifdef HAVE_TRACING
+  TRACE_msg_vm_change_host(vm,vm->location,destination);
+  #endif
+
   vm->location = destination;
 }
 
@@ -124,6 +135,10 @@ void MSG_vm_suspend(msg_vm_t vm) {
     XBT_DEBUG("suspend process %s of host %s",MSG_process_get_name(process),MSG_host_get_name(MSG_process_get_host(process)));
     MSG_process_suspend(process);
   }
+
+  #ifdef HAVE_TRACING
+  TRACE_msg_vm_suspend(vm);
+  #endif
 }
 
 /** @brief Immediately resumes the execution of all processes within the given VM.
@@ -140,6 +155,10 @@ void MSG_vm_resume(msg_vm_t vm) {
     XBT_DEBUG("resume process %s of host %s",MSG_process_get_name(process),MSG_host_get_name(MSG_process_get_host(process)));
     MSG_process_resume(process);
   }
+
+  #ifdef HAVE_TRACING
+  TRACE_msg_vm_resume(vm);
+  #endif
 }
 
 /** @brief Immediately kills all processes within the given VM. Any memory that they allocated will be leaked.
@@ -156,6 +175,11 @@ void MSG_vm_shutdown(msg_vm_t vm)
     process = xbt_dynar_get_as(vm->processes,0,msg_process_t);
     MSG_process_kill(process);
   }
+
+  #ifdef HAVE_TRACING
+  TRACE_msg_vm_kill(vm);
+  #endif
+
 }
 /**
  * \ingroup msg_VMs
@@ -191,6 +215,12 @@ void MSG_vm_destroy(msg_vm_t vm) {
     simdata_process_t simdata = simcall_process_get_data(process);
     simdata->vm = NULL;
   }
+
+  #ifdef HAVE_TRACING
+  TRACE_msg_vm_end(vm);
+  #endif
+
+
   xbt_dynar_free(&vm->processes);
   xbt_free(vm);
 }
index 29c6072..94df936 100644 (file)
@@ -1259,8 +1259,8 @@ char *dax_text;
  *
  * This program was generated with the FleXML XML processor generator.
  * FleXML is Copyright (C) 1999-2005 Kristoffer Rose.  All rights reserved.
- * FleXML is Copyright (C) 2003-2011 Martin Quinson.  All rights reserved.
- * (Id: flexml.pl,v 1.67 2011/11/01 20:49:21 mquinson Exp).
+ * FleXML is Copyright (C) 2003-2006 Martin Quinson.  All rights reserved.
+ * (Id: flexml.pl,v 1.62 2007/10/11 10:00:14 mquinson Exp).
  * 
  * There are two, intertwined parts to this program, part A and part B.
  *
@@ -1269,7 +1269,7 @@ char *dax_text;
  * 
  * Some parts, here collectively called "Part A", are found in the 
  * FleXML package.  They are Copyright (C) 1999-2005 Kristoffer Rose
- * and Copyright (C) 2003-2011 Martin Quinson. All rights reserved.
+ * and Copyright (C) 2003-2006 Martin Quinson. All rights reserved.
  *
  * You can redistribute, use, perform, display and/or modify "Part A"
  * provided the following two conditions hold:
@@ -1305,7 +1305,7 @@ char *dax_text;
 const char rcs_dax__flexml_skeleton[] =
  "$" "Id: skel,v 1.40 2007/10/11 09:57:24 mquinson Exp $";
 const char rcs_dax__flexml[] =
- "$" "Id: flexml.pl,v 1.67 2011/11/01 20:49:21 mquinson Exp $";
+ "$" "Id: flexml.pl,v 1.62 2007/10/11 10:00:14 mquinson Exp $";
 
 /* ANSI headers. */
 #include <stdlib.h> /* for realloc() -- needed here when using flex 2.5.4 */
@@ -1342,79 +1342,54 @@ extern char *dax__bufferstack;
 #define dax__pcdata (dax__bufferstack + dax__pcdata_ix)
 AT_dax__adag_version AX_dax__adag_version;
 #define A_dax__adag_version (dax__bufferstack + AX_dax__adag_version)
-short int dax__adag_version_isset;
 AT_dax__uses_type AX_dax__uses_type;
 #define A_dax__uses_type (dax__bufferstack + AX_dax__uses_type)
-short int dax__uses_type_isset;
 AT_dax__uses_optional AX_dax__uses_optional;
 #define A_dax__uses_optional AX_dax__uses_optional
-short int dax__uses_optional_isset;
 AT_dax__adag_name AX_dax__adag_name;
 #define A_dax__adag_name (dax__bufferstack + AX_dax__adag_name)
-short int dax__adag_name_isset;
 AT_dax__child_ref AX_dax__child_ref;
 #define A_dax__child_ref (dax__bufferstack + AX_dax__child_ref)
-short int dax__child_ref_isset;
 AT_dax__adag_xmlns AX_dax__adag_xmlns;
 #define A_dax__adag_xmlns (dax__bufferstack + AX_dax__adag_xmlns)
-short int dax__adag_xmlns_isset;
 AT_dax__uses_transfer AX_dax__uses_transfer;
 #define A_dax__uses_transfer AX_dax__uses_transfer
-short int dax__uses_transfer_isset;
 AT_dax__job_id AX_dax__job_id;
 #define A_dax__job_id (dax__bufferstack + AX_dax__job_id)
-short int dax__job_id_isset;
 AT_dax__uses_file AX_dax__uses_file;
 #define A_dax__uses_file (dax__bufferstack + AX_dax__uses_file)
-short int dax__uses_file_isset;
 AT_dax__parent_ref AX_dax__parent_ref;
 #define A_dax__parent_ref (dax__bufferstack + AX_dax__parent_ref)
-short int dax__parent_ref_isset;
 AT_dax__adag_count AX_dax__adag_count;
 #define A_dax__adag_count (dax__bufferstack + AX_dax__adag_count)
-short int dax__adag_count_isset;
 AT_dax__adag_xmlns_c_xsi AX_dax__adag_xmlns_c_xsi;
 #define A_dax__adag_xmlns_c_xsi (dax__bufferstack + AX_dax__adag_xmlns_c_xsi)
-short int dax__adag_xmlns_c_xsi_isset;
 AT_dax__adag_index AX_dax__adag_index;
 #define A_dax__adag_index (dax__bufferstack + AX_dax__adag_index)
-short int dax__adag_index_isset;
 AT_dax__uses_size AX_dax__uses_size;
 #define A_dax__uses_size (dax__bufferstack + AX_dax__uses_size)
-short int dax__uses_size_isset;
 AT_dax__adag_childCount AX_dax__adag_childCount;
 #define A_dax__adag_childCount (dax__bufferstack + AX_dax__adag_childCount)
-short int dax__adag_childCount_isset;
 AT_dax__uses_link AX_dax__uses_link;
 #define A_dax__uses_link AX_dax__uses_link
-short int dax__uses_link_isset;
 AT_dax__job_runtime AX_dax__job_runtime;
 #define A_dax__job_runtime (dax__bufferstack + AX_dax__job_runtime)
-short int dax__job_runtime_isset;
 AT_dax__job_level AX_dax__job_level;
 #define A_dax__job_level (dax__bufferstack + AX_dax__job_level)
-short int dax__job_level_isset;
 AT_dax__job_namespace AX_dax__job_namespace;
 #define A_dax__job_namespace (dax__bufferstack + AX_dax__job_namespace)
-short int dax__job_namespace_isset;
 AT_dax__job_name AX_dax__job_name;
 #define A_dax__job_name (dax__bufferstack + AX_dax__job_name)
-short int dax__job_name_isset;
 AT_dax__adag_jobCount AX_dax__adag_jobCount;
 #define A_dax__adag_jobCount (dax__bufferstack + AX_dax__adag_jobCount)
-short int dax__adag_jobCount_isset;
 AT_dax__job_version AX_dax__job_version;
 #define A_dax__job_version (dax__bufferstack + AX_dax__job_version)
-short int dax__job_version_isset;
 AT_dax__adag_xsi_c_schemaLocation AX_dax__adag_xsi_c_schemaLocation;
 #define A_dax__adag_xsi_c_schemaLocation (dax__bufferstack + AX_dax__adag_xsi_c_schemaLocation)
-short int dax__adag_xsi_c_schemaLocation_isset;
 AT_dax__uses_register AX_dax__uses_register;
 #define A_dax__uses_register AX_dax__uses_register
-short int dax__uses_register_isset;
 AT_dax__adag_fileCount AX_dax__adag_fileCount;
 #define A_dax__adag_fileCount (dax__bufferstack + AX_dax__adag_fileCount)
-short int dax__adag_fileCount_isset;
 
 /* XML state. */
 #ifdef FLEX_DEBUG
@@ -1498,24 +1473,13 @@ static int ck_ilimit()
 #ifdef FLEXML_NEED_BUFFERLIT
 static void dax__bufferliteral(char c, int* pp, const char* text)
 {
-   BUFFERSET(*pp);
-   if (c) {
-      const char *s = strchr(text, c), *e = strrchr(text, c);
-      assert(s && e && s <= e);
-      ++s;
-      while (s < e) {
-        if (isspace(*s)) {
-           BUFFERPUTC(' ');
-           do ++s; while (s < e && isspace(*s));
-        } else
-          BUFFERPUTC(*s++);
-      }
-   } else {
-      const char *s = text;
-      while (*s)
-       BUFFERPUTC(*s++);
-   }
-   BUFFERDONE;
+  const char *s = (c ? strchr(text,c) : text-1), *e = strrchr(text,c);
+  assert(s <= e); BUFFERSET(*pp);
+  while (++s<e) {
+    if (isspace(*s) && c) { BUFFERPUTC(' '); while (isspace(*s)) ++s; }
+    else BUFFERPUTC(*s);
+  }
+  BUFFERDONE;
 }
 #endif
 
@@ -2035,25 +1999,15 @@ case 17:
 YY_RULE_SETUP
 {
   AX_dax__adag_xmlns = 1;
-  dax__adag_xmlns_isset = 0;
   AX_dax__adag_xmlns_c_xsi = 35;
-  dax__adag_xmlns_c_xsi_isset = 0;
   AX_dax__adag_xsi_c_schemaLocation = 77;
-  dax__adag_xsi_c_schemaLocation_isset = 0;
   AX_dax__adag_version = 153;
-  dax__adag_version_isset = 0;
   AX_dax__adag_count = 0;
-  dax__adag_count_isset = 0;
   AX_dax__adag_index = 0;
-  dax__adag_index_isset = 0;
   AX_dax__adag_name = 0;
-  dax__adag_name_isset = 0;
   AX_dax__adag_jobCount = 0;
-  dax__adag_jobCount_isset = 0;
   AX_dax__adag_fileCount = 0;
-  dax__adag_fileCount_isset = 0;
   AX_dax__adag_childCount = 0;
-  dax__adag_childCount_isset = 0;
   ENTER(AL_dax__adag); pushbuffer(0);
   }
        YY_BREAK
@@ -2061,102 +2015,102 @@ YY_RULE_SETUP
 case 18:
 /* rule 18 can match eol */
 YY_RULE_SETUP
-if (dax__adag_xmlns_isset != 0) {FAIL("Multiple definition of attribute xmlns in <dax__adag>");} dax__adag_xmlns_isset = 1; ENTER(VALUE1); BUFFERSET(AX_dax__adag_xmlns);
+ENTER(VALUE1); BUFFERSET(AX_dax__adag_xmlns);
        YY_BREAK
 case 19:
 /* rule 19 can match eol */
 YY_RULE_SETUP
-if (dax__adag_xmlns_isset != 0) {FAIL("Multiple definition of attribute xmlns in <dax__adag>");}  dax__adag_xmlns_isset = 1; ENTER(VALUE2); BUFFERSET(AX_dax__adag_xmlns);
+ENTER(VALUE2); BUFFERSET(AX_dax__adag_xmlns);
        YY_BREAK
 case 20:
 /* rule 20 can match eol */
 YY_RULE_SETUP
-if (dax__adag_xmlns_c_xsi_isset != 0) {FAIL("Multiple definition of attribute xmlns:xsi in <dax__adag>");} dax__adag_xmlns_c_xsi_isset = 1; ENTER(VALUE1); BUFFERSET(AX_dax__adag_xmlns_c_xsi);
+ENTER(VALUE1); BUFFERSET(AX_dax__adag_xmlns_c_xsi);
        YY_BREAK
 case 21:
 /* rule 21 can match eol */
 YY_RULE_SETUP
-if (dax__adag_xmlns_c_xsi_isset != 0) {FAIL("Multiple definition of attribute xmlns:xsi in <dax__adag>");}  dax__adag_xmlns_c_xsi_isset = 1; ENTER(VALUE2); BUFFERSET(AX_dax__adag_xmlns_c_xsi);
+ENTER(VALUE2); BUFFERSET(AX_dax__adag_xmlns_c_xsi);
        YY_BREAK
 case 22:
 /* rule 22 can match eol */
 YY_RULE_SETUP
-if (dax__adag_xsi_c_schemaLocation_isset != 0) {FAIL("Multiple definition of attribute xsi:schemaLocation in <dax__adag>");} dax__adag_xsi_c_schemaLocation_isset = 1; ENTER(VALUE1); BUFFERSET(AX_dax__adag_xsi_c_schemaLocation);
+ENTER(VALUE1); BUFFERSET(AX_dax__adag_xsi_c_schemaLocation);
        YY_BREAK
 case 23:
 /* rule 23 can match eol */
 YY_RULE_SETUP
-if (dax__adag_xsi_c_schemaLocation_isset != 0) {FAIL("Multiple definition of attribute xsi:schemaLocation in <dax__adag>");}  dax__adag_xsi_c_schemaLocation_isset = 1; ENTER(VALUE2); BUFFERSET(AX_dax__adag_xsi_c_schemaLocation);
+ENTER(VALUE2); BUFFERSET(AX_dax__adag_xsi_c_schemaLocation);
        YY_BREAK
 case 24:
 /* rule 24 can match eol */
 YY_RULE_SETUP
-if (dax__adag_version_isset != 0) {FAIL("Multiple definition of attribute version in <dax__adag>");} dax__adag_version_isset = 1; ENTER(VALUE1); BUFFERSET(AX_dax__adag_version);
+ENTER(VALUE1); BUFFERSET(AX_dax__adag_version);
        YY_BREAK
 case 25:
 /* rule 25 can match eol */
 YY_RULE_SETUP
-if (dax__adag_version_isset != 0) {FAIL("Multiple definition of attribute version in <dax__adag>");}  dax__adag_version_isset = 1; ENTER(VALUE2); BUFFERSET(AX_dax__adag_version);
+ENTER(VALUE2); BUFFERSET(AX_dax__adag_version);
        YY_BREAK
 case 26:
 /* rule 26 can match eol */
 YY_RULE_SETUP
-if (dax__adag_count_isset != 0) {FAIL("Multiple definition of attribute count in <dax__adag>");} dax__adag_count_isset = 1; ENTER(VALUE1); BUFFERSET(AX_dax__adag_count);
+ENTER(VALUE1); BUFFERSET(AX_dax__adag_count);
        YY_BREAK
 case 27:
 /* rule 27 can match eol */
 YY_RULE_SETUP
-if (dax__adag_count_isset != 0) {FAIL("Multiple definition of attribute count in <dax__adag>");}  dax__adag_count_isset = 1; ENTER(VALUE2); BUFFERSET(AX_dax__adag_count);
+ENTER(VALUE2); BUFFERSET(AX_dax__adag_count);
        YY_BREAK
 case 28:
 /* rule 28 can match eol */
 YY_RULE_SETUP
-if (dax__adag_index_isset != 0) {FAIL("Multiple definition of attribute index in <dax__adag>");} dax__adag_index_isset = 1; ENTER(VALUE1); BUFFERSET(AX_dax__adag_index);
+ENTER(VALUE1); BUFFERSET(AX_dax__adag_index);
        YY_BREAK
 case 29:
 /* rule 29 can match eol */
 YY_RULE_SETUP
-if (dax__adag_index_isset != 0) {FAIL("Multiple definition of attribute index in <dax__adag>");}  dax__adag_index_isset = 1; ENTER(VALUE2); BUFFERSET(AX_dax__adag_index);
+ENTER(VALUE2); BUFFERSET(AX_dax__adag_index);
        YY_BREAK
 case 30:
 /* rule 30 can match eol */
 YY_RULE_SETUP
-if (dax__adag_name_isset != 0) {FAIL("Multiple definition of attribute name in <dax__adag>");} dax__adag_name_isset = 1; ENTER(VALUE1); BUFFERSET(AX_dax__adag_name);
+ENTER(VALUE1); BUFFERSET(AX_dax__adag_name);
        YY_BREAK
 case 31:
 /* rule 31 can match eol */
 YY_RULE_SETUP
-if (dax__adag_name_isset != 0) {FAIL("Multiple definition of attribute name in <dax__adag>");}  dax__adag_name_isset = 1; ENTER(VALUE2); BUFFERSET(AX_dax__adag_name);
+ENTER(VALUE2); BUFFERSET(AX_dax__adag_name);
        YY_BREAK
 case 32:
 /* rule 32 can match eol */
 YY_RULE_SETUP
-if (dax__adag_jobCount_isset != 0) {FAIL("Multiple definition of attribute jobCount in <dax__adag>");} dax__adag_jobCount_isset = 1; ENTER(VALUE1); BUFFERSET(AX_dax__adag_jobCount);
+ENTER(VALUE1); BUFFERSET(AX_dax__adag_jobCount);
        YY_BREAK
 case 33:
 /* rule 33 can match eol */
 YY_RULE_SETUP
-if (dax__adag_jobCount_isset != 0) {FAIL("Multiple definition of attribute jobCount in <dax__adag>");}  dax__adag_jobCount_isset = 1; ENTER(VALUE2); BUFFERSET(AX_dax__adag_jobCount);
+ENTER(VALUE2); BUFFERSET(AX_dax__adag_jobCount);
        YY_BREAK
 case 34:
 /* rule 34 can match eol */
 YY_RULE_SETUP
-if (dax__adag_fileCount_isset != 0) {FAIL("Multiple definition of attribute fileCount in <dax__adag>");} dax__adag_fileCount_isset = 1; ENTER(VALUE1); BUFFERSET(AX_dax__adag_fileCount);
+ENTER(VALUE1); BUFFERSET(AX_dax__adag_fileCount);
        YY_BREAK
 case 35:
 /* rule 35 can match eol */
 YY_RULE_SETUP
-if (dax__adag_fileCount_isset != 0) {FAIL("Multiple definition of attribute fileCount in <dax__adag>");}  dax__adag_fileCount_isset = 1; ENTER(VALUE2); BUFFERSET(AX_dax__adag_fileCount);
+ENTER(VALUE2); BUFFERSET(AX_dax__adag_fileCount);
        YY_BREAK
 case 36:
 /* rule 36 can match eol */
 YY_RULE_SETUP
-if (dax__adag_childCount_isset != 0) {FAIL("Multiple definition of attribute childCount in <dax__adag>");} dax__adag_childCount_isset = 1; ENTER(VALUE1); BUFFERSET(AX_dax__adag_childCount);
+ENTER(VALUE1); BUFFERSET(AX_dax__adag_childCount);
        YY_BREAK
 case 37:
 /* rule 37 can match eol */
 YY_RULE_SETUP
-if (dax__adag_childCount_isset != 0) {FAIL("Multiple definition of attribute childCount in <dax__adag>");}  dax__adag_childCount_isset = 1; ENTER(VALUE2); BUFFERSET(AX_dax__adag_childCount);
+ENTER(VALUE2); BUFFERSET(AX_dax__adag_childCount);
        YY_BREAK
 case 38:
 YY_RULE_SETUP
@@ -2224,17 +2178,11 @@ case 46:
 YY_RULE_SETUP
 {
   AX_dax__job_id = 0;
-  dax__job_id_isset = 0;
   AX_dax__job_namespace = 0;
-  dax__job_namespace_isset = 0;
   AX_dax__job_name = 0;
-  dax__job_name_isset = 0;
   AX_dax__job_version = 157;
-  dax__job_version_isset = 0;
   AX_dax__job_runtime = 0;
-  dax__job_runtime_isset = 0;
   AX_dax__job_level = 0;
-  dax__job_level_isset = 0;
   ENTER(AL_dax__job); pushbuffer(0);
   }
        YY_BREAK
@@ -2242,62 +2190,62 @@ YY_RULE_SETUP
 case 47:
 /* rule 47 can match eol */
 YY_RULE_SETUP
-if (dax__job_id_isset != 0) {FAIL("Multiple definition of attribute id in <dax__job>");} dax__job_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_dax__job_id);
+ENTER(VALUE1); BUFFERSET(AX_dax__job_id);
        YY_BREAK
 case 48:
 /* rule 48 can match eol */
 YY_RULE_SETUP
-if (dax__job_id_isset != 0) {FAIL("Multiple definition of attribute id in <dax__job>");}  dax__job_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_dax__job_id);
+ENTER(VALUE2); BUFFERSET(AX_dax__job_id);
        YY_BREAK
 case 49:
 /* rule 49 can match eol */
 YY_RULE_SETUP
-if (dax__job_namespace_isset != 0) {FAIL("Multiple definition of attribute namespace in <dax__job>");} dax__job_namespace_isset = 1; ENTER(VALUE1); BUFFERSET(AX_dax__job_namespace);
+ENTER(VALUE1); BUFFERSET(AX_dax__job_namespace);
        YY_BREAK
 case 50:
 /* rule 50 can match eol */
 YY_RULE_SETUP
-if (dax__job_namespace_isset != 0) {FAIL("Multiple definition of attribute namespace in <dax__job>");}  dax__job_namespace_isset = 1; ENTER(VALUE2); BUFFERSET(AX_dax__job_namespace);
+ENTER(VALUE2); BUFFERSET(AX_dax__job_namespace);
        YY_BREAK
 case 51:
 /* rule 51 can match eol */
 YY_RULE_SETUP
-if (dax__job_name_isset != 0) {FAIL("Multiple definition of attribute name in <dax__job>");} dax__job_name_isset = 1; ENTER(VALUE1); BUFFERSET(AX_dax__job_name);
+ENTER(VALUE1); BUFFERSET(AX_dax__job_name);
        YY_BREAK
 case 52:
 /* rule 52 can match eol */
 YY_RULE_SETUP
-if (dax__job_name_isset != 0) {FAIL("Multiple definition of attribute name in <dax__job>");}  dax__job_name_isset = 1; ENTER(VALUE2); BUFFERSET(AX_dax__job_name);
+ENTER(VALUE2); BUFFERSET(AX_dax__job_name);
        YY_BREAK
 case 53:
 /* rule 53 can match eol */
 YY_RULE_SETUP
-if (dax__job_version_isset != 0) {FAIL("Multiple definition of attribute version in <dax__job>");} dax__job_version_isset = 1; ENTER(VALUE1); BUFFERSET(AX_dax__job_version);
+ENTER(VALUE1); BUFFERSET(AX_dax__job_version);
        YY_BREAK
 case 54:
 /* rule 54 can match eol */
 YY_RULE_SETUP
-if (dax__job_version_isset != 0) {FAIL("Multiple definition of attribute version in <dax__job>");}  dax__job_version_isset = 1; ENTER(VALUE2); BUFFERSET(AX_dax__job_version);
+ENTER(VALUE2); BUFFERSET(AX_dax__job_version);
        YY_BREAK
 case 55:
 /* rule 55 can match eol */
 YY_RULE_SETUP
-if (dax__job_runtime_isset != 0) {FAIL("Multiple definition of attribute runtime in <dax__job>");} dax__job_runtime_isset = 1; ENTER(VALUE1); BUFFERSET(AX_dax__job_runtime);
+ENTER(VALUE1); BUFFERSET(AX_dax__job_runtime);
        YY_BREAK
 case 56:
 /* rule 56 can match eol */
 YY_RULE_SETUP
-if (dax__job_runtime_isset != 0) {FAIL("Multiple definition of attribute runtime in <dax__job>");}  dax__job_runtime_isset = 1; ENTER(VALUE2); BUFFERSET(AX_dax__job_runtime);
+ENTER(VALUE2); BUFFERSET(AX_dax__job_runtime);
        YY_BREAK
 case 57:
 /* rule 57 can match eol */
 YY_RULE_SETUP
-if (dax__job_level_isset != 0) {FAIL("Multiple definition of attribute level in <dax__job>");} dax__job_level_isset = 1; ENTER(VALUE1); BUFFERSET(AX_dax__job_level);
+ENTER(VALUE1); BUFFERSET(AX_dax__job_level);
        YY_BREAK
 case 58:
 /* rule 58 can match eol */
 YY_RULE_SETUP
-if (dax__job_level_isset != 0) {FAIL("Multiple definition of attribute level in <dax__job>");}  dax__job_level_isset = 1; ENTER(VALUE2); BUFFERSET(AX_dax__job_level);
+ENTER(VALUE2); BUFFERSET(AX_dax__job_level);
        YY_BREAK
 case 59:
 YY_RULE_SETUP
@@ -2371,19 +2319,12 @@ case 67:
 YY_RULE_SETUP
 {
   AX_dax__uses_file = 0;
-  dax__uses_file_isset = 0;
   AX_dax__uses_link = AU_dax__uses_link;
-  dax__uses_link_isset = 0;
   AX_dax__uses_register = A_dax__uses_register_true;
-  dax__uses_register_isset = 0;
   AX_dax__uses_transfer = A_dax__uses_transfer_true;
-  dax__uses_transfer_isset = 0;
   AX_dax__uses_optional = A_dax__uses_optional_false;
-  dax__uses_optional_isset = 0;
   AX_dax__uses_type = 161;
-  dax__uses_type_isset = 0;
   AX_dax__uses_size = 0;
-  dax__uses_size_isset = 0;
   ENTER(AL_dax__uses); pushbuffer(0);
   }
        YY_BREAK
@@ -2391,12 +2332,12 @@ YY_RULE_SETUP
 case 68:
 /* rule 68 can match eol */
 YY_RULE_SETUP
-if (dax__uses_file_isset != 0) {FAIL("Multiple definition of attribute file in <dax__uses>");} dax__uses_file_isset = 1; ENTER(VALUE1); BUFFERSET(AX_dax__uses_file);
+ENTER(VALUE1); BUFFERSET(AX_dax__uses_file);
        YY_BREAK
 case 69:
 /* rule 69 can match eol */
 YY_RULE_SETUP
-if (dax__uses_file_isset != 0) {FAIL("Multiple definition of attribute file in <dax__uses>");}  dax__uses_file_isset = 1; ENTER(VALUE2); BUFFERSET(AX_dax__uses_file);
+ENTER(VALUE2); BUFFERSET(AX_dax__uses_file);
        YY_BREAK
 case 70:
 /* rule 70 can match eol */
@@ -2457,22 +2398,22 @@ A_dax__uses_optional = A_dax__uses_optional_true;
 case 86:
 /* rule 86 can match eol */
 YY_RULE_SETUP
-if (dax__uses_type_isset != 0) {FAIL("Multiple definition of attribute type in <dax__uses>");} dax__uses_type_isset = 1; ENTER(VALUE1); BUFFERSET(AX_dax__uses_type);
+ENTER(VALUE1); BUFFERSET(AX_dax__uses_type);
        YY_BREAK
 case 87:
 /* rule 87 can match eol */
 YY_RULE_SETUP
-if (dax__uses_type_isset != 0) {FAIL("Multiple definition of attribute type in <dax__uses>");}  dax__uses_type_isset = 1; ENTER(VALUE2); BUFFERSET(AX_dax__uses_type);
+ENTER(VALUE2); BUFFERSET(AX_dax__uses_type);
        YY_BREAK
 case 88:
 /* rule 88 can match eol */
 YY_RULE_SETUP
-if (dax__uses_size_isset != 0) {FAIL("Multiple definition of attribute size in <dax__uses>");} dax__uses_size_isset = 1; ENTER(VALUE1); BUFFERSET(AX_dax__uses_size);
+ENTER(VALUE1); BUFFERSET(AX_dax__uses_size);
        YY_BREAK
 case 89:
 /* rule 89 can match eol */
 YY_RULE_SETUP
-if (dax__uses_size_isset != 0) {FAIL("Multiple definition of attribute size in <dax__uses>");}  dax__uses_size_isset = 1; ENTER(VALUE2); BUFFERSET(AX_dax__uses_size);
+ENTER(VALUE2); BUFFERSET(AX_dax__uses_size);
        YY_BREAK
 case 90:
 YY_RULE_SETUP
@@ -2540,7 +2481,6 @@ case 98:
 YY_RULE_SETUP
 {
   AX_dax__child_ref = 0;
-  dax__child_ref_isset = 0;
   ENTER(AL_dax__child); pushbuffer(0);
   }
        YY_BREAK
@@ -2548,12 +2488,12 @@ YY_RULE_SETUP
 case 99:
 /* rule 99 can match eol */
 YY_RULE_SETUP
-if (dax__child_ref_isset != 0) {FAIL("Multiple definition of attribute ref in <dax__child>");} dax__child_ref_isset = 1; ENTER(VALUE1); BUFFERSET(AX_dax__child_ref);
+ENTER(VALUE1); BUFFERSET(AX_dax__child_ref);
        YY_BREAK
 case 100:
 /* rule 100 can match eol */
 YY_RULE_SETUP
-if (dax__child_ref_isset != 0) {FAIL("Multiple definition of attribute ref in <dax__child>");}  dax__child_ref_isset = 1; ENTER(VALUE2); BUFFERSET(AX_dax__child_ref);
+ENTER(VALUE2); BUFFERSET(AX_dax__child_ref);
        YY_BREAK
 case 101:
 YY_RULE_SETUP
@@ -2621,7 +2561,6 @@ case 109:
 YY_RULE_SETUP
 {
   AX_dax__parent_ref = 0;
-  dax__parent_ref_isset = 0;
   ENTER(AL_dax__parent); pushbuffer(0);
   }
        YY_BREAK
@@ -2629,12 +2568,12 @@ YY_RULE_SETUP
 case 110:
 /* rule 110 can match eol */
 YY_RULE_SETUP
-if (dax__parent_ref_isset != 0) {FAIL("Multiple definition of attribute ref in <dax__parent>");} dax__parent_ref_isset = 1; ENTER(VALUE1); BUFFERSET(AX_dax__parent_ref);
+ENTER(VALUE1); BUFFERSET(AX_dax__parent_ref);
        YY_BREAK
 case 111:
 /* rule 111 can match eol */
 YY_RULE_SETUP
-if (dax__parent_ref_isset != 0) {FAIL("Multiple definition of attribute ref in <dax__parent>");}  dax__parent_ref_isset = 1; ENTER(VALUE2); BUFFERSET(AX_dax__parent_ref);
+ENTER(VALUE2); BUFFERSET(AX_dax__parent_ref);
        YY_BREAK
 case 112:
 YY_RULE_SETUP
index 65c2032..de7b957 100644 (file)
@@ -2,8 +2,8 @@
  *
  * This program was generated with the FleXML XML processor generator.
  * FleXML is Copyright (C) 1999-2005 Kristoffer Rose.  All rights reserved.
- * FleXML is Copyright (C) 2003-2011 Martin Quinson.  All rights reserved.
- * (Id: flexml.pl,v 1.67 2011/11/01 20:49:21 mquinson Exp).
+ * FleXML is Copyright (C) 2003-2006 Martin Quinson.  All rights reserved.
+ * (Id: flexml.pl,v 1.62 2007/10/11 10:00:14 mquinson Exp).
  * 
  * There are two, intertwined parts to this program, part A and part B.
  *
@@ -12,7 +12,7 @@
  * 
  * Some parts, here collectively called "Part A", are found in the 
  * FleXML package.  They are Copyright (C) 1999-2005 Kristoffer Rose
- * and Copyright (C) 2003-2011 Martin Quinson. All rights reserved.
+ * and Copyright (C) 2003-2006 Martin Quinson. All rights reserved.
  *
  * You can redistribute, use, perform, display and/or modify "Part A"
  * provided the following two conditions hold:
@@ -113,79 +113,54 @@ XBT_PUBLIC_DATA(char *) dax__bufferstack;
 #define dax__pcdata (dax__bufferstack + dax__pcdata_ix)
 XBT_PUBLIC_DATA(AT_dax__adag_version ) AX_dax__adag_version;
 #define A_dax__adag_version (dax__bufferstack + AX_dax__adag_version)
-XBT_PUBLIC_DATA(short ) int dax__adag_version_isset;
 XBT_PUBLIC_DATA(AT_dax__uses_type ) AX_dax__uses_type;
 #define A_dax__uses_type (dax__bufferstack + AX_dax__uses_type)
-XBT_PUBLIC_DATA(short ) int dax__uses_type_isset;
 XBT_PUBLIC_DATA(AT_dax__uses_optional ) AX_dax__uses_optional;
 #define A_dax__uses_optional AX_dax__uses_optional
-XBT_PUBLIC_DATA(short ) int dax__uses_optional_isset;
 XBT_PUBLIC_DATA(AT_dax__adag_name ) AX_dax__adag_name;
 #define A_dax__adag_name (dax__bufferstack + AX_dax__adag_name)
-XBT_PUBLIC_DATA(short ) int dax__adag_name_isset;
 XBT_PUBLIC_DATA(AT_dax__child_ref ) AX_dax__child_ref;
 #define A_dax__child_ref (dax__bufferstack + AX_dax__child_ref)
-XBT_PUBLIC_DATA(short ) int dax__child_ref_isset;
 XBT_PUBLIC_DATA(AT_dax__adag_xmlns ) AX_dax__adag_xmlns;
 #define A_dax__adag_xmlns (dax__bufferstack + AX_dax__adag_xmlns)
-XBT_PUBLIC_DATA(short ) int dax__adag_xmlns_isset;
 XBT_PUBLIC_DATA(AT_dax__uses_transfer ) AX_dax__uses_transfer;
 #define A_dax__uses_transfer AX_dax__uses_transfer
-XBT_PUBLIC_DATA(short ) int dax__uses_transfer_isset;
 XBT_PUBLIC_DATA(AT_dax__job_id ) AX_dax__job_id;
 #define A_dax__job_id (dax__bufferstack + AX_dax__job_id)
-XBT_PUBLIC_DATA(short ) int dax__job_id_isset;
 XBT_PUBLIC_DATA(AT_dax__uses_file ) AX_dax__uses_file;
 #define A_dax__uses_file (dax__bufferstack + AX_dax__uses_file)
-XBT_PUBLIC_DATA(short ) int dax__uses_file_isset;
 XBT_PUBLIC_DATA(AT_dax__parent_ref ) AX_dax__parent_ref;
 #define A_dax__parent_ref (dax__bufferstack + AX_dax__parent_ref)
-XBT_PUBLIC_DATA(short ) int dax__parent_ref_isset;
 XBT_PUBLIC_DATA(AT_dax__adag_count ) AX_dax__adag_count;
 #define A_dax__adag_count (dax__bufferstack + AX_dax__adag_count)
-XBT_PUBLIC_DATA(short ) int dax__adag_count_isset;
 XBT_PUBLIC_DATA(AT_dax__adag_xmlns_c_xsi ) AX_dax__adag_xmlns_c_xsi;
 #define A_dax__adag_xmlns_c_xsi (dax__bufferstack + AX_dax__adag_xmlns_c_xsi)
-XBT_PUBLIC_DATA(short ) int dax__adag_xmlns_c_xsi_isset;
 XBT_PUBLIC_DATA(AT_dax__adag_index ) AX_dax__adag_index;
 #define A_dax__adag_index (dax__bufferstack + AX_dax__adag_index)
-XBT_PUBLIC_DATA(short ) int dax__adag_index_isset;
 XBT_PUBLIC_DATA(AT_dax__uses_size ) AX_dax__uses_size;
 #define A_dax__uses_size (dax__bufferstack + AX_dax__uses_size)
-XBT_PUBLIC_DATA(short ) int dax__uses_size_isset;
 XBT_PUBLIC_DATA(AT_dax__adag_childCount ) AX_dax__adag_childCount;
 #define A_dax__adag_childCount (dax__bufferstack + AX_dax__adag_childCount)
-XBT_PUBLIC_DATA(short ) int dax__adag_childCount_isset;
 XBT_PUBLIC_DATA(AT_dax__uses_link ) AX_dax__uses_link;
 #define A_dax__uses_link AX_dax__uses_link
-XBT_PUBLIC_DATA(short ) int dax__uses_link_isset;
 XBT_PUBLIC_DATA(AT_dax__job_runtime ) AX_dax__job_runtime;
 #define A_dax__job_runtime (dax__bufferstack + AX_dax__job_runtime)
-XBT_PUBLIC_DATA(short ) int dax__job_runtime_isset;
 XBT_PUBLIC_DATA(AT_dax__job_level ) AX_dax__job_level;
 #define A_dax__job_level (dax__bufferstack + AX_dax__job_level)
-XBT_PUBLIC_DATA(short ) int dax__job_level_isset;
 XBT_PUBLIC_DATA(AT_dax__job_namespace ) AX_dax__job_namespace;
 #define A_dax__job_namespace (dax__bufferstack + AX_dax__job_namespace)
-XBT_PUBLIC_DATA(short ) int dax__job_namespace_isset;
 XBT_PUBLIC_DATA(AT_dax__job_name ) AX_dax__job_name;
 #define A_dax__job_name (dax__bufferstack + AX_dax__job_name)
-XBT_PUBLIC_DATA(short ) int dax__job_name_isset;
 XBT_PUBLIC_DATA(AT_dax__adag_jobCount ) AX_dax__adag_jobCount;
 #define A_dax__adag_jobCount (dax__bufferstack + AX_dax__adag_jobCount)
-XBT_PUBLIC_DATA(short ) int dax__adag_jobCount_isset;
 XBT_PUBLIC_DATA(AT_dax__job_version ) AX_dax__job_version;
 #define A_dax__job_version (dax__bufferstack + AX_dax__job_version)
-XBT_PUBLIC_DATA(short ) int dax__job_version_isset;
 XBT_PUBLIC_DATA(AT_dax__adag_xsi_c_schemaLocation ) AX_dax__adag_xsi_c_schemaLocation;
 #define A_dax__adag_xsi_c_schemaLocation (dax__bufferstack + AX_dax__adag_xsi_c_schemaLocation)
-XBT_PUBLIC_DATA(short ) int dax__adag_xsi_c_schemaLocation_isset;
 XBT_PUBLIC_DATA(AT_dax__uses_register ) AX_dax__uses_register;
 #define A_dax__uses_register AX_dax__uses_register
-XBT_PUBLIC_DATA(short ) int dax__uses_register_isset;
 XBT_PUBLIC_DATA(AT_dax__adag_fileCount ) AX_dax__adag_fileCount;
 #define A_dax__adag_fileCount (dax__bufferstack + AX_dax__adag_fileCount)
-XBT_PUBLIC_DATA(short ) int dax__adag_fileCount_isset;
 
 /* XML application utilities. */
 XBT_PUBLIC(int ) dax__element_context(int);
index daded22..7de3c25 100644 (file)
@@ -4288,8 +4288,8 @@ char *surf_parse_text;
  *
  * This program was generated with the FleXML XML processor generator.
  * FleXML is Copyright (C) 1999-2005 Kristoffer Rose.  All rights reserved.
- * FleXML is Copyright (C) 2003-2011 Martin Quinson.  All rights reserved.
- * (Id: flexml.pl,v 1.67 2011/11/01 20:49:21 mquinson Exp).
+ * FleXML is Copyright (C) 2003-2006 Martin Quinson.  All rights reserved.
+ * (Id: flexml.pl,v 1.62 2007/10/11 10:00:14 mquinson Exp).
  * 
  * There are two, intertwined parts to this program, part A and part B.
  *
@@ -4298,7 +4298,7 @@ char *surf_parse_text;
  * 
  * Some parts, here collectively called "Part A", are found in the 
  * FleXML package.  They are Copyright (C) 1999-2005 Kristoffer Rose
- * and Copyright (C) 2003-2011 Martin Quinson. All rights reserved.
+ * and Copyright (C) 2003-2006 Martin Quinson. All rights reserved.
  *
  * You can redistribute, use, perform, display and/or modify "Part A"
  * provided the following two conditions hold:
@@ -4334,7 +4334,7 @@ char *surf_parse_text;
 const char rcs_surfxml_flexml_skeleton[] =
  "$" "Id: skel,v 1.40 2007/10/11 09:57:24 mquinson Exp $";
 const char rcs_surfxml_flexml[] =
- "$" "Id: flexml.pl,v 1.67 2011/11/01 20:49:21 mquinson Exp $";
+ "$" "Id: flexml.pl,v 1.62 2007/10/11 10:00:14 mquinson Exp $";
 
 /* ANSI headers. */
 #include <stdlib.h> /* for realloc() -- needed here when using flex 2.5.4 */
@@ -4371,328 +4371,220 @@ extern char *surfxml_bufferstack;
 #define surfxml_pcdata (surfxml_bufferstack + surfxml_pcdata_ix)
 AT_surfxml_mount_name AX_surfxml_mount_name;
 #define A_surfxml_mount_name (surfxml_bufferstack + AX_surfxml_mount_name)
-short int surfxml_mount_name_isset;
 AT_surfxml_random_generator AX_surfxml_random_generator;
 #define A_surfxml_random_generator AX_surfxml_random_generator
-short int surfxml_random_generator_isset;
 AT_surfxml_ASroute_gw_dst AX_surfxml_ASroute_gw_dst;
 #define A_surfxml_ASroute_gw_dst (surfxml_bufferstack + AX_surfxml_ASroute_gw_dst)
-short int surfxml_ASroute_gw_dst_isset;
 AT_surfxml_trace_connect_element AX_surfxml_trace_connect_element;
 #define A_surfxml_trace_connect_element (surfxml_bufferstack + AX_surfxml_trace_connect_element)
-short int surfxml_trace_connect_element_isset;
 AT_surfxml_prop_id AX_surfxml_prop_id;
 #define A_surfxml_prop_id (surfxml_bufferstack + AX_surfxml_prop_id)
-short int surfxml_prop_id_isset;
 AT_surfxml_host_link_up AX_surfxml_host_link_up;
 #define A_surfxml_host_link_up (surfxml_bufferstack + AX_surfxml_host_link_up)
-short int surfxml_host_link_up_isset;
 AT_surfxml_host_id AX_surfxml_host_id;
 #define A_surfxml_host_id (surfxml_bufferstack + AX_surfxml_host_id)
-short int surfxml_host_id_isset;
 AT_surfxml_ASroute_symmetrical AX_surfxml_ASroute_symmetrical;
 #define A_surfxml_ASroute_symmetrical AX_surfxml_ASroute_symmetrical
-short int surfxml_ASroute_symmetrical_isset;
 AT_surfxml_peer_lat AX_surfxml_peer_lat;
 #define A_surfxml_peer_lat (surfxml_bufferstack + AX_surfxml_peer_lat)
-short int surfxml_peer_lat_isset;
 AT_surfxml_process_on_failure AX_surfxml_process_on_failure;
 #define A_surfxml_process_on_failure AX_surfxml_process_on_failure
-short int surfxml_process_on_failure_isset;
 AT_surfxml_link_latency_file AX_surfxml_link_latency_file;
 #define A_surfxml_link_latency_file (surfxml_bufferstack + AX_surfxml_link_latency_file)
-short int surfxml_link_latency_file_isset;
 AT_surfxml_peer_availability_file AX_surfxml_peer_availability_file;
 #define A_surfxml_peer_availability_file (surfxml_bufferstack + AX_surfxml_peer_availability_file)
-short int surfxml_peer_availability_file_isset;
 AT_surfxml_link_ctn_direction AX_surfxml_link_ctn_direction;
 #define A_surfxml_link_ctn_direction AX_surfxml_link_ctn_direction
-short int surfxml_link_ctn_direction_isset;
 AT_surfxml_host_state AX_surfxml_host_state;
 #define A_surfxml_host_state AX_surfxml_host_state
-short int surfxml_host_state_isset;
 AT_surfxml_AS_id AX_surfxml_AS_id;
 #define A_surfxml_AS_id (surfxml_bufferstack + AX_surfxml_AS_id)
-short int surfxml_AS_id_isset;
 AT_surfxml_host_power AX_surfxml_host_power;
 #define A_surfxml_host_power (surfxml_bufferstack + AX_surfxml_host_power)
-short int surfxml_host_power_isset;
 AT_surfxml_cabinet_suffix AX_surfxml_cabinet_suffix;
 #define A_surfxml_cabinet_suffix (surfxml_bufferstack + AX_surfxml_cabinet_suffix)
-short int surfxml_cabinet_suffix_isset;
 AT_surfxml_router_id AX_surfxml_router_id;
 #define A_surfxml_router_id (surfxml_bufferstack + AX_surfxml_router_id)
-short int surfxml_router_id_isset;
 AT_surfxml_storage_type_id AX_surfxml_storage_type_id;
 #define A_surfxml_storage_type_id (surfxml_bufferstack + AX_surfxml_storage_type_id)
-short int surfxml_storage_type_id_isset;
 AT_surfxml_process_start_time AX_surfxml_process_start_time;
 #define A_surfxml_process_start_time (surfxml_bufferstack + AX_surfxml_process_start_time)
-short int surfxml_process_start_time_isset;
 AT_surfxml_cabinet_bw AX_surfxml_cabinet_bw;
 #define A_surfxml_cabinet_bw (surfxml_bufferstack + AX_surfxml_cabinet_bw)
-short int surfxml_cabinet_bw_isset;
 AT_surfxml_cluster_suffix AX_surfxml_cluster_suffix;
 #define A_surfxml_cluster_suffix (surfxml_bufferstack + AX_surfxml_cluster_suffix)
-short int surfxml_cluster_suffix_isset;
 AT_surfxml_bypassASroute_dst AX_surfxml_bypassASroute_dst;
 #define A_surfxml_bypassASroute_dst (surfxml_bufferstack + AX_surfxml_bypassASroute_dst)
-short int surfxml_bypassASroute_dst_isset;
 AT_surfxml_host_link_id AX_surfxml_host_link_id;
 #define A_surfxml_host_link_id (surfxml_bufferstack + AX_surfxml_host_link_id)
-short int surfxml_host_link_id_isset;
 AT_surfxml_ASroute_src AX_surfxml_ASroute_src;
 #define A_surfxml_ASroute_src (surfxml_bufferstack + AX_surfxml_ASroute_src)
-short int surfxml_ASroute_src_isset;
 AT_surfxml_cluster_prefix AX_surfxml_cluster_prefix;
 #define A_surfxml_cluster_prefix (surfxml_bufferstack + AX_surfxml_cluster_prefix)
-short int surfxml_cluster_prefix_isset;
 AT_surfxml_cabinet_prefix AX_surfxml_cabinet_prefix;
 #define A_surfxml_cabinet_prefix (surfxml_bufferstack + AX_surfxml_cabinet_prefix)
-short int surfxml_cabinet_prefix_isset;
 AT_surfxml_trace_file AX_surfxml_trace_file;
 #define A_surfxml_trace_file (surfxml_bufferstack + AX_surfxml_trace_file)
-short int surfxml_trace_file_isset;
 AT_surfxml_link_sharing_policy AX_surfxml_link_sharing_policy;
 #define A_surfxml_link_sharing_policy AX_surfxml_link_sharing_policy
-short int surfxml_link_sharing_policy_isset;
 AT_surfxml_storage_typeId AX_surfxml_storage_typeId;
 #define A_surfxml_storage_typeId (surfxml_bufferstack + AX_surfxml_storage_typeId)
-short int surfxml_storage_typeId_isset;
 AT_surfxml_random_min AX_surfxml_random_min;
 #define A_surfxml_random_min (surfxml_bufferstack + AX_surfxml_random_min)
-short int surfxml_random_min_isset;
 AT_surfxml_link_ctn_id AX_surfxml_link_ctn_id;
 #define A_surfxml_link_ctn_id (surfxml_bufferstack + AX_surfxml_link_ctn_id)
-short int surfxml_link_ctn_id_isset;
 AT_surfxml_peer_bw_out AX_surfxml_peer_bw_out;
 #define A_surfxml_peer_bw_out (surfxml_bufferstack + AX_surfxml_peer_bw_out)
-short int surfxml_peer_bw_out_isset;
 AT_surfxml_cluster_availability_file AX_surfxml_cluster_availability_file;
 #define A_surfxml_cluster_availability_file (surfxml_bufferstack + AX_surfxml_cluster_availability_file)
-short int surfxml_cluster_availability_file_isset;
 AT_surfxml_storage_content AX_surfxml_storage_content;
 #define A_surfxml_storage_content (surfxml_bufferstack + AX_surfxml_storage_content)
-short int surfxml_storage_content_isset;
 AT_surfxml_process_kill_time AX_surfxml_process_kill_time;
 #define A_surfxml_process_kill_time (surfxml_bufferstack + AX_surfxml_process_kill_time)
-short int surfxml_process_kill_time_isset;
 AT_surfxml_cluster_bb_bw AX_surfxml_cluster_bb_bw;
 #define A_surfxml_cluster_bb_bw (surfxml_bufferstack + AX_surfxml_cluster_bb_bw)
-short int surfxml_cluster_bb_bw_isset;
 AT_surfxml_argument_value AX_surfxml_argument_value;
 #define A_surfxml_argument_value (surfxml_bufferstack + AX_surfxml_argument_value)
-short int surfxml_argument_value_isset;
 AT_surfxml_link_state AX_surfxml_link_state;
 #define A_surfxml_link_state AX_surfxml_link_state
-short int surfxml_link_state_isset;
 AT_surfxml_ASroute_gw_src AX_surfxml_ASroute_gw_src;
 #define A_surfxml_ASroute_gw_src (surfxml_bufferstack + AX_surfxml_ASroute_gw_src)
-short int surfxml_ASroute_gw_src_isset;
 AT_surfxml_AS_routing AX_surfxml_AS_routing;
 #define A_surfxml_AS_routing AX_surfxml_AS_routing
-short int surfxml_AS_routing_isset;
 AT_surfxml_link_bandwidth AX_surfxml_link_bandwidth;
 #define A_surfxml_link_bandwidth (surfxml_bufferstack + AX_surfxml_link_bandwidth)
-short int surfxml_link_bandwidth_isset;
 AT_surfxml_cluster_id AX_surfxml_cluster_id;
 #define A_surfxml_cluster_id (surfxml_bufferstack + AX_surfxml_cluster_id)
-short int surfxml_cluster_id_isset;
 AT_surfxml_peer_bw_in AX_surfxml_peer_bw_in;
 #define A_surfxml_peer_bw_in (surfxml_bufferstack + AX_surfxml_peer_bw_in)
-short int surfxml_peer_bw_in_isset;
 AT_surfxml_random_mean AX_surfxml_random_mean;
 #define A_surfxml_random_mean (surfxml_bufferstack + AX_surfxml_random_mean)
-short int surfxml_random_mean_isset;
 AT_surfxml_storage_type_size AX_surfxml_storage_type_size;
 #define A_surfxml_storage_type_size (surfxml_bufferstack + AX_surfxml_storage_type_size)
-short int surfxml_storage_type_size_isset;
 AT_surfxml_cluster_bb_lat AX_surfxml_cluster_bb_lat;
 #define A_surfxml_cluster_bb_lat (surfxml_bufferstack + AX_surfxml_cluster_bb_lat)
-short int surfxml_cluster_bb_lat_isset;
 AT_surfxml_link_latency AX_surfxml_link_latency;
 #define A_surfxml_link_latency (surfxml_bufferstack + AX_surfxml_link_latency)
-short int surfxml_link_latency_isset;
 AT_surfxml_backbone_bandwidth AX_surfxml_backbone_bandwidth;
 #define A_surfxml_backbone_bandwidth (surfxml_bufferstack + AX_surfxml_backbone_bandwidth)
-short int surfxml_backbone_bandwidth_isset;
 AT_surfxml_backbone_id AX_surfxml_backbone_id;
 #define A_surfxml_backbone_id (surfxml_bufferstack + AX_surfxml_backbone_id)
-short int surfxml_backbone_id_isset;
 AT_surfxml_trace_connect_kind AX_surfxml_trace_connect_kind;
 #define A_surfxml_trace_connect_kind AX_surfxml_trace_connect_kind
-short int surfxml_trace_connect_kind_isset;
 AT_surfxml_cabinet_lat AX_surfxml_cabinet_lat;
 #define A_surfxml_cabinet_lat (surfxml_bufferstack + AX_surfxml_cabinet_lat)
-short int surfxml_cabinet_lat_isset;
 AT_surfxml_random_seed AX_surfxml_random_seed;
 #define A_surfxml_random_seed (surfxml_bufferstack + AX_surfxml_random_seed)
-short int surfxml_random_seed_isset;
 AT_surfxml_cluster_state_file AX_surfxml_cluster_state_file;
 #define A_surfxml_cluster_state_file (surfxml_bufferstack + AX_surfxml_cluster_state_file)
-short int surfxml_cluster_state_file_isset;
 AT_surfxml_link_bandwidth_file AX_surfxml_link_bandwidth_file;
 #define A_surfxml_link_bandwidth_file (surfxml_bufferstack + AX_surfxml_link_bandwidth_file)
-short int surfxml_link_bandwidth_file_isset;
 AT_surfxml_storage_type_content AX_surfxml_storage_type_content;
 #define A_surfxml_storage_type_content (surfxml_bufferstack + AX_surfxml_storage_type_content)
-short int surfxml_storage_type_content_isset;
 AT_surfxml_route_symmetrical AX_surfxml_route_symmetrical;
 #define A_surfxml_route_symmetrical AX_surfxml_route_symmetrical
-short int surfxml_route_symmetrical_isset;
 AT_surfxml_random_id AX_surfxml_random_id;
 #define A_surfxml_random_id (surfxml_bufferstack + AX_surfxml_random_id)
-short int surfxml_random_id_isset;
 AT_surfxml_mstorage_name AX_surfxml_mstorage_name;
 #define A_surfxml_mstorage_name (surfxml_bufferstack + AX_surfxml_mstorage_name)
-short int surfxml_mstorage_name_isset;
 AT_surfxml_random_max AX_surfxml_random_max;
 #define A_surfxml_random_max (surfxml_bufferstack + AX_surfxml_random_max)
-short int surfxml_random_max_isset;
 AT_surfxml_link_id AX_surfxml_link_id;
 #define A_surfxml_link_id (surfxml_bufferstack + AX_surfxml_link_id)
-short int surfxml_link_id_isset;
 AT_surfxml_process_host AX_surfxml_process_host;
 #define A_surfxml_process_host (surfxml_bufferstack + AX_surfxml_process_host)
-short int surfxml_process_host_isset;
 AT_surfxml_cabinet_id AX_surfxml_cabinet_id;
 #define A_surfxml_cabinet_id (surfxml_bufferstack + AX_surfxml_cabinet_id)
-short int surfxml_cabinet_id_isset;
 AT_surfxml_host_availability_file AX_surfxml_host_availability_file;
 #define A_surfxml_host_availability_file (surfxml_bufferstack + AX_surfxml_host_availability_file)
-short int surfxml_host_availability_file_isset;
 AT_surfxml_cluster_lat AX_surfxml_cluster_lat;
 #define A_surfxml_cluster_lat (surfxml_bufferstack + AX_surfxml_cluster_lat)
-short int surfxml_cluster_lat_isset;
 AT_surfxml_router_coordinates AX_surfxml_router_coordinates;
 #define A_surfxml_router_coordinates (surfxml_bufferstack + AX_surfxml_router_coordinates)
-short int surfxml_router_coordinates_isset;
 AT_surfxml_trace_periodicity AX_surfxml_trace_periodicity;
 #define A_surfxml_trace_periodicity (surfxml_bufferstack + AX_surfxml_trace_periodicity)
-short int surfxml_trace_periodicity_isset;
 AT_surfxml_cluster_bb_sharing_policy AX_surfxml_cluster_bb_sharing_policy;
 #define A_surfxml_cluster_bb_sharing_policy AX_surfxml_cluster_bb_sharing_policy
-short int surfxml_cluster_bb_sharing_policy_isset;
 AT_surfxml_peer_state_file AX_surfxml_peer_state_file;
 #define A_surfxml_peer_state_file (surfxml_bufferstack + AX_surfxml_peer_state_file)
-short int surfxml_peer_state_file_isset;
 AT_surfxml_peer_coordinates AX_surfxml_peer_coordinates;
 #define A_surfxml_peer_coordinates (surfxml_bufferstack + AX_surfxml_peer_coordinates)
-short int surfxml_peer_coordinates_isset;
 AT_surfxml_bypassASroute_src AX_surfxml_bypassASroute_src;
 #define A_surfxml_bypassASroute_src (surfxml_bufferstack + AX_surfxml_bypassASroute_src)
-short int surfxml_bypassASroute_src_isset;
 AT_surfxml_prop_value AX_surfxml_prop_value;
 #define A_surfxml_prop_value (surfxml_bufferstack + AX_surfxml_prop_value)
-short int surfxml_prop_value_isset;
 AT_surfxml_mstorage_typeId AX_surfxml_mstorage_typeId;
 #define A_surfxml_mstorage_typeId (surfxml_bufferstack + AX_surfxml_mstorage_typeId)
-short int surfxml_mstorage_typeId_isset;
 AT_surfxml_ASroute_dst AX_surfxml_ASroute_dst;
 #define A_surfxml_ASroute_dst (surfxml_bufferstack + AX_surfxml_ASroute_dst)
-short int surfxml_ASroute_dst_isset;
 AT_surfxml_link_state_file AX_surfxml_link_state_file;
 #define A_surfxml_link_state_file (surfxml_bufferstack + AX_surfxml_link_state_file)
-short int surfxml_link_state_file_isset;
 AT_surfxml_random_radical AX_surfxml_random_radical;
 #define A_surfxml_random_radical (surfxml_bufferstack + AX_surfxml_random_radical)
-short int surfxml_random_radical_isset;
 AT_surfxml_bypassASroute_gw_src AX_surfxml_bypassASroute_gw_src;
 #define A_surfxml_bypassASroute_gw_src (surfxml_bufferstack + AX_surfxml_bypassASroute_gw_src)
-short int surfxml_bypassASroute_gw_src_isset;
 AT_surfxml_trace_connect_trace AX_surfxml_trace_connect_trace;
 #define A_surfxml_trace_connect_trace (surfxml_bufferstack + AX_surfxml_trace_connect_trace)
-short int surfxml_trace_connect_trace_isset;
 AT_surfxml_mount_id AX_surfxml_mount_id;
 #define A_surfxml_mount_id (surfxml_bufferstack + AX_surfxml_mount_id)
-short int surfxml_mount_id_isset;
 AT_surfxml_cluster_power AX_surfxml_cluster_power;
 #define A_surfxml_cluster_power (surfxml_bufferstack + AX_surfxml_cluster_power)
-short int surfxml_cluster_power_isset;
 AT_surfxml_process_function AX_surfxml_process_function;
 #define A_surfxml_process_function (surfxml_bufferstack + AX_surfxml_process_function)
-short int surfxml_process_function_isset;
 AT_surfxml_peer_id AX_surfxml_peer_id;
 #define A_surfxml_peer_id (surfxml_bufferstack + AX_surfxml_peer_id)
-short int surfxml_peer_id_isset;
 AT_surfxml_cluster_router_id AX_surfxml_cluster_router_id;
 #define A_surfxml_cluster_router_id (surfxml_bufferstack + AX_surfxml_cluster_router_id)
-short int surfxml_cluster_router_id_isset;
 AT_surfxml_cabinet_radical AX_surfxml_cabinet_radical;
 #define A_surfxml_cabinet_radical (surfxml_bufferstack + AX_surfxml_cabinet_radical)
-short int surfxml_cabinet_radical_isset;
 AT_surfxml_cluster_sharing_policy AX_surfxml_cluster_sharing_policy;
 #define A_surfxml_cluster_sharing_policy AX_surfxml_cluster_sharing_policy
-short int surfxml_cluster_sharing_policy_isset;
 AT_surfxml_bypassRoute_dst AX_surfxml_bypassRoute_dst;
 #define A_surfxml_bypassRoute_dst (surfxml_bufferstack + AX_surfxml_bypassRoute_dst)
-short int surfxml_bypassRoute_dst_isset;
 AT_surfxml_cabinet_power AX_surfxml_cabinet_power;
 #define A_surfxml_cabinet_power (surfxml_bufferstack + AX_surfxml_cabinet_power)
-short int surfxml_cabinet_power_isset;
 AT_surfxml_host_core AX_surfxml_host_core;
 #define A_surfxml_host_core (surfxml_bufferstack + AX_surfxml_host_core)
-short int surfxml_host_core_isset;
 AT_surfxml_storage_type_model AX_surfxml_storage_type_model;
 #define A_surfxml_storage_type_model (surfxml_bufferstack + AX_surfxml_storage_type_model)
-short int surfxml_storage_type_model_isset;
 AT_surfxml_host_availability AX_surfxml_host_availability;
 #define A_surfxml_host_availability (surfxml_bufferstack + AX_surfxml_host_availability)
-short int surfxml_host_availability_isset;
 AT_surfxml_bypassRoute_src AX_surfxml_bypassRoute_src;
 #define A_surfxml_bypassRoute_src (surfxml_bufferstack + AX_surfxml_bypassRoute_src)
-short int surfxml_bypassRoute_src_isset;
 AT_surfxml_backbone_latency AX_surfxml_backbone_latency;
 #define A_surfxml_backbone_latency (surfxml_bufferstack + AX_surfxml_backbone_latency)
-short int surfxml_backbone_latency_isset;
 AT_surfxml_route_src AX_surfxml_route_src;
 #define A_surfxml_route_src (surfxml_bufferstack + AX_surfxml_route_src)
-short int surfxml_route_src_isset;
 AT_surfxml_storage_id AX_surfxml_storage_id;
 #define A_surfxml_storage_id (surfxml_bufferstack + AX_surfxml_storage_id)
-short int surfxml_storage_id_isset;
 AT_surfxml_host_coordinates AX_surfxml_host_coordinates;
 #define A_surfxml_host_coordinates (surfxml_bufferstack + AX_surfxml_host_coordinates)
-short int surfxml_host_coordinates_isset;
 AT_surfxml_trace_id AX_surfxml_trace_id;
 #define A_surfxml_trace_id (surfxml_bufferstack + AX_surfxml_trace_id)
-short int surfxml_trace_id_isset;
 AT_surfxml_peer_power AX_surfxml_peer_power;
 #define A_surfxml_peer_power (surfxml_bufferstack + AX_surfxml_peer_power)
-short int surfxml_peer_power_isset;
 AT_surfxml_cluster_radical AX_surfxml_cluster_radical;
 #define A_surfxml_cluster_radical (surfxml_bufferstack + AX_surfxml_cluster_radical)
-short int surfxml_cluster_radical_isset;
 AT_surfxml_config_id AX_surfxml_config_id;
 #define A_surfxml_config_id (surfxml_bufferstack + AX_surfxml_config_id)
-short int surfxml_config_id_isset;
 AT_surfxml_bypassASroute_gw_dst AX_surfxml_bypassASroute_gw_dst;
 #define A_surfxml_bypassASroute_gw_dst (surfxml_bufferstack + AX_surfxml_bypassASroute_gw_dst)
-short int surfxml_bypassASroute_gw_dst_isset;
 AT_surfxml_host_link_down AX_surfxml_host_link_down;
 #define A_surfxml_host_link_down (surfxml_bufferstack + AX_surfxml_host_link_down)
-short int surfxml_host_link_down_isset;
 AT_surfxml_include_file AX_surfxml_include_file;
 #define A_surfxml_include_file (surfxml_bufferstack + AX_surfxml_include_file)
-short int surfxml_include_file_isset;
 AT_surfxml_random_std_deviation AX_surfxml_random_std_deviation;
 #define A_surfxml_random_std_deviation (surfxml_bufferstack + AX_surfxml_random_std_deviation)
-short int surfxml_random_std_deviation_isset;
 AT_surfxml_cluster_core AX_surfxml_cluster_core;
 #define A_surfxml_cluster_core (surfxml_bufferstack + AX_surfxml_cluster_core)
-short int surfxml_cluster_core_isset;
 AT_surfxml_host_state_file AX_surfxml_host_state_file;
 #define A_surfxml_host_state_file (surfxml_bufferstack + AX_surfxml_host_state_file)
-short int surfxml_host_state_file_isset;
 AT_surfxml_route_dst AX_surfxml_route_dst;
 #define A_surfxml_route_dst (surfxml_bufferstack + AX_surfxml_route_dst)
-short int surfxml_route_dst_isset;
 AT_surfxml_cluster_bw AX_surfxml_cluster_bw;
 #define A_surfxml_cluster_bw (surfxml_bufferstack + AX_surfxml_cluster_bw)
-short int surfxml_cluster_bw_isset;
 AT_surfxml_platform_version AX_surfxml_platform_version;
 #define A_surfxml_platform_version (surfxml_bufferstack + AX_surfxml_platform_version)
-short int surfxml_platform_version_isset;
 
 /* XML state. */
 #ifdef FLEX_DEBUG
@@ -4776,24 +4668,13 @@ static int ck_ilimit()
 #ifdef FLEXML_NEED_BUFFERLIT
 static void surfxml_bufferliteral(char c, int* pp, const char* text)
 {
-   BUFFERSET(*pp);
-   if (c) {
-      const char *s = strchr(text, c), *e = strrchr(text, c);
-      assert(s && e && s <= e);
-      ++s;
-      while (s < e) {
-        if (isspace(*s)) {
-           BUFFERPUTC(' ');
-           do ++s; while (s < e && isspace(*s));
-        } else
-          BUFFERPUTC(*s++);
-      }
-   } else {
-      const char *s = text;
-      while (*s)
-       BUFFERPUTC(*s++);
-   }
-   BUFFERDONE;
+  const char *s = (c ? strchr(text,c) : text-1), *e = strrchr(text,c);
+  assert(s <= e); BUFFERSET(*pp);
+  while (++s<e) {
+    if (isspace(*s) && c) { BUFFERPUTC(' '); while (isspace(*s)) ++s; }
+    else BUFFERPUTC(*s);
+  }
+  BUFFERDONE;
 }
 #endif
 
@@ -5497,7 +5378,6 @@ case 17:
 YY_RULE_SETUP
 {
   AX_surfxml_platform_version = 1;
-  surfxml_platform_version_isset = 0;
   ENTER(AL_surfxml_platform); pushbuffer(0);
   }
        YY_BREAK
@@ -5505,12 +5385,12 @@ YY_RULE_SETUP
 case 18:
 /* rule 18 can match eol */
 YY_RULE_SETUP
-if (surfxml_platform_version_isset != 0) {FAIL("Multiple definition of attribute version in <surfxml_platform>");} surfxml_platform_version_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_platform_version);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_platform_version);
        YY_BREAK
 case 19:
 /* rule 19 can match eol */
 YY_RULE_SETUP
-if (surfxml_platform_version_isset != 0) {FAIL("Multiple definition of attribute version in <surfxml_platform>");}  surfxml_platform_version_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_platform_version);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_platform_version);
        YY_BREAK
 case 20:
 YY_RULE_SETUP
@@ -5580,7 +5460,6 @@ case 28:
 YY_RULE_SETUP
 {
   AX_surfxml_include_file = 0;
-  surfxml_include_file_isset = 0;
   ENTER(AL_surfxml_include); pushbuffer(0);
   }
        YY_BREAK
@@ -5588,12 +5467,12 @@ YY_RULE_SETUP
 case 29:
 /* rule 29 can match eol */
 YY_RULE_SETUP
-if (surfxml_include_file_isset != 0) {FAIL("Multiple definition of attribute file in <surfxml_include>");} surfxml_include_file_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_include_file);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_include_file);
        YY_BREAK
 case 30:
 /* rule 30 can match eol */
 YY_RULE_SETUP
-if (surfxml_include_file_isset != 0) {FAIL("Multiple definition of attribute file in <surfxml_include>");}  surfxml_include_file_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_include_file);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_include_file);
        YY_BREAK
 case 31:
 YY_RULE_SETUP
@@ -5667,11 +5546,8 @@ case 39:
 YY_RULE_SETUP
 {
   AX_surfxml_trace_id = 0;
-  surfxml_trace_id_isset = 0;
   AX_surfxml_trace_file = 0;
-  surfxml_trace_file_isset = 0;
   AX_surfxml_trace_periodicity = 0;
-  surfxml_trace_periodicity_isset = 0;
   ENTER(AL_surfxml_trace); pushbuffer(0);
   }
        YY_BREAK
@@ -5679,32 +5555,32 @@ YY_RULE_SETUP
 case 40:
 /* rule 40 can match eol */
 YY_RULE_SETUP
-if (surfxml_trace_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_trace>");} surfxml_trace_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_trace_id);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_trace_id);
        YY_BREAK
 case 41:
 /* rule 41 can match eol */
 YY_RULE_SETUP
-if (surfxml_trace_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_trace>");}  surfxml_trace_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_trace_id);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_trace_id);
        YY_BREAK
 case 42:
 /* rule 42 can match eol */
 YY_RULE_SETUP
-if (surfxml_trace_file_isset != 0) {FAIL("Multiple definition of attribute file in <surfxml_trace>");} surfxml_trace_file_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_trace_file);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_trace_file);
        YY_BREAK
 case 43:
 /* rule 43 can match eol */
 YY_RULE_SETUP
-if (surfxml_trace_file_isset != 0) {FAIL("Multiple definition of attribute file in <surfxml_trace>");}  surfxml_trace_file_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_trace_file);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_trace_file);
        YY_BREAK
 case 44:
 /* rule 44 can match eol */
 YY_RULE_SETUP
-if (surfxml_trace_periodicity_isset != 0) {FAIL("Multiple definition of attribute periodicity in <surfxml_trace>");} surfxml_trace_periodicity_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_trace_periodicity);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_trace_periodicity);
        YY_BREAK
 case 45:
 /* rule 45 can match eol */
 YY_RULE_SETUP
-if (surfxml_trace_periodicity_isset != 0) {FAIL("Multiple definition of attribute periodicity in <surfxml_trace>");}  surfxml_trace_periodicity_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_trace_periodicity);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_trace_periodicity);
        YY_BREAK
 case 46:
 YY_RULE_SETUP
@@ -5782,21 +5658,13 @@ case 53:
 YY_RULE_SETUP
 {
   AX_surfxml_random_id = 0;
-  surfxml_random_id_isset = 0;
   AX_surfxml_random_min = 0;
-  surfxml_random_min_isset = 0;
   AX_surfxml_random_max = 0;
-  surfxml_random_max_isset = 0;
   AX_surfxml_random_mean = 0;
-  surfxml_random_mean_isset = 0;
   AX_surfxml_random_std_deviation = 0;
-  surfxml_random_std_deviation_isset = 0;
   AX_surfxml_random_seed = 5;
-  surfxml_random_seed_isset = 0;
   AX_surfxml_random_radical = 0;
-  surfxml_random_radical_isset = 0;
   AX_surfxml_random_generator = A_surfxml_random_generator_DRAND48;
-  surfxml_random_generator_isset = 0;
   ENTER(AL_surfxml_random); pushbuffer(0);
   }
        YY_BREAK
@@ -5804,72 +5672,72 @@ YY_RULE_SETUP
 case 54:
 /* rule 54 can match eol */
 YY_RULE_SETUP
-if (surfxml_random_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_random>");} surfxml_random_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_random_id);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_random_id);
        YY_BREAK
 case 55:
 /* rule 55 can match eol */
 YY_RULE_SETUP
-if (surfxml_random_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_random>");}  surfxml_random_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_random_id);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_random_id);
        YY_BREAK
 case 56:
 /* rule 56 can match eol */
 YY_RULE_SETUP
-if (surfxml_random_min_isset != 0) {FAIL("Multiple definition of attribute min in <surfxml_random>");} surfxml_random_min_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_random_min);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_random_min);
        YY_BREAK
 case 57:
 /* rule 57 can match eol */
 YY_RULE_SETUP
-if (surfxml_random_min_isset != 0) {FAIL("Multiple definition of attribute min in <surfxml_random>");}  surfxml_random_min_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_random_min);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_random_min);
        YY_BREAK
 case 58:
 /* rule 58 can match eol */
 YY_RULE_SETUP
-if (surfxml_random_max_isset != 0) {FAIL("Multiple definition of attribute max in <surfxml_random>");} surfxml_random_max_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_random_max);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_random_max);
        YY_BREAK
 case 59:
 /* rule 59 can match eol */
 YY_RULE_SETUP
-if (surfxml_random_max_isset != 0) {FAIL("Multiple definition of attribute max in <surfxml_random>");}  surfxml_random_max_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_random_max);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_random_max);
        YY_BREAK
 case 60:
 /* rule 60 can match eol */
 YY_RULE_SETUP
-if (surfxml_random_mean_isset != 0) {FAIL("Multiple definition of attribute mean in <surfxml_random>");} surfxml_random_mean_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_random_mean);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_random_mean);
        YY_BREAK
 case 61:
 /* rule 61 can match eol */
 YY_RULE_SETUP
-if (surfxml_random_mean_isset != 0) {FAIL("Multiple definition of attribute mean in <surfxml_random>");}  surfxml_random_mean_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_random_mean);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_random_mean);
        YY_BREAK
 case 62:
 /* rule 62 can match eol */
 YY_RULE_SETUP
-if (surfxml_random_std_deviation_isset != 0) {FAIL("Multiple definition of attribute std_deviation in <surfxml_random>");} surfxml_random_std_deviation_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_random_std_deviation);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_random_std_deviation);
        YY_BREAK
 case 63:
 /* rule 63 can match eol */
 YY_RULE_SETUP
-if (surfxml_random_std_deviation_isset != 0) {FAIL("Multiple definition of attribute std_deviation in <surfxml_random>");}  surfxml_random_std_deviation_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_random_std_deviation);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_random_std_deviation);
        YY_BREAK
 case 64:
 /* rule 64 can match eol */
 YY_RULE_SETUP
-if (surfxml_random_seed_isset != 0) {FAIL("Multiple definition of attribute seed in <surfxml_random>");} surfxml_random_seed_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_random_seed);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_random_seed);
        YY_BREAK
 case 65:
 /* rule 65 can match eol */
 YY_RULE_SETUP
-if (surfxml_random_seed_isset != 0) {FAIL("Multiple definition of attribute seed in <surfxml_random>");}  surfxml_random_seed_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_random_seed);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_random_seed);
        YY_BREAK
 case 66:
 /* rule 66 can match eol */
 YY_RULE_SETUP
-if (surfxml_random_radical_isset != 0) {FAIL("Multiple definition of attribute radical in <surfxml_random>");} surfxml_random_radical_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_random_radical);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_random_radical);
        YY_BREAK
 case 67:
 /* rule 67 can match eol */
 YY_RULE_SETUP
-if (surfxml_random_radical_isset != 0) {FAIL("Multiple definition of attribute radical in <surfxml_random>");}  surfxml_random_radical_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_random_radical);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_random_radical);
        YY_BREAK
 case 68:
 /* rule 68 can match eol */
@@ -5973,11 +5841,8 @@ case 84:
 YY_RULE_SETUP
 {
   AX_surfxml_trace_connect_kind = A_surfxml_trace_connect_kind_HOST_AVAIL;
-  surfxml_trace_connect_kind_isset = 0;
   AX_surfxml_trace_connect_trace = 0;
-  surfxml_trace_connect_trace_isset = 0;
   AX_surfxml_trace_connect_element = 0;
-  surfxml_trace_connect_element_isset = 0;
   ENTER(AL_surfxml_trace_connect); pushbuffer(0);
   }
        YY_BREAK
@@ -6020,22 +5885,22 @@ A_surfxml_trace_connect_kind = A_surfxml_trace_connect_kind_LATENCY;
 case 95:
 /* rule 95 can match eol */
 YY_RULE_SETUP
-if (surfxml_trace_connect_trace_isset != 0) {FAIL("Multiple definition of attribute trace in <surfxml_trace_connect>");} surfxml_trace_connect_trace_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_trace_connect_trace);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_trace_connect_trace);
        YY_BREAK
 case 96:
 /* rule 96 can match eol */
 YY_RULE_SETUP
-if (surfxml_trace_connect_trace_isset != 0) {FAIL("Multiple definition of attribute trace in <surfxml_trace_connect>");}  surfxml_trace_connect_trace_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_trace_connect_trace);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_trace_connect_trace);
        YY_BREAK
 case 97:
 /* rule 97 can match eol */
 YY_RULE_SETUP
-if (surfxml_trace_connect_element_isset != 0) {FAIL("Multiple definition of attribute element in <surfxml_trace_connect>");} surfxml_trace_connect_element_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_trace_connect_element);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_trace_connect_element);
        YY_BREAK
 case 98:
 /* rule 98 can match eol */
 YY_RULE_SETUP
-if (surfxml_trace_connect_element_isset != 0) {FAIL("Multiple definition of attribute element in <surfxml_trace_connect>");}  surfxml_trace_connect_element_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_trace_connect_element);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_trace_connect_element);
        YY_BREAK
 case 99:
 YY_RULE_SETUP
@@ -6115,9 +5980,7 @@ case 107:
 YY_RULE_SETUP
 {
   AX_surfxml_AS_id = 0;
-  surfxml_AS_id_isset = 0;
   AX_surfxml_AS_routing = A_surfxml_AS_routing_None;
-  surfxml_AS_routing_isset = 0;
   ENTER(AL_surfxml_AS); pushbuffer(0);
   }
        YY_BREAK
@@ -6125,12 +5988,12 @@ YY_RULE_SETUP
 case 108:
 /* rule 108 can match eol */
 YY_RULE_SETUP
-if (surfxml_AS_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_AS>");} surfxml_AS_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_AS_id);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_AS_id);
        YY_BREAK
 case 109:
 /* rule 109 can match eol */
 YY_RULE_SETUP
-if (surfxml_AS_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_AS>");}  surfxml_AS_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_AS_id);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_AS_id);
        YY_BREAK
 case 110:
 /* rule 110 can match eol */
@@ -6265,13 +6128,9 @@ case 134:
 YY_RULE_SETUP
 {
   AX_surfxml_storage_type_id = 0;
-  surfxml_storage_type_id_isset = 0;
   AX_surfxml_storage_type_model = 0;
-  surfxml_storage_type_model_isset = 0;
   AX_surfxml_storage_type_size = 0;
-  surfxml_storage_type_size_isset = 0;
   AX_surfxml_storage_type_content = 0;
-  surfxml_storage_type_content_isset = 0;
   ENTER(AL_surfxml_storage_type); pushbuffer(0);
   }
        YY_BREAK
@@ -6279,42 +6138,42 @@ YY_RULE_SETUP
 case 135:
 /* rule 135 can match eol */
 YY_RULE_SETUP
-if (surfxml_storage_type_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_storage_type>");} surfxml_storage_type_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_storage_type_id);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_storage_type_id);
        YY_BREAK
 case 136:
 /* rule 136 can match eol */
 YY_RULE_SETUP
-if (surfxml_storage_type_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_storage_type>");}  surfxml_storage_type_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_storage_type_id);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_storage_type_id);
        YY_BREAK
 case 137:
 /* rule 137 can match eol */
 YY_RULE_SETUP
-if (surfxml_storage_type_model_isset != 0) {FAIL("Multiple definition of attribute model in <surfxml_storage_type>");} surfxml_storage_type_model_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_storage_type_model);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_storage_type_model);
        YY_BREAK
 case 138:
 /* rule 138 can match eol */
 YY_RULE_SETUP
-if (surfxml_storage_type_model_isset != 0) {FAIL("Multiple definition of attribute model in <surfxml_storage_type>");}  surfxml_storage_type_model_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_storage_type_model);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_storage_type_model);
        YY_BREAK
 case 139:
 /* rule 139 can match eol */
 YY_RULE_SETUP
-if (surfxml_storage_type_size_isset != 0) {FAIL("Multiple definition of attribute size in <surfxml_storage_type>");} surfxml_storage_type_size_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_storage_type_size);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_storage_type_size);
        YY_BREAK
 case 140:
 /* rule 140 can match eol */
 YY_RULE_SETUP
-if (surfxml_storage_type_size_isset != 0) {FAIL("Multiple definition of attribute size in <surfxml_storage_type>");}  surfxml_storage_type_size_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_storage_type_size);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_storage_type_size);
        YY_BREAK
 case 141:
 /* rule 141 can match eol */
 YY_RULE_SETUP
-if (surfxml_storage_type_content_isset != 0) {FAIL("Multiple definition of attribute content in <surfxml_storage_type>");} surfxml_storage_type_content_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_storage_type_content);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_storage_type_content);
        YY_BREAK
 case 142:
 /* rule 142 can match eol */
 YY_RULE_SETUP
-if (surfxml_storage_type_content_isset != 0) {FAIL("Multiple definition of attribute content in <surfxml_storage_type>");}  surfxml_storage_type_content_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_storage_type_content);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_storage_type_content);
        YY_BREAK
 case 143:
 YY_RULE_SETUP
@@ -6388,11 +6247,8 @@ case 151:
 YY_RULE_SETUP
 {
   AX_surfxml_storage_id = 0;
-  surfxml_storage_id_isset = 0;
   AX_surfxml_storage_typeId = 0;
-  surfxml_storage_typeId_isset = 0;
   AX_surfxml_storage_content = 0;
-  surfxml_storage_content_isset = 0;
   ENTER(AL_surfxml_storage); pushbuffer(0);
   }
        YY_BREAK
@@ -6400,32 +6256,32 @@ YY_RULE_SETUP
 case 152:
 /* rule 152 can match eol */
 YY_RULE_SETUP
-if (surfxml_storage_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_storage>");} surfxml_storage_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_storage_id);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_storage_id);
        YY_BREAK
 case 153:
 /* rule 153 can match eol */
 YY_RULE_SETUP
-if (surfxml_storage_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_storage>");}  surfxml_storage_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_storage_id);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_storage_id);
        YY_BREAK
 case 154:
 /* rule 154 can match eol */
 YY_RULE_SETUP
-if (surfxml_storage_typeId_isset != 0) {FAIL("Multiple definition of attribute typeId in <surfxml_storage>");} surfxml_storage_typeId_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_storage_typeId);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_storage_typeId);
        YY_BREAK
 case 155:
 /* rule 155 can match eol */
 YY_RULE_SETUP
-if (surfxml_storage_typeId_isset != 0) {FAIL("Multiple definition of attribute typeId in <surfxml_storage>");}  surfxml_storage_typeId_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_storage_typeId);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_storage_typeId);
        YY_BREAK
 case 156:
 /* rule 156 can match eol */
 YY_RULE_SETUP
-if (surfxml_storage_content_isset != 0) {FAIL("Multiple definition of attribute content in <surfxml_storage>");} surfxml_storage_content_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_storage_content);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_storage_content);
        YY_BREAK
 case 157:
 /* rule 157 can match eol */
 YY_RULE_SETUP
-if (surfxml_storage_content_isset != 0) {FAIL("Multiple definition of attribute content in <surfxml_storage>");}  surfxml_storage_content_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_storage_content);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_storage_content);
        YY_BREAK
 case 158:
 YY_RULE_SETUP
@@ -6497,9 +6353,7 @@ case 166:
 YY_RULE_SETUP
 {
   AX_surfxml_mount_id = 0;
-  surfxml_mount_id_isset = 0;
   AX_surfxml_mount_name = 0;
-  surfxml_mount_name_isset = 0;
   ENTER(AL_surfxml_mount); pushbuffer(0);
   }
        YY_BREAK
@@ -6507,22 +6361,22 @@ YY_RULE_SETUP
 case 167:
 /* rule 167 can match eol */
 YY_RULE_SETUP
-if (surfxml_mount_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_mount>");} surfxml_mount_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_mount_id);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_mount_id);
        YY_BREAK
 case 168:
 /* rule 168 can match eol */
 YY_RULE_SETUP
-if (surfxml_mount_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_mount>");}  surfxml_mount_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_mount_id);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_mount_id);
        YY_BREAK
 case 169:
 /* rule 169 can match eol */
 YY_RULE_SETUP
-if (surfxml_mount_name_isset != 0) {FAIL("Multiple definition of attribute name in <surfxml_mount>");} surfxml_mount_name_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_mount_name);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_mount_name);
        YY_BREAK
 case 170:
 /* rule 170 can match eol */
 YY_RULE_SETUP
-if (surfxml_mount_name_isset != 0) {FAIL("Multiple definition of attribute name in <surfxml_mount>");}  surfxml_mount_name_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_mount_name);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_mount_name);
        YY_BREAK
 case 171:
 YY_RULE_SETUP
@@ -6590,9 +6444,7 @@ case 179:
 YY_RULE_SETUP
 {
   AX_surfxml_mstorage_typeId = 0;
-  surfxml_mstorage_typeId_isset = 0;
   AX_surfxml_mstorage_name = 0;
-  surfxml_mstorage_name_isset = 0;
   ENTER(AL_surfxml_mstorage); pushbuffer(0);
   }
        YY_BREAK
@@ -6600,22 +6452,22 @@ YY_RULE_SETUP
 case 180:
 /* rule 180 can match eol */
 YY_RULE_SETUP
-if (surfxml_mstorage_typeId_isset != 0) {FAIL("Multiple definition of attribute typeId in <surfxml_mstorage>");} surfxml_mstorage_typeId_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_mstorage_typeId);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_mstorage_typeId);
        YY_BREAK
 case 181:
 /* rule 181 can match eol */
 YY_RULE_SETUP
-if (surfxml_mstorage_typeId_isset != 0) {FAIL("Multiple definition of attribute typeId in <surfxml_mstorage>");}  surfxml_mstorage_typeId_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_mstorage_typeId);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_mstorage_typeId);
        YY_BREAK
 case 182:
 /* rule 182 can match eol */
 YY_RULE_SETUP
-if (surfxml_mstorage_name_isset != 0) {FAIL("Multiple definition of attribute name in <surfxml_mstorage>");} surfxml_mstorage_name_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_mstorage_name);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_mstorage_name);
        YY_BREAK
 case 183:
 /* rule 183 can match eol */
 YY_RULE_SETUP
-if (surfxml_mstorage_name_isset != 0) {FAIL("Multiple definition of attribute name in <surfxml_mstorage>");}  surfxml_mstorage_name_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_mstorage_name);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_mstorage_name);
        YY_BREAK
 case 184:
 YY_RULE_SETUP
@@ -6683,21 +6535,13 @@ case 192:
 YY_RULE_SETUP
 {
   AX_surfxml_host_id = 0;
-  surfxml_host_id_isset = 0;
   AX_surfxml_host_power = 0;
-  surfxml_host_power_isset = 0;
   AX_surfxml_host_core = 16;
-  surfxml_host_core_isset = 0;
   AX_surfxml_host_availability = 18;
-  surfxml_host_availability_isset = 0;
   AX_surfxml_host_availability_file = 0;
-  surfxml_host_availability_file_isset = 0;
   AX_surfxml_host_state = A_surfxml_host_state_ON;
-  surfxml_host_state_isset = 0;
   AX_surfxml_host_state_file = 0;
-  surfxml_host_state_file_isset = 0;
   AX_surfxml_host_coordinates = 0;
-  surfxml_host_coordinates_isset = 0;
   ENTER(AL_surfxml_host); pushbuffer(0);
   }
        YY_BREAK
@@ -6705,52 +6549,52 @@ YY_RULE_SETUP
 case 193:
 /* rule 193 can match eol */
 YY_RULE_SETUP
-if (surfxml_host_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_host>");} surfxml_host_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_host_id);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_host_id);
        YY_BREAK
 case 194:
 /* rule 194 can match eol */
 YY_RULE_SETUP
-if (surfxml_host_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_host>");}  surfxml_host_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_host_id);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_host_id);
        YY_BREAK
 case 195:
 /* rule 195 can match eol */
 YY_RULE_SETUP
-if (surfxml_host_power_isset != 0) {FAIL("Multiple definition of attribute power in <surfxml_host>");} surfxml_host_power_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_host_power);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_host_power);
        YY_BREAK
 case 196:
 /* rule 196 can match eol */
 YY_RULE_SETUP
-if (surfxml_host_power_isset != 0) {FAIL("Multiple definition of attribute power in <surfxml_host>");}  surfxml_host_power_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_host_power);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_host_power);
        YY_BREAK
 case 197:
 /* rule 197 can match eol */
 YY_RULE_SETUP
-if (surfxml_host_core_isset != 0) {FAIL("Multiple definition of attribute core in <surfxml_host>");} surfxml_host_core_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_host_core);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_host_core);
        YY_BREAK
 case 198:
 /* rule 198 can match eol */
 YY_RULE_SETUP
-if (surfxml_host_core_isset != 0) {FAIL("Multiple definition of attribute core in <surfxml_host>");}  surfxml_host_core_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_host_core);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_host_core);
        YY_BREAK
 case 199:
 /* rule 199 can match eol */
 YY_RULE_SETUP
-if (surfxml_host_availability_isset != 0) {FAIL("Multiple definition of attribute availability in <surfxml_host>");} surfxml_host_availability_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_host_availability);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_host_availability);
        YY_BREAK
 case 200:
 /* rule 200 can match eol */
 YY_RULE_SETUP
-if (surfxml_host_availability_isset != 0) {FAIL("Multiple definition of attribute availability in <surfxml_host>");}  surfxml_host_availability_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_host_availability);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_host_availability);
        YY_BREAK
 case 201:
 /* rule 201 can match eol */
 YY_RULE_SETUP
-if (surfxml_host_availability_file_isset != 0) {FAIL("Multiple definition of attribute availability_file in <surfxml_host>");} surfxml_host_availability_file_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_host_availability_file);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_host_availability_file);
        YY_BREAK
 case 202:
 /* rule 202 can match eol */
 YY_RULE_SETUP
-if (surfxml_host_availability_file_isset != 0) {FAIL("Multiple definition of attribute availability_file in <surfxml_host>");}  surfxml_host_availability_file_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_host_availability_file);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_host_availability_file);
        YY_BREAK
 case 203:
 /* rule 203 can match eol */
@@ -6769,22 +6613,22 @@ A_surfxml_host_state = A_surfxml_host_state_OFF;
 case 207:
 /* rule 207 can match eol */
 YY_RULE_SETUP
-if (surfxml_host_state_file_isset != 0) {FAIL("Multiple definition of attribute state_file in <surfxml_host>");} surfxml_host_state_file_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_host_state_file);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_host_state_file);
        YY_BREAK
 case 208:
 /* rule 208 can match eol */
 YY_RULE_SETUP
-if (surfxml_host_state_file_isset != 0) {FAIL("Multiple definition of attribute state_file in <surfxml_host>");}  surfxml_host_state_file_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_host_state_file);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_host_state_file);
        YY_BREAK
 case 209:
 /* rule 209 can match eol */
 YY_RULE_SETUP
-if (surfxml_host_coordinates_isset != 0) {FAIL("Multiple definition of attribute coordinates in <surfxml_host>");} surfxml_host_coordinates_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_host_coordinates);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_host_coordinates);
        YY_BREAK
 case 210:
 /* rule 210 can match eol */
 YY_RULE_SETUP
-if (surfxml_host_coordinates_isset != 0) {FAIL("Multiple definition of attribute coordinates in <surfxml_host>");}  surfxml_host_coordinates_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_host_coordinates);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_host_coordinates);
        YY_BREAK
 case 211:
 YY_RULE_SETUP
@@ -6854,11 +6698,8 @@ case 219:
 YY_RULE_SETUP
 {
   AX_surfxml_host_link_id = 0;
-  surfxml_host_link_id_isset = 0;
   AX_surfxml_host_link_up = 0;
-  surfxml_host_link_up_isset = 0;
   AX_surfxml_host_link_down = 0;
-  surfxml_host_link_down_isset = 0;
   ENTER(AL_surfxml_host_link); pushbuffer(0);
   }
        YY_BREAK
@@ -6866,32 +6707,32 @@ YY_RULE_SETUP
 case 220:
 /* rule 220 can match eol */
 YY_RULE_SETUP
-if (surfxml_host_link_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_host_link>");} surfxml_host_link_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_host_link_id);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_host_link_id);
        YY_BREAK
 case 221:
 /* rule 221 can match eol */
 YY_RULE_SETUP
-if (surfxml_host_link_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_host_link>");}  surfxml_host_link_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_host_link_id);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_host_link_id);
        YY_BREAK
 case 222:
 /* rule 222 can match eol */
 YY_RULE_SETUP
-if (surfxml_host_link_up_isset != 0) {FAIL("Multiple definition of attribute up in <surfxml_host_link>");} surfxml_host_link_up_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_host_link_up);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_host_link_up);
        YY_BREAK
 case 223:
 /* rule 223 can match eol */
 YY_RULE_SETUP
-if (surfxml_host_link_up_isset != 0) {FAIL("Multiple definition of attribute up in <surfxml_host_link>");}  surfxml_host_link_up_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_host_link_up);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_host_link_up);
        YY_BREAK
 case 224:
 /* rule 224 can match eol */
 YY_RULE_SETUP
-if (surfxml_host_link_down_isset != 0) {FAIL("Multiple definition of attribute down in <surfxml_host_link>");} surfxml_host_link_down_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_host_link_down);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_host_link_down);
        YY_BREAK
 case 225:
 /* rule 225 can match eol */
 YY_RULE_SETUP
-if (surfxml_host_link_down_isset != 0) {FAIL("Multiple definition of attribute down in <surfxml_host_link>");}  surfxml_host_link_down_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_host_link_down);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_host_link_down);
        YY_BREAK
 case 226:
 YY_RULE_SETUP
@@ -6961,35 +6802,20 @@ case 234:
 YY_RULE_SETUP
 {
   AX_surfxml_cluster_id = 0;
-  surfxml_cluster_id_isset = 0;
   AX_surfxml_cluster_prefix = 0;
-  surfxml_cluster_prefix_isset = 0;
   AX_surfxml_cluster_suffix = 0;
-  surfxml_cluster_suffix_isset = 0;
   AX_surfxml_cluster_radical = 0;
-  surfxml_cluster_radical_isset = 0;
   AX_surfxml_cluster_power = 0;
-  surfxml_cluster_power_isset = 0;
   AX_surfxml_cluster_core = 22;
-  surfxml_cluster_core_isset = 0;
   AX_surfxml_cluster_bw = 0;
-  surfxml_cluster_bw_isset = 0;
   AX_surfxml_cluster_lat = 0;
-  surfxml_cluster_lat_isset = 0;
   AX_surfxml_cluster_sharing_policy = A_surfxml_cluster_sharing_policy_FULLDUPLEX;
-  surfxml_cluster_sharing_policy_isset = 0;
   AX_surfxml_cluster_bb_bw = 0;
-  surfxml_cluster_bb_bw_isset = 0;
   AX_surfxml_cluster_bb_lat = 0;
-  surfxml_cluster_bb_lat_isset = 0;
   AX_surfxml_cluster_bb_sharing_policy = A_surfxml_cluster_bb_sharing_policy_SHARED;
-  surfxml_cluster_bb_sharing_policy_isset = 0;
   AX_surfxml_cluster_availability_file = 0;
-  surfxml_cluster_availability_file_isset = 0;
   AX_surfxml_cluster_state_file = 0;
-  surfxml_cluster_state_file_isset = 0;
   AX_surfxml_cluster_router_id = 0;
-  surfxml_cluster_router_id_isset = 0;
   ENTER(AL_surfxml_cluster); pushbuffer(0);
   }
        YY_BREAK
@@ -6997,82 +6823,82 @@ YY_RULE_SETUP
 case 235:
 /* rule 235 can match eol */
 YY_RULE_SETUP
-if (surfxml_cluster_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_cluster>");} surfxml_cluster_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_id);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_id);
        YY_BREAK
 case 236:
 /* rule 236 can match eol */
 YY_RULE_SETUP
-if (surfxml_cluster_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_cluster>");}  surfxml_cluster_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_id);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_id);
        YY_BREAK
 case 237:
 /* rule 237 can match eol */
 YY_RULE_SETUP
-if (surfxml_cluster_prefix_isset != 0) {FAIL("Multiple definition of attribute prefix in <surfxml_cluster>");} surfxml_cluster_prefix_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_prefix);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_prefix);
        YY_BREAK
 case 238:
 /* rule 238 can match eol */
 YY_RULE_SETUP
-if (surfxml_cluster_prefix_isset != 0) {FAIL("Multiple definition of attribute prefix in <surfxml_cluster>");}  surfxml_cluster_prefix_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_prefix);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_prefix);
        YY_BREAK
 case 239:
 /* rule 239 can match eol */
 YY_RULE_SETUP
-if (surfxml_cluster_suffix_isset != 0) {FAIL("Multiple definition of attribute suffix in <surfxml_cluster>");} surfxml_cluster_suffix_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_suffix);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_suffix);
        YY_BREAK
 case 240:
 /* rule 240 can match eol */
 YY_RULE_SETUP
-if (surfxml_cluster_suffix_isset != 0) {FAIL("Multiple definition of attribute suffix in <surfxml_cluster>");}  surfxml_cluster_suffix_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_suffix);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_suffix);
        YY_BREAK
 case 241:
 /* rule 241 can match eol */
 YY_RULE_SETUP
-if (surfxml_cluster_radical_isset != 0) {FAIL("Multiple definition of attribute radical in <surfxml_cluster>");} surfxml_cluster_radical_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_radical);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_radical);
        YY_BREAK
 case 242:
 /* rule 242 can match eol */
 YY_RULE_SETUP
-if (surfxml_cluster_radical_isset != 0) {FAIL("Multiple definition of attribute radical in <surfxml_cluster>");}  surfxml_cluster_radical_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_radical);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_radical);
        YY_BREAK
 case 243:
 /* rule 243 can match eol */
 YY_RULE_SETUP
-if (surfxml_cluster_power_isset != 0) {FAIL("Multiple definition of attribute power in <surfxml_cluster>");} surfxml_cluster_power_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_power);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_power);
        YY_BREAK
 case 244:
 /* rule 244 can match eol */
 YY_RULE_SETUP
-if (surfxml_cluster_power_isset != 0) {FAIL("Multiple definition of attribute power in <surfxml_cluster>");}  surfxml_cluster_power_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_power);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_power);
        YY_BREAK
 case 245:
 /* rule 245 can match eol */
 YY_RULE_SETUP
-if (surfxml_cluster_core_isset != 0) {FAIL("Multiple definition of attribute core in <surfxml_cluster>");} surfxml_cluster_core_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_core);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_core);
        YY_BREAK
 case 246:
 /* rule 246 can match eol */
 YY_RULE_SETUP
-if (surfxml_cluster_core_isset != 0) {FAIL("Multiple definition of attribute core in <surfxml_cluster>");}  surfxml_cluster_core_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_core);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_core);
        YY_BREAK
 case 247:
 /* rule 247 can match eol */
 YY_RULE_SETUP
-if (surfxml_cluster_bw_isset != 0) {FAIL("Multiple definition of attribute bw in <surfxml_cluster>");} surfxml_cluster_bw_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_bw);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_bw);
        YY_BREAK
 case 248:
 /* rule 248 can match eol */
 YY_RULE_SETUP
-if (surfxml_cluster_bw_isset != 0) {FAIL("Multiple definition of attribute bw in <surfxml_cluster>");}  surfxml_cluster_bw_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_bw);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_bw);
        YY_BREAK
 case 249:
 /* rule 249 can match eol */
 YY_RULE_SETUP
-if (surfxml_cluster_lat_isset != 0) {FAIL("Multiple definition of attribute lat in <surfxml_cluster>");} surfxml_cluster_lat_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_lat);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_lat);
        YY_BREAK
 case 250:
 /* rule 250 can match eol */
 YY_RULE_SETUP
-if (surfxml_cluster_lat_isset != 0) {FAIL("Multiple definition of attribute lat in <surfxml_cluster>");}  surfxml_cluster_lat_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_lat);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_lat);
        YY_BREAK
 case 251:
 /* rule 251 can match eol */
@@ -7098,22 +6924,22 @@ A_surfxml_cluster_sharing_policy = A_surfxml_cluster_sharing_policy_FATPIPE;
 case 257:
 /* rule 257 can match eol */
 YY_RULE_SETUP
-if (surfxml_cluster_bb_bw_isset != 0) {FAIL("Multiple definition of attribute bb_bw in <surfxml_cluster>");} surfxml_cluster_bb_bw_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_bb_bw);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_bb_bw);
        YY_BREAK
 case 258:
 /* rule 258 can match eol */
 YY_RULE_SETUP
-if (surfxml_cluster_bb_bw_isset != 0) {FAIL("Multiple definition of attribute bb_bw in <surfxml_cluster>");}  surfxml_cluster_bb_bw_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_bb_bw);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_bb_bw);
        YY_BREAK
 case 259:
 /* rule 259 can match eol */
 YY_RULE_SETUP
-if (surfxml_cluster_bb_lat_isset != 0) {FAIL("Multiple definition of attribute bb_lat in <surfxml_cluster>");} surfxml_cluster_bb_lat_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_bb_lat);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_bb_lat);
        YY_BREAK
 case 260:
 /* rule 260 can match eol */
 YY_RULE_SETUP
-if (surfxml_cluster_bb_lat_isset != 0) {FAIL("Multiple definition of attribute bb_lat in <surfxml_cluster>");}  surfxml_cluster_bb_lat_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_bb_lat);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_bb_lat);
        YY_BREAK
 case 261:
 /* rule 261 can match eol */
@@ -7132,32 +6958,32 @@ A_surfxml_cluster_bb_sharing_policy = A_surfxml_cluster_bb_sharing_policy_FATPIP
 case 265:
 /* rule 265 can match eol */
 YY_RULE_SETUP
-if (surfxml_cluster_availability_file_isset != 0) {FAIL("Multiple definition of attribute availability_file in <surfxml_cluster>");} surfxml_cluster_availability_file_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_availability_file);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_availability_file);
        YY_BREAK
 case 266:
 /* rule 266 can match eol */
 YY_RULE_SETUP
-if (surfxml_cluster_availability_file_isset != 0) {FAIL("Multiple definition of attribute availability_file in <surfxml_cluster>");}  surfxml_cluster_availability_file_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_availability_file);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_availability_file);
        YY_BREAK
 case 267:
 /* rule 267 can match eol */
 YY_RULE_SETUP
-if (surfxml_cluster_state_file_isset != 0) {FAIL("Multiple definition of attribute state_file in <surfxml_cluster>");} surfxml_cluster_state_file_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_state_file);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_state_file);
        YY_BREAK
 case 268:
 /* rule 268 can match eol */
 YY_RULE_SETUP
-if (surfxml_cluster_state_file_isset != 0) {FAIL("Multiple definition of attribute state_file in <surfxml_cluster>");}  surfxml_cluster_state_file_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_state_file);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_state_file);
        YY_BREAK
 case 269:
 /* rule 269 can match eol */
 YY_RULE_SETUP
-if (surfxml_cluster_router_id_isset != 0) {FAIL("Multiple definition of attribute router_id in <surfxml_cluster>");} surfxml_cluster_router_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_router_id);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_router_id);
        YY_BREAK
 case 270:
 /* rule 270 can match eol */
 YY_RULE_SETUP
-if (surfxml_cluster_router_id_isset != 0) {FAIL("Multiple definition of attribute router_id in <surfxml_cluster>");}  surfxml_cluster_router_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_router_id);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_router_id);
        YY_BREAK
 case 271:
 YY_RULE_SETUP
@@ -7239,19 +7065,12 @@ case 279:
 YY_RULE_SETUP
 {
   AX_surfxml_cabinet_id = 0;
-  surfxml_cabinet_id_isset = 0;
   AX_surfxml_cabinet_prefix = 0;
-  surfxml_cabinet_prefix_isset = 0;
   AX_surfxml_cabinet_suffix = 0;
-  surfxml_cabinet_suffix_isset = 0;
   AX_surfxml_cabinet_radical = 0;
-  surfxml_cabinet_radical_isset = 0;
   AX_surfxml_cabinet_power = 0;
-  surfxml_cabinet_power_isset = 0;
   AX_surfxml_cabinet_bw = 0;
-  surfxml_cabinet_bw_isset = 0;
   AX_surfxml_cabinet_lat = 0;
-  surfxml_cabinet_lat_isset = 0;
   ENTER(AL_surfxml_cabinet); pushbuffer(0);
   }
        YY_BREAK
@@ -7259,72 +7078,72 @@ YY_RULE_SETUP
 case 280:
 /* rule 280 can match eol */
 YY_RULE_SETUP
-if (surfxml_cabinet_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_cabinet>");} surfxml_cabinet_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cabinet_id);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_cabinet_id);
        YY_BREAK
 case 281:
 /* rule 281 can match eol */
 YY_RULE_SETUP
-if (surfxml_cabinet_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_cabinet>");}  surfxml_cabinet_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cabinet_id);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_cabinet_id);
        YY_BREAK
 case 282:
 /* rule 282 can match eol */
 YY_RULE_SETUP
-if (surfxml_cabinet_prefix_isset != 0) {FAIL("Multiple definition of attribute prefix in <surfxml_cabinet>");} surfxml_cabinet_prefix_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cabinet_prefix);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_cabinet_prefix);
        YY_BREAK
 case 283:
 /* rule 283 can match eol */
 YY_RULE_SETUP
-if (surfxml_cabinet_prefix_isset != 0) {FAIL("Multiple definition of attribute prefix in <surfxml_cabinet>");}  surfxml_cabinet_prefix_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cabinet_prefix);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_cabinet_prefix);
        YY_BREAK
 case 284:
 /* rule 284 can match eol */
 YY_RULE_SETUP
-if (surfxml_cabinet_suffix_isset != 0) {FAIL("Multiple definition of attribute suffix in <surfxml_cabinet>");} surfxml_cabinet_suffix_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cabinet_suffix);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_cabinet_suffix);
        YY_BREAK
 case 285:
 /* rule 285 can match eol */
 YY_RULE_SETUP
-if (surfxml_cabinet_suffix_isset != 0) {FAIL("Multiple definition of attribute suffix in <surfxml_cabinet>");}  surfxml_cabinet_suffix_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cabinet_suffix);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_cabinet_suffix);
        YY_BREAK
 case 286:
 /* rule 286 can match eol */
 YY_RULE_SETUP
-if (surfxml_cabinet_radical_isset != 0) {FAIL("Multiple definition of attribute radical in <surfxml_cabinet>");} surfxml_cabinet_radical_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cabinet_radical);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_cabinet_radical);
        YY_BREAK
 case 287:
 /* rule 287 can match eol */
 YY_RULE_SETUP
-if (surfxml_cabinet_radical_isset != 0) {FAIL("Multiple definition of attribute radical in <surfxml_cabinet>");}  surfxml_cabinet_radical_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cabinet_radical);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_cabinet_radical);
        YY_BREAK
 case 288:
 /* rule 288 can match eol */
 YY_RULE_SETUP
-if (surfxml_cabinet_power_isset != 0) {FAIL("Multiple definition of attribute power in <surfxml_cabinet>");} surfxml_cabinet_power_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cabinet_power);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_cabinet_power);
        YY_BREAK
 case 289:
 /* rule 289 can match eol */
 YY_RULE_SETUP
-if (surfxml_cabinet_power_isset != 0) {FAIL("Multiple definition of attribute power in <surfxml_cabinet>");}  surfxml_cabinet_power_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cabinet_power);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_cabinet_power);
        YY_BREAK
 case 290:
 /* rule 290 can match eol */
 YY_RULE_SETUP
-if (surfxml_cabinet_bw_isset != 0) {FAIL("Multiple definition of attribute bw in <surfxml_cabinet>");} surfxml_cabinet_bw_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cabinet_bw);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_cabinet_bw);
        YY_BREAK
 case 291:
 /* rule 291 can match eol */
 YY_RULE_SETUP
-if (surfxml_cabinet_bw_isset != 0) {FAIL("Multiple definition of attribute bw in <surfxml_cabinet>");}  surfxml_cabinet_bw_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cabinet_bw);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_cabinet_bw);
        YY_BREAK
 case 292:
 /* rule 292 can match eol */
 YY_RULE_SETUP
-if (surfxml_cabinet_lat_isset != 0) {FAIL("Multiple definition of attribute lat in <surfxml_cabinet>");} surfxml_cabinet_lat_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cabinet_lat);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_cabinet_lat);
        YY_BREAK
 case 293:
 /* rule 293 can match eol */
 YY_RULE_SETUP
-if (surfxml_cabinet_lat_isset != 0) {FAIL("Multiple definition of attribute lat in <surfxml_cabinet>");}  surfxml_cabinet_lat_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cabinet_lat);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_cabinet_lat);
        YY_BREAK
 case 294:
 YY_RULE_SETUP
@@ -7408,21 +7227,13 @@ case 302:
 YY_RULE_SETUP
 {
   AX_surfxml_peer_id = 0;
-  surfxml_peer_id_isset = 0;
   AX_surfxml_peer_power = 0;
-  surfxml_peer_power_isset = 0;
   AX_surfxml_peer_bw_in = 0;
-  surfxml_peer_bw_in_isset = 0;
   AX_surfxml_peer_bw_out = 0;
-  surfxml_peer_bw_out_isset = 0;
   AX_surfxml_peer_lat = 0;
-  surfxml_peer_lat_isset = 0;
   AX_surfxml_peer_coordinates = 0;
-  surfxml_peer_coordinates_isset = 0;
   AX_surfxml_peer_availability_file = 0;
-  surfxml_peer_availability_file_isset = 0;
   AX_surfxml_peer_state_file = 0;
-  surfxml_peer_state_file_isset = 0;
   ENTER(AL_surfxml_peer); pushbuffer(0);
   }
        YY_BREAK
@@ -7430,82 +7241,82 @@ YY_RULE_SETUP
 case 303:
 /* rule 303 can match eol */
 YY_RULE_SETUP
-if (surfxml_peer_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_peer>");} surfxml_peer_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_peer_id);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_peer_id);
        YY_BREAK
 case 304:
 /* rule 304 can match eol */
 YY_RULE_SETUP
-if (surfxml_peer_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_peer>");}  surfxml_peer_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_peer_id);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_peer_id);
        YY_BREAK
 case 305:
 /* rule 305 can match eol */
 YY_RULE_SETUP
-if (surfxml_peer_power_isset != 0) {FAIL("Multiple definition of attribute power in <surfxml_peer>");} surfxml_peer_power_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_peer_power);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_peer_power);
        YY_BREAK
 case 306:
 /* rule 306 can match eol */
 YY_RULE_SETUP
-if (surfxml_peer_power_isset != 0) {FAIL("Multiple definition of attribute power in <surfxml_peer>");}  surfxml_peer_power_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_peer_power);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_peer_power);
        YY_BREAK
 case 307:
 /* rule 307 can match eol */
 YY_RULE_SETUP
-if (surfxml_peer_bw_in_isset != 0) {FAIL("Multiple definition of attribute bw_in in <surfxml_peer>");} surfxml_peer_bw_in_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_peer_bw_in);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_peer_bw_in);
        YY_BREAK
 case 308:
 /* rule 308 can match eol */
 YY_RULE_SETUP
-if (surfxml_peer_bw_in_isset != 0) {FAIL("Multiple definition of attribute bw_in in <surfxml_peer>");}  surfxml_peer_bw_in_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_peer_bw_in);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_peer_bw_in);
        YY_BREAK
 case 309:
 /* rule 309 can match eol */
 YY_RULE_SETUP
-if (surfxml_peer_bw_out_isset != 0) {FAIL("Multiple definition of attribute bw_out in <surfxml_peer>");} surfxml_peer_bw_out_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_peer_bw_out);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_peer_bw_out);
        YY_BREAK
 case 310:
 /* rule 310 can match eol */
 YY_RULE_SETUP
-if (surfxml_peer_bw_out_isset != 0) {FAIL("Multiple definition of attribute bw_out in <surfxml_peer>");}  surfxml_peer_bw_out_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_peer_bw_out);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_peer_bw_out);
        YY_BREAK
 case 311:
 /* rule 311 can match eol */
 YY_RULE_SETUP
-if (surfxml_peer_lat_isset != 0) {FAIL("Multiple definition of attribute lat in <surfxml_peer>");} surfxml_peer_lat_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_peer_lat);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_peer_lat);
        YY_BREAK
 case 312:
 /* rule 312 can match eol */
 YY_RULE_SETUP
-if (surfxml_peer_lat_isset != 0) {FAIL("Multiple definition of attribute lat in <surfxml_peer>");}  surfxml_peer_lat_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_peer_lat);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_peer_lat);
        YY_BREAK
 case 313:
 /* rule 313 can match eol */
 YY_RULE_SETUP
-if (surfxml_peer_coordinates_isset != 0) {FAIL("Multiple definition of attribute coordinates in <surfxml_peer>");} surfxml_peer_coordinates_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_peer_coordinates);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_peer_coordinates);
        YY_BREAK
 case 314:
 /* rule 314 can match eol */
 YY_RULE_SETUP
-if (surfxml_peer_coordinates_isset != 0) {FAIL("Multiple definition of attribute coordinates in <surfxml_peer>");}  surfxml_peer_coordinates_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_peer_coordinates);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_peer_coordinates);
        YY_BREAK
 case 315:
 /* rule 315 can match eol */
 YY_RULE_SETUP
-if (surfxml_peer_availability_file_isset != 0) {FAIL("Multiple definition of attribute availability_file in <surfxml_peer>");} surfxml_peer_availability_file_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_peer_availability_file);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_peer_availability_file);
        YY_BREAK
 case 316:
 /* rule 316 can match eol */
 YY_RULE_SETUP
-if (surfxml_peer_availability_file_isset != 0) {FAIL("Multiple definition of attribute availability_file in <surfxml_peer>");}  surfxml_peer_availability_file_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_peer_availability_file);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_peer_availability_file);
        YY_BREAK
 case 317:
 /* rule 317 can match eol */
 YY_RULE_SETUP
-if (surfxml_peer_state_file_isset != 0) {FAIL("Multiple definition of attribute state_file in <surfxml_peer>");} surfxml_peer_state_file_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_peer_state_file);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_peer_state_file);
        YY_BREAK
 case 318:
 /* rule 318 can match eol */
 YY_RULE_SETUP
-if (surfxml_peer_state_file_isset != 0) {FAIL("Multiple definition of attribute state_file in <surfxml_peer>");}  surfxml_peer_state_file_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_peer_state_file);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_peer_state_file);
        YY_BREAK
 case 319:
 YY_RULE_SETUP
@@ -7583,9 +7394,7 @@ case 327:
 YY_RULE_SETUP
 {
   AX_surfxml_router_id = 0;
-  surfxml_router_id_isset = 0;
   AX_surfxml_router_coordinates = 0;
-  surfxml_router_coordinates_isset = 0;
   ENTER(AL_surfxml_router); pushbuffer(0);
   }
        YY_BREAK
@@ -7593,22 +7402,22 @@ YY_RULE_SETUP
 case 328:
 /* rule 328 can match eol */
 YY_RULE_SETUP
-if (surfxml_router_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_router>");} surfxml_router_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_router_id);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_router_id);
        YY_BREAK
 case 329:
 /* rule 329 can match eol */
 YY_RULE_SETUP
-if (surfxml_router_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_router>");}  surfxml_router_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_router_id);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_router_id);
        YY_BREAK
 case 330:
 /* rule 330 can match eol */
 YY_RULE_SETUP
-if (surfxml_router_coordinates_isset != 0) {FAIL("Multiple definition of attribute coordinates in <surfxml_router>");} surfxml_router_coordinates_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_router_coordinates);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_router_coordinates);
        YY_BREAK
 case 331:
 /* rule 331 can match eol */
 YY_RULE_SETUP
-if (surfxml_router_coordinates_isset != 0) {FAIL("Multiple definition of attribute coordinates in <surfxml_router>");}  surfxml_router_coordinates_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_router_coordinates);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_router_coordinates);
        YY_BREAK
 case 332:
 YY_RULE_SETUP
@@ -7674,11 +7483,8 @@ case 340:
 YY_RULE_SETUP
 {
   AX_surfxml_backbone_id = 0;
-  surfxml_backbone_id_isset = 0;
   AX_surfxml_backbone_bandwidth = 0;
-  surfxml_backbone_bandwidth_isset = 0;
   AX_surfxml_backbone_latency = 0;
-  surfxml_backbone_latency_isset = 0;
   ENTER(AL_surfxml_backbone); pushbuffer(0);
   }
        YY_BREAK
@@ -7686,32 +7492,32 @@ YY_RULE_SETUP
 case 341:
 /* rule 341 can match eol */
 YY_RULE_SETUP
-if (surfxml_backbone_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_backbone>");} surfxml_backbone_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_backbone_id);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_backbone_id);
        YY_BREAK
 case 342:
 /* rule 342 can match eol */
 YY_RULE_SETUP
-if (surfxml_backbone_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_backbone>");}  surfxml_backbone_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_backbone_id);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_backbone_id);
        YY_BREAK
 case 343:
 /* rule 343 can match eol */
 YY_RULE_SETUP
-if (surfxml_backbone_bandwidth_isset != 0) {FAIL("Multiple definition of attribute bandwidth in <surfxml_backbone>");} surfxml_backbone_bandwidth_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_backbone_bandwidth);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_backbone_bandwidth);
        YY_BREAK
 case 344:
 /* rule 344 can match eol */
 YY_RULE_SETUP
-if (surfxml_backbone_bandwidth_isset != 0) {FAIL("Multiple definition of attribute bandwidth in <surfxml_backbone>");}  surfxml_backbone_bandwidth_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_backbone_bandwidth);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_backbone_bandwidth);
        YY_BREAK
 case 345:
 /* rule 345 can match eol */
 YY_RULE_SETUP
-if (surfxml_backbone_latency_isset != 0) {FAIL("Multiple definition of attribute latency in <surfxml_backbone>");} surfxml_backbone_latency_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_backbone_latency);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_backbone_latency);
        YY_BREAK
 case 346:
 /* rule 346 can match eol */
 YY_RULE_SETUP
-if (surfxml_backbone_latency_isset != 0) {FAIL("Multiple definition of attribute latency in <surfxml_backbone>");}  surfxml_backbone_latency_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_backbone_latency);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_backbone_latency);
        YY_BREAK
 case 347:
 YY_RULE_SETUP
@@ -7783,21 +7589,13 @@ case 355:
 YY_RULE_SETUP
 {
   AX_surfxml_link_id = 0;
-  surfxml_link_id_isset = 0;
   AX_surfxml_link_bandwidth = 0;
-  surfxml_link_bandwidth_isset = 0;
   AX_surfxml_link_bandwidth_file = 0;
-  surfxml_link_bandwidth_file_isset = 0;
   AX_surfxml_link_latency = 24;
-  surfxml_link_latency_isset = 0;
   AX_surfxml_link_latency_file = 0;
-  surfxml_link_latency_file_isset = 0;
   AX_surfxml_link_state = A_surfxml_link_state_ON;
-  surfxml_link_state_isset = 0;
   AX_surfxml_link_state_file = 0;
-  surfxml_link_state_file_isset = 0;
   AX_surfxml_link_sharing_policy = A_surfxml_link_sharing_policy_SHARED;
-  surfxml_link_sharing_policy_isset = 0;
   ENTER(AL_surfxml_link); pushbuffer(0);
   }
        YY_BREAK
@@ -7805,52 +7603,52 @@ YY_RULE_SETUP
 case 356:
 /* rule 356 can match eol */
 YY_RULE_SETUP
-if (surfxml_link_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_link>");} surfxml_link_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_link_id);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_link_id);
        YY_BREAK
 case 357:
 /* rule 357 can match eol */
 YY_RULE_SETUP
-if (surfxml_link_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_link>");}  surfxml_link_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_link_id);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_link_id);
        YY_BREAK
 case 358:
 /* rule 358 can match eol */
 YY_RULE_SETUP
-if (surfxml_link_bandwidth_isset != 0) {FAIL("Multiple definition of attribute bandwidth in <surfxml_link>");} surfxml_link_bandwidth_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_link_bandwidth);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_link_bandwidth);
        YY_BREAK
 case 359:
 /* rule 359 can match eol */
 YY_RULE_SETUP
-if (surfxml_link_bandwidth_isset != 0) {FAIL("Multiple definition of attribute bandwidth in <surfxml_link>");}  surfxml_link_bandwidth_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_link_bandwidth);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_link_bandwidth);
        YY_BREAK
 case 360:
 /* rule 360 can match eol */
 YY_RULE_SETUP
-if (surfxml_link_bandwidth_file_isset != 0) {FAIL("Multiple definition of attribute bandwidth_file in <surfxml_link>");} surfxml_link_bandwidth_file_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_link_bandwidth_file);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_link_bandwidth_file);
        YY_BREAK
 case 361:
 /* rule 361 can match eol */
 YY_RULE_SETUP
-if (surfxml_link_bandwidth_file_isset != 0) {FAIL("Multiple definition of attribute bandwidth_file in <surfxml_link>");}  surfxml_link_bandwidth_file_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_link_bandwidth_file);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_link_bandwidth_file);
        YY_BREAK
 case 362:
 /* rule 362 can match eol */
 YY_RULE_SETUP
-if (surfxml_link_latency_isset != 0) {FAIL("Multiple definition of attribute latency in <surfxml_link>");} surfxml_link_latency_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_link_latency);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_link_latency);
        YY_BREAK
 case 363:
 /* rule 363 can match eol */
 YY_RULE_SETUP
-if (surfxml_link_latency_isset != 0) {FAIL("Multiple definition of attribute latency in <surfxml_link>");}  surfxml_link_latency_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_link_latency);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_link_latency);
        YY_BREAK
 case 364:
 /* rule 364 can match eol */
 YY_RULE_SETUP
-if (surfxml_link_latency_file_isset != 0) {FAIL("Multiple definition of attribute latency_file in <surfxml_link>");} surfxml_link_latency_file_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_link_latency_file);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_link_latency_file);
        YY_BREAK
 case 365:
 /* rule 365 can match eol */
 YY_RULE_SETUP
-if (surfxml_link_latency_file_isset != 0) {FAIL("Multiple definition of attribute latency_file in <surfxml_link>");}  surfxml_link_latency_file_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_link_latency_file);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_link_latency_file);
        YY_BREAK
 case 366:
 /* rule 366 can match eol */
@@ -7869,12 +7667,12 @@ A_surfxml_link_state = A_surfxml_link_state_OFF;
 case 370:
 /* rule 370 can match eol */
 YY_RULE_SETUP
-if (surfxml_link_state_file_isset != 0) {FAIL("Multiple definition of attribute state_file in <surfxml_link>");} surfxml_link_state_file_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_link_state_file);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_link_state_file);
        YY_BREAK
 case 371:
 /* rule 371 can match eol */
 YY_RULE_SETUP
-if (surfxml_link_state_file_isset != 0) {FAIL("Multiple definition of attribute state_file in <surfxml_link>");}  surfxml_link_state_file_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_link_state_file);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_link_state_file);
        YY_BREAK
 case 372:
 /* rule 372 can match eol */
@@ -7967,11 +7765,8 @@ case 386:
 YY_RULE_SETUP
 {
   AX_surfxml_route_src = 0;
-  surfxml_route_src_isset = 0;
   AX_surfxml_route_dst = 0;
-  surfxml_route_dst_isset = 0;
   AX_surfxml_route_symmetrical = A_surfxml_route_symmetrical_YES;
-  surfxml_route_symmetrical_isset = 0;
   ENTER(AL_surfxml_route); pushbuffer(0);
   }
        YY_BREAK
@@ -7979,22 +7774,22 @@ YY_RULE_SETUP
 case 387:
 /* rule 387 can match eol */
 YY_RULE_SETUP
-if (surfxml_route_src_isset != 0) {FAIL("Multiple definition of attribute src in <surfxml_route>");} surfxml_route_src_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_route_src);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_route_src);
        YY_BREAK
 case 388:
 /* rule 388 can match eol */
 YY_RULE_SETUP
-if (surfxml_route_src_isset != 0) {FAIL("Multiple definition of attribute src in <surfxml_route>");}  surfxml_route_src_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_route_src);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_route_src);
        YY_BREAK
 case 389:
 /* rule 389 can match eol */
 YY_RULE_SETUP
-if (surfxml_route_dst_isset != 0) {FAIL("Multiple definition of attribute dst in <surfxml_route>");} surfxml_route_dst_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_route_dst);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_route_dst);
        YY_BREAK
 case 390:
 /* rule 390 can match eol */
 YY_RULE_SETUP
-if (surfxml_route_dst_isset != 0) {FAIL("Multiple definition of attribute dst in <surfxml_route>");}  surfxml_route_dst_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_route_dst);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_route_dst);
        YY_BREAK
 case 391:
 /* rule 391 can match eol */
@@ -8078,15 +7873,10 @@ case 403:
 YY_RULE_SETUP
 {
   AX_surfxml_ASroute_src = 0;
-  surfxml_ASroute_src_isset = 0;
   AX_surfxml_ASroute_dst = 0;
-  surfxml_ASroute_dst_isset = 0;
   AX_surfxml_ASroute_gw_src = 0;
-  surfxml_ASroute_gw_src_isset = 0;
   AX_surfxml_ASroute_gw_dst = 0;
-  surfxml_ASroute_gw_dst_isset = 0;
   AX_surfxml_ASroute_symmetrical = A_surfxml_ASroute_symmetrical_YES;
-  surfxml_ASroute_symmetrical_isset = 0;
   ENTER(AL_surfxml_ASroute); pushbuffer(0);
   }
        YY_BREAK
@@ -8094,42 +7884,42 @@ YY_RULE_SETUP
 case 404:
 /* rule 404 can match eol */
 YY_RULE_SETUP
-if (surfxml_ASroute_src_isset != 0) {FAIL("Multiple definition of attribute src in <surfxml_ASroute>");} surfxml_ASroute_src_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_ASroute_src);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_ASroute_src);
        YY_BREAK
 case 405:
 /* rule 405 can match eol */
 YY_RULE_SETUP
-if (surfxml_ASroute_src_isset != 0) {FAIL("Multiple definition of attribute src in <surfxml_ASroute>");}  surfxml_ASroute_src_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_ASroute_src);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_ASroute_src);
        YY_BREAK
 case 406:
 /* rule 406 can match eol */
 YY_RULE_SETUP
-if (surfxml_ASroute_dst_isset != 0) {FAIL("Multiple definition of attribute dst in <surfxml_ASroute>");} surfxml_ASroute_dst_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_ASroute_dst);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_ASroute_dst);
        YY_BREAK
 case 407:
 /* rule 407 can match eol */
 YY_RULE_SETUP
-if (surfxml_ASroute_dst_isset != 0) {FAIL("Multiple definition of attribute dst in <surfxml_ASroute>");}  surfxml_ASroute_dst_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_ASroute_dst);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_ASroute_dst);
        YY_BREAK
 case 408:
 /* rule 408 can match eol */
 YY_RULE_SETUP
-if (surfxml_ASroute_gw_src_isset != 0) {FAIL("Multiple definition of attribute gw_src in <surfxml_ASroute>");} surfxml_ASroute_gw_src_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_ASroute_gw_src);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_ASroute_gw_src);
        YY_BREAK
 case 409:
 /* rule 409 can match eol */
 YY_RULE_SETUP
-if (surfxml_ASroute_gw_src_isset != 0) {FAIL("Multiple definition of attribute gw_src in <surfxml_ASroute>");}  surfxml_ASroute_gw_src_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_ASroute_gw_src);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_ASroute_gw_src);
        YY_BREAK
 case 410:
 /* rule 410 can match eol */
 YY_RULE_SETUP
-if (surfxml_ASroute_gw_dst_isset != 0) {FAIL("Multiple definition of attribute gw_dst in <surfxml_ASroute>");} surfxml_ASroute_gw_dst_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_ASroute_gw_dst);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_ASroute_gw_dst);
        YY_BREAK
 case 411:
 /* rule 411 can match eol */
 YY_RULE_SETUP
-if (surfxml_ASroute_gw_dst_isset != 0) {FAIL("Multiple definition of attribute gw_dst in <surfxml_ASroute>");}  surfxml_ASroute_gw_dst_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_ASroute_gw_dst);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_ASroute_gw_dst);
        YY_BREAK
 case 412:
 /* rule 412 can match eol */
@@ -8217,9 +8007,7 @@ case 424:
 YY_RULE_SETUP
 {
   AX_surfxml_link_ctn_id = 0;
-  surfxml_link_ctn_id_isset = 0;
   AX_surfxml_link_ctn_direction = A_surfxml_link_ctn_direction_NONE;
-  surfxml_link_ctn_direction_isset = 0;
   ENTER(AL_surfxml_link_ctn); pushbuffer(0);
   }
        YY_BREAK
@@ -8227,12 +8015,12 @@ YY_RULE_SETUP
 case 425:
 /* rule 425 can match eol */
 YY_RULE_SETUP
-if (surfxml_link_ctn_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_link_ctn>");} surfxml_link_ctn_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_link_ctn_id);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_link_ctn_id);
        YY_BREAK
 case 426:
 /* rule 426 can match eol */
 YY_RULE_SETUP
-if (surfxml_link_ctn_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_link_ctn>");}  surfxml_link_ctn_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_link_ctn_id);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_link_ctn_id);
        YY_BREAK
 case 427:
 /* rule 427 can match eol */
@@ -8325,9 +8113,7 @@ case 441:
 YY_RULE_SETUP
 {
   AX_surfxml_bypassRoute_src = 0;
-  surfxml_bypassRoute_src_isset = 0;
   AX_surfxml_bypassRoute_dst = 0;
-  surfxml_bypassRoute_dst_isset = 0;
   ENTER(AL_surfxml_bypassRoute); pushbuffer(0);
   }
        YY_BREAK
@@ -8335,22 +8121,22 @@ YY_RULE_SETUP
 case 442:
 /* rule 442 can match eol */
 YY_RULE_SETUP
-if (surfxml_bypassRoute_src_isset != 0) {FAIL("Multiple definition of attribute src in <surfxml_bypassRoute>");} surfxml_bypassRoute_src_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_bypassRoute_src);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_bypassRoute_src);
        YY_BREAK
 case 443:
 /* rule 443 can match eol */
 YY_RULE_SETUP
-if (surfxml_bypassRoute_src_isset != 0) {FAIL("Multiple definition of attribute src in <surfxml_bypassRoute>");}  surfxml_bypassRoute_src_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_bypassRoute_src);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_bypassRoute_src);
        YY_BREAK
 case 444:
 /* rule 444 can match eol */
 YY_RULE_SETUP
-if (surfxml_bypassRoute_dst_isset != 0) {FAIL("Multiple definition of attribute dst in <surfxml_bypassRoute>");} surfxml_bypassRoute_dst_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_bypassRoute_dst);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_bypassRoute_dst);
        YY_BREAK
 case 445:
 /* rule 445 can match eol */
 YY_RULE_SETUP
-if (surfxml_bypassRoute_dst_isset != 0) {FAIL("Multiple definition of attribute dst in <surfxml_bypassRoute>");}  surfxml_bypassRoute_dst_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_bypassRoute_dst);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_bypassRoute_dst);
        YY_BREAK
 case 446:
 YY_RULE_SETUP
@@ -8420,13 +8206,9 @@ case 454:
 YY_RULE_SETUP
 {
   AX_surfxml_bypassASroute_src = 0;
-  surfxml_bypassASroute_src_isset = 0;
   AX_surfxml_bypassASroute_dst = 0;
-  surfxml_bypassASroute_dst_isset = 0;
   AX_surfxml_bypassASroute_gw_src = 0;
-  surfxml_bypassASroute_gw_src_isset = 0;
   AX_surfxml_bypassASroute_gw_dst = 0;
-  surfxml_bypassASroute_gw_dst_isset = 0;
   ENTER(AL_surfxml_bypassASroute); pushbuffer(0);
   }
        YY_BREAK
@@ -8434,42 +8216,42 @@ YY_RULE_SETUP
 case 455:
 /* rule 455 can match eol */
 YY_RULE_SETUP
-if (surfxml_bypassASroute_src_isset != 0) {FAIL("Multiple definition of attribute src in <surfxml_bypassASroute>");} surfxml_bypassASroute_src_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_bypassASroute_src);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_bypassASroute_src);
        YY_BREAK
 case 456:
 /* rule 456 can match eol */
 YY_RULE_SETUP
-if (surfxml_bypassASroute_src_isset != 0) {FAIL("Multiple definition of attribute src in <surfxml_bypassASroute>");}  surfxml_bypassASroute_src_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_bypassASroute_src);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_bypassASroute_src);
        YY_BREAK
 case 457:
 /* rule 457 can match eol */
 YY_RULE_SETUP
-if (surfxml_bypassASroute_dst_isset != 0) {FAIL("Multiple definition of attribute dst in <surfxml_bypassASroute>");} surfxml_bypassASroute_dst_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_bypassASroute_dst);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_bypassASroute_dst);
        YY_BREAK
 case 458:
 /* rule 458 can match eol */
 YY_RULE_SETUP
-if (surfxml_bypassASroute_dst_isset != 0) {FAIL("Multiple definition of attribute dst in <surfxml_bypassASroute>");}  surfxml_bypassASroute_dst_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_bypassASroute_dst);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_bypassASroute_dst);
        YY_BREAK
 case 459:
 /* rule 459 can match eol */
 YY_RULE_SETUP
-if (surfxml_bypassASroute_gw_src_isset != 0) {FAIL("Multiple definition of attribute gw_src in <surfxml_bypassASroute>");} surfxml_bypassASroute_gw_src_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_bypassASroute_gw_src);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_bypassASroute_gw_src);
        YY_BREAK
 case 460:
 /* rule 460 can match eol */
 YY_RULE_SETUP
-if (surfxml_bypassASroute_gw_src_isset != 0) {FAIL("Multiple definition of attribute gw_src in <surfxml_bypassASroute>");}  surfxml_bypassASroute_gw_src_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_bypassASroute_gw_src);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_bypassASroute_gw_src);
        YY_BREAK
 case 461:
 /* rule 461 can match eol */
 YY_RULE_SETUP
-if (surfxml_bypassASroute_gw_dst_isset != 0) {FAIL("Multiple definition of attribute gw_dst in <surfxml_bypassASroute>");} surfxml_bypassASroute_gw_dst_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_bypassASroute_gw_dst);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_bypassASroute_gw_dst);
        YY_BREAK
 case 462:
 /* rule 462 can match eol */
 YY_RULE_SETUP
-if (surfxml_bypassASroute_gw_dst_isset != 0) {FAIL("Multiple definition of attribute gw_dst in <surfxml_bypassASroute>");}  surfxml_bypassASroute_gw_dst_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_bypassASroute_gw_dst);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_bypassASroute_gw_dst);
        YY_BREAK
 case 463:
 YY_RULE_SETUP
@@ -8543,15 +8325,10 @@ case 471:
 YY_RULE_SETUP
 {
   AX_surfxml_process_host = 0;
-  surfxml_process_host_isset = 0;
   AX_surfxml_process_function = 0;
-  surfxml_process_function_isset = 0;
   AX_surfxml_process_start_time = 28;
-  surfxml_process_start_time_isset = 0;
   AX_surfxml_process_kill_time = 33;
-  surfxml_process_kill_time_isset = 0;
   AX_surfxml_process_on_failure = A_surfxml_process_on_failure_DIE;
-  surfxml_process_on_failure_isset = 0;
   ENTER(AL_surfxml_process); pushbuffer(0);
   }
        YY_BREAK
@@ -8559,42 +8336,42 @@ YY_RULE_SETUP
 case 472:
 /* rule 472 can match eol */
 YY_RULE_SETUP
-if (surfxml_process_host_isset != 0) {FAIL("Multiple definition of attribute host in <surfxml_process>");} surfxml_process_host_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_process_host);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_process_host);
        YY_BREAK
 case 473:
 /* rule 473 can match eol */
 YY_RULE_SETUP
-if (surfxml_process_host_isset != 0) {FAIL("Multiple definition of attribute host in <surfxml_process>");}  surfxml_process_host_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_process_host);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_process_host);
        YY_BREAK
 case 474:
 /* rule 474 can match eol */
 YY_RULE_SETUP
-if (surfxml_process_function_isset != 0) {FAIL("Multiple definition of attribute function in <surfxml_process>");} surfxml_process_function_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_process_function);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_process_function);
        YY_BREAK
 case 475:
 /* rule 475 can match eol */
 YY_RULE_SETUP
-if (surfxml_process_function_isset != 0) {FAIL("Multiple definition of attribute function in <surfxml_process>");}  surfxml_process_function_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_process_function);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_process_function);
        YY_BREAK
 case 476:
 /* rule 476 can match eol */
 YY_RULE_SETUP
-if (surfxml_process_start_time_isset != 0) {FAIL("Multiple definition of attribute start_time in <surfxml_process>");} surfxml_process_start_time_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_process_start_time);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_process_start_time);
        YY_BREAK
 case 477:
 /* rule 477 can match eol */
 YY_RULE_SETUP
-if (surfxml_process_start_time_isset != 0) {FAIL("Multiple definition of attribute start_time in <surfxml_process>");}  surfxml_process_start_time_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_process_start_time);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_process_start_time);
        YY_BREAK
 case 478:
 /* rule 478 can match eol */
 YY_RULE_SETUP
-if (surfxml_process_kill_time_isset != 0) {FAIL("Multiple definition of attribute kill_time in <surfxml_process>");} surfxml_process_kill_time_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_process_kill_time);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_process_kill_time);
        YY_BREAK
 case 479:
 /* rule 479 can match eol */
 YY_RULE_SETUP
-if (surfxml_process_kill_time_isset != 0) {FAIL("Multiple definition of attribute kill_time in <surfxml_process>");}  surfxml_process_kill_time_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_process_kill_time);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_process_kill_time);
        YY_BREAK
 case 480:
 /* rule 480 can match eol */
@@ -8678,7 +8455,6 @@ case 492:
 YY_RULE_SETUP
 {
   AX_surfxml_argument_value = 0;
-  surfxml_argument_value_isset = 0;
   ENTER(AL_surfxml_argument); pushbuffer(0);
   }
        YY_BREAK
@@ -8686,12 +8462,12 @@ YY_RULE_SETUP
 case 493:
 /* rule 493 can match eol */
 YY_RULE_SETUP
-if (surfxml_argument_value_isset != 0) {FAIL("Multiple definition of attribute value in <surfxml_argument>");} surfxml_argument_value_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_argument_value);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_argument_value);
        YY_BREAK
 case 494:
 /* rule 494 can match eol */
 YY_RULE_SETUP
-if (surfxml_argument_value_isset != 0) {FAIL("Multiple definition of attribute value in <surfxml_argument>");}  surfxml_argument_value_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_argument_value);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_argument_value);
        YY_BREAK
 case 495:
 YY_RULE_SETUP
@@ -8757,7 +8533,6 @@ case 503:
 YY_RULE_SETUP
 {
   AX_surfxml_config_id = 0;
-  surfxml_config_id_isset = 0;
   ENTER(AL_surfxml_config); pushbuffer(0);
   }
        YY_BREAK
@@ -8765,12 +8540,12 @@ YY_RULE_SETUP
 case 504:
 /* rule 504 can match eol */
 YY_RULE_SETUP
-if (surfxml_config_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_config>");} surfxml_config_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_config_id);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_config_id);
        YY_BREAK
 case 505:
 /* rule 505 can match eol */
 YY_RULE_SETUP
-if (surfxml_config_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_config>");}  surfxml_config_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_config_id);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_config_id);
        YY_BREAK
 case 506:
 YY_RULE_SETUP
@@ -8838,9 +8613,7 @@ case 514:
 YY_RULE_SETUP
 {
   AX_surfxml_prop_id = 0;
-  surfxml_prop_id_isset = 0;
   AX_surfxml_prop_value = 0;
-  surfxml_prop_value_isset = 0;
   ENTER(AL_surfxml_prop); pushbuffer(0);
   }
        YY_BREAK
@@ -8848,22 +8621,22 @@ YY_RULE_SETUP
 case 515:
 /* rule 515 can match eol */
 YY_RULE_SETUP
-if (surfxml_prop_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_prop>");} surfxml_prop_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_prop_id);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_prop_id);
        YY_BREAK
 case 516:
 /* rule 516 can match eol */
 YY_RULE_SETUP
-if (surfxml_prop_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_prop>");}  surfxml_prop_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_prop_id);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_prop_id);
        YY_BREAK
 case 517:
 /* rule 517 can match eol */
 YY_RULE_SETUP
-if (surfxml_prop_value_isset != 0) {FAIL("Multiple definition of attribute value in <surfxml_prop>");} surfxml_prop_value_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_prop_value);
+ENTER(VALUE1); BUFFERSET(AX_surfxml_prop_value);
        YY_BREAK
 case 518:
 /* rule 518 can match eol */
 YY_RULE_SETUP
-if (surfxml_prop_value_isset != 0) {FAIL("Multiple definition of attribute value in <surfxml_prop>");}  surfxml_prop_value_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_prop_value);
+ENTER(VALUE2); BUFFERSET(AX_surfxml_prop_value);
        YY_BREAK
 case 519:
 YY_RULE_SETUP
index 905fc9e..59d9895 100644 (file)
@@ -1057,8 +1057,8 @@ char *xbt_graph_parse_text;
  *
  * This program was generated with the FleXML XML processor generator.
  * FleXML is Copyright (C) 1999-2005 Kristoffer Rose.  All rights reserved.
- * FleXML is Copyright (C) 2003-2011 Martin Quinson.  All rights reserved.
- * (Id: flexml.pl,v 1.67 2011/11/01 20:49:21 mquinson Exp).
+ * FleXML is Copyright (C) 2003-2006 Martin Quinson.  All rights reserved.
+ * (Id: flexml.pl,v 1.62 2007/10/11 10:00:14 mquinson Exp).
  * 
  * There are two, intertwined parts to this program, part A and part B.
  *
@@ -1067,7 +1067,7 @@ char *xbt_graph_parse_text;
  * 
  * Some parts, here collectively called "Part A", are found in the 
  * FleXML package.  They are Copyright (C) 1999-2005 Kristoffer Rose
- * and Copyright (C) 2003-2011 Martin Quinson. All rights reserved.
+ * and Copyright (C) 2003-2006 Martin Quinson. All rights reserved.
  *
  * You can redistribute, use, perform, display and/or modify "Part A"
  * provided the following two conditions hold:
@@ -1103,7 +1103,7 @@ char *xbt_graph_parse_text;
 const char rcs_graphxml_flexml_skeleton[] =
  "$" "Id: skel,v 1.40 2007/10/11 09:57:24 mquinson Exp $";
 const char rcs_graphxml_flexml[] =
- "$" "Id: flexml.pl,v 1.67 2011/11/01 20:49:21 mquinson Exp $";
+ "$" "Id: flexml.pl,v 1.62 2007/10/11 10:00:14 mquinson Exp $";
 
 /* ANSI headers. */
 #include <stdlib.h> /* for realloc() -- needed here when using flex 2.5.4 */
@@ -1140,40 +1140,28 @@ extern char *graphxml_bufferstack;
 #define graphxml_pcdata (graphxml_bufferstack + graphxml_pcdata_ix)
 AT_graphxml_node_name AX_graphxml_node_name;
 #define A_graphxml_node_name (graphxml_bufferstack + AX_graphxml_node_name)
-short int graphxml_node_name_isset;
 AT_graphxml_edge_source AX_graphxml_edge_source;
 #define A_graphxml_edge_source (graphxml_bufferstack + AX_graphxml_edge_source)
-short int graphxml_edge_source_isset;
 AT_graphxml_node_position_y AX_graphxml_node_position_y;
 #define A_graphxml_node_position_y (graphxml_bufferstack + AX_graphxml_node_position_y)
-short int graphxml_node_position_y_isset;
 AT_graphxml_node_position_x AX_graphxml_node_position_x;
 #define A_graphxml_node_position_x (graphxml_bufferstack + AX_graphxml_node_position_x)
-short int graphxml_node_position_x_isset;
 AT_graphxml_edge_data AX_graphxml_edge_data;
 #define A_graphxml_edge_data (graphxml_bufferstack + AX_graphxml_edge_data)
-short int graphxml_edge_data_isset;
 AT_graphxml_edge_target AX_graphxml_edge_target;
 #define A_graphxml_edge_target (graphxml_bufferstack + AX_graphxml_edge_target)
-short int graphxml_edge_target_isset;
 AT_graphxml_graph_isDirected AX_graphxml_graph_isDirected;
 #define A_graphxml_graph_isDirected AX_graphxml_graph_isDirected
-short int graphxml_graph_isDirected_isset;
 AT_graphxml_node_label AX_graphxml_node_label;
 #define A_graphxml_node_label (graphxml_bufferstack + AX_graphxml_node_label)
-short int graphxml_node_label_isset;
 AT_graphxml_node_data AX_graphxml_node_data;
 #define A_graphxml_node_data (graphxml_bufferstack + AX_graphxml_node_data)
-short int graphxml_node_data_isset;
 AT_graphxml_edge_label AX_graphxml_edge_label;
 #define A_graphxml_edge_label (graphxml_bufferstack + AX_graphxml_edge_label)
-short int graphxml_edge_label_isset;
 AT_graphxml_edge_length AX_graphxml_edge_length;
 #define A_graphxml_edge_length (graphxml_bufferstack + AX_graphxml_edge_length)
-short int graphxml_edge_length_isset;
 AT_graphxml_edge_name AX_graphxml_edge_name;
 #define A_graphxml_edge_name (graphxml_bufferstack + AX_graphxml_edge_name)
-short int graphxml_edge_name_isset;
 
 /* XML state. */
 #ifdef FLEX_DEBUG
@@ -1257,24 +1245,13 @@ static int ck_ilimit()
 #ifdef FLEXML_NEED_BUFFERLIT
 static void graphxml_bufferliteral(char c, int* pp, const char* text)
 {
-   BUFFERSET(*pp);
-   if (c) {
-      const char *s = strchr(text, c), *e = strrchr(text, c);
-      assert(s && e && s <= e);
-      ++s;
-      while (s < e) {
-        if (isspace(*s)) {
-           BUFFERPUTC(' ');
-           do ++s; while (s < e && isspace(*s));
-        } else
-          BUFFERPUTC(*s++);
-      }
-   } else {
-      const char *s = text;
-      while (*s)
-       BUFFERPUTC(*s++);
-   }
-   BUFFERDONE;
+  const char *s = (c ? strchr(text,c) : text-1), *e = strrchr(text,c);
+  assert(s <= e); BUFFERSET(*pp);
+  while (++s<e) {
+    if (isspace(*s) && c) { BUFFERPUTC(' '); while (isspace(*s)) ++s; }
+    else BUFFERPUTC(*s);
+  }
+  BUFFERDONE;
 }
 #endif
 
@@ -1787,7 +1764,6 @@ case 19:
 YY_RULE_SETUP
 {
   AX_graphxml_graph_isDirected = A_graphxml_graph_isDirected_true;
-  graphxml_graph_isDirected_isset = 0;
   ENTER(AL_graphxml_graph); pushbuffer(0);
   }
        YY_BREAK
@@ -1878,15 +1854,10 @@ case 32:
 YY_RULE_SETUP
 {
   AX_graphxml_node_label = 0;
-  graphxml_node_label_isset = 0;
   AX_graphxml_node_name = 0;
-  graphxml_node_name_isset = 0;
   AX_graphxml_node_data = 0;
-  graphxml_node_data_isset = 0;
   AX_graphxml_node_position_x = 1;
-  graphxml_node_position_x_isset = 0;
   AX_graphxml_node_position_y = 6;
-  graphxml_node_position_y_isset = 0;
   ENTER(AL_graphxml_node); pushbuffer(0);
   }
        YY_BREAK
@@ -1894,52 +1865,52 @@ YY_RULE_SETUP
 case 33:
 /* rule 33 can match eol */
 YY_RULE_SETUP
-if (graphxml_node_label_isset != 0) {FAIL("Multiple definition of attribute label in <graphxml_node>");} graphxml_node_label_isset = 1; ENTER(VALUE1); BUFFERSET(AX_graphxml_node_label);
+ENTER(VALUE1); BUFFERSET(AX_graphxml_node_label);
        YY_BREAK
 case 34:
 /* rule 34 can match eol */
 YY_RULE_SETUP
-if (graphxml_node_label_isset != 0) {FAIL("Multiple definition of attribute label in <graphxml_node>");}  graphxml_node_label_isset = 1; ENTER(VALUE2); BUFFERSET(AX_graphxml_node_label);
+ENTER(VALUE2); BUFFERSET(AX_graphxml_node_label);
        YY_BREAK
 case 35:
 /* rule 35 can match eol */
 YY_RULE_SETUP
-if (graphxml_node_name_isset != 0) {FAIL("Multiple definition of attribute name in <graphxml_node>");} graphxml_node_name_isset = 1; ENTER(VALUE1); BUFFERSET(AX_graphxml_node_name);
+ENTER(VALUE1); BUFFERSET(AX_graphxml_node_name);
        YY_BREAK
 case 36:
 /* rule 36 can match eol */
 YY_RULE_SETUP
-if (graphxml_node_name_isset != 0) {FAIL("Multiple definition of attribute name in <graphxml_node>");}  graphxml_node_name_isset = 1; ENTER(VALUE2); BUFFERSET(AX_graphxml_node_name);
+ENTER(VALUE2); BUFFERSET(AX_graphxml_node_name);
        YY_BREAK
 case 37:
 /* rule 37 can match eol */
 YY_RULE_SETUP
-if (graphxml_node_data_isset != 0) {FAIL("Multiple definition of attribute data in <graphxml_node>");} graphxml_node_data_isset = 1; ENTER(VALUE1); BUFFERSET(AX_graphxml_node_data);
+ENTER(VALUE1); BUFFERSET(AX_graphxml_node_data);
        YY_BREAK
 case 38:
 /* rule 38 can match eol */
 YY_RULE_SETUP
-if (graphxml_node_data_isset != 0) {FAIL("Multiple definition of attribute data in <graphxml_node>");}  graphxml_node_data_isset = 1; ENTER(VALUE2); BUFFERSET(AX_graphxml_node_data);
+ENTER(VALUE2); BUFFERSET(AX_graphxml_node_data);
        YY_BREAK
 case 39:
 /* rule 39 can match eol */
 YY_RULE_SETUP
-if (graphxml_node_position_x_isset != 0) {FAIL("Multiple definition of attribute position_x in <graphxml_node>");} graphxml_node_position_x_isset = 1; ENTER(VALUE1); BUFFERSET(AX_graphxml_node_position_x);
+ENTER(VALUE1); BUFFERSET(AX_graphxml_node_position_x);
        YY_BREAK
 case 40:
 /* rule 40 can match eol */
 YY_RULE_SETUP
-if (graphxml_node_position_x_isset != 0) {FAIL("Multiple definition of attribute position_x in <graphxml_node>");}  graphxml_node_position_x_isset = 1; ENTER(VALUE2); BUFFERSET(AX_graphxml_node_position_x);
+ENTER(VALUE2); BUFFERSET(AX_graphxml_node_position_x);
        YY_BREAK
 case 41:
 /* rule 41 can match eol */
 YY_RULE_SETUP
-if (graphxml_node_position_y_isset != 0) {FAIL("Multiple definition of attribute position_y in <graphxml_node>");} graphxml_node_position_y_isset = 1; ENTER(VALUE1); BUFFERSET(AX_graphxml_node_position_y);
+ENTER(VALUE1); BUFFERSET(AX_graphxml_node_position_y);
        YY_BREAK
 case 42:
 /* rule 42 can match eol */
 YY_RULE_SETUP
-if (graphxml_node_position_y_isset != 0) {FAIL("Multiple definition of attribute position_y in <graphxml_node>");}  graphxml_node_position_y_isset = 1; ENTER(VALUE2); BUFFERSET(AX_graphxml_node_position_y);
+ENTER(VALUE2); BUFFERSET(AX_graphxml_node_position_y);
        YY_BREAK
 case 43:
 YY_RULE_SETUP
@@ -2014,17 +1985,11 @@ case 51:
 YY_RULE_SETUP
 {
   AX_graphxml_edge_label = 0;
-  graphxml_edge_label_isset = 0;
   AX_graphxml_edge_name = 0;
-  graphxml_edge_name_isset = 0;
   AX_graphxml_edge_source = 0;
-  graphxml_edge_source_isset = 0;
   AX_graphxml_edge_target = 0;
-  graphxml_edge_target_isset = 0;
   AX_graphxml_edge_length = 11;
-  graphxml_edge_length_isset = 0;
   AX_graphxml_edge_data = 0;
-  graphxml_edge_data_isset = 0;
   ENTER(AL_graphxml_edge); pushbuffer(0);
   }
        YY_BREAK
@@ -2032,62 +1997,62 @@ YY_RULE_SETUP
 case 52:
 /* rule 52 can match eol */
 YY_RULE_SETUP
-if (graphxml_edge_label_isset != 0) {FAIL("Multiple definition of attribute label in <graphxml_edge>");} graphxml_edge_label_isset = 1; ENTER(VALUE1); BUFFERSET(AX_graphxml_edge_label);
+ENTER(VALUE1); BUFFERSET(AX_graphxml_edge_label);
        YY_BREAK
 case 53:
 /* rule 53 can match eol */
 YY_RULE_SETUP
-if (graphxml_edge_label_isset != 0) {FAIL("Multiple definition of attribute label in <graphxml_edge>");}  graphxml_edge_label_isset = 1; ENTER(VALUE2); BUFFERSET(AX_graphxml_edge_label);
+ENTER(VALUE2); BUFFERSET(AX_graphxml_edge_label);
        YY_BREAK
 case 54:
 /* rule 54 can match eol */
 YY_RULE_SETUP
-if (graphxml_edge_name_isset != 0) {FAIL("Multiple definition of attribute name in <graphxml_edge>");} graphxml_edge_name_isset = 1; ENTER(VALUE1); BUFFERSET(AX_graphxml_edge_name);
+ENTER(VALUE1); BUFFERSET(AX_graphxml_edge_name);
        YY_BREAK
 case 55:
 /* rule 55 can match eol */
 YY_RULE_SETUP
-if (graphxml_edge_name_isset != 0) {FAIL("Multiple definition of attribute name in <graphxml_edge>");}  graphxml_edge_name_isset = 1; ENTER(VALUE2); BUFFERSET(AX_graphxml_edge_name);
+ENTER(VALUE2); BUFFERSET(AX_graphxml_edge_name);
        YY_BREAK
 case 56:
 /* rule 56 can match eol */
 YY_RULE_SETUP
-if (graphxml_edge_source_isset != 0) {FAIL("Multiple definition of attribute source in <graphxml_edge>");} graphxml_edge_source_isset = 1; ENTER(VALUE1); BUFFERSET(AX_graphxml_edge_source);
+ENTER(VALUE1); BUFFERSET(AX_graphxml_edge_source);
        YY_BREAK
 case 57:
 /* rule 57 can match eol */
 YY_RULE_SETUP
-if (graphxml_edge_source_isset != 0) {FAIL("Multiple definition of attribute source in <graphxml_edge>");}  graphxml_edge_source_isset = 1; ENTER(VALUE2); BUFFERSET(AX_graphxml_edge_source);
+ENTER(VALUE2); BUFFERSET(AX_graphxml_edge_source);
        YY_BREAK
 case 58:
 /* rule 58 can match eol */
 YY_RULE_SETUP
-if (graphxml_edge_target_isset != 0) {FAIL("Multiple definition of attribute target in <graphxml_edge>");} graphxml_edge_target_isset = 1; ENTER(VALUE1); BUFFERSET(AX_graphxml_edge_target);
+ENTER(VALUE1); BUFFERSET(AX_graphxml_edge_target);
        YY_BREAK
 case 59:
 /* rule 59 can match eol */
 YY_RULE_SETUP
-if (graphxml_edge_target_isset != 0) {FAIL("Multiple definition of attribute target in <graphxml_edge>");}  graphxml_edge_target_isset = 1; ENTER(VALUE2); BUFFERSET(AX_graphxml_edge_target);
+ENTER(VALUE2); BUFFERSET(AX_graphxml_edge_target);
        YY_BREAK
 case 60:
 /* rule 60 can match eol */
 YY_RULE_SETUP
-if (graphxml_edge_length_isset != 0) {FAIL("Multiple definition of attribute length in <graphxml_edge>");} graphxml_edge_length_isset = 1; ENTER(VALUE1); BUFFERSET(AX_graphxml_edge_length);
+ENTER(VALUE1); BUFFERSET(AX_graphxml_edge_length);
        YY_BREAK
 case 61:
 /* rule 61 can match eol */
 YY_RULE_SETUP
-if (graphxml_edge_length_isset != 0) {FAIL("Multiple definition of attribute length in <graphxml_edge>");}  graphxml_edge_length_isset = 1; ENTER(VALUE2); BUFFERSET(AX_graphxml_edge_length);
+ENTER(VALUE2); BUFFERSET(AX_graphxml_edge_length);
        YY_BREAK
 case 62:
 /* rule 62 can match eol */
 YY_RULE_SETUP
-if (graphxml_edge_data_isset != 0) {FAIL("Multiple definition of attribute data in <graphxml_edge>");} graphxml_edge_data_isset = 1; ENTER(VALUE1); BUFFERSET(AX_graphxml_edge_data);
+ENTER(VALUE1); BUFFERSET(AX_graphxml_edge_data);
        YY_BREAK
 case 63:
 /* rule 63 can match eol */
 YY_RULE_SETUP
-if (graphxml_edge_data_isset != 0) {FAIL("Multiple definition of attribute data in <graphxml_edge>");}  graphxml_edge_data_isset = 1; ENTER(VALUE2); BUFFERSET(AX_graphxml_edge_data);
+ENTER(VALUE2); BUFFERSET(AX_graphxml_edge_data);
        YY_BREAK
 case 64:
 YY_RULE_SETUP