@ -287,9 +287,15 @@ static command_result df_rubyeval(color_ostream &out, std::vector <std::string>
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				typedef  uintptr_t  VALUE ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				typedef  uintptr_t  ID ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				# define Qfalse ((VALUE)0) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				# define Qtrue  ((VALUE)2) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				# define Qnil   ((VALUE)4) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				static  struct  { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    int  major ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    int  minor ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    int  teeny ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				}  libruby_version ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				static  VALUE  Qfalse ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				static  VALUE  Qtrue ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				static  VALUE  Qnil ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				# define INT2FIX(i) ((VALUE)((((intptr_t)i) << 1) | 1)) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				# define FIX2INT(i) (((intptr_t)i) >> 1) 
 
			
		 
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
			
			 
			 
			
				@ -337,6 +343,26 @@ static int df_loadruby(void)
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        return  0 ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    const  char  * ruby_version  =  ( const  char * ) LookupPlugin ( libruby_handle ,  " ruby_version " ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    if  ( ! ruby_version ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        return  0 ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    sscanf ( ruby_version ,  " %d.%d.%d " , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        & libruby_version . major ,  & libruby_version . minor ,  & libruby_version . teeny ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    if  ( libruby_version . major  > =  2  & &  sizeof ( VALUE )  > =  sizeof ( double ) ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        // USE_FLONUM defined on x64
 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        Qfalse  =  ( VALUE ) 0 ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        Qtrue  =  ( VALUE ) 0x14 ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        Qnil  =  ( VALUE ) 0x08 ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    else 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        Qfalse  =  ( VALUE ) 0 ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        Qtrue  =  ( VALUE ) 2 ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        Qnil  =  ( VALUE ) 4 ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    // ruby_sysinit is optional (ruby1.9 only)
 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    ruby_sysinit  =  ( decltype ( ruby_sysinit ) ) LookupPlugin ( libruby_handle ,  " ruby_sysinit " ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				# define rbloadsym(s) if (!(s = (decltype(s))LookupPlugin(libruby_handle, #s))) return 0 
 
			
		 
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
			
			 
			 
			
				@ -359,6 +385,7 @@ static int df_loadruby(void)
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    rbloadsym ( rb_uint2inum ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    rbloadsym ( rb_num2ulong ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				# undef rbloadsym 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    // rb_float_new_in_heap in ruby 2
 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    if  ( ! ( ( rb_float_new  =  ( decltype ( rb_float_new ) ) ( LookupPlugin ( libruby_handle ,  " rb_float_new " ) ) )  | | 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				          ( rb_float_new  =  ( decltype ( rb_float_new ) ) ( LookupPlugin ( libruby_handle ,  " rb_float_new_in_heap " ) ) ) ) ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        return  0 ;