Posted to tcl by jima at Sat May 06 20:47:02 GMT 2017view pretty

int NumArrayJTestCmd(
    ClientData dummy,
    Tcl_Interp *interp,
    int objc,
    Tcl_Obj *const *objv
) {


if( objc != 2 ) {
    Tcl_WrongNumArgs( interp, 1, objv, "target" );
    return TCL_ERROR;
}

Tcl_Obj *tgtNA;
tgtNA = objv[1];
if( SetNumArrayFromAny( interp, tgtNA ) != TCL_OK ) {
    return TCL_ERROR;
}

NumArrayInfo *infoOftgtNA;
infoOftgtNA = tgtNA->internalRep.twoPtrValue.ptr2;

/*printf( "nDim of tgtNA : %d\n", infoOftgtNA->nDim );*/
if( infoOftgtNA->nDim == 1 && infoOftgtNA->dims[0] == 0 ) {
    Tcl_SetResult( interp, "NA(tgtNA) empty.", NULL );
    return TCL_ERROR;
}

Tcl_Obj *resultObj;



switch( infoOftgtNA->type ) {
    case NumArray_Int: {
/* BEGIN I CASE. */

NumArrayIterator itOftgtNA;
NumArrayIteratorInitObj( NULL, tgtNA, &itOftgtNA );
NaWideInt valOftgtNA;

for(;
    !NumArrayIteratorFinished( &itOftgtNA );
    NumArrayIteratorAdvance( &itOftgtNA )
) {
    
    valOftgtNA = *((NaWideInt *) NumArrayIteratorDeRefPtr( &itOftgtNA ));

    
        printf( "==> %d\n" , valOftgtNA );
    
}

NumArrayIteratorFree( &itOftgtNA );

/* END I CASE. */
        break;
    }
    case NumArray_Float64: {
/* BEGIN D CASE. */

NumArrayIterator itOftgtNA;
NumArrayIteratorInitObj( NULL, tgtNA, &itOftgtNA );
double valOftgtNA;

for(;
    !NumArrayIteratorFinished( &itOftgtNA );
    NumArrayIteratorAdvance( &itOftgtNA )
) {
    
    valOftgtNA = *((double *) NumArrayIteratorDeRefPtr( &itOftgtNA ));

    
        printf( "==> %f\n" , valOftgtNA );
    
}

NumArrayIteratorFree( &itOftgtNA );

/* END D CASE. */
        break;
    }
    case NumArray_Complex128: {
/* BEGIN C CASE. */

NumArrayIterator itOftgtNA;
NumArrayIteratorInitObj( NULL, tgtNA, &itOftgtNA );
NumArray_Complex valOftgtNA;

for(;
    !NumArrayIteratorFinished( &itOftgtNA );
    NumArrayIteratorAdvance( &itOftgtNA )
) {
    
    valOftgtNA = *((NumArray_Complex *) NumArrayIteratorDeRefPtr( &itOftgtNA ));

    
char cplxbuf7[NUMARRAY_COMPLEX_SPACE];
NumArray_PrintComplex( valOftgtNA, cplxbuf7 );
printf( "==> %s\n", cplxbuf7 );

}

NumArrayIteratorFree( &itOftgtNA );

/* END C CASE. */
        break;
    }
    default:
        resultObj = Tcl_ObjPrintf(
            "J_SWITCH_INFO_TYPE: undefined function for datatype %s",
            NumArray_typename[infoOftgtNA->type]
        );
        Tcl_SetObjResult( interp, resultObj );
        return TCL_ERROR;
}



resultObj = Tcl_NewObj();
Tcl_SetObjResult( interp, resultObj );

return TCL_OK;
}