Download Shareware and Freeware Software for Windows, Linux, Macintosh, PDA

line Home  |  About Us  |  Link To Us  |  FAQ  |  Contact

Serving Software Downloads in 956 Categories, Downloaded 50.478.145 Times

PDL::Internals 2.4.3

  Date Added: July 11, 2010  |  Visits: 703

PDL::Internals

Report Broken Link
Printer Friendly Version


Product Homepage
Download (88 downloads)

PDL::Internals is a Perl module that contains a description of some aspects of the current internals. Intro This document explains various aspects of the current implementation of PDL. If you just want to use PDL for something, you definitely do not need to read this. Even if you want to interface your C routines to PDL or create new PDL::PP functions, you do not need to read this man page (though it may be informative). This document is primarily intended for people interested in debugging or changing the internals of PDL. To read this, a good understanding of the C language and programming and data structures in general is required, as well as some Perl understanding. If you read through this document and understand all of it and are able to point what any part of this document refers to in the PDL core sources and additionally struggle to understand PDL::PP, you will be awarded the title "PDL Guru" (of course, the current version of this document is so incomplete that this is next to impossible from just these notes). Warning: If it seems that this document has gotten out of date, please inform the PDL porters email list (pdl-porters@jach.hawaii.edu). This may well happen. Piddles The pdl data object is generally an opaque scalar reference into a pdl structure in memory. Alternatively, it may be a hash reference with the PDL field containing the scalar reference (this makes overloading piddles easy, see PDL::Objects). You can easily find out at the Perl level which type of piddle you are dealing with. The example code below demonstrates how to do it: # check if this a piddle die "not a piddle" unless UNIVERSAL::isa($pdl, PDL); # is it a scalar ref or a hash ref? if (UNIVERSAL::isa($pdl, "HASH")) { die "not a valid PDL" unless exists $pdl->{PDL} && UNIVERSAL::isa($pdl->{PDL},PDL); print "This is a hash reference,", " the PDL field contains the scalar refn"; } else { print "This is a scalar ref that points to address $$pdl in memoryn"; } The scalar reference points to the numeric address of a C structure of type pdl which is defined in pdl.h. The mapping between the object at the Perl level and the C structure containing the actual data and structural that makes up a piddle is done by the PDL typemap. The functions used in the PDL typemap are defined pretty much at the top of the file pdlcore.h. So what does the structure look like: struct pdl { unsigned long magicno; /* Always stores PDL_MAGICNO as a sanity check */ /* This is first so most pointer accesses to wrong type are caught */ int state; /* Whats in this pdl */ pdl_trans *trans; /* Opaque pointer to internals of transformation from parent */ pdl_vaffine *vafftrans; void* sv; /* (optional) pointer back to original sv. ALWAYS check for non-null before use. We cannot inc refcnt on this one or wed never get destroyed */ void *datasv; /* Pointer to SV containing data. Refcnt inced */ void *data; /* Null: no data alloced for this one */ int nvals; /* How many values allocated */ int datatype; PDL_Long *dims; /* Array of data dimensions */ PDL_Long *dimincs; /* Array of data default increments */ short ndims; /* Number of data dimensions */ unsigned char *threadids; /* Starting index of the thread index set n */ unsigned char nthreadids; pdl *progenitor; /* Im in a mutated family. make_physical_now must copy me to the new generation. */ pdl *future_me; /* Im the "then" pdl and this is my "now" (or more modern version, anyway */ pdl_children children; short living_for; /* perl side not referenced; delete me when */ PDL_Long def_dims[PDL_NDIMS]; /* Preallocated space for efficiency */ PDL_Long def_dimincs[PDL_NDIMS]; /* Preallocated space for efficiency */ unsigned char def_threadids[PDL_NTHREADIDS]; struct pdl_magic *magic; void *hdrsv; /* "header", settable from outside */ }; This is quite a structure for just storing some data in - what is going on?.

Requirements: No special requirements
Platforms: Linux
Keyword: Current Data Document Libraries Pdl Pdlinternals Perl Perl Module Programming Scalar Structure Universal
Users rating: 0/10

