/***************************************************************************************/ /* */ /* SCS editor Version 2 */ /* File : Errors.pkg */ /* Version : 19 Juillet 2000 */ /* Errors struct and basic functions */ /* */ /***************************************************************************************/ /* data */ struct Error = [ ErrorId : I, /* Identifiant */ ErrorContent : S, ErrorLevel : I ] mkError ;; struct Errors = [ ERRORScontent : [Error r1],/* errors list */ ERRORSsize : I , ERRORSreflex : fun [Errors I I S] I ] mkErrors ;; /*************************************************************************************** Create a new Errors struct with a list of Error structs not initialized . The function returns the created Errors struct. ***************************************************************************************/ fun ERRORS_Create(reflex)= mkErrors [nil 0 reflex];; /*************************************************************************************** Create a new Error struct with a tri-parameters constructor of strings ([[S r1] r1]). The function returns the created Parameters struct. ***************************************************************************************/ fun _CRerror(Id,content,level)= mkError [Id content level];; /*************************************************************************************** Add a new Errors struct at the end of the Errors Liste (ERRORScontent field). The function returns the Errors struct with the new element. ***************************************************************************************/ fun ERRORS_Add(SET_ERR, level, identifier, content)= set SET_ERR.ERRORSsize = SET_ERR.ERRORSsize+1; set SET_ERR.ERRORScontent = (_CRerror identifier content level)::SET_ERR.ERRORScontent; exec SET_ERR.ERRORSreflex with [SET_ERR identifier level content]; SET_ERR.ERRORScontent; SET_ERR ;; /*************************************************************************************** ***************************************************************************************/ fun ERRORS_Get2(list, level)= if list ==nil then nil else let list -> [a nxt] in ( if (a.ErrorLevel == level) then a::ERRORS_Get2 nxt level else ERRORS_Get2 nxt level ) ;; fun ERRORS_Get( Liste , level)= if level == nil then Liste.ERRORScontent else ERRORS_Get2 Liste.ERRORScontent level;; /*************************************************************************************** * * Clears all errors * ***************************************************************************************/ fun ERRORS_Clear( Liste )= set Liste.ERRORScontent = nil; set Liste.ERRORSsize = 0; Liste ;; /**************************************************************************************** * * Protos des fonctions définies dans ErrorsInterface.pkg * ( chargé bien après d'autres packages car nécessite la définition * des fonctions pour l'interface graphique ) * ****************************************************************************************/ proto ERRORS_SetCallbacks = fun [Errors fun [Errors I I S] I] I;; /*proto ERRORS_AddError = fun [I I S] Errors;;*/