Bivio::UI::WidgetOutput
# Copyright (c) 2013 Bivio Software, Inc. All Rights Reserved.
# $Id$
package Bivio::UI::WidgetOutput;
use strict;
use Bivio::Base 'Collection.Attributes';
b_use('IO.ClassLoaderAUTOLOAD');
my($_IDI) = __PACKAGE__->instance_data_index;
sub append_buffer {
my($self) = shift;
my($buffer) = $self->[$_IDI]->{buffer};
while (@_) {
# OPTIMIZATION: Could be a very large string. Simpler code this way, too.
my($ref) = ref($_[0]) ? $_[0] : \$_[0];
b_die(ref($ref), ': must be string or scalar')
if ref($ref) ne 'SCALAR';
$$buffer .= $$ref
if defined($$ref);
shift(@_);
}
return;
}
sub new {
b_die('call new_from_buffer');
}
sub new_from_buffer {
my($proto, $buffer) = @_;
return $buffer
if $proto->is_blesser_of($buffer);
my($self) = shift->SUPER::new(@_);
$self->[$_IDI] = {
buffer => $buffer,
};
return $self;
}
1;