Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > 2bb54e74e6dbbbfe00f09923014f5fe2 > files > 18

libpoker-eval-devel-135.0-1mdv2009.1.i586.rpm

/*
 * Copyright (C) 1999-2006
 *           Brian Goetz <brian@quiotix.com>
 *           Loic Dachary <loic@dachary.org>
 *
 *  This package is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; version 2 dated June, 1991.
 *
 *  This package is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this package; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
 *  MA 02110-1301, USA.
 */
#ifndef __HANDVAL_LOW_H__
#define __HANDVAL_LOW_H__

#include "pokereval_export.h"

typedef uint32 LowHandVal;

#define LowHandVal_HANDTYPE_SHIFT    HandVal_HANDTYPE_SHIFT    
#define LowHandVal_HANDTYPE_MASK     HandVal_HANDTYPE_MASK     
#define LowHandVal_CARDS_SHIFT       HandVal_CARDS_SHIFT       
#define LowHandVal_CARDS_MASK        HandVal_CARDS_MASK        
#define LowHandVal_TOP_CARD_SHIFT    HandVal_TOP_CARD_SHIFT    
#define LowHandVal_TOP_CARD_MASK     HandVal_TOP_CARD_MASK     
#define LowHandVal_SECOND_CARD_SHIFT HandVal_SECOND_CARD_SHIFT 
#define LowHandVal_SECOND_CARD_MASK  HandVal_SECOND_CARD_MASK  
#define LowHandVal_THIRD_CARD_SHIFT  HandVal_THIRD_CARD_SHIFT  
#define LowHandVal_THIRD_CARD_MASK   HandVal_THIRD_CARD_MASK   
#define LowHandVal_FOURTH_CARD_SHIFT HandVal_FOURTH_CARD_SHIFT 
#define LowHandVal_FOURTH_CARD_MASK  HandVal_FOURTH_CARD_MASK  
#define LowHandVal_FIFTH_CARD_SHIFT  HandVal_FIFTH_CARD_SHIFT  
#define LowHandVal_FIFTH_CARD_MASK   HandVal_FIFTH_CARD_MASK   
#define LowHandVal_CARD_WIDTH        HandVal_CARD_WIDTH        
#define LowHandVal_CARD_MASK         HandVal_CARD_MASK         

#define LowHandVal_HANDTYPE          HandVal_HANDTYPE
#define LowHandVal_CARDS             HandVal_CARDS
#define LowHandVal_TOP_CARD          HandVal_TOP_CARD
#define LowHandVal_SECOND_CARD       HandVal_SECOND_CARD
#define LowHandVal_THIRD_CARD        HandVal_THIRD_CARD
#define LowHandVal_FOURTH_CARD       HandVal_FOURTH_CARD
#define LowHandVal_FIFTH_CARD        HandVal_FIFTH_CARD

#define LowHandVal_HANDTYPE_VALUE    HandVal_HANDTYPE_VALUE
#define LowHandVal_TOP_CARD_VALUE    HandVal_TOP_CARD_VALUE
#define LowHandVal_SECOND_CARD_VALUE HandVal_SECOND_CARD_VALUE
#define LowHandVal_THIRD_CARD_VALUE  HandVal_THIRD_CARD_VALUE
#define LowHandVal_FOURTH_CARD_VALUE HandVal_FOURTH_CARD_VALUE
#define LowHandVal_FIFTH_CARD_VALUE  HandVal_FIFTH_CARD_VALUE

#define LowHandVal_NOTHING                              \
(LowHandVal_HANDTYPE_VALUE(StdRules_HandType_STFLUSH)   \
 + LowHandVal_TOP_CARD_VALUE(StdDeck_Rank_ACE) + 1)

#define LowHandVal_WORST_EIGHT \
(LowHandVal_HANDTYPE_VALUE(StdRules_HandType_NOPAIR)     \
 + LowHandVal_TOP_CARD_VALUE(StdDeck_Rank_8+1)           \
 + LowHandVal_SECOND_CARD_VALUE(StdDeck_Rank_7+1)        \
 + LowHandVal_THIRD_CARD_VALUE(StdDeck_Rank_6+1)         \
 + LowHandVal_FOURTH_CARD_VALUE(StdDeck_Rank_5+1)        \
 + LowHandVal_FIFTH_CARD_VALUE(StdDeck_Rank_4+1))         

extern POKEREVAL_EXPORT int LowHandVal_toString(LowHandVal hv, char *outString);
extern POKEREVAL_EXPORT int LowHandVal_print(LowHandVal handval);

#define Lowball_ROTATE_RANKS(ranks) \
((((ranks) & ~(1 << StdDeck_Rank_ACE)) << 1) \
 | (((ranks) >> StdDeck_Rank_ACE) & 0x01))

#define Lowball_JOKERFY_RANKS(ranks)		\
do { int j;					\
  for (j=0; j < StdDeck_Rank_COUNT; j++)	\
    if (!(ranks) & (1 << j))			\
      (ranks) |= (1 << j);			\
} while (0)

#endif