File: compare.cpp

package info (click to toggle)
dds 2.9.0-10
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 56,576 kB
  • sloc: cpp: 17,621; ansic: 385; makefile: 27; xml: 11; sh: 7
file content (125 lines) | stat: -rw-r--r-- 2,423 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
/*
   DDS, a bridge double dummy solver.

   Copyright (C) 2006-2014 by Bo Haglund /
   2014-2018 by Bo Haglund & Soren Hein.

   See LICENSE and README.
*/


#include <vector>
#include <string.h>

#include "compare.h"

using namespace std;


bool compare_PBN(
  const dealPBN& dl1, 
  const dealPBN& dl2)
{
  if (dl1.trump != dl2.trump) 
    return false;
  if (dl1.first != dl2.first) 
    return false;
  if (strcmp(dl1.remainCards, dl2.remainCards)) 
    return false;

  return true;
}


bool compare_FUT(
  const futureTricks& fut1, 
  const futureTricks& fut2)
{
  if (fut1.cards != fut2.cards)
    return false;

  for (int i = 0; i < fut1.cards; i++)
  {
    if (fut1.suit[i] != fut2.suit[i]) 
      return false;
    if (fut1.rank[i] != fut2.rank[i]) 
      return false;
    if (fut1.equals[i] != fut2.equals[i]) 
      return false;
    if (fut1.score[i] != fut2.score[i]) 
      return false;
  }

  return true;
}


bool compare_TABLE(
  const ddTableResults& table1, 
  const ddTableResults& table2)
{
  for (int suit = 0; suit < DDS_SUITS; suit++)
  {
    for (int pl = 0; pl < DDS_HANDS; pl++)
      if (table1.resTable[suit][pl] != table2.resTable[suit][pl])
        return false;
  }

  return true;
}


bool compare_PAR(
  const parResults& par1,
  const parResults& par2)
{
  if (strcmp(par1.parScore[0], par2.parScore[0])) 
    return false;
  if (strcmp(par1.parScore[1], par2.parScore[1])) 
    return false;
  if (strcmp(par1.parContractsString[0], par2.parContractsString[0]))
    return false;
  if (strcmp(par1.parContractsString[1], par2.parContractsString[1]))
    return false;

  return true;
}


bool compare_DEALERPAR(
  const parResultsDealer& par1,
  const parResultsDealer& par2)
{
  if (par1.score != par2.score) 
    return false;

  for (int i = 0; i < par1.number; i++)
    if (strcmp(par1.contracts[i], par2.contracts[i]))
      return false;

  return true;
}


bool compare_TRACE(
  const solvedPlay& trace1,
  const solvedPlay& trace2)
{
  // In a buglet, Trace returned trace1 == -3 if there is
  // no input at all (trace2 is then 0).
  if (trace1.number != trace2.number && trace2.number > 0)
    return false;

  // Once that was fixed, the input file had length 0, not 1.
  if (trace1.number == 1 && trace2.number == 0)
    return true;

  for (int i = 0; i < trace1.number; i++)
  {
    if (trace1.tricks[i] != trace2.tricks[i])
      return false;
  }

  return true;
}