Re: define_c_func/proc and 64-bit return types
- Posted by ghaberek (admin) Jul 30, 2012
- 1498 views
I think I'm on the right track. How does this look? (Functions al_malloc/al_free are just Allegro's wrappers around malloc/free.)
al_shim.h
#include <stdio.h> #include <allegro5/allegro.h> ALLEGRO_COLOR *eu_map_rgba( unsigned int r, unsigned int g, unsigned int b, unsigned int a );
al_shim.c
#include <stdio.h>
#include <allegro5/allegro.h>
#include "al_shim.h"
ALLEGRO_COLOR *eu_map_rgba( unsigned int r, unsigned int g, unsigned int b, unsigned int a )
{
ALLEGRO_COLOR *color = al_malloc( sizeof(ALLEGRO_COLOR) );
*color = al_map_rgba( r, g, b, a );
return color;
}
shimtest.c
#include <stdio.h>
#include <allegro5/allegro.h>
#include "al_shim.h"
int main( int argc, char **argv )
{
if( !al_init() ) {
fprintf( stderr, "failed to initialize allegro!\n" );
return -1;
}
ALLEGRO_COLOR *color = eu_map_rgba( 255, 0, 255, 0 );
printf( "color = (%0.3f,%0.3f,%0.3f,%0.3f)\n", color->r, color->g, color->b, color->a );
al_free( color );
return 0;
}
Output...
color = (1.000,0.000,1.000,0.000)
Hey look, I'm a C programmer! (I don't do this very often so it's always exciting and/or stressful.)
-Greg

