factor/native/alien.h

65 lines
1.7 KiB
C
Raw Normal View History

2004-09-19 17:39:28 -04:00
typedef struct {
CELL header;
2005-03-14 11:25:41 -05:00
void* ptr;
2005-04-09 18:30:46 -04:00
bool expired;
2004-09-19 17:39:28 -04:00
} ALIEN;
2005-04-09 18:30:46 -04:00
INLINE ALIEN* untag_alien_fast(CELL tagged)
2004-09-19 17:39:28 -04:00
{
return (ALIEN*)UNTAG(tagged);
}
2005-04-09 18:30:46 -04:00
typedef struct {
CELL header;
CELL alien;
CELL displacement;
} DISPLACED_ALIEN;
INLINE DISPLACED_ALIEN* untag_displaced_alien_fast(CELL tagged)
{
return (DISPLACED_ALIEN*)UNTAG(tagged);
}
2004-12-25 05:49:30 -05:00
2005-06-28 23:50:23 -04:00
void primitive_expired(void);
2004-09-19 17:39:28 -04:00
void primitive_alien(void);
2005-04-09 18:30:46 -04:00
void primitive_displaced_alien(void);
void primitive_alien_address(void);
2005-09-03 14:48:25 -04:00
void* alien_offset(CELL object);
void primitive_alien_to_string(void);
void primitive_string_to_alien(void);
2004-09-21 22:58:54 -04:00
void fixup_alien(ALIEN* alien);
2005-04-09 18:30:46 -04:00
void fixup_displaced_alien(DISPLACED_ALIEN* d);
void collect_displaced_alien(DISPLACED_ALIEN* d);
DLLEXPORT void* unbox_alien(void);
ALIEN* alien(void* ptr);
DLLEXPORT void box_alien(void* ptr);
2005-04-09 18:30:46 -04:00
void primitive_alien_signed_cell(void);
void primitive_set_alien_signed_cell(void);
void primitive_alien_unsigned_cell(void);
void primitive_set_alien_unsigned_cell(void);
void primitive_alien_signed_8(void);
void primitive_set_alien_signed_8(void);
void primitive_alien_unsigned_8(void);
void primitive_set_alien_unsigned_8(void);
void primitive_alien_signed_4(void);
void primitive_set_alien_signed_4(void);
void primitive_alien_unsigned_4(void);
void primitive_set_alien_unsigned_4(void);
void primitive_alien_signed_2(void);
void primitive_set_alien_signed_2(void);
void primitive_alien_unsigned_2(void);
void primitive_set_alien_unsigned_2(void);
void primitive_alien_signed_1(void);
void primitive_set_alien_signed_1(void);
void primitive_alien_unsigned_1(void);
void primitive_set_alien_unsigned_1(void);
2005-05-05 03:12:37 -04:00
void primitive_alien_float(void);
void primitive_set_alien_float(void);
void primitive_alien_double(void);
void primitive_set_alien_double(void);