Skip to content
This repository was archived by the owner on Feb 19, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
82 changes: 51 additions & 31 deletions CommonFunctions.ml
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@ open Datamodel_types
module DT = Datamodel_types

let rec list_distinct list =
match list with
| [] -> []
match list with
| [] -> []
| [x] -> [x]
| hd1::(hd2::_ as tl) -> if hd1 = hd2 then list_distinct tl
else hd1::(list_distinct tl)
Expand All @@ -54,9 +54,9 @@ and list_index_of x list =
with Not_found -> -1

and list_is_empty list =
match list with
| [] -> true
| _ -> false
match list with
| [] -> true
| _ -> false

let rec gen_param_groups_for_releases releaseOrder params =
match releaseOrder with
Expand All @@ -74,6 +74,7 @@ and get_method_params_list message =
else List.tl message.msg_params

and gen_param_groups message params =
let expRelease = get_prototyped_release message.msg_lifecycle in
let msgRelease = get_first_release message.msg_release.internal in
let msgReleaseIndex = list_index_of msgRelease DT.release_order in
let paramGroups = gen_param_groups_for_releases DT.release_order params in
Expand All @@ -85,27 +86,30 @@ and gen_param_groups message params =
valid::(getValid tl)
in
let filteredGroups = List.filter (fun x -> match x with | [] -> false | _ -> true) (getValid paramGroups) in
list_distinct filteredGroups
if (not (expRelease = "")) then
[params]
else
list_distinct filteredGroups

and get_release_name release =
if release = rel_rio then "XenServer 4.0"
else if release = rel_miami then "XenServer 4.1"
else if release = rel_symc then "XenServer 4.1.1"
else if release = rel_orlando then "XenServer 5.0"
else if release = rel_orlando_update_1 then "XenServer 5.0 Update 1"
else if release = rel_george then "XenServer 5.5"
else if release = rel_midnight_ride then "XenServer 5.6"
else if release = rel_cowley then "XenServer 5.6 FP1"
else if release = rel_boston then "XenServer 6.0"
else if release = rel_tampa then "XenServer 6.1"
else if release = rel_clearwater then "XenServer 6.2"
else if release = rel_vgpu_tech_preview then "XenServer 6.2 SP1 Tech-Preview"
else if release = rel_vgpu_productisation then "XenServer 6.2 SP1"
else if release = rel_augusta then "Unreleased"
else ""
if release = rel_rio then "XenServer 4.0"
else if release = rel_miami then "XenServer 4.1"
else if release = rel_symc then "XenServer 4.1.1"
else if release = rel_orlando then "XenServer 5.0"
else if release = rel_orlando_update_1 then "XenServer 5.0 Update 1"
else if release = rel_george then "XenServer 5.5"
else if release = rel_midnight_ride then "XenServer 5.6"
else if release = rel_cowley then "XenServer 5.6 FP1"
else if release = rel_boston then "XenServer 6.0"
else if release = rel_tampa then "XenServer 6.1"
else if release = rel_clearwater then "XenServer 6.2"
else if release = rel_vgpu_tech_preview then "XenServer 6.2 SP1 Tech-Preview"
else if release = rel_vgpu_productisation then "XenServer 6.2 SP1"
else if release = rel_augusta then "Unreleased"
else ""

and get_first_release releases =
let filtered = List.filter (fun x -> List.mem x releases) DT.release_order in
let filtered = List.filter (fun x -> List.mem x releases) DT.release_order in
match filtered with
| [] -> ""
| hd::tl -> hd
Expand All @@ -114,35 +118,51 @@ and get_first_release_string release =
if release = "" then ""
else sprintf "First published in %s." (get_release_name release)


and get_prototyped_release lifecycle =
match lifecycle with
| [Prototyped, release, doc] -> release
| _ -> ""

and get_prototyped_release_string lifecycle =
match lifecycle with
| [Prototyped, release, doc] -> "Experimental. "^(get_first_release_string release)
| _ -> ""

and get_published_info_message message cls =
let expRelease = get_prototyped_release_string message.msg_lifecycle in
let clsRelease = get_first_release cls.obj_release.internal in
let msgRelease = get_first_release message.msg_release.internal in
let clsReleaseIndex = list_index_of clsRelease DT.release_order in
let msgReleaseIndex = list_index_of msgRelease DT.release_order in
if (not (clsReleaseIndex = -1)) && (not (msgReleaseIndex = -1)) && (clsReleaseIndex < msgReleaseIndex) then
let msgReleaseIndex = list_index_of msgRelease DT.release_order in
if (not (expRelease = "")) then
expRelease
else if (not (clsReleaseIndex = -1)) && (not (msgReleaseIndex = -1)) && (clsReleaseIndex < msgReleaseIndex) then
get_first_release_string msgRelease
else
get_first_release_string clsRelease

and get_published_info_param message param =
let msgRelease = get_first_release message.msg_release.internal in
let paramRelease = get_first_release param.param_release.internal in
let msgRelease = get_first_release message.msg_release.internal in
let paramRelease = get_first_release param.param_release.internal in
let msgReleaseIndex = list_index_of msgRelease DT.release_order in
let paramReleaseIndex = list_index_of paramRelease DT.release_order in
if (not (msgReleaseIndex = -1)) && (not (paramReleaseIndex = -1)) && (msgReleaseIndex < paramReleaseIndex) then
get_first_release_string paramRelease
else ""
else ""

and get_published_info_class cls =
get_first_release_string (get_first_release cls.obj_release.internal)

and get_published_info_field field cls =
let expRelease = get_prototyped_release_string field.lifecycle in
let clsRelease = get_first_release cls.obj_release.internal in
let fieldRelease = get_first_release field.release.internal in
let clsReleaseIndex = list_index_of clsRelease DT.release_order in
let fieldReleaseIndex = list_index_of fieldRelease DT.release_order in
if (not (clsReleaseIndex = -1)) && (not (fieldReleaseIndex = -1)) && (clsReleaseIndex < fieldReleaseIndex) then
get_first_release_string fieldRelease
let fieldReleaseIndex = list_index_of fieldRelease DT.release_order in
if (not (expRelease = "")) then
expRelease
else if (not (clsReleaseIndex = -1)) && (not (fieldReleaseIndex = -1)) && (clsReleaseIndex < fieldReleaseIndex) then
get_first_release_string fieldRelease
else
""

1 change: 0 additions & 1 deletion powershell/gen_powershell_binding.ml
Original file line number Diff line number Diff line change
Expand Up @@ -289,7 +289,6 @@ and gen_binding obj =
match obj with
{name=classname; description = description; messages=messages;
contents=contents; gen_constructor_destructor=gen_const_dest} ->
let messages = List.filter (fun x -> not ((get_first_release x.msg_release.internal) = "")) messages in
let partNew = List.partition (fun x -> is_constructor x) messages in
let constructors = fst partNew in
let partDest = List.partition (fun x -> is_destructor x) (snd partNew) in
Expand Down