46 lines
		
	
	
		
			926 B
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
			
		
		
	
	
			46 lines
		
	
	
		
			926 B
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
#include "master.hpp"
 | 
						|
 | 
						|
namespace factor
 | 
						|
{
 | 
						|
 | 
						|
/* Fill in a PPC function descriptor */
 | 
						|
void *fill_function_descriptor(void *ptr, void *code)
 | 
						|
{
 | 
						|
	void **descriptor = (void **)ptr;
 | 
						|
	descriptor[0] = code;
 | 
						|
	descriptor[1] = NULL;
 | 
						|
	descriptor[2] = NULL;
 | 
						|
	return descriptor;
 | 
						|
}
 | 
						|
 | 
						|
/* Get a field from a PPC function descriptor */
 | 
						|
void *function_descriptor_field(void *ptr, size_t idx)
 | 
						|
{
 | 
						|
	return ptr ? ((void **) ptr)[idx] : ptr;
 | 
						|
}
 | 
						|
 | 
						|
/* If memory allocation fails, bail out */
 | 
						|
vm_char *safe_strdup(const vm_char *str)
 | 
						|
{
 | 
						|
	vm_char *ptr = STRDUP(str);
 | 
						|
	if(!ptr) fatal_error("Out of memory in safe_strdup", 0);
 | 
						|
	return ptr;
 | 
						|
}
 | 
						|
 | 
						|
cell read_cell_hex()
 | 
						|
{
 | 
						|
	cell cell;
 | 
						|
	std::cin >> std::hex >> cell >> std::dec;
 | 
						|
	if(!std::cin.good()) exit(1);
 | 
						|
	return cell;
 | 
						|
}
 | 
						|
 | 
						|
/* On Windows, memcpy() is in a different DLL and the non-optimizing
 | 
						|
compiler can't find it */
 | 
						|
VM_C_API void *factor_memcpy(void *dst, void *src, size_t len)
 | 
						|
{
 | 
						|
	return memcpy(dst,src,len);
 | 
						|
}
 | 
						|
 | 
						|
}
 |