Goto Chapter: Top 1 2 3 4 A Bib Ind
 Top of Book   Previous Chapter   Next Chapter 

3 Watch and Influence the Communication
 3.1 Functions
  3.1-1 homalgIOMode

3 Watch and Influence the Communication

3.1 Functions

3.1-1 homalgIOMode
> 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:

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;
 Top of Book   Previous Chapter   Next Chapter 
Goto Chapter: Top 1 2 3 4 A Bib Ind

generated by GAPDoc2HTML