21 lines
		
	
	
		
			737 B
		
	
	
	
		
			C++
		
	
	
			
		
		
	
	
			21 lines
		
	
	
		
			737 B
		
	
	
	
		
			C++
		
	
	
namespace factor
 | 
						|
{
 | 
						|
 | 
						|
#if defined(FACTOR_X86)
 | 
						|
  extern "C" __attribute__ ((regparm (1))) typedef void (*primitive_type)(void *myvm);
 | 
						|
  #define PRIMITIVE(name) extern "C" __attribute__ ((regparm (1)))  void primitive_##name(void *myvm)
 | 
						|
  #define PRIMITIVE_FORWARD(name) extern "C" __attribute__ ((regparm (1)))  void primitive_##name(void *myvm) \
 | 
						|
  {									\
 | 
						|
	PRIMITIVE_GETVM()->primitive_##name();				\
 | 
						|
  }
 | 
						|
#else
 | 
						|
  extern "C" typedef void (*primitive_type)(void *myvm);
 | 
						|
  #define PRIMITIVE(name) extern "C" void primitive_##name(void *myvm)
 | 
						|
  #define PRIMITIVE_FORWARD(name) extern "C" void primitive_##name(void *myvm) \
 | 
						|
  {									\
 | 
						|
	PRIMITIVE_GETVM()->primitive_##name();				\
 | 
						|
  }
 | 
						|
#endif
 | 
						|
extern const primitive_type primitives[];
 | 
						|
}
 |