?? RIGHT := 110 ??
?? NEWTITLE := 'NOS/VE Interpreter : UNSEEN_MAIL Action Handlers' ??
MODULE clm$unseen_mail_action_handler;

{
{ PURPOSE:
{   This module contains procedures to change and to retrieve the
{   unseen_mail action for the task.
{

?? NEWTITLE := 'Global Declarations Referenced in this Module', EJECT ??
?? PUSH (LISTEXT := ON) ??
*copyc cle$bad_unseen_mail_action
*copyc clt$environment_object_contents
*copyc clt$environment_object_size
*copyc clt$env_object_pop_reason
*copyc clt$unseen_mail_action
*copyc ost$status
?? POP ??
*copyc clp$find_unseen_mail_action
*copyc osp$set_status_condition
*copyc pmp$propagate_unseen_mail
*copyc pmv$unseen_mail_pending
?? OLDTITLE ??
?? NEWTITLE := 'clp$eo_size_unseen_mail_action', EJECT ??

  FUNCTION [XDCL] clp$eo_size_unseen_mail_action: clt$environment_object_size;


    clp$eo_size_unseen_mail_action := #SIZE (clt$unseen_mail_action);

  FUNCEND clp$eo_size_unseen_mail_action;
?? OLDTITLE ??
?? NEWTITLE := 'clp$eo_init_unseen_mail_action', EJECT ??

  PROCEDURE [XDCL] clp$eo_init_unseen_mail_action
    (    object: ^clt$environment_object_contents);

    VAR
      unseen_mail_action: ^clt$unseen_mail_action;


    unseen_mail_action := object;

    unseen_mail_action^ := clc$display_unseen_mail;

  PROCEND clp$eo_init_unseen_mail_action;
?? OLDTITLE ??
?? NEWTITLE := 'clp$eo_pop_unseen_mail_action', EJECT ??

  PROCEDURE [XDCL] clp$eo_pop_unseen_mail_action
    (    pop_reason: clt$env_object_pop_reason;
         object: ^clt$environment_object_contents;
         object_in_current_task: boolean;
         pushed_object_in_current_task: boolean;
         pushed_object: ^clt$environment_object_contents;
     VAR status: ost$status);

    VAR
      popped_unseen_mail_action: ^clt$unseen_mail_action,
      pushed_unseen_mail_action: ^clt$unseen_mail_action;


    status.normal := TRUE;

    IF pushed_object = NIL THEN
      RETURN;
    IFEND;

    popped_unseen_mail_action := object;
    pushed_unseen_mail_action := pushed_object;

    IF (popped_unseen_mail_action^ = clc$post_unseen_mail) AND pmv$unseen_mail_pending AND
          (pushed_unseen_mail_action^ = clc$display_unseen_mail) THEN
      pmp$propagate_unseen_mail (status);
    IFEND;

  PROCEND clp$eo_pop_unseen_mail_action;
?? OLDTITLE ??
?? NEWTITLE := 'clp$eo_updt_unseen_mail_action', EJECT ??

  PROCEDURE [XDCL] clp$eo_updt_unseen_mail_action
    (    synchronous_with_parent: boolean;
         synchronous_with_job: boolean;
         current_object: ^clt$environment_object_contents;
         current_object_in_current_task: boolean;
     VAR status: ost$status);

    VAR
      unseen_mail_action: ^clt$unseen_mail_action;


    status.normal := TRUE;

    unseen_mail_action := current_object;

    IF synchronous_with_job AND pmv$unseen_mail_pending AND (unseen_mail_action^ = clc$display_unseen_mail)
          THEN
      pmp$propagate_unseen_mail (status);
    IFEND;

  PROCEND clp$eo_updt_unseen_mail_action;
?? OLDTITLE ??
?? NEWTITLE := '[XDCL, #GATE] clp$change_unseen_mail_action', EJECT ??
*copyc clh$change_unseen_mail_action

  PROCEDURE [XDCL, #GATE] clp$change_unseen_mail_action
    (    action: clt$unseen_mail_action;
     VAR status: ost$status);

    VAR
      unseen_mail_action_ptr: ^clt$unseen_mail_action,
      old_action: clt$unseen_mail_action;


    status.normal := TRUE;
    IF (action <> clc$post_unseen_mail) AND (action <> clc$display_unseen_mail) THEN
      osp$set_status_condition (cle$bad_unseen_mail_action, status);
      RETURN;
    IFEND;

    clp$find_unseen_mail_action (unseen_mail_action_ptr);
    old_action := unseen_mail_action_ptr^;
    unseen_mail_action_ptr^ := action;
    IF (action = clc$display_unseen_mail) AND (old_action = clc$post_unseen_mail) AND
          pmv$unseen_mail_pending THEN
      pmp$propagate_unseen_mail (status);
    IFEND;

  PROCEND clp$change_unseen_mail_action;
?? OLDTITLE ??
?? NEWTITLE := '[XDCL, #GATE] clp$get_unseen_mail_action', EJECT ??
*copyc clh$get_unseen_mail_action

  PROCEDURE [XDCL, #GATE] clp$get_unseen_mail_action
    (VAR action: clt$unseen_mail_action;
     VAR status: ost$status);

    VAR
      unseen_mail_action_ptr: ^clt$unseen_mail_action;


    status.normal := TRUE;
    clp$find_unseen_mail_action (unseen_mail_action_ptr);
    action := unseen_mail_action_ptr^;

  PROCEND clp$get_unseen_mail_action;
?? OLDTITLE ??

MODEND clm$unseen_mail_action_handler;
