summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/config_tree.ml2
-rw-r--r--src/config_tree.mli1
-rw-r--r--src/reference_tree.ml13
-rw-r--r--src/reference_tree.mli1
4 files changed, 16 insertions, 1 deletions
diff --git a/src/config_tree.ml b/src/config_tree.ml
index 289cf7e..e09761e 100644
--- a/src/config_tree.ml
+++ b/src/config_tree.ml
@@ -4,6 +4,7 @@ type config_node_data = {
values: string list;
comment: string;
node_type: Vytree.node_type;
+ keep_order: bool;
}
type t = config_node_data Vytree.t
@@ -12,6 +13,7 @@ let default_data = {
values = [];
comment = "";
node_type = Vytree.Other;
+ keep_order = false;
}
let make = Vytree.make default_data
diff --git a/src/config_tree.mli b/src/config_tree.mli
index 93a8b76..10fcdf6 100644
--- a/src/config_tree.mli
+++ b/src/config_tree.mli
@@ -4,6 +4,7 @@ type config_node_data = {
values : string list;
comment : string;
node_type : Vytree.node_type;
+ keep_order : bool;
}
type t = config_node_data Vytree.t
diff --git a/src/reference_tree.ml b/src/reference_tree.ml
index 4cd124a..f7a2ffb 100644
--- a/src/reference_tree.ml
+++ b/src/reference_tree.ml
@@ -7,6 +7,7 @@ type ref_node_data = {
multi: bool;
valueless: bool;
owner: string option;
+ keep_order: bool;
}
type t = ref_node_data Vytree.t
@@ -24,6 +25,7 @@ let default_data = {
multi = false;
valueless = false;
owner = None;
+ keep_order = false;
}
(* Loading from XML *)
@@ -66,6 +68,14 @@ let data_from_xml d x =
| _ -> raise (Bad_interface_definition "Malformed property tag")
in Xml.fold aux d x
+let get_keep_child_order xml =
+ match xml with
+ | Xml.Element ("tagNode", _, _) ->
+ (match (Util.find_xml_child "keepChildOrder" xml) with
+ | Some _ -> true
+ | None -> false)
+ | _ -> false
+
let rec insert_from_xml basepath reftree xml =
match xml with
| Xml.Element (tag, _, _) ->
@@ -79,7 +89,8 @@ let rec insert_from_xml basepath reftree xml =
let node_owner = try let o = Xml.attrib xml "owner" in Some o
with _ -> None
in
- let data = {data with node_type = node_type; owner = node_owner} in
+ let keep_order = get_keep_child_order xml in
+ let data = {data with node_type = node_type; owner = node_owner; keep_order = keep_order} in
let name = Xml.attrib xml "name" in
let path = basepath @ [name] in
let new_tree = Vytree.insert reftree path data in
diff --git a/src/reference_tree.mli b/src/reference_tree.mli
index 701adf0..5171203 100644
--- a/src/reference_tree.mli
+++ b/src/reference_tree.mli
@@ -7,6 +7,7 @@ type ref_node_data = {
multi: bool;
valueless: bool;
owner: string option;
+ keep_order: bool;
}
exception Validation_error of string