#include "perl_extractor.h" MODULE = File::Extractor PACKAGE = File::Extractor PREFIX = EXTRACTOR_ PROTOTYPES: DISABLE void EXTRACTOR_getDefaultLibraries (class) PREINIT: const char *libraries; char *copy, *pos, *token; PPCODE: libraries = EXTRACTOR_getDefaultLibraries (); if (!libraries) { XSRETURN_EMPTY; } copy = strdup (libraries); pos = copy; while ((token = strsep (&pos, ":"))) { mXPUSHp (token, strlen (token)); } free (copy); EXTRACTOR_ExtractorList * EXTRACTOR_loadDefaultLibraries (class) C_ARGS: /* void */ EXTRACTOR_ExtractorList * EXTRACTOR_loadConfigLibraries (prev, config) EXTRACTOR_ExtractorList_or_null *prev const char *config POSTCALL: if (prev) { perl_extractor_invalidate_object (ST (0)); } EXTRACTOR_ExtractorList * EXTRACTOR_addLibrary (prev, library) EXTRACTOR_ExtractorList_or_null *prev const char *library POSTCALL: if (prev) { perl_extractor_invalidate_object (ST (0)); } EXTRACTOR_ExtractorList * EXTRACTOR_addLibraryLast (prev, library) EXTRACTOR_ExtractorList_or_null *prev const char *library POSTCALL: if (prev) { perl_extractor_invalidate_object (ST (0)); } EXTRACTOR_ExtractorList * EXTRACTOR_removeLibrary (prev, library) EXTRACTOR_ExtractorList *prev const char *library POSTCALL: perl_extractor_invalidate_object (ST (0)); void EXTRACTOR_getKeywords (extractor, data) EXTRACTOR_ExtractorList *extractor SV *data PREINIT: STRLEN len; char *buf; EXTRACTOR_KeywordList *list, *i; PPCODE: if (SvROK (data) && (SvTYPE (SvRV (data)) == SVt_PVGV)) { buf = perl_extractor_slurp_from_handle (data, &len); } else { buf = SvPVbyte (data, len); } list = EXTRACTOR_getKeywords2 (extractor, buf, len); list = EXTRACTOR_removeEmptyKeywords (list); list = EXTRACTOR_removeDuplicateKeywords (list, 0); if (!list) { XSRETURN_EMPTY; } for (i = list; i; i = i->next) { EXTEND (sp, 2); PUSHs (perl_extractor_keyword_type_to_sv (i->keywordType)); PUSHs (newSVpv (i->keyword, 0)); } EXTRACTOR_freeKeywords (list); void DESTROY (libraries) EXTRACTOR_ExtractorList *libraries = perl_extractor_object_is_invalid ($arg) ? NULL : ($type)perl_extractor_get_ptr_from_sv ($arg, "File::Extractor"); CODE: if (libraries) { EXTRACTOR_removeAll (libraries); }