Sophie

Sophie

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

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

/*
 * Copyright (C) 1999-2006
 *           Michael Maurer <mjmaurer@yahoo.com>
 *           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.
 */
/*
   Note that this file has two #if .. #endif sections -- one for 
   StdDeck macros to prevent double-inclusion, and one to define the 
   generic Deck_ macros if DECK_ASTUD is defined 
*/

#ifndef __DECK_ASTUD_H__
#define __DECK_ASTUD_H__

#include "pokereval_export.h"

#define AStudDeck_N_CARDS      32
#define AStudDeck_MASK(index)  (AStudDeck_cardMasksTable[index])

#define AStudDeck_Rank_7      StdDeck_Rank_7
#define AStudDeck_Rank_8      StdDeck_Rank_8
#define AStudDeck_Rank_9      StdDeck_Rank_9
#define AStudDeck_Rank_TEN    StdDeck_Rank_TEN
#define AStudDeck_Rank_JACK   StdDeck_Rank_JACK
#define AStudDeck_Rank_QUEEN  StdDeck_Rank_QUEEN
#define AStudDeck_Rank_KING   StdDeck_Rank_KING
#define AStudDeck_Rank_ACE    StdDeck_Rank_ACE
#define AStudDeck_Rank_FIRST  AStudDeck_Rank_7
#define AStudDeck_Rank_LAST   AStudDeck_Rank_ACE
#define AStudDeck_Rank_COUNT  8
#define AStudDeck_N_RANKMASKS (1 << AStudDeck_Rank_COUNT)

#define AStudDeck_RANK(index)  (AStudDeck_Rank_FIRST \
                                + ((index) % AStudDeck_Rank_COUNT))
#define AStudDeck_SUIT(index)  ((index) / AStudDeck_Rank_COUNT)
#define AStudDeck_MAKE_CARD(rank, suit) ((suit * AStudDeck_Rank_COUNT) \
                                         + ( rank - AStudDeck_Rank_FIRST ))

#define AStudDeck_Suit_HEARTS   StdDeck_Suit_HEARTS
#define AStudDeck_Suit_DIAMONDS StdDeck_Suit_DIAMONDS
#define AStudDeck_Suit_CLUBS    StdDeck_Suit_CLUBS
#define AStudDeck_Suit_SPADES   StdDeck_Suit_SPADES
#define AStudDeck_Suit_FIRST    AStudDeck_Suit_HEARTS
#define AStudDeck_Suit_LAST     AStudDeck_Suit_SPADES
#define AStudDeck_Suit_COUNT    4

typedef StdDeck_RankMask AStudDeck_RankMask;

#define AStudDeck_CardMask          StdDeck_CardMask
#define AStudDeck_CardMask_SPADES   StdDeck_CardMask_SPADES
#define AStudDeck_CardMask_CLUBS    StdDeck_CardMask_CLUBS
#define AStudDeck_CardMask_DIAMONDS StdDeck_CardMask_DIAMONDS
#define AStudDeck_CardMask_HEARTS   StdDeck_CardMask_HEARTS

#define AStudDeck_CardMask_NOT         StdDeck_CardMask_NOT
#define AStudDeck_CardMask_OR          StdDeck_CardMask_OR
#define AStudDeck_CardMask_AND         StdDeck_CardMask_AND
#define AStudDeck_CardMask_XOR         StdDeck_CardMask_XOR
#define AStudDeck_CardMask_ANY_SET     StdDeck_CardMask_ANY_SET
#define AStudDeck_CardMask_RESET       StdDeck_CardMask_RESET
#define AStudDeck_CardMask_UNSET       StdDeck_CardMask_UNSET
#define AStudDeck_CardMask_IS_EMPTY    StdDeck_CardMask_IS_EMPTY

#ifdef USE_INT64                                                          
#define AStudDeck_CardMask_CARD_IS_SET(mask, index)                       \
  (( (mask).cards_n & (AStudDeck_MASK(index).cards_n)) != 0 )                 
#else                                                                   
#define AStudDeck_CardMask_CARD_IS_SET(mask, index)                       \
  ((( (mask).cards_nn.n1 & (AStudDeck_MASK(index).cards_nn.n1)) != 0 )    \
   || (( (mask).cards_nn.n2 & (AStudDeck_MASK(index).cards_nn.n2)) != 0 ))   