License: Freeware Size: 2.1 MB
PDL::INTERNALS RELATED
Libraries  -  PDL::Indexing 2.4.3
PDL::Indexing Perl module contains a tutorial on how to index piddles. This manpage should serve as a first tutorial on the indexing and threading features of PDL. This manpage is still in alpha development and not yet complete. "Meta"...
2.1 MB  
Libraries  -  Alien Perl module 0.91
Alien Perl module package contains external libraries wrapped up for your viewing pleasure! SYNOPSIS perldoc Alien; Alien is a package that exists just to hold together an idea, the idea of Alien:: packages, so there is no code here, just...
10.24 KB  
Libraries  -  Data::Page::Viewport 1.02
Data::Page::Viewport is a Perl module to scroll thru data a page, or just an item, at a time. Synopsis This is a complete, tested, runnable program. #!/usr/bin/perl use strict; use warnings; use Data::Page::Viewport; #...
8.19 KB  
Libraries  -  PDL::Primitive 2.4.3
PDL::Primitive Perl module contains primitive operations for pdl. This module provides some primitive and useful functions defined using PDL::PP and able to use the new indexing tricks. See PDL::Indexing for how to use indices creatively. For...
2.1 MB  
Libraries  -  PDL::NiceSlice 2.4.3
PDL::NiceSlice Perl module contains a nicer slicing syntax for PDL. SYNOPSYS use PDL::NiceSlice; $a(1:4) .= 2; # concise syntax for ranges print $b((0),1:$end); # use variables in the slice expression $a->xchg(0,1)->(($pos-1)) .= 0; #...
2.1 MB  
Libraries  -  PDL::MatrixOps 2.4.3
PDL::MatrixOps Perl module contains some useful Matrix operations. SYNOPSIS $inv = $a->inv; $det = $a->det; ($lu,$perm,$par) = $a->lu_decomp; $x = lu_backsub($lu,$perm,$b); # solve $a x $x = $b PDL::MatrixOps is PDLs built-in matrix...
2.1 MB  
Libraries  -  Data::FormValidator::Constraints 4.40
Data::FormValidator::Constraints is a Perl module with basic sets of constraints on input profile. SYNOPSIS use Data::FormValidator::Constraints qw(:all); In an Data::FormValidator profile: constraint_methods => { email => email(), fax =>...
88.06 KB  
Libraries  -  Data::Password::Manager 0.02
Data::Password::Manager is a Perl module to generate, check, manage crypt - des passwords. SYNOPSIS use Data::Password::Manager qw( pw_gen pw_valid pw_obscure pw_clean pw_get ); $password = pw_gen($cleartext); $ok =...
13.31 KB  
Libraries  -  Data::Type::Docs 0.01.15
Data::Type::Docs is a Perl module with the manual overview. MANUALS Data::Type::Docs::FAQ Frequently asked questions. Data::Type::Docs::FOP Frequently occuring problems. Data::Type::Docs::Howto Point to point recipes how to get...
70.66 KB  
Libraries  -  PDL::Ufunc 2.4.3
PDL::Ufunc Perl module contains primitive ufunc operations for pdl. This module provides some primitive and useful functions defined using PDL::PP based on functionality of what are sometimes called ufuncs (for example NumPY and Mathematica talk...
2.1 MB  
NEW DOWNLOADS IN PROGRAMMING, LIBRARIES
Programming  -  Cedalion for Linux 0.2.6
Cedalion is a programming language that allows its users to add new abstractions and define (and use) internal DSLs. Its innovation is in the fact that it uses projectional editing to allow the new abstractions to have no syntactic limitations.
471.04 KB  
Programming  -  Math::GMPf 0.29
Math::GMPf - perl interface to the GMP library's floating point (mpf) functions.
30.72 KB  
Programming  -  Net::Wire10 1.08
Net::Wire10 is a Pure Perl connector that talks to Sphinx, MySQL and Drizzle servers. Net::Wire10 implements the low-level network protocol, alias the MySQL wire protocol version 10, necessary for talking to one of the aforementioned...
30.72 KB  
Programming  -  logilab-common 0.56.2
a bunch of modules providing low level functionnalities shared among some python projects devel Please note that some of the modules have some extra dependencies. For instance, logilab.common.db will require a db-api 2.0 compliant...
174.08 KB  
Programming  -  OpenSSL for linux 1.0.0a
The OpenSSL Project is a collaborative effort to develop a robust, commercial-grade, full-featured, and Open Source toolkit implementing the Secure Sockets Layer (SSL v2/v3) and Transport Layer Security (TLS v1) protocols as well as a...
3.83 MB  
Libraries  -  wolfSSL 4.0.0
The wolfSSL embedded SSL/TLS library is a lightweight SSL library written in ANSI standard C and targeted for embedded and RTOS environments - primarily because of its small size, speed, and feature set. It is commonly used in standard operating...
3.88 MB  
Libraries  -  EuGTK 4.8.9
Makes it easy to develop good- looking, fast, cross-platform programs that run on Linux, OS X, and Windows. Euphoria is a very fast interpreted/compiled language with straight-forward syntax. EuGTK allows programming in a clean, object-oriented...
10.68 MB  
Libraries  -  Linux User Group Library Manager 1.0
The LUG Library Manager is a project to help Linux User Groups start their own library. A LUG library is helpful to the community at large because it increases access to information, and gives everyone the opportunity to become more knowledgeable.
5.35 KB  
Libraries  -  Module::MakefilePL::Parse 0.12
Module::MakefilePL::Parse is a Perl module to parse required modules from Makefile.PL. SYNOPSIS use Module::MakefilePL::Parse; open $fh, Makefile.PL; $parser = Module::MakefilePL::Parse->new( join("", ) ); $info = $parser->required;...
8.19 KB  
Libraries  -  sqlpp 0.06
sqlpp Perl package is a SQL preprocessor. sqlpp is a conventional cpp-alike preprocessor taught to understand SQL ( PgSQL, in particular) syntax specificities. In addition to the standard #define/#ifdef/#else/#endif cohort, provides also...
10.24 KB