Changeset 2821
- Timestamp:
- 06/21/10 20:14:00 (20 months ago)
- Location:
- Search-Tools/trunk
- Files:
-
- 3 edited
-
search-tools.c (modified) (6 diffs)
-
search-tools.h (modified) (2 diffs)
-
typemap (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
Search-Tools/trunk/search-tools.c
r2716 r2821 136 136 } 137 137 138 static IV138 static void * 139 139 st_av_fetch_ptr( AV* a, I32 index ) { 140 140 dTHX; 141 141 SV** ok; 142 IVptr;142 void * ptr; 143 143 ok = av_fetch(a, index, 0); 144 144 if (ok == NULL) { … … 343 343 /* make a Perl blessed object from a C pointer */ 344 344 static SV* 345 st_bless_ptr( const char *class, IVc_ptr ) {346 dTHX; 347 SV* obj = newSViv( c_ptr);348 sv_setref_pv(obj, class, (void*)c_ptr);345 st_bless_ptr( const char *class, void * c_ptr ) { 346 dTHX; 347 SV* obj = newSViv( PTR2IV( c_ptr ) ); // use instead of sv_newmortal(). 348 sv_setref_pv(obj, class, c_ptr); 349 349 return obj; 350 350 } 351 351 352 352 /* return the C pointer from a Perl blessed O_OBJECT */ 353 static IV353 static void * 354 354 st_extract_ptr( SV* object ) { 355 355 dTHX; 356 return SvIV((SV*)SvRV( object ));356 return INT2PTR( void*, SvIV(SvRV( object )) ); 357 357 } 358 358 … … 675 675 } 676 676 677 tok = st_bless_ptr(ST_CLASS_TOKEN, (IV)token);677 tok = st_bless_ptr(ST_CLASS_TOKEN, token); 678 678 av_push(tokens, tok); 679 679 if (token->is_sentence_start) { … … 703 703 } 704 704 705 tok = st_bless_ptr(ST_CLASS_TOKEN, (IV)token);705 tok = st_bless_ptr(ST_CLASS_TOKEN, token); 706 706 if (heat_seeker != NULL) { 707 707 if (heat_seeker_is_CV) { … … 755 755 } 756 756 757 tok = st_bless_ptr(ST_CLASS_TOKEN, (IV)token);757 tok = st_bless_ptr(ST_CLASS_TOKEN, token); 758 758 av_push(tokens, tok); 759 759 } … … 761 761 return st_bless_ptr( 762 762 ST_CLASS_TOKENLIST, 763 (IV)st_new_token_list(tokens, heat, sentence_starts, num_tokens)763 st_new_token_list(tokens, heat, sentence_starts, num_tokens) 764 764 ); 765 765 } -
Search-Tools/trunk/search-tools.h
r2716 r2821 67 67 */ 68 68 static SV* st_av_fetch( AV* a, I32 index ); 69 static IVst_av_fetch_ptr( AV* a, I32 index );69 static void* st_av_fetch_ptr( AV* a, I32 index ); 70 70 static SV* st_hv_fetch( HV* h, const char* key ); 71 71 static SV* st_hvref_fetch( SV* h, const char* key ); … … 87 87 static SV* st_new_hash_object(const char *class); 88 88 */ 89 static SV* st_bless_ptr( const char* class, IVc_ptr );90 static IVst_extract_ptr( SV* object );89 static SV* st_bless_ptr( const char* class, void * c_ptr ); 90 static void* st_extract_ptr( SV* object ); 91 91 static void* st_malloc(size_t size); 92 92 static void st_free_token(st_token *tok); -
Search-Tools/trunk/typemap
r2018 r2821 7 7 O_OBJECT 8 8 if( sv_isobject($arg) && (SvTYPE(SvRV($arg)) == SVt_PVMG) ) 9 $var = ($type)SvIV((SV*)SvRV( $arg));9 $var = INT2PTR ($type, SvIV (SvRV ($arg))); 10 10 else{ 11 11 warn( \"${Package}::$func_name() -- $var is not a blessed SV reference\" );
Note: See TracChangeset
for help on using the changeset viewer.