Parcourir la source

Merge branch 'cmd-parsing' of /home/lwzukw/Documents/Prog/oclaunch-proj/oclaunch-code/. into cmd-parsing

Leo il y a 9 ans
Parent
commit
712969a3fa
3 fichiers modifiés avec 124 ajouts et 5 suppressions
  1. 11 5
      src/state.ml
  2. 69 0
      src/tools.ml
  3. 44 0
      src/tools.mli

+ 11 - 5
src/state.ml

@@ -40,18 +40,24 @@ open Core.Std;;
 
 (* Display current number *)
 let print_current ~rc () =
-  (* Display the number *)
   Tmp_file.(init ()
     |> (fun tmp -> get_accurate_log ~tmp ())
-    |> Exec_cmd.less_launched_num)
+    |> Exec_cmd.less_launched_num
+    |> Tools.spy1_int_option)
   |> Option.value_map
     ~default:"Nothing next"
-    ~f:(fun num ->
+    ~f:(fun ( num : int ) ->
+
+      (* XXX Debug *)
+      sprintf "Num: %i" num |> Messages.debug;
+
       File_com.num_cmd2cmd ~rc num
       |> (function
         | Some cmd -> cmd
         | None -> Messages.warning "Error, should not append, this is a bug";
-        assert false)
-      |> (fun ( cmd : string ) -> sprintf "Next: command %i, '%s'" num cmd))
+          assert false)
+      |> (fun ( cmd : string ) ->
+          Messages.debug cmd; (* TODO Use tools.spy1 *)
+          sprintf "Next: command %i, '%s'" num cmd))
   |> Messages.ok
 ;;

+ 69 - 0
src/tools.ml

@@ -0,0 +1,69 @@
+(******************************************************************************)
+(* Copyright © Joly Clément, 2015                                             *)
+(*                                                                            *)
+(*  leowzukw@vmail.me                                                         *)
+(*                                                                            *)
+(*  Ce logiciel est un programme informatique servant à exécuter              *)
+(*  automatiquement des programmes à l'ouverture du terminal.                 *)
+(*                                                                            *)
+(*  Ce logiciel est régi par la licence CeCILL soumise au droit français et   *)
+(*  respectant les principes de diffusion des logiciels libres. Vous pouvez   *)
+(*  utiliser, modifier et/ou redistribuer ce programme sous les conditions    *)
+(*  de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA    *)
+(*  sur le site "http://www.cecill.info".                                     *)
+(*                                                                            *)
+(*  En contrepartie de l'accessibilité au code source et des droits de copie, *)
+(*  de modification et de redistribution accordés par cette licence, il n'est *)
+(*  offert aux utilisateurs qu'une garantie limitée.  Pour les mêmes raisons, *)
+(*  seule une responsabilité restreinte pèse sur l'auteur du programme,  le   *)
+(*  titulaire des droits patrimoniaux et les concédants successifs.           *)
+(*                                                                            *)
+(*  A cet égard  l'attention de l'utilisateur est attirée sur les risques     *)
+(*  associés au chargement,  à l'utilisation,  à la modification et/ou au     *)
+(*  développement et à la reproduction du logiciel par l'utilisateur étant    *)
+(*  donné sa spécificité de logiciel libre, qui peut le rendre complexe à     *)
+(*  manipuler et qui le réserve donc à des développeurs et des professionnels *)
+(*  avertis possédant  des  connaissances  informatiques approfondies.  Les   *)
+(*  utilisateurs sont donc invités à charger  et  tester  l'adéquation  du    *)
+(*  logiciel à leurs besoins dans des conditions permettant d'assurer la      *)
+(*  sécurité de leurs systèmes et ou de leurs données et, plus généralement,  *)
+(*  à l'utiliser et l'exploiter dans les mêmes conditions de sécurité.        *)
+(*                                                                            *)
+(*  Le fait que vous puissiez accéder à cet en-tête signifie que vous avez    *)
+(*  pris connaissance de la licence CeCILL, et que vous en avez accepté les   *)
+(*  termes.                                                                   *)
+(******************************************************************************)
+
+open Core.Std;;
+
+(* Various tools for the program *)
+
+(* Spying expression, template for the others. Takes the string corespondig to
+ * the original value and return the original one *)
+let spy orig (value : string) =
+  Messages.debug value;
+  orig
+;;
+
+(* Functions exposed to spy special types *)
+let spy1_int i =
+  sprintf "%i" i
+  |> spy i
+;;
+let spy1_int_option io =
+  let i = io |> (function
+    None -> "None"
+    | Some i -> sprintf "Some %i" i)
+  in
+  spy io i
+;;
+let spy1_string str =
+  spy str str
+;;
+let spy1_float f =
+  sprintf "%f" f
+  |> spy f
+;;
+let spy1_rc rc =
+  failwith "Not implemented"
+;;

+ 44 - 0
src/tools.mli

@@ -0,0 +1,44 @@
+(******************************************************************************)
+(* Copyright © Joly Clément, 2015                                             *)
+(*                                                                            *)
+(*  leowzukw@vmail.me                                                         *)
+(*                                                                            *)
+(*  Ce logiciel est un programme informatique servant à exécuter              *)
+(*  automatiquement des programmes à l'ouverture du terminal.                 *)
+(*                                                                            *)
+(*  Ce logiciel est régi par la licence CeCILL soumise au droit français et   *)
+(*  respectant les principes de diffusion des logiciels libres. Vous pouvez   *)
+(*  utiliser, modifier et/ou redistribuer ce programme sous les conditions    *)
+(*  de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA    *)
+(*  sur le site "http://www.cecill.info".                                     *)
+(*                                                                            *)
+(*  En contrepartie de l'accessibilité au code source et des droits de copie, *)
+(*  de modification et de redistribution accordés par cette licence, il n'est *)
+(*  offert aux utilisateurs qu'une garantie limitée.  Pour les mêmes raisons, *)
+(*  seule une responsabilité restreinte pèse sur l'auteur du programme,  le   *)
+(*  titulaire des droits patrimoniaux et les concédants successifs.           *)
+(*                                                                            *)
+(*  A cet égard  l'attention de l'utilisateur est attirée sur les risques     *)
+(*  associés au chargement,  à l'utilisation,  à la modification et/ou au     *)
+(*  développement et à la reproduction du logiciel par l'utilisateur étant    *)
+(*  donné sa spécificité de logiciel libre, qui peut le rendre complexe à     *)
+(*  manipuler et qui le réserve donc à des développeurs et des professionnels *)
+(*  avertis possédant  des  connaissances  informatiques approfondies.  Les   *)
+(*  utilisateurs sont donc invités à charger  et  tester  l'adéquation  du    *)
+(*  logiciel à leurs besoins dans des conditions permettant d'assurer la      *)
+(*  sécurité de leurs systèmes et ou de leurs données et, plus généralement,  *)
+(*  à l'utiliser et l'exploiter dans les mêmes conditions de sécurité.        *)
+(*                                                                            *)
+(*  Le fait que vous puissiez accéder à cet en-tête signifie que vous avez    *)
+(*  pris connaissance de la licence CeCILL, et que vous en avez accepté les   *)
+(*  termes.                                                                   *)
+(******************************************************************************)
+
+open Core.Std;;
+
+(* Spying expression *)
+val spy1_int : int -> int
+val spy1_int_option : int option -> int option
+val spy1_string : string -> string
+val spy1_float : float -> float
+val spy1_rc : 'a -> 'a