Behavioral extension

ACT++

  class extended_buffer : bounded_buffer {
  behavior:
  full_buffer = { get(), get_rear() };
  partial_buffer = { get(), get_rear(), put() };
  public:
  
  int get_rear() {
    reply buf[--in % MAX];
    out %= MAX;
    if (in == out) become empty_buffer;
    else
      become partial_buffer;
    }
  };
  

slide: Behavioral extension in ACT++