Example #1
0
static inline void calc(int argc, char** argv) {   
    StdDeck_CardMask hole, board;
    StdDeck_CardMask card;
    StdDeck_CardMask_RESET(hole);
    StdDeck_CardMask_RESET(board);
    int i, cardi;
    
    for(i = 1; i < 5; ++i) {
       StdDeck_stringToCard(argv[i], &cardi); 
       card = StdDeck_MASK(cardi);
       StdDeck_CardMask_OR(hole, hole, card);
    }
    po_probs probs;
    probs = get_probs(hole, board);
    printf("%.4f", probs.win + probs.draw);
            
    if ( argc > 7) {
    for(i = 5; i < 8; ++i) {
       StdDeck_stringToCard(argv[i], &cardi); 
       card = StdDeck_MASK(cardi);
       StdDeck_CardMask_OR(board, board, card);
    }
    probs = get_probs(hole, board);
    printf(" %.4f", probs.win + probs.draw);
    }
    
    if ( argc > 8) {
        i = 8;
       StdDeck_stringToCard(argv[i], &cardi); 
       card = StdDeck_MASK(cardi);
       StdDeck_CardMask_OR(board, board, card);
    
    probs = get_probs(hole, board);
    printf(" %.4f", probs.win + probs.draw);
    }
    
    if ( argc > 9) {
        i = 9;
       StdDeck_stringToCard(argv[i], &cardi); 
       card = StdDeck_MASK(cardi);
       StdDeck_CardMask_OR(board, board, card);
    
    probs = get_probs(hole, board);
    printf(" %.4f", probs.win + probs.draw);
    }
    
    
    
    
    printf("\n");
}
	// Helper:
	// Given a string such as "AcKcQcJcTc" representing a poker hand,
	// return an StdDeck_CardMask representing that hand.	
	extern "C" StdDeck_CardMask TextToPokerEval(const char* strHand)
	{
	   StdDeck_CardMask theHand, theCard;
	   StdDeck_CardMask_RESET(theHand);

	   if (strHand && strlen(strHand))
	   {
		  int cardIndex = -1;
		  char* curCard = const_cast<char*>(strHand);

		  while (*curCard)
		  {
			 // Take the card text and convert it to an index (0..51)
			 StdDeck_stringToCard(curCard, &cardIndex); 
			 // Convert the card index to a mask
			 theCard = StdDeck_MASK(cardIndex);
			 // Add the card (mask) to the hand
			 StdDeck_CardMask_OR(theHand, theHand, theCard);
			 // Advance to the next card (if any)
			 curCard += 2;
		  }
	   }

	   return theHand;
	}