pextract.h (1512B)
1 #ifndef __PEXTRACT_H__ 2 #define __PEXTRACT_H__ 3 4 #include "EXTERN.h" 5 #include "perl.h" 6 #include "XSUB.h" 7 #include "extractor.h" 8 9 SV* pextract_new_object(void* object, const char* package); 10 void* pextract_get_object(SV* sv, const char* package); 11 12 HV* pextract_get_hv_from_file_extract_obj(SV* hvref); 13 SV* pextract_get_extractor_list(SV* extractor); 14 15 void pextract_hv_store_extractor_list_inc(SV* extractor, SV* list); 16 void pextract_hv_store_extractor_list_noinc(SV* extractor, SV* list); 17 18 #define pextract_hv_store_extractor_list pextract_hv_store_extractor_list_inc 19 20 void _pextractor_call_XS(pTHX_ void (*subaddr) (pTHX_ CV*), CV* cv, SV** mark); 21 22 #define PEXTRACTOR_CALL_BOOT(name) \ 23 { \ 24 extern XS(name); \ 25 _pextractor_call_XS(aTHX_ name, cv, mark); \ 26 } 27 28 /* 29 #define newSvExtractor(extractor) pextract_new_object(extractor, "File::Extract::Extractor"); 30 #define SvEXTRACTOR_Extractor(sv) (struct EXTRACTOR_Extractor*)pextract_get_object(sv, "File::Extract::Extractor"); 31 */ 32 33 #define newSvEXTRACTOR_ExtractorList(val) pextract_new_object(val, "File::Extract::ExtractorList") 34 #define SvEXTRACTOR_ExtractorList(sv) (EXTRACTOR_ExtractorList*)pextract_get_object(sv, "File::Extract::ExtractorList") 35 typedef EXTRACTOR_ExtractorList EXTRACTOR_ExtractorList_ornull; 36 #define SvEXTRACTOR_ExtractorList_ornull(sv) (((sv) && SvOK(sv)) ? SvEXTRACTOR_ExtractorList(sv) : NULL) 37 #define newSvEXTRACTOR_ExtractorList_ornull(val) (((val) == NULL) ? &PL_sv_undef : newSvEXTRACTOR_ExtractorList(val)) 38 39 #endif /* __PEXTRACT_H__ */