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
https://metacpan.org/pod/Task::MemManager
This module exports various internal perl methods that change the internal representation or state of a perl scalar. All of these work in-place, that is, they modify their scalar argument.
https://metacpan.org/pod/Inline::C
Inline::C is a module that allows you to write Perl subroutines in C.
https://perldoc.perl.org/perlguts
Introduction to the Perl API.
https://perldoc.perl.org/perlapi
Autogenerated documentation for the perl public API.
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.