> homalgIOMode ( str[, str2[, str3]] ) | ( function ) |
This function sets different modes which influence how much of the communication becomes visible. Handling the string str is not case-sensitive. homalgIOMode
invokes the global function homalgMode
defined in the homalg package with an "appropriate" argument (see code below). Alternatively, if a second or more strings are given, then homalgMode
is invoked with the remaining strings str2, str3, ... at the end. In particular, you can use homalgIOMode
( str, "" ) to reset the effect of invoking homalgMode
.
str | str (long form) | mode description |
"" | "" | the default mode, i.e. the communication protocol won't be visible |
(homalgIOMode ( ) is a short form for homalgIOMode ( "" )) |
||
"a" | "all" | combine the modes "debug" and "file" |
"b" | "basic" | the same as "picto" + homalgMode ( "basic" ) |
"d" | "debug" | view the complete communication protocol |
"f" | "file" | dump the communication protocol into a file with the name |
Concatenation ( "commands_file_of_", CAS, "_with_PID_", PID ) |
||
"p" | "picto" | view the abbreviated communication protocol |
using the preassigned pictograms | ||
All modes other than the "default"-mode only set their specific values and leave the other values untouched, which allows combining them to some extent. This also means that in order to get from one mode to a new mode (without the aim to combine them) one needs to reset to the "default"-mode first.
Caution:
In case you choose one of the modes "file" or "all" you might want to set the global variable HOMALG_IO.DoNotDeleteTemporaryFiles
:= true
; this is only important if during the computations some matrices get converted via files (using ConvertHomalgMatrixViaFile
), as reading these files will be part of the protocol!
It makes sense for the dumped communication protocol to be (re)executed with the respective external system, only in case the latter is deterministic (i.e. same-input-same-output).
InstallGlobalFunction( homalgIOMode, function( arg ) local nargs, mode, s; nargs := Length( arg ); if nargs = 0 or ( IsString( arg[1] ) and arg[1] = "" ) then mode := "default"; elif IsString( arg[1] ) then ## now we know, the string is not empty s := arg[1]; if LowercaseString( s{[1]} ) = "a" then mode := "all"; elif LowercaseString( s{[1]} ) = "b" then mode := "basic"; elif LowercaseString( s{[1]} ) = "d" then mode := "debug"; elif LowercaseString( s{[1]} ) = "f" then mode := "file"; elif LowercaseString( s{[1]} ) = "p" then mode := "picto"; else mode := ""; fi; else Error( "the first argument must be a string\n" ); fi; if mode = "default" then ## reset to the default values HOMALG_IO.color_display := false; HOMALG_IO.show_banners := true; HOMALG_IO.save_CAS_commands_to_file := false; HOMALG_IO.DoNotDeleteTemporaryFiles := false; HOMALG_IO.SaveHomalgMaximumBackStream := false; HOMALG_IO.InformAboutCASystemsWithoutActiveRings := true; SetInfoLevel( InfoHomalgToCAS, 1 ); homalgMode( ); elif mode = "all" then homalgIOMode( "debug" ); homalgIOMode( "file" ); elif mode = "basic" then HOMALG_IO.color_display := true; HOMALG_IO.show_banners := true; SetInfoLevel( InfoHomalgToCAS, 4 ); homalgMode( "basic" ); ## use homalgIOMode( "basic", "" ) to reset elif mode = "debug" then HOMALG_IO.color_display := true; HOMALG_IO.show_banners := true; SetInfoLevel( InfoHomalgToCAS, 8 ); homalgMode( "debug" ); ## use homalgIOMode( "debug", "" ) to reset elif mode = "file" then HOMALG_IO.save_CAS_commands_to_file := true; elif mode = "picto" then HOMALG_IO.color_display := true; HOMALG_IO.show_banners := true; SetInfoLevel( InfoHomalgToCAS, 4 ); homalgMode( "logic" ); ## use homalgIOMode( "picto", "" ) to reset fi; if nargs > 1 and IsString( arg[2] ) then CallFuncList( homalgMode, arg{[ 2 .. nargs ]} ); fi; end ); |
This is the part of the global function homalgSendBlocking
that controls the visibility of the communication.
io_info_level := InfoLevel( InfoHomalgToCAS ); if not IsBound( pictogram ) then pictogram := " "; elif io_info_level >= 3 then ## add colors to the pictograms if pictogram = HOMALG_IO.Pictograms.ReducedEchelonForm and IsBound( HOMALG.color_BOE ) then pictogram := Concatenation( HOMALG.color_BOE, pictogram, "\033[0m" ); elif pictogram = HOMALG_IO.Pictograms.BasisOfModule and IsBound( HOMALG.color_BOB ) then pictogram := Concatenation( HOMALG.color_BOB, pictogram, "\033[0m" ); elif pictogram = HOMALG_IO.Pictograms.DecideZero and IsBound( HOMALG.color_BOD ) then pictogram := Concatenation( HOMALG.color_BOD, pictogram, "\033[0m" ); elif pictogram = HOMALG_IO.Pictograms.SyzygiesGenerators and IsBound( HOMALG.color_BOH ) then pictogram := Concatenation( HOMALG.color_BOH, pictogram, "\033[0m" ); elif pictogram = HOMALG_IO.Pictograms.BasisCoeff and IsBound( HOMALG.color_BOC ) then pictogram := Concatenation( HOMALG.color_BOC, pictogram, "\033[0m" ); elif pictogram = HOMALG_IO.Pictograms.DecideZeroEffectively and IsBound( HOMALG.color_BOP ) then pictogram := Concatenation( HOMALG.color_BOP, pictogram, "\033[0m" ); elif need_output or need_display then pictogram := Concatenation( HOMALG_IO.Pictograms.color_need_output, pictogram, "\033[0m" ); else pictogram := Concatenation( HOMALG_IO.Pictograms.color_need_command, pictogram, "\033[0m" ); fi; fi; if io_info_level >= 3 then if ( io_info_level >= 7 and not need_display ) or io_info_level >= 8 then ## print the pictogram, the prompt of the external system, ## and the sent command Info( InfoHomalgToCAS, 7, pictogram, " ", stream.prompt, L{[ 1 .. Length( L ) - 1 ]} ); elif io_info_level >= 4 then ## print the pictogram and the prompt of the external system Info( InfoHomalgToCAS, 4, pictogram, " ", stream.prompt, "..." ); else ## print the pictogram only Info( InfoHomalgToCAS, 3, pictogram ); fi; fi; |
generated by GAPDoc2HTML