| p5-Palm documentation | Contained in the p5-Palm distribution. |
Palm::Memo - Handler for Palm Memo databases.
use Palm::Memo;
The Memo PDB handler is a helper class for the Palm::PDB package. It parses Memo databases.
The AppInfo block begins with standard category support. See Palm::StdAppInfo for details.
Other fields include:
$pdb->{appinfo}{sortOrder}
I don't know what this is.
$pdb->{sort}
This is a scalar, the raw data of the sort block.
$record = $pdb->{records}[N]
$record->{data}
A string, the text of the memo.
$pdb = new Palm::Memo;
Create a new PDB, initialized with the various Palm::Memo fields and an empty record list.
Use this method if you're creating a Memo PDB from scratch.
$record = $pdb->new_Record;
Creates a new Memo record, with blank values for all of the fields.
new_Record does not add the new record to $pdb. For that,
you want $pdb->append_Record.
The source is in Github:
http://github.com/briandfoy/p5-Palm/tree/master
Alessandro Zummo, <a.zummo@towertech.it>
Currently maintained by brian d foy, <bdfoy@cpan.org>
Palm::PDB(3)
Palm::StdAppInfo(3)
| p5-Palm documentation | Contained in the p5-Palm distribution. |
# Palm::Memo.pm # # Perl class for dealing with Palm Memo databases. # # Copyright (C) 1999, 2000, Andrew Arensburger. # You may distribute this file under the terms of the Artistic # License, as specified in the README file. use strict; package Palm::Memo; use Palm::Raw(); use Palm::StdAppInfo(); use vars qw( $VERSION @ISA ); # One liner, to allow MakeMaker to work. $VERSION = '1.012'; @ISA = qw( Palm::StdAppInfo Palm::Raw );
#' sub import { &Palm::PDB::RegisterPDBHandlers(__PACKAGE__, [ "memo", "DATA" ], ); }
#' sub new { my $classname = shift; my $self = $classname->SUPER::new(@_); # Create a generic PDB. No need to rebless it, # though. $self->{name} = "MemoDB"; # Default $self->{creator} = "memo"; $self->{type} = "DATA"; $self->{attributes}{resource} = 0; # The PDB is not a resource database by # default, but it's worth emphasizing, # since MemoDB is explicitly not a PRC. # Initialize the AppInfo block $self->{appinfo} = { sortOrder => undef, # XXX - ? }; # Add the standard AppInfo block stuff &Palm::StdAppInfo::seed_StdAppInfo($self->{appinfo}); # Give the PDB a blank sort block $self->{sort} = undef; # Give the PDB an empty list of records $self->{records} = []; return $self; }
sub new_Record { my $classname = shift; my $retval = $classname->SUPER::new_Record(@_); $retval->{data} = ""; return $retval; } # ParseAppInfoBlock # Parse the AppInfo block for Memo databases. sub ParseAppInfoBlock { my $self = shift; my $data = shift; my $sortOrder; my $i; my $appinfo = {}; my $std_len; # Get the standard parts of the AppInfo block $std_len = &Palm::StdAppInfo::parse_StdAppInfo($appinfo, $data); $data = $appinfo->{other}; # Look at the non-category part # Get the rest of the AppInfo block my $unpackstr = # Argument to unpack() "x4" . # Padding "C"; # Sort order ($sortOrder) = unpack $unpackstr, $data; $appinfo->{sortOrder} = $sortOrder; return $appinfo; } sub PackAppInfoBlock { my $self = shift; my $retval; my $i; # Pack the non-category part of the AppInfo block $self->{appinfo}{other} = pack("x4 C x1", $self->{appinfo}{sortOrder}); # Pack the AppInfo block $retval = &Palm::StdAppInfo::pack_StdAppInfo($self->{appinfo}); return $retval; } sub PackSortBlock { # XXX return undef; } sub ParseRecord { my $self = shift; my %record = @_; delete $record{offset}; # This is useless $record{data} =~ s/\0$//; # Trim trailing NUL return \%record; } sub PackRecord { my $self = shift; my $record = shift; return $record->{data} . "\0"; # Add the trailing NUL } 1; __END__