There is an ongoing outage on the primary CPAN mirror. It is possible to work around the issue by using MetaCPAN as a mirror.

NAME

Task::MemManager::View - Provides convenient views for Task::MemManager buffers

VERSION

version 0.04

SYNOPSIS

use Task::MemManager;
use Task::MemManager::View 'PDL'; # automatically loaded if Task::MemManager is used

my $buffer = Task::MemManager->new( size => 1000, 1 );

# Create a PDL view - implied an unsigned 8-bit integer view if pgl_type is not
# specified
my $pdl_view = $buffer->create_view('PDL', { view_name => 'my_pdl_view' });

# Retrieve the view later
my $retrieved_view = $buffer->get_view('my_pdl_view');

# Clone the view
my $cloned_view = $buffer->clone_view('my_pdl_view');

# Delete the view when no longer needed
$buffer->delete_view('my_pdl_view');

# New view using a different type PDL type
my $pdl_view_16 = $buffer->create_view('PDL', { view_name => 'my_pdl_uint16',
                                          pdl_type => 'ushort' });

DESCRIPTION

Task::MemManager::View is a module that extends the Task::MemManager module by providing convenient views for the memory buffers allocated by the Task::MemManager module. It does so, by adding additional methods to the Task::MemManager class to create, delete, and retrieve views. Views are implemented as separate modules under the Task::MemManager::View namespace. Each view module must implement a set of mandatory methods (see below). You can specify the modules to be loaded by passing their names as parameters when importing the Task::MemManager::View module. It is also possible to do so when importing the Task::MemManager module, by providing the parameter View=>['PDL', ...]. If no parameters are provided, the default is to load the PDL view module, which provides a view of the buffer as a Perl scalar. Note that this module must be installed separately.

METHODS

create_view

Usage       : $view =  $buffer->create_view($view_type, \%options);
Purpose     : Create a view of the specified type for the buffer
Returns     : The created view (a {Perl scalar or an object)
Parameters  : $view_type - type of the view (e.g. 'PDL')
              \%options - hash reference with options for the view. The
                          option view_name is reserved for naming the view.
                          If not specified, a default name is used.
              The options are passed as-is to the view's create_view method.
              See the documentation of each view module for the supported
              options.
Throws      : n/a
Comments    : Returns undef if the view creation fails for any reason.
              Warnings will be generated if DEBUG is set to a non-zero value.

delete_view

Usage       : $buffer->delete_view($view_name);
Purpose     : Delete the specified view of the buffer
Returns     : nothing
Parameters  : $view_name - name of the view to delete
Throws      : n/a
Comments    : If the view does not exist, nothing happens.
              Warnings will be generated if DEBUG is set to a non-zero value
              and the view name is not specified, or not found.

get_view

Usage       : $view = $buffer->get_view($view_name);
Purpose     : Retrieve the specified view of the buffer
Returns     : The requested view or undef if not found
Parameters  : $view_name - name of the view to retrieve
Throws      : n/a
Comments    : If the view does not exist, nothing happens.
              Warnings will be generated if DEBUG is set to a non-zero value
              and the view name is not specified, or not found.

clone_view

Usage       : $cloned_view = $buffer->clone_view($view_name);
Purpose     : Clone the specified view of the buffer
Returns     : The cloned view or undef if not found
Parameters  : $view_name - name of the view to clone
Throws      : n/a
Comments    : If the view does not exist, nothing happens.
              Warnings will be generated if DEBUG is set to a non-zero value
              and the view name is not specified, or not found.

EXAMPLES

Please see the examples in the module Task::MemManager::View::PDL

DIAGNOSTICS

If you set up the environment variable DEBUG to a non-zero value, then a number of sanity checks will be performed, and the module will warn with an (informative message ?) if something is wrong.

DEPENDENCIES

The module extends the Task::MemManager module so this is definitely a dependency. It also uses the Module::Find and Module::Runtime modules to find and load the view modules (so you can count them as dependencies too).

TODO

Open to suggestions. A few foolish ideas of my own include: adding Pandas DataFrame, Polars DataFrame, or Apache Arrow views

SEE ALSO

AUTHOR

Christos Argyropoulos, <chrisarg at cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2025 by Christos Argyropoulos.

This is free software; you can redistribute it and/or modify it under the MIT license. The full text of the license can be found in the LICENSE file See https://en.wikipedia.org/wiki/MIT_License for more information.