class file decompiler
Sponsored Links
Sponsored Links
Secleted [ 0 ] software to compare
Results 1 - 15 of about 2763
Interactive Decompiler 0.2
Interactive Decompiler decompiles by the successive application of low-level refactorings, ultimately leading to high-level code more>>
Interactive Decompiler project is an interactive decompiler, where the user starts with an almost literal translation of Assembly code in C language, which he progressively decompiles by the successive application of low-level refactorings, ultimately leading to high-level C code.
Main features:
- Import Intel IA32 Assembly code, in the AT&T syntax -- the syntax normally generated by the gcc compiler for the Intel IA32 architecture.
- Visualize and export quasi-C language code.
- Provides a context-sensitive refactoring browser to a set of low-level refactorings.
- Visualize and manipulate the Control Flow Graph (CFG) and the Abstract Syntax Tree (AST).
- For developers:
- It has an extensible data type for program representation.
- It has an easily extensible architecture (new program metadata, new processors, new refactorings, or new visualizations can easily be added).
- It has an embedded language for describing refactorings and other transformation.
- It is possible to modify the refactorings while running the program.
Version restrictions:
- The IA32 instruction set is not yet fully supported, namely the floating-point and SIMD instructions are not yet translated.
- Not all refactoring are implemented, and some are only have a partial implementation.
- The data flow analysis performed in the refactorings focus only on register variables.
- The implementation of several of many necessary the refactorings is still missing due to lack of time.
<<lessMain features:
- Import Intel IA32 Assembly code, in the AT&T syntax -- the syntax normally generated by the gcc compiler for the Intel IA32 architecture.
- Visualize and export quasi-C language code.
- Provides a context-sensitive refactoring browser to a set of low-level refactorings.
- Visualize and manipulate the Control Flow Graph (CFG) and the Abstract Syntax Tree (AST).
- For developers:
- It has an extensible data type for program representation.
- It has an easily extensible architecture (new program metadata, new processors, new refactorings, or new visualizations can easily be added).
- It has an embedded language for describing refactorings and other transformation.
- It is possible to modify the refactorings while running the program.
Version restrictions:
- The IA32 instruction set is not yet fully supported, namely the floating-point and SIMD instructions are not yet translated.
- Not all refactoring are implemented, and some are only have a partial implementation.
- The data flow analysis performed in the refactorings focus only on register variables.
- The implementation of several of many necessary the refactorings is still missing due to lack of time.
Download (0.022MB)
Added: 2007-08-09 License: LGPL (GNU Lesser General Public License) Price:
857 downloads
Class::Meta::Declare 0.04
Class::Meta::Declare is a Perl module deprecated in favor of Class::Meta::Express. more>>
Class::Meta::Declare is a Perl module deprecated in favor of Class::Meta::Express.
SYNOPSIS
This was a first attempt at making a saner interface for Class::Meta. It is nicer, but Class::Meta::Express is nicer still. Go use that one.
package MyApp::Thingy;
use Class::Meta::Declare :all;
use Data::UUID;
Class::Meta::Declare->new(
meta => [
key => thingy,
accessors => $ACC_SEMI_AFFORDANCE,
],
attributes => [
pi => {
context => $CTXT_CLASS,
authz => $AUTHZ_READ,
default => 3.1415927,
},
id => {
authz => $AUTHZ_READ,
type => $TYPE_STRING,
default => sub { Data::UUID->new->create_str },
},
name => {
required => 1,
type => $TYPE_STRING,
default => No Name Supplied,
},
age => { type => $TYPE_INTEGER, },
],
methods => [
some_method => {
view => $VIEW_PUBLIC,
code => sub {
my $self = shift;
return [ reverse @_ ];
},
}
]
);
my $object = MyApp::Thingy->new;
print MyApp::Thingy->pi; # prints 3.1415927
print $object->name; # prints "No Name Supplied;
$object->set_name("bob");
print $object->name; # prints "bob"
This class provides an alternate interface for Class::Meta.
Class::Meta is a useful module which allows one to create Perl classes which support introspection (also known as reflection). Typically Perl classes, when created, dont supply a lot of metadata. Imported helper functions show up when you call $object->can($method). Private, protected and trusted methods are not readily supported. Fetching a list of attributes or methods is a haphazard affair. Class::Meta overcomes these shortcomings by building the classes for you and allowing you to fetch a class object:
my $class_object = $object->my_class;
foreach my $attribute ( $class_object->attributes ) {
print $attribute->name, "n";
}
foreach my $method ( $class_object->methods ) {
print $method->name, "n";
}
If youve set up your class correctly, these properties are now easy to discover.
Unfortunately, many find the Class::Meta interface to be a bit clumsy. As an alternative, Class::Meta::Declare allows you to declare your entire class in a single argument list to the constructor and have the class built for you automatically. Further, reasonable defaults are provided for just about everything.
IMPORTANT: You want this class or Class::Meta if you need an introspection API for your classes. If you do not need introspection or dynamic class generation, these modules are overkill.
<<lessSYNOPSIS
This was a first attempt at making a saner interface for Class::Meta. It is nicer, but Class::Meta::Express is nicer still. Go use that one.
package MyApp::Thingy;
use Class::Meta::Declare :all;
use Data::UUID;
Class::Meta::Declare->new(
meta => [
key => thingy,
accessors => $ACC_SEMI_AFFORDANCE,
],
attributes => [
pi => {
context => $CTXT_CLASS,
authz => $AUTHZ_READ,
default => 3.1415927,
},
id => {
authz => $AUTHZ_READ,
type => $TYPE_STRING,
default => sub { Data::UUID->new->create_str },
},
name => {
required => 1,
type => $TYPE_STRING,
default => No Name Supplied,
},
age => { type => $TYPE_INTEGER, },
],
methods => [
some_method => {
view => $VIEW_PUBLIC,
code => sub {
my $self = shift;
return [ reverse @_ ];
},
}
]
);
my $object = MyApp::Thingy->new;
print MyApp::Thingy->pi; # prints 3.1415927
print $object->name; # prints "No Name Supplied;
$object->set_name("bob");
print $object->name; # prints "bob"
This class provides an alternate interface for Class::Meta.
Class::Meta is a useful module which allows one to create Perl classes which support introspection (also known as reflection). Typically Perl classes, when created, dont supply a lot of metadata. Imported helper functions show up when you call $object->can($method). Private, protected and trusted methods are not readily supported. Fetching a list of attributes or methods is a haphazard affair. Class::Meta overcomes these shortcomings by building the classes for you and allowing you to fetch a class object:
my $class_object = $object->my_class;
foreach my $attribute ( $class_object->attributes ) {
print $attribute->name, "n";
}
foreach my $method ( $class_object->methods ) {
print $method->name, "n";
}
If youve set up your class correctly, these properties are now easy to discover.
Unfortunately, many find the Class::Meta interface to be a bit clumsy. As an alternative, Class::Meta::Declare allows you to declare your entire class in a single argument list to the constructor and have the class built for you automatically. Further, reasonable defaults are provided for just about everything.
IMPORTANT: You want this class or Class::Meta if you need an introspection API for your classes. If you do not need introspection or dynamic class generation, these modules are overkill.
Download (0.015MB)
Added: 2006-09-27 License: Perl Artistic License Price:
1122 downloads
Class::ObjectTemplate 0.7
Class::ObjectTemplate is a Perl extension for an optimized template builder base class. more>>
Class::ObjectTemplate is a Perl extension for an optimized template builder base class.
SYNOPSIS
package Foo;
use Class::ObjectTemplate;
require Exporter;
@ISA = qw(Class::ObjectTemplate Exporter);
attributes(one, two, three);
# initialize will be called by new()
sub initialize {
my $self = shift;
$self->three(1) unless defined $self->three();
}
use Foo;
$foo = Foo->new();
# store 27 in the one attribute
$foo->one(27);
# check the value in the two attribute
die "should be undefined" if defined $foo->two();
# set using the utility method
$foo->set_attribute(one,27);
# check using the utility method
$two = $foo->get_attribute(two);
# set more than one attribute using the named parameter style
$foo->set_attributes(one=>27, two=>42);
# or using array references
$foo->set_attributes([one,two],[27,42]);
# get more than one attribute
@list = $foo->get_attributes(one, two);
# get a list of all attributes known by an object
@attrs = $foo->get_attribute_names();
# check that initialize() is called properly
die "initialize didnt set three()" unless $foo->three();
Class::ObjectTemplate is a utility class to assist in the building of other Object Oriented Perl classes.
It was described in detail in the OReilly book, "Advanced Perl Programming" by Sriram Srinivasam.
<<lessSYNOPSIS
package Foo;
use Class::ObjectTemplate;
require Exporter;
@ISA = qw(Class::ObjectTemplate Exporter);
attributes(one, two, three);
# initialize will be called by new()
sub initialize {
my $self = shift;
$self->three(1) unless defined $self->three();
}
use Foo;
$foo = Foo->new();
# store 27 in the one attribute
$foo->one(27);
# check the value in the two attribute
die "should be undefined" if defined $foo->two();
# set using the utility method
$foo->set_attribute(one,27);
# check using the utility method
$two = $foo->get_attribute(two);
# set more than one attribute using the named parameter style
$foo->set_attributes(one=>27, two=>42);
# or using array references
$foo->set_attributes([one,two],[27,42]);
# get more than one attribute
@list = $foo->get_attributes(one, two);
# get a list of all attributes known by an object
@attrs = $foo->get_attribute_names();
# check that initialize() is called properly
die "initialize didnt set three()" unless $foo->three();
Class::ObjectTemplate is a utility class to assist in the building of other Object Oriented Perl classes.
It was described in detail in the OReilly book, "Advanced Perl Programming" by Sriram Srinivasam.
Download (0.006MB)
Added: 2006-10-05 License: Perl Artistic License Price:
1115 downloads
Class::Container 0.12
Class::Container is a Perl module with Glues object frameworks together transparently. more>>
Class::Container is a Perl module with Glues object frameworks together transparently.
SYNOPSIS
package Car;
use Class::Container;
@ISA = qw(Class::Container);
__PACKAGE__->valid_params
(
paint => {default => burgundy},
style => {default => coupe},
windshield => {isa => Glass},
radio => {isa => Audio::Device},
);
__PACKAGE__->contained_objects
(
windshield => Glass::Shatterproof,
wheel => { class => Vehicle::Wheel,
delayed => 1 },
radio => Audio::MP3,
);
sub new {
my $package = shift;
# windshield and radio objects are created automatically by
# SUPER::new()
my $self = $package->SUPER::new(@_);
$self->{right_wheel} = $self->create_delayed_object(wheel);
... do any more initialization here ...
return $self;
}
This class facilitates building frameworks of several classes that inter-operate. It was first designed and built for HTML::Mason, in which the Compiler, Lexer, Interpreter, Resolver, Component, Buffer, and several other objects must create each other transparently, passing the appropriate parameters to the right class, possibly substituting other subclasses for any of these objects.
The main features of Class::Container are:
Explicit declaration of containment relationships (aggregation, factory creation, etc.)
Declaration of constructor parameters accepted by each member in a class framework
Transparent passing of constructor parameters to the class that needs them
Ability to create one (automatic) or many (manual) contained objects automatically and transparently
<<lessSYNOPSIS
package Car;
use Class::Container;
@ISA = qw(Class::Container);
__PACKAGE__->valid_params
(
paint => {default => burgundy},
style => {default => coupe},
windshield => {isa => Glass},
radio => {isa => Audio::Device},
);
__PACKAGE__->contained_objects
(
windshield => Glass::Shatterproof,
wheel => { class => Vehicle::Wheel,
delayed => 1 },
radio => Audio::MP3,
);
sub new {
my $package = shift;
# windshield and radio objects are created automatically by
# SUPER::new()
my $self = $package->SUPER::new(@_);
$self->{right_wheel} = $self->create_delayed_object(wheel);
... do any more initialization here ...
return $self;
}
This class facilitates building frameworks of several classes that inter-operate. It was first designed and built for HTML::Mason, in which the Compiler, Lexer, Interpreter, Resolver, Component, Buffer, and several other objects must create each other transparently, passing the appropriate parameters to the right class, possibly substituting other subclasses for any of these objects.
The main features of Class::Container are:
Explicit declaration of containment relationships (aggregation, factory creation, etc.)
Declaration of constructor parameters accepted by each member in a class framework
Transparent passing of constructor parameters to the class that needs them
Ability to create one (automatic) or many (manual) contained objects automatically and transparently
Download (0.019MB)
Added: 2006-10-06 License: Perl Artistic License Price:
1113 downloads
Class::Driver 0.005
Class::Driver is a Perl module to generate driver (composite) class hierarchies on-the-fly. more>>
EXAMPLE
# This is a really long synopsis, but hopefully it will give you an idea...
package MyPackage;
use Class::Driver;
use base q(Class::Driver);
our %drivers;
return 1;
sub new {
my($class, %args) = @_;
die "mime_type is required" unless($args{mime_type});
die "no driver to handle type $args{mime_type}"
unless($drivers{$args{mime_type}});
return $class->driver_load($drivers{$args{mime_type}}, %args);
}
sub driver_new {
my($class, %args) = @_;
return bless %args, $class;
}
sub driver_required { 1; }
sub driver_requied_here { 0; }
package MyPackage::avi;
use MyPackage;
use base q(MyPackage);
use Video::Info;
$MyPackage::drivers{video/x-msvideo} = avi;
return 1;
sub driver { "avi"; }
sub driver_new {
my($class, %args) = @_;
die "file is a required parameter for $args{mime_type} files"
unless($args{file});
$args{info} = Video::Info->new(-file => $args{file})
or die "Failed to create a Video::Info object for $args{file}";
return $class->SUPER::driver_new(%args);
}
sub duration {
my $self = shift;
return $args{info}->duration;
}
package MyPackage::mp3;
use base q(MyPackage);
use MP3::Info;
$MyPackage::drivers{audio/mpeg} = mp3;
## (etc...)
package main;
my $foo = MyPackage->new(file => foobar.mp3, mime_type => audio/mpeg);
print "foobar.mp3 is ", $foo->duration, " seconds long.n";
Download (0.011MB)
Added: 2006-11-14 License: Perl Artistic License Price:
1075 downloads
Class::Adapter 1.02
Class::Adapter is a Perl implementation of the Adapter Design Pattern. more>>
Class::Adapter is a Perl implementation of the "Adapter" Design Pattern.
The Class::Adapter class is intended as an abstract base class for creating any sort of class or object that follows the Adapter pattern.
What is an Adapter?
The term Adapter refers to a "Design Pattern" of the same name, from the famous "Gang of Four" book "Design Patterns". Although their original implementation was designed for Java and similar single-inheritance strictly-typed langauge, the situation for which it applies is still valid.
An Adapter in this Perl sense of the term is when a class is created to achieve by composition (objects containing other object) something that cant be achieved by inheritance (sub-classing).
This is similar to the Decorator pattern, but is intended to be applied on a class-by-class basis, as opposed to being able to be applied one object at a time, as is the case with the Decorator pattern.
The Class::Adapter object holds a parent object that it "wraps", and when a method is called on the Class::Adapter, it manually calls the same (or different) method with the same (or different) parameters on the parent object contained within it.
Instead of these custom methods being hooked in on an object-by-object basis, they are defined at the class level.
Basically, a Class::Adapter is one of your fall-back positions when Perls inheritance model fails you, or is no longer good enough, and you need to do something twisty in order to make several APIs play nicely with each other.
What can I do with the actual Class::Adapter class
Well... nothing really. It exist to provide some extremely low level fundamental methods, and to provide a common base for inheritance of Adapter classes.
The base Class::Adapter class doesnt even implement a way to push method calls through to the underlying object, since the way in which that happens is the bit that changes from case to case.
To actually DO something, you probably want to go take a look at Class::Adapter::Builder, which makes the creation of Adapter classes relatively quick and easy.
<<lessThe Class::Adapter class is intended as an abstract base class for creating any sort of class or object that follows the Adapter pattern.
What is an Adapter?
The term Adapter refers to a "Design Pattern" of the same name, from the famous "Gang of Four" book "Design Patterns". Although their original implementation was designed for Java and similar single-inheritance strictly-typed langauge, the situation for which it applies is still valid.
An Adapter in this Perl sense of the term is when a class is created to achieve by composition (objects containing other object) something that cant be achieved by inheritance (sub-classing).
This is similar to the Decorator pattern, but is intended to be applied on a class-by-class basis, as opposed to being able to be applied one object at a time, as is the case with the Decorator pattern.
The Class::Adapter object holds a parent object that it "wraps", and when a method is called on the Class::Adapter, it manually calls the same (or different) method with the same (or different) parameters on the parent object contained within it.
Instead of these custom methods being hooked in on an object-by-object basis, they are defined at the class level.
Basically, a Class::Adapter is one of your fall-back positions when Perls inheritance model fails you, or is no longer good enough, and you need to do something twisty in order to make several APIs play nicely with each other.
What can I do with the actual Class::Adapter class
Well... nothing really. It exist to provide some extremely low level fundamental methods, and to provide a common base for inheritance of Adapter classes.
The base Class::Adapter class doesnt even implement a way to push method calls through to the underlying object, since the way in which that happens is the bit that changes from case to case.
To actually DO something, you probably want to go take a look at Class::Adapter::Builder, which makes the creation of Adapter classes relatively quick and easy.
Download (0.024MB)
Added: 2007-06-20 License: Perl Artistic License Price:
856 downloads
Class::MethodMaker::V1Compat 2.08
Class::MethodMaker::V1Compat is a V1 compatibility code for C::MM. more>>
Class::MethodMaker::V1Compat is a V1 compatibility code for C::MM.
SYNOPSIS
This class is for internal implementation only. It is not a public API.
Class::MethodMaker version 2 strives for backward-compatiblity with version 1 as far as possible. That is to say, classes built with version 1 should work with few if any changes. However, the calling conventions for building new classes are significantly different: this is necessary to achieve a greater consistency of arguments.
Version 2 takes all arguments within a single arrayref:
use Class::MethodMaker
[ scalar => a ];
If arguments are presented as a list, then Class::MethodMaker assumes that this is a version 1 call, and acts accordingly. Version 1 arguments are passed and internally rephrased to version 2 arguments, and passed off to the version 2 engine. Thus, the majority of version 1 calls can be upgraded to version 2 merely by rephrasing. However, there are a number of behaviours that in version 1 that are internally inconsistent. These behaviours are mimicked in version 1 mode as far as possible, but are not reproducible in version 2 (to allow version 2 clients to rely on a more internally consistent interface).
<<lessSYNOPSIS
This class is for internal implementation only. It is not a public API.
Class::MethodMaker version 2 strives for backward-compatiblity with version 1 as far as possible. That is to say, classes built with version 1 should work with few if any changes. However, the calling conventions for building new classes are significantly different: this is necessary to achieve a greater consistency of arguments.
Version 2 takes all arguments within a single arrayref:
use Class::MethodMaker
[ scalar => a ];
If arguments are presented as a list, then Class::MethodMaker assumes that this is a version 1 call, and acts accordingly. Version 1 arguments are passed and internally rephrased to version 2 arguments, and passed off to the version 2 engine. Thus, the majority of version 1 calls can be upgraded to version 2 merely by rephrasing. However, there are a number of behaviours that in version 1 that are internally inconsistent. These behaviours are mimicked in version 1 mode as far as possible, but are not reproducible in version 2 (to allow version 2 clients to rely on a more internally consistent interface).
Download (0.086MB)
Added: 2006-10-05 License: Perl Artistic License Price:
1116 downloads
Class::Inner 0.1
Class::Inner is a perlish implementation of Java like inner classes. more>>
Class::Inner is a perlish implementation of Java like inner classes.
SYNOPSIS
use Class::Inner;
my $object = Class::Inner->new(
parent => ParentClass,
methods => { method => sub { ... } }, },
constructor => new,
args => [@constructor_args],
);
Yet another implementation of an anonymous class with per object overrideable methods, but with the added attraction of sort of working dispatch to the parent classs method.
METHODS
new HASH
Takes a hash like argument list with the following keys.
parent
The name of the parent class. Note that you can only get single inheritance with this or SUPER wont work.
methods
A hash, keys are method names, values are CODEREFs.
constructor
The name of the constructor method. Defaults to new.
args
An anonymous array of arguments to pass to the constructor. Defaults to an empty list.
Returns an object in an anonymous class which inherits from the parent class. This anonymous class has a couple of extra methods:
SUPER
If you were to pass something like
$obj = Class::Inner->new(
parent => Parent,
methods => { method => sub { ...; $self->SUPER::method(@_) } },
);
then $self-gtSUPER::method almost certainly wouldnt do what you expect, so we provide the SUPER method which dispatches to the parent implementation of the current method. There seems to be no good way of getting the full SUPER:: functionality, but Im working on it.
DESTROY
Because Class::Inner works by creating a whole new class name for your object, it could potentially leak memory if you create a lot of them. So we add a DESTROY method that removes the class from the symbol table once its finished with.
If you need to override a parents DESTROY method, adding a call to Class::Inner::clean_symbol_table(ref $self) to it. Do it at the end of the method or your other method calls wont work.
clean_symbol_table
The helper subroutine that DESTROY uses to remove the class from the symbol table.
new_classname
Returns a name for the next anonymous class.
<<lessSYNOPSIS
use Class::Inner;
my $object = Class::Inner->new(
parent => ParentClass,
methods => { method => sub { ... } }, },
constructor => new,
args => [@constructor_args],
);
Yet another implementation of an anonymous class with per object overrideable methods, but with the added attraction of sort of working dispatch to the parent classs method.
METHODS
new HASH
Takes a hash like argument list with the following keys.
parent
The name of the parent class. Note that you can only get single inheritance with this or SUPER wont work.
methods
A hash, keys are method names, values are CODEREFs.
constructor
The name of the constructor method. Defaults to new.
args
An anonymous array of arguments to pass to the constructor. Defaults to an empty list.
Returns an object in an anonymous class which inherits from the parent class. This anonymous class has a couple of extra methods:
SUPER
If you were to pass something like
$obj = Class::Inner->new(
parent => Parent,
methods => { method => sub { ...; $self->SUPER::method(@_) } },
);
then $self-gtSUPER::method almost certainly wouldnt do what you expect, so we provide the SUPER method which dispatches to the parent implementation of the current method. There seems to be no good way of getting the full SUPER:: functionality, but Im working on it.
DESTROY
Because Class::Inner works by creating a whole new class name for your object, it could potentially leak memory if you create a lot of them. So we add a DESTROY method that removes the class from the symbol table once its finished with.
If you need to override a parents DESTROY method, adding a call to Class::Inner::clean_symbol_table(ref $self) to it. Do it at the end of the method or your other method calls wont work.
clean_symbol_table
The helper subroutine that DESTROY uses to remove the class from the symbol table.
new_classname
Returns a name for the next anonymous class.
Download (0.003MB)
Added: 2007-06-06 License: Perl Artistic License Price:
871 downloads
class.Logger.php3 1.0
class.Logger.php3 is used to maintain persistant log files in PHP3 applications as efficiently as possible. more>>
class.Logger.php3 is used to maintain persistant log files in PHP3 applications as efficiently as possible.
Using Logger, your programs can append log entries to as many different files as you need, using only 1 fopen() call and 1 fclose() call per log file.
Loggers primary use is for debugging personal programs when you cant or dont want to log via error_log().
SYNOPSIS
include("class.Logger.php3");
$logger = new Logger("/path/to/log/file/root_directory");
$logger->initialize(
array(
ERRLOG => error_log,
DEBUGLOG => debug_log
)
);
$logger->log(ERRLOG,"This is an error_log entry");
$logger->log(DEBUGLOG,"This is logged to the debug_log");
$logger->close_logs();
exit;
<<lessUsing Logger, your programs can append log entries to as many different files as you need, using only 1 fopen() call and 1 fclose() call per log file.
Loggers primary use is for debugging personal programs when you cant or dont want to log via error_log().
SYNOPSIS
include("class.Logger.php3");
$logger = new Logger("/path/to/log/file/root_directory");
$logger->initialize(
array(
ERRLOG => error_log,
DEBUGLOG => debug_log
)
);
$logger->log(ERRLOG,"This is an error_log entry");
$logger->log(DEBUGLOG,"This is logged to the debug_log");
$logger->close_logs();
exit;
Download (0.008MB)
Added: 2006-11-01 License: GPL (GNU General Public License) Price:
1088 downloads
Class::InsideOut 1.02
Class::InsideOut is a Perl module with a safe, simple inside-out object construction kit. more>>
Class::InsideOut is a Perl module with a safe, simple inside-out object construction kit.
SYNOPSIS
package My::Class;
use Class::InsideOut qw( public private register id );
public name => my %name; # accessor: name()
private age => my %age; # no accessor
sub new { register( shift ) }
sub greeting {
my $self = shift;
return "Hello, my name is $name{ id $self }";
}
This is a simple, safe and streamlined toolkit for building inside-out objects. Unlike most other inside-out object building modules already on CPAN, this module aims for minimalism and robustness:
- Does not require derived classes to subclass it
- Uses no source filters, attributes or CHECK blocks
- Supports any underlying object type including black-box inheritance
- Does not leak memory on object destruction
- Overloading-safe
- Thread-safe for Perl 5.8 or better
- mod_perl compatible
- Makes no assumption about inheritance or initializer needs
It provides the minimal support necessary for creating safe inside-out objects and generating flexible accessors.
<<lessSYNOPSIS
package My::Class;
use Class::InsideOut qw( public private register id );
public name => my %name; # accessor: name()
private age => my %age; # no accessor
sub new { register( shift ) }
sub greeting {
my $self = shift;
return "Hello, my name is $name{ id $self }";
}
This is a simple, safe and streamlined toolkit for building inside-out objects. Unlike most other inside-out object building modules already on CPAN, this module aims for minimalism and robustness:
- Does not require derived classes to subclass it
- Uses no source filters, attributes or CHECK blocks
- Supports any underlying object type including black-box inheritance
- Does not leak memory on object destruction
- Overloading-safe
- Thread-safe for Perl 5.8 or better
- mod_perl compatible
- Makes no assumption about inheritance or initializer needs
It provides the minimal support necessary for creating safe inside-out objects and generating flexible accessors.
Download (0.047MB)
Added: 2006-09-27 License: Perl Artistic License Price:
1122 downloads
Class::NiceApi 0.01.02
Class::NiceApi is a Perl module that translates your methodNames to my method_names. more>>
Class::NiceApi is a Perl module that translates your methodNames to my method_names.
SYNOPSIS
use Class::NiceApi;
my $acl = Class::NiceApi->new( victim => Decision::ACL->new(), style => custom, table => { run_acl => RunACL } );
Perl method names should be written lowercased and multiple words should be connected via _. This is_good_coding_convention. Unfortunately this recommendation is ignored by many CPAN authors. Class::NiceApi helps pernickety programmers as me. It translates method names from isThisPerl to is_this_perl back and forth. Well, it so flexible it can translate allmost anything to anything. So it would translate perl_method_name to java programmers favorite perlMethodName.
METHODS
new()
Takes following parameters (which are also available as methods).
victim
An instance of a class where the method names subjected to translation.
style
A style is just a shortcut for the translation table. Following styles are currently supported: custom, with_underscore and to_lc.
[Note] They are implemented via a translating callback in $Class::NiceApi::callbacks. It filters the source method name and returns the destination name.
table
Here you can list explicit translations of method names, which are exceptions to the custom style filter.
<<lessSYNOPSIS
use Class::NiceApi;
my $acl = Class::NiceApi->new( victim => Decision::ACL->new(), style => custom, table => { run_acl => RunACL } );
Perl method names should be written lowercased and multiple words should be connected via _. This is_good_coding_convention. Unfortunately this recommendation is ignored by many CPAN authors. Class::NiceApi helps pernickety programmers as me. It translates method names from isThisPerl to is_this_perl back and forth. Well, it so flexible it can translate allmost anything to anything. So it would translate perl_method_name to java programmers favorite perlMethodName.
METHODS
new()
Takes following parameters (which are also available as methods).
victim
An instance of a class where the method names subjected to translation.
style
A style is just a shortcut for the translation table. Following styles are currently supported: custom, with_underscore and to_lc.
[Note] They are implemented via a translating callback in $Class::NiceApi::callbacks. It filters the source method name and returns the destination name.
table
Here you can list explicit translations of method names, which are exceptions to the custom style filter.
Download (0.003MB)
Added: 2007-06-20 License: Perl Artistic License Price:
856 downloads
Class::DBI::Template::Stash 0.03
Class::DBI::Template::Stash is a Perl module with Template::Stash subclass for Class::DBI::Template. more>>
Class::DBI::Template::Stash is a Perl module with Template::Stash subclass for Class::DBI::Template.
SYNOPSIS
package Music::DBI;
use base Class::DBI;
use Class::DBI::Template;
There is nothing you need to do for this module, it is setup for you when you use Class::DBI::Template. It provides a subclass of Template::Stash that overrides its get() method. The new method knows how to find the Class::DBI object that we are rendering, and how to get information out of it for use by the Template module for rendering your template.
<<lessSYNOPSIS
package Music::DBI;
use base Class::DBI;
use Class::DBI::Template;
There is nothing you need to do for this module, it is setup for you when you use Class::DBI::Template. It provides a subclass of Template::Stash that overrides its get() method. The new method knows how to find the Class::DBI object that we are rendering, and how to get information out of it for use by the Template module for rendering your template.
Download (0.010MB)
Added: 2006-10-05 License: Perl Artistic License Price:
1114 downloads
Class::MakeMethods::Template::Generic 1.01
Class::MakeMethods::Template::Generic Perl module contains templates for common meta-method types. more>>
Class::MakeMethods::Template::Generic Perl module contains templates for common meta-method types.
SYNOPSIS
package MyObject;
use Class::MakeMethods (
Template::Hash:new => [ new ],
Template::Hash:scalar => [ foo ]
Template::Static:scalar => [ bar ]
);
package main;
my $obj = MyObject->new( foo => "Foozle", bar => "Bozzle" );
print $obj->foo();
$obj->bar("Bamboozle");
This package provides a variety of abstract interfaces for constructors and accessor methods, which form a common foundation for meta-methods provided by the Hash, Scalar, Flyweight, Static, PackageVar, and ClassVar implementations.
Generally speaking, the Generic meta-methods define calling interfaces and behaviors which are bound to differently scoped data by each of those subclasses.
new Constructor
There are several types of hash-based object constructors to choose from.
Each of these methods creates and returns a reference to a new blessed instance. They differ in how their (optional) arguments are interpreted to set initial values, and in how they operate when called as class or instance methods.
<<lessSYNOPSIS
package MyObject;
use Class::MakeMethods (
Template::Hash:new => [ new ],
Template::Hash:scalar => [ foo ]
Template::Static:scalar => [ bar ]
);
package main;
my $obj = MyObject->new( foo => "Foozle", bar => "Bozzle" );
print $obj->foo();
$obj->bar("Bamboozle");
This package provides a variety of abstract interfaces for constructors and accessor methods, which form a common foundation for meta-methods provided by the Hash, Scalar, Flyweight, Static, PackageVar, and ClassVar implementations.
Generally speaking, the Generic meta-methods define calling interfaces and behaviors which are bound to differently scoped data by each of those subclasses.
new Constructor
There are several types of hash-based object constructors to choose from.
Each of these methods creates and returns a reference to a new blessed instance. They differ in how their (optional) arguments are interpreted to set initial values, and in how they operate when called as class or instance methods.
Download (0.15MB)
Added: 2007-06-18 License: Perl Artistic License Price:
858 downloads
Class::Delegation 1.7.1
Class::Delegation is a Perl object-oriented delegation. more>>
Class::Delegation is a Perl object-oriented delegation.
SYNOPSIS
package Car;
use Class::Delegation
send => steer,
to => ["left_front_wheel", "right_front_wheel"],
send => drive,
to => ["right_rear_wheel", "left_rear_wheel"],
as => ["rotate_clockwise", "rotate_anticlockwise"]
send => power,
to => flywheel,
as => brake,
send => brake,
to => qr/.*_wheel$/,
send => halt
to => -SELF,
as => brake,
send => qr/^MP_(.+)/,
to => mp3,
as => sub { $1 },
send => -OTHER,
to => mp3,
send => debug,
to => -ALL,
as => dump,
send => -ALL,
to => logger,
;
<<lessSYNOPSIS
package Car;
use Class::Delegation
send => steer,
to => ["left_front_wheel", "right_front_wheel"],
send => drive,
to => ["right_rear_wheel", "left_rear_wheel"],
as => ["rotate_clockwise", "rotate_anticlockwise"]
send => power,
to => flywheel,
as => brake,
send => brake,
to => qr/.*_wheel$/,
send => halt
to => -SELF,
as => brake,
send => qr/^MP_(.+)/,
to => mp3,
as => sub { $1 },
send => -OTHER,
to => mp3,
send => debug,
to => -ALL,
as => dump,
send => -ALL,
to => logger,
;
Download (0.014MB)
Added: 2006-11-11 License: Perl Artistic License Price:
1077 downloads
Class::DBI::Query 3.0.15
Class::DBI::Query is a Perl module with deprecated SQL manager for Class::DBI. more>>
Class::DBI::Query is a Perl module with deprecated SQL manager for Class::DBI.
SYNOPSIS
my $sth = Class::DBI::Query
->new({
owner => $class,
sqlname => $type,
essential => @columns,
where_columns => @where_cols,
})
->run($val);
This abstracts away many of the details of the Class::DBI underlying SQL mechanism. For the most part you probably dont want to be interfacing directly with this.
The underlying mechanisms are not yet stable, and are subject to change at any time.
<<lessSYNOPSIS
my $sth = Class::DBI::Query
->new({
owner => $class,
sqlname => $type,
essential => @columns,
where_columns => @where_cols,
})
->run($val);
This abstracts away many of the details of the Class::DBI underlying SQL mechanism. For the most part you probably dont want to be interfacing directly with this.
The underlying mechanisms are not yet stable, and are subject to change at any time.
Download (0.10MB)
Added: 2006-10-14 License: Perl Artistic License Price:
1105 downloads
Secleted [ 0 ] software to compare
Copyright Notice:
Software piracy is theft, Using crack, password, serial numbers, registration codes, key generators is illegal and prevent future software development. The above class file decompiler search only lists software in full, demo and trial versions for free download. Download links are directly from our mirror sites or publisher sites, torrent files or links from rapidshare.com, yousendit.com or megaupload.com are not allowed