
KinoSearch::Object::Obj - Base class for all KinoSearch objects.

The KinoSearch code base has been assimilated by the Apache Lucy project. The "KinoSearch" namespace has been deprecated, but development continues under our new name at our new home: http://lucy.apache.org/

package MyObj;
use base qw( KinoSearch::Object::Obj );
# Inside-out member var.
my %foo;
sub new {
my ( $class, %args ) = @_;
my $foo = delete $args{foo};
my $self = $class->SUPER::new(%args);
$foo{$$self} = $foo;
return $self;
}
sub get_foo {
my $self = shift;
return $foo{$$self};
}
sub DESTROY {
my $self = shift;
delete $foo{$$self};
$self->SUPER::DESTROY;
}

All objects in the KinoSearch:: hierarchy descend from KinoSearch::Object::Obj. All classes are implemented as blessed scalar references, with the scalar storing a pointer to a C struct.
The recommended way to subclass KinoSearch::Object::Obj and its descendants is to use the inside-out design pattern. (See Class::InsideOut for an introduction to inside-out techniques.)
Since the blessed scalar stores a C pointer value which is unique per-object, $$self can be used as an inside-out ID.
# Accessor for 'foo' member variable.
sub get_foo {
my $self = shift;
return $foo{$$self};
}
Caveats:

Abstract constructor -- must be invoked via a subclass. Attempting to instantiate objects of class "KinoSearch::Object::Obj" directly causes an error.
Takes no arguments; if any are supplied, an error will be reported.

All KinoSearch classes implement a DESTROY method; if you override it in a subclass, you must call $self->SUPER::DESTROY to avoid leaking memory.

Convert the object to a 64-bit integer.
Convert the object to a double precision floating point number.
Create an object from the output of a call to dump(). Implementations must not reference the caller.

Generic stringification: "ClassName@hex_mem_address".
Indicate whether two objects are the same. By default, compares the memory address.
Return a representation of the object using only scalars, hashes, and arrays. Some implementations support JSON serialization via dump() and its companion method, load(); for others, dump() is only a debugging aid. The default simply calls to_string().

Copyright 2005-2011 Marvin Humphrey
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.