SWISH-3
view release on metacpan or search on metacpan
libswish3.h view on Meta::CPAN
struct swish_TagStack
{
swish_Tag *head;
swish_Tag *temp;
unsigned int count;
char *name; // debugging aid -- name of the stack
};
struct swish_Analyzer
{
unsigned int maxwordlen; // max word length
unsigned int minwordlen; // min word length
boolean tokenize; // should we parse into TokenList
int (*tokenizer) (swish_TokenIterator*, xmlChar*, swish_MetaName*, xmlChar*);
xmlChar* (*stemmer) (xmlChar*);
boolean lc; // should tokens be lowercased
void *stash; // for script bindings
void *regex; // optional regex
int ref_cnt; // for script bindings
};
struct swish_Parser
{
int ref_cnt; // for script bindings
void (*handler)(swish_ParserData*); // handler reference
void *stash; // for script bindings
int verbosity;
};
struct swish_ParserData
{
swish_3 *s3; // main object
xmlBufferPtr meta_buf; // tmp MetaName buffer
xmlBufferPtr prop_buf; // tmp Property buffer
xmlChar *tag; // current tag name
swish_DocInfo *docinfo; // document-specific properties
unsigned int ignore_content; // toggle flag. should buffer be indexed.
boolean is_html; // shortcut flag for html parser
boolean bump_word; // boolean for moving word position/adding space
unsigned int offset; // current offset position
swish_TagStack *metastack; // stacks for tracking the tag => metaname
swish_TagStack *propstack; // stacks for tracking the tag => property
swish_TagStack *domstack; // stacks for tracking xml/html dom tree
xmlParserCtxtPtr ctxt; // so we can free at end
swish_TokenIterator *token_iterator; // token container
swish_NamedBuffer *properties; // buffer all properties
swish_NamedBuffer *metanames; // buffer all metanames
};
/*
=cut
*/
/*
=head2 Global Functions
*/
void swish_setup();
const char * swish_lib_version();
const char * swish_libxml2_version();
void swish_setenv(char * name, char * value, int override);
/*
=cut
*/
/*
=head2 Top-Level Functions
*/
swish_3 * swish_3_init( void (*handler) (swish_ParserData *), void *stash );
void swish_3_free( swish_3 *s3 );
int swish_parse_file( swish_3 * s3, xmlChar *filename );
unsigned int swish_parse_fh( swish_3 * s3, FILE * fh );
int swish_parse_buffer( swish_3 * s3, xmlChar * buf );
unsigned int swish_parse_directory( swish_3 *s3, xmlChar *dir, boolean follow_symlinks );
/*
=cut
*/
/*
=head2 I/O Functions
*/
xmlChar * swish_io_slurp_fh( FILE * fh, unsigned long flen, boolean binmode );
xmlChar * swish_io_slurp_file_len( xmlChar *filename, off_t flen, boolean binmode );
xmlChar * swish_io_slurp_gzfile_len( xmlChar *filename, off_t *flen, boolean binmode );
xmlChar * swish_io_slurp_file( xmlChar *filename, off_t flen, boolean is_gzipped, boolean binmode );
long int swish_io_count_operable_file_lines( xmlChar *filename );
boolean swish_io_is_skippable_line( xmlChar *str );
/*
=cut
*/
/*
=head2 Filesystem Functions
*/
boolean swish_fs_file_exists( xmlChar *filename );
boolean swish_fs_is_dir( xmlChar *path );
boolean swish_fs_is_file( xmlChar *path );
boolean swish_fs_is_link( xmlChar *path );
off_t swish_fs_get_file_size( xmlChar *path );
time_t swish_fs_get_file_mtime( xmlChar *path );
xmlChar * swish_fs_get_file_ext( xmlChar *url );
xmlChar * swish_fs_get_path( xmlChar *url );
boolean swish_fs_looks_like_gz( xmlChar *file );
/*
=cut
*/
/*
=head2 Hash Functions
*/
int swish_hash_add( xmlHashTablePtr hash, xmlChar *key, void * value );
int swish_hash_replace( xmlHashTablePtr hash, xmlChar *key, void *value );
int swish_hash_delete( xmlHashTablePtr hash, xmlChar *key );
boolean swish_hash_exists( xmlHashTablePtr hash, xmlChar *key );
int swish_hash_exists_or_add( xmlHashTablePtr hash, xmlChar *key, xmlChar *value );
void swish_hash_merge( xmlHashTablePtr hash1, xmlHashTablePtr hash2 );
void * swish_hash_fetch( xmlHashTablePtr hash, xmlChar *key );
void swish_hash_dump( xmlHashTablePtr hash, const char *label );
xmlHashTablePtr swish_hash_init(int size);
void swish_hash_free( xmlHashTablePtr hash );
( run in 1.581 second using v1.01-cache-2.11-cpan-6aa56a78535 )