// These are utility routines that are used within the python scripts to do unusual conversions

%inline %{

// This takes a pointer and adds a level of indirection.  
void * wrap_ptr ( void * in_ptr ) {
    void ** temp_ptr = new void * ;
    temp_ptr[0] = in_ptr ;
    return(temp_ptr) ;
}

double unhex_double ( long long in_value ) {

    union LL2D {
        double d ;
        long long ll ;
    } ;

    union LL2D ll2d ;
    ll2d.ll = in_value ;

    return(ll2d.d) ;

}

float unhex_float ( long in_value ) {

    union L2F {
        float f ;
        long l ;
    } ;

    union L2F l2f ;
    l2f.l = in_value ;

    return(l2f.f) ;

}

%}