


## maildrop.api
#
# These are essentially concurrency-safe REF cells.
#
# See also:
#
# src/lib/src/lib/thread-kit/src/core-thread-kit/oneshot-maildrop.api# Compiled by:
# src/lib/std/standard.libstipulate
package mop = mailop; # mailop is from src/lib/src/lib/thread-kit/src/core-thread-kit/mailop.pkgherein
# This api is implemented in:
#
# src/lib/src/lib/thread-kit/src/core-thread-kit/maildrop.pkg #
api Maildrop {
#
Maildrop(X);
exception MAY_NOT_FILL_ALREADY_FULL_MAILDROP;
make_empty_maildrop: Void -> Maildrop(X); # Construct maildrop which initially has no value.
make_maildrop: X -> Maildrop(X); # Construct maildrop which initially has given value X.
# We could equally well collapse these two into just make_maildrop: Null_Or(X) -> Maildrop(X); but whatever.
put_in_maildrop: (Maildrop(X), X) -> Void;
take_from_maildrop: Maildrop(X) -> X;
take_from_maildrop': Maildrop(X) -> mop::Mailop(X);
nonblocking_take_from_maildrop: Maildrop(X) -> Null_Or(X);
peek_in_maildrop: Maildrop(X) -> X;
peek_in_maildrop': Maildrop(X) -> mop::Mailop(X);
nonblocking_peek_in_maildrop: Maildrop(X) -> Null_Or(X);
maildrop_swap: (Maildrop(X), X) -> X;
maildrop_swap': (Maildrop(X), X) -> mop::Mailop(X);
same_maildrop: (Maildrop(X), Maildrop(X)) -> Bool;
};
end;
## COPYRIGHT (c) 1989-1991 John H. Reppy
## COPYRIGHT (c) 1995 AT&T Bell Laboratories.
## Subsequent changes by Jeff Prothero Copyright (c) 2010-2013,
## released per terms of SMLNJ-COPYRIGHT.


