#include "haskell2c.h" #ifdef PROFILE static SInfo nodeProfInfo = { "Builtin","Builtin.primIntegerFromInt","Prelude.Integer"}; #endif C_HEADER(primIntegerFromInt) { Int i; NodePtr nodeptr; C_CHECK(SIZE_INT); nodeptr = C_GETARG1(1); IND_REMOVE(nodeptr); i = GET_INT_VALUE(nodeptr); if(i==0) { nodeptr = C_ALLOC(SIZE_ENUM); *nodeptr = CONSTRW(0,0); INIT_PROFINFO(nodeptr,&nodeProfInfo) } else { nodeptr = C_ALLOC(SIZE_INT); if (i<0) { nodeptr[0] = CONSTRW(1,1); INIT_PROFINFO(nodeptr,&nodeProfInfo) nodeptr[1+EXTRA] = -i; } else { nodeptr[0] = CONSTRW(1,0); INIT_PROFINFO(nodeptr,&nodeProfInfo) nodeptr[1+EXTRA] = i; } } C_RETURN(nodeptr); } NodePtr primIntegerFromIntC (int i) { NodePtr result; C_CHECK(SIZE_INT); if(i==0) { result = C_ALLOC(SIZE_ENUM); *result = CONSTRW(0,0); INIT_PROFINFO(result,&nodeProfInfo) } else { result = C_ALLOC(SIZE_INT); if (i<0) { result[0] = CONSTRW(1,1); INIT_PROFINFO(result,&nodeProfInfo) result[1+EXTRA] = -i; } else { result[0] = CONSTRW(1,0); INIT_PROFINFO(result,&nodeProfInfo) result[1+EXTRA] = i; } } return (result); }