1 //------------------------------------------------------------------------------ 2 // GB_positional_unop_ijflip: swap i and j in a unary positional op 3 //------------------------------------------------------------------------------ 4 5 // SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2021, All Rights Reserved. 6 // SPDX-License-Identifier: Apache-2.0 7 8 //------------------------------------------------------------------------------ 9 10 // Flip i and j to handle the CSR/CSC variations, for unary positional ops. 11 12 #include "GB.h" 13 GB_positional_unop_ijflip(GrB_UnaryOp op)14GrB_UnaryOp GB_positional_unop_ijflip // return flipped operator 15 ( 16 GrB_UnaryOp op // operator to flip 17 ) 18 { 19 20 ASSERT (op != NULL) ; 21 22 if (op->ztype == GrB_INT64) 23 { 24 switch (op->opcode) 25 { 26 case GB_POSITIONI_opcode : return (GxB_POSITIONJ_INT64 ) ; 27 case GB_POSITIONI1_opcode : return (GxB_POSITIONJ1_INT64) ; 28 case GB_POSITIONJ_opcode : return (GxB_POSITIONI_INT64 ) ; 29 case GB_POSITIONJ1_opcode : return (GxB_POSITIONI1_INT64) ; 30 // non-positional op is returned unmodified 31 default : return (op) ; 32 } 33 } 34 else 35 { 36 switch (op->opcode) 37 { 38 case GB_POSITIONI_opcode : return (GxB_POSITIONJ_INT32 ) ; 39 case GB_POSITIONI1_opcode : return (GxB_POSITIONJ1_INT32) ; 40 case GB_POSITIONJ_opcode : return (GxB_POSITIONI_INT32 ) ; 41 case GB_POSITIONJ1_opcode : return (GxB_POSITIONI1_INT32) ; 42 // non-positional op is returned unmodified 43 default : return (op) ; 44 } 45 } 46 } 47 48