# The variables are explained in the file gap/data.g
# nome := number;

IF_asir := 10;


##############################################################################
# Administrative data


IF_SUBPACKAGE_VERSION[IF_asir] := "dev";

IF_CAS_DESCRIPTION[IF_asir] := 
[ "Risa/Asir",
"Risa is the name of whole libraries of a computer algebra system which is under development at Fujitsu Laboratories \
Limited. Asir is a standard language interface of Risa's algebraic engine.",
"http://www.asir.org/" ];


##############################################################################
# Low level data


IF_EXEC_NAME[IF_asir] := "asir";
IF_EXEC_FULL_PATH[IF_asir] := "/mnt/hda10/home/costanti/asir2000/asir";
IF_EXEC_OPTIONS[IF_asir] := [];


IF_QUIT_COMMAND[IF_asir] := ";quit;";
IF_DISPLAY_VERSION[IF_asir] := "version();";


# IF_FIRST_COMMAND[IF_asir] := "";
#if not IsBound( IF_PROMPT_NR[IF_asir] )  then
#    IF_PROMPT_NR[IF_asir]:= ;
#fi;
IF_FIRST_PROMPT[IF_asir] := "[0]";
IF_PROMPTS[IF_asir] := function ( OUT )
# da modificare, come Mathematica
    local  p1, p2;
    p1 := PositionSublist( OUT, "[" );
    if p1 = fail  then
        return false;
    fi;
    p2 := PositionSublist( OUT, "] ", p1 );
    return p2 <> fail and ForAll( OUT{[ p1 + 2 .. p2 - 1 ]}, IsDigitChar );
end;

IF_FUNC_REMOVE_PROMPT[IF_asir] := function( OUT )
local pos;
    pos:=PositionSublist( OUT, "\n[" );
    if pos<> fail then 
        return OUT{[ 1 ..pos-1]};
    else 
        return fail; #  <----- OUT{[ 1 .. PositionSublist( OUT, "[" ) -1 ]};
    fi;
end;

IF_IS_THERE_PROMPT[IF_asir] := true;


##############################################################################
# High level data


IF_ASSIGN[IF_asir] := "=";
IF_END_COMMAND[IF_asir] := ";";
IF_END_COMMAND_NO_OUTPUT[IF_asir] := "$";
IF_FUNC_TYPE[IF_asir] := "type";
IF_TYPE_IS_QUOTED[IF_asir] := false;

IF_FUNC_DISPLAY[IF_asir] := "";

IF_STRING_ARE_QUOTED[IF_asir] := false;
IF_FUNC_STRING[IF_asir] := "rtostr";
IF_PROHIBITED_CHARS[IF_asir] := [ 255 ];


##############################################################################
# data types data


# see manual


IF_DATA_TYPES[IF_asir] := rec(

0:= [
"0", 
,
obj -> "0",
obj -> 0],

1 := [
"number",
IsRat,
String,
Rat ],

2 := [
"polynomial (not number) ", ],

3 := [
"rational expression (not polynomial) ", ],

4 := [
"list", ],

5 := [
"vector", ],

6 := [
"matrix", ],

7 := [
"string",
IsString and IsStringRep,
IF_ParseGapString,
IdFunc ],

8 := [
"structure", ],

9 := [
"distributed polynomial", ],

10 := [
"32bit unsigned integer", ],

11 := [
"error object", ],

12 := [
"matrix over GF(2)", ],

13 := [
"MATHCAP object", ],

14 := [
"first order formula", ],

15 := [
"matrix over GF(p)", ],

16 := [
"byte array", ],

\-1 := [
"VOID object", ]


);

