KinoSearch::Docs::DevGuide 0.15
Sponsored Links
KinoSearch::Docs::DevGuide 0.15 Ranking & Summary
File size:
0.22 MB
Platform:
Any Platform
License:
Perl Artistic License
Price:
Downloads:
870
Date added:
2007-06-07
Publisher:
Marvin Humphrey
KinoSearch::Docs::DevGuide 0.15 description
KinoSearch::Docs::DevGuide is a Perl module for hacking/debugging KinoSearch.
SYNOPSIS
Developer-only documentation. If you just want to build a search engine, you probably dont need to read this.
Fundamental Classes
Most of the classes in KinoSearch rely on KinoSearch::Util::Class and KinoSearch::Util::ToolSet, so youll probably want to familiarize yourself with them.
Object Oriented Design
No public member variables.
Multiple classes defined within a single source-code file, e.g. TermQuery and TermWeight, may use direct access to get at each others member variables. Everybody else has to use accessor methods.
C-struct based classes such as TermInfo allow direct access to their members, but only from C (of course).
Subroutine/method access levels
There are three access levels in KinoSearch.
public: documented in "visible" pod.
private: subs which are prepended with an _underscore may only be used within the package in which they reside -- as per perlstyle guidelines -- and in only one source file.
distro: any sub which doesnt fall into either category above may be used anywhere within the KinoSearch distribution.
Documentation Conventions
KinoSearchs public API is defined by what you get when you run the suite through a well-behaved pod-to-whatever converter. Developer-only documentation is limited to comments and "invisible" =for/=begin POD blocks.
Integration of XS and C code
XS and C code in KinoSearch is stored faux-Inline-style, after an __END__ token, and delimited by either __XS__, __H__, or __C__. A heavily customized Build.PL detects these code blocks and writes out hard files at install-time, so the inlining is mostly for convenience while editing: the XS code is often tightly coupled to the Perl code in a given module, and having everything in one place makes it easier to see whats going on and move things back and forth.
Build.PL writes out separate .h and .c files for each block it finds, but all the XS blocks are concatenated into a single file -- KinoSearch.xs. The content of KinoSearch.xs consists of the XS block from KinoSearch.pm, followed by all the other XS blocks in an undetermined order. Ultimately, only a single compiled library gets installed along with the Perl modules.
At runtime, the only module which calls XSLoader::load is KinoSearch. Because the KinoSearch MODULE has many PACKAGEs, use KinoSearch; loads all of the XS routines in the entire KinoSearch suite. A pure-Perl version of KinoSearch.pm which did the same thing might look like this...
package KinoSearch;
our $VERSION = 1.0;
package KinoSearch::Index::TermInfo;
sub get_doc_freq {
# ...
}
package KinoSearch::Store::InStream;
sub lu_read {
# ...
}
# ...
Since KinoSearch.xs is only generated/modified when Build.PL is run, an extra command line call to Build.PL has to be integrated into the development workflow when working on XS or C material.
% perl Build.PL; ./Build code; perl -Mblib t/some_test.t
Build.PL tracks modification times, using them to determine whether it needs to recompile anything. If only pure Perl modules have been edited, it wont force needless recompilation, and if only a limited number of .pm files containing XS/C/H code have been edited, it will recompile as little as it can.
SYNOPSIS
Developer-only documentation. If you just want to build a search engine, you probably dont need to read this.
Fundamental Classes
Most of the classes in KinoSearch rely on KinoSearch::Util::Class and KinoSearch::Util::ToolSet, so youll probably want to familiarize yourself with them.
Object Oriented Design
No public member variables.
Multiple classes defined within a single source-code file, e.g. TermQuery and TermWeight, may use direct access to get at each others member variables. Everybody else has to use accessor methods.
C-struct based classes such as TermInfo allow direct access to their members, but only from C (of course).
Subroutine/method access levels
There are three access levels in KinoSearch.
public: documented in "visible" pod.
private: subs which are prepended with an _underscore may only be used within the package in which they reside -- as per perlstyle guidelines -- and in only one source file.
distro: any sub which doesnt fall into either category above may be used anywhere within the KinoSearch distribution.
Documentation Conventions
KinoSearchs public API is defined by what you get when you run the suite through a well-behaved pod-to-whatever converter. Developer-only documentation is limited to comments and "invisible" =for/=begin POD blocks.
Integration of XS and C code
XS and C code in KinoSearch is stored faux-Inline-style, after an __END__ token, and delimited by either __XS__, __H__, or __C__. A heavily customized Build.PL detects these code blocks and writes out hard files at install-time, so the inlining is mostly for convenience while editing: the XS code is often tightly coupled to the Perl code in a given module, and having everything in one place makes it easier to see whats going on and move things back and forth.
Build.PL writes out separate .h and .c files for each block it finds, but all the XS blocks are concatenated into a single file -- KinoSearch.xs. The content of KinoSearch.xs consists of the XS block from KinoSearch.pm, followed by all the other XS blocks in an undetermined order. Ultimately, only a single compiled library gets installed along with the Perl modules.
At runtime, the only module which calls XSLoader::load is KinoSearch. Because the KinoSearch MODULE has many PACKAGEs, use KinoSearch; loads all of the XS routines in the entire KinoSearch suite. A pure-Perl version of KinoSearch.pm which did the same thing might look like this...
package KinoSearch;
our $VERSION = 1.0;
package KinoSearch::Index::TermInfo;
sub get_doc_freq {
# ...
}
package KinoSearch::Store::InStream;
sub lu_read {
# ...
}
# ...
Since KinoSearch.xs is only generated/modified when Build.PL is run, an extra command line call to Build.PL has to be integrated into the development workflow when working on XS or C material.
% perl Build.PL; ./Build code; perl -Mblib t/some_test.t
Build.PL tracks modification times, using them to determine whether it needs to recompile anything. If only pure Perl modules have been edited, it wont force needless recompilation, and if only a limited number of .pm files containing XS/C/H code have been edited, it will recompile as little as it can.
KinoSearch::Docs::DevGuide 0.15 Screenshot
Advertisements
KinoSearch::Docs::DevGuide 0.15 Keywords
KinoSearch
XS
DevGuide
Build.PL
DevGuide 0.15
KinoSearch.xs
Perl module
Perl
module
code
c
package
classes
KinoSearch::Docs::DevGuide
KinoSearchDocsDevGuide
KinoSearch::Docs::DevGuide 0.15
Bookmark KinoSearch::Docs::DevGuide 0.15
KinoSearch::Docs::DevGuide 0.15 Copyright
WareSeeker periodically updates pricing and software information of KinoSearch::Docs::DevGuide 0.15 full version from the publisher, so some information may be slightly out-of-date. You should confirm all information before relying on it. Software piracy is theft, Using crack, password, serial numbers, registration codes, key generators is illegal and prevent future development of KinoSearch::Docs::DevGuide 0.15 Edition. Download links are directly from our publisher sites, torrent files or links from rapidshare.com, yousendit.com or megaupload.com are not allowed
Featured Software
Want to place your software product here?
Please contact us for consideration.
Contact WareSeeker.com
Related Information
Related Software
DCE::UUID is a Perl module with misc UUID functions. Free Download
Perl::Dist::Builder is a Perl module to create win32 Perl installers. Free Download
AudioCD is a Perl module for basic Audio CD control. Free Download
Test::TestCoverage is Perl module to test if your test covers all public subroutines of the package. Free Download
Net::AudioScrobbler is a Perl module that provides an interface to AudioScrobbler. Free Download
Data::Type::Docs is a Perl module with the manual overview. Free Download
Module::Build::JSAN is a Perl module to build JavaScript modules for JSAN. Free Download
Module::Build is a Perl module for build and install Perl modules. Free Download
Latest Software
Popular Software
Favourite Software