anchor.diff:  interface
   
   uses
  -  Classes, SysUtils, actnList, menus,
  +  Classes, SysUtils, actnList, menus, process,
     ce_synmemo, ce_project, ce_observer;
   
   type
   
  +
     (**
      * An implementer can save and load some stuffs on application start/quit
      *)
     ICESessionOptionsObserver = interface
  -  ['ICEWidgetPersist']
  +  ['ICESessionOptionsObserver']
       // persistent things are about to be saved.
       procedure sesoptBeforeSave;
       // persistent things can be declared to aFiler.
  
positive.code: end;
  {$ENDREGION}
  
  {$REGION TCELogMessageSubject --------------------------------------------------}
  function TCELogMessageSubject.acceptObserver(aObject: TObject): boolean;
  begin
    exit(aObject is ICELogMessageObserver);
  end;
  
  procedure subjLmFromString(aSubject: TCELogMessageSubject; const aValue: string;
    aData: Pointer; aCtxt: TCEAppMessageCtxt; aKind: TCEAppMessageKind);
  var
    i: Integer;
  begin
    with aSubject do for i:= 0 to fObservers.Count-1 do
      (fObservers.Items[i] as ICELogMessageObserver).lmFromString(aValue, aData, aCtxt, aKind);
  end;
  
  procedure subjLmClearByContext(aSubject: TCELogMessageSubject; aCtxt: TCEAppMessageCtxt);
  var
    i: Integer;
  begin
    with aSubject do for i:= 0 to fObservers.Count-1 do
      (fObservers.Items[i] as ICELogMessageObserver).lmClearByContext(aCtxt);
  end;
  
  
  procedure subjLmClearByData(aSubject: TCELogMessageSubject; aData: Pointer);
  var
    i: Integer;
  begin
    with aSubject do for i:= 0 to fObservers.Count-1 do
      (fObservers.Items[i] as ICELogMessageObserver).lmClearByData(aData);
  end;
  
  
  {$ENDREGION}
  end.
  
negative.code:   procedure subjSesOptsDeclareProperties(aSubject: TCESessionOptionsSubject; aFiler: TFiler);{$IFDEF RELEASE}inline;{$ENDIF}
    procedure subjSesOptsAfterLoad(aSubject: TCESessionOptionsSubject);                        {$IFDEF RELEASE}inline;{$ENDIF}
  
  
  {
    Services assignements:
  
    lazily get the interface of a service when needed or for a ponctual usage
  }
  
    function getMessageDisplay(var obj: ICEMessagesDisplay): ICEMessagesDisplay; overload;
    function getMessageDisplay: ICEMessagesDisplay;overload;
    function getprocInputHandler(var obj: ICEProcInputHandler): ICEProcInputHandler;overload;
    function getprocInputHandler: ICEProcInputHandler;overload;
  
  implementation
  
  