Sha256: d77775e2f600f491d866757d2d77e85f2c8151a0d3a83330d97812307008782b

Contents?: true

Size: 1.04 KB

Versions: 35

Compression:

Stored size: 1.04 KB

Contents

// Ruby includes
#include <ruby.h>
#include <ruby/io.h>

// ACPC includes
#include "../../vendor/project_acpc_server/game.h"
#include "../../vendor/project_acpc_server/evalHandTables"

static VALUE cHandEvaluator;

/*
 * @param [VALUE] self The class from which this method was called.  This is
 *    an implicit argument.
 * @param [VALUE] ruby_card_list The list of numeric ACPC represented cards in
 *    a Ruby array.
 * @return [int] The rank of the hand.
 */
static VALUE rank_hand(VALUE self, VALUE ruby_card_list) {
   VALUE* card_list = RARRAY_PTR(ruby_card_list);
   int card_list_length = RARRAY_LEN(ruby_card_list);
  
   int card;
   Cardset card_set = emptyCardset();
   
   int i;
   for(i = 0; i < card_list_length; ++i) {
      card = NUM2INT(card_list[i]);
      addCardToCardset(&card_set, suitOfCard(card),
         rankOfCard(card));
   }
 
   return INT2NUM(rankCardset(card_set));
}

void Init_hand_evaluator() {
   cHandEvaluator = rb_define_module("HandEvaluator");
   rb_define_module_function(cHandEvaluator, "rank_hand", rank_hand, 1);
}

Version data entries

35 entries across 35 versions & 1 rubygems

Version Path
acpc_dealer-3.1.1 ext/hand_evaluator/hand_evaluator.c
acpc_dealer-3.1.0 ext/hand_evaluator/hand_evaluator.c
acpc_dealer-3.0.2 ext/hand_evaluator/hand_evaluator.c
acpc_dealer-3.0.1 ext/hand_evaluator/hand_evaluator.c
acpc_dealer-3.0.0 ext/hand_evaluator/hand_evaluator.c
acpc_dealer-2.4.1 ext/hand_evaluator/hand_evaluator.c
acpc_dealer-2.4.0 ext/hand_evaluator/hand_evaluator.c
acpc_dealer-2.3.6 ext/hand_evaluator/hand_evaluator.c
acpc_dealer-2.3.5 ext/hand_evaluator/hand_evaluator.c
acpc_dealer-2.3.4 ext/hand_evaluator/hand_evaluator.c
acpc_dealer-2.3.3 ext/hand_evaluator/hand_evaluator.c
acpc_dealer-2.3.2 ext/hand_evaluator/hand_evaluator.c
acpc_dealer-2.3.1 ext/hand_evaluator/hand_evaluator.c
acpc_dealer-2.3.0 ext/hand_evaluator/hand_evaluator.c
acpc_dealer-2.2.0 ext/hand_evaluator/hand_evaluator.c
acpc_dealer-2.1.3 ext/hand_evaluator/hand_evaluator.c
acpc_dealer-2.1.2 ext/hand_evaluator/hand_evaluator.c
acpc_dealer-2.1.1 ext/hand_evaluator/hand_evaluator.c
acpc_dealer-2.1.0 ext/hand_evaluator/hand_evaluator.c
acpc_dealer-2.0.6 ext/hand_evaluator/hand_evaluator.c