#endif

#define AStudDeck_CardMask_SET(mask, index)     \
do {                                            \
  AStudDeck_CardMask _t1 = AStudDeck_MASK(index);         \
  AStudDeck_CardMask_OR((mask), (mask), _t1);             \
} while (0)

extern POKEREVAL_EXPORT AStudDeck_CardMask AStudDeck_cardMasksTable[AStudDeck_N_CARDS];

extern POKEREVAL_EXPORT const char AStudDeck_rankChars[AStudDeck_Rank_LAST+1];
extern POKEREVAL_EXPORT const char AStudDeck_suitChars[AStudDeck_Suit_LAST+1];

extern POKEREVAL_EXPORT int AStudDeck_cardToString(int cardIndex, char *outString);
extern POKEREVAL_EXPORT int AStudDeck_stringToCard(char *inString, int *outCard);

#define AStudDeck_cardString(i) GenericDeck_cardString(&AStudDeck, (i))
#define AStudDeck_printCard(i)  GenericDeck_printCard(&AStudDeck, (i))
#define AStudDeck_printMask(m)  GenericDeck_printMask(&AStudDeck, ((void *) &(m)))
#define AStudDeck_maskString(m) GenericDeck_maskString(&AStudDeck, ((void *) &(m)))
#define AStudDeck_numCards(m) GenericDeck_numCards(&AStudDeck, ((void *) &(m)))
#define AStudDeck_maskToString(m, s) GenericDeck_maskToString(&AStudDeck, ((void *) &(m)), (s))

extern POKEREVAL_EXPORT Deck AStudDeck;

#endif



#ifdef DECK_ASTUD

#if defined(Deck_N_CARDS)
#include "deck_undef.h"
#endif

#define Deck_N_CARDS      AStudDeck_N_CARDS
#define Deck_MASK         AStudDeck_MASK
#define Deck_RANK         AStudDeck_RANK
#define Deck_SUIT         AStudDeck_SUIT

#define Rank_7            AStudDeck_Rank_7 
#define Rank_8            AStudDeck_Rank_8 
#define Rank_9            AStudDeck_Rank_9 
#define Rank_TEN          AStudDeck_Rank_TEN
#define Rank_JACK         AStudDeck_Rank_JACK
#define Rank_QUEEN        AStudDeck_Rank_QUEEN
#define Rank_KING         AStudDeck_Rank_KING
#define Rank_ACE          AStudDeck_Rank_ACE
#define Rank_FIRST        AStudDeck_Rank_FIRST 
#define Rank_COUNT        AStudDeck_Rank_COUNT

#define Suit_HEARTS       AStudDeck_Suit_HEARTS
#define Suit_DIAMONDS     AStudDeck_Suit_DIAMONDS
#define Suit_CLUBS        AStudDeck_Suit_CLUBS
#define Suit_SPADES       AStudDeck_Suit_SPADES
#define Suit_FIRST        AStudDeck_Suit_FIRST
#define Suit_COUNT        AStudDeck_Suit_COUNT

#define CardMask               AStudDeck_CardMask 
#define CardMask_NOT           AStudDeck_CardMask_NOT
#define CardMask_OR            AStudDeck_CardMask_OR
#define CardMask_XOR           AStudDeck_CardMask_XOR
#define CardMask_AND           AStudDeck_CardMask_AND
#define CardMask_SET           AStudDeck_CardMask_SET
#define CardMask_CARD_IS_SET   AStudDeck_CardMask_CARD_IS_SET
#define CardMask_ANY_SET       AStudDeck_CardMask_ANY_SET
#define CardMask_RESET         AStudDeck_CardMask_RESET
#define CardMask_UNSET         AStudDeck_CardMask_UNSET

#define CardMask_SPADES        AStudDeck_CardMask_SPADES
#define CardMask_HEARTS        AStudDeck_CardMask_HEARTS
#define CardMask_CLUBS         AStudDeck_CardMask_CLUBS
#define CardMask_DIAMONDS      AStudDeck_CardMask_DIAMONDS

#define CurDeck AStudDeck

#endif /* DECK_ASTUD */