1
/* ipuz-puzzle-info.c
2
 *
3
 * Copyright 2023 Jonathan Blandford <jrb@gnome.org>
4
 *
5
 * This library is free software; you can redistribute it and/or
6
 * modify it under the terms of the GNU Lesser General Public
7
 * License as published by the Free Software Foundation; either
8
 * version 2.1 of the License, or (at your option) any later version.
9
 *
10
 * This library is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13
 * Lesser General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU Lesser General Public
16
 * License along with this library; if not, write to the Free Software
17
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
18
 *
19
 * SPDX-License-Identifier: (LGPL-2.1-or-later OR MIT)
20
 */
21

            
22

            
23
#include "libipuz-config.h"
24
#include "ipuz-puzzle-info.h"
25
#include "ipuz-puzzle-info-private.h"
26

            
27

            
28
static void ipuz_puzzle_info_init       (IPuzPuzzleInfo      *self);
29
static void ipuz_puzzle_info_class_init (IPuzPuzzleInfoClass *klass);
30
static void ipuz_puzzle_info_finalize   (GObject             *object);
31

            
32

            
33
1
G_DEFINE_TYPE (IPuzPuzzleInfo, ipuz_puzzle_info, G_TYPE_OBJECT);
34

            
35

            
36
static void
37
2
ipuz_puzzle_info_init (IPuzPuzzleInfo *self)
38
{
39
2
  self->solution_chars = NULL;
40
2
  self->clue_lengths = NULL;
41
2
}
42

            
43
static void
44
1
ipuz_puzzle_info_class_init (IPuzPuzzleInfoClass *klass)
45
{
46
1
  GObjectClass *object_class = G_OBJECT_CLASS (klass);
47

            
48
1
  object_class->finalize = ipuz_puzzle_info_finalize;
49
1
}
50

            
51
static void
52
2
ipuz_puzzle_info_finalize (GObject *object)
53
{
54
  IPuzPuzzleInfo *self;
55

            
56
2
  g_assert (IPUZ_IS_PUZZLE_INFO (object));
57

            
58
2
  self = IPUZ_PUZZLE_INFO (object);
59

            
60
2
  g_clear_pointer (&self->charset, ipuz_charset_unref);
61
2
  g_clear_pointer (&self->solution_chars, ipuz_charset_unref);
62
2
  g_clear_pointer (&self->clue_lengths, ipuz_charset_unref);
63
2
}
64

            
65
/* Public Methods */
66
IPuzPuzzleFlags
67
ipuz_puzzle_info_get_flags (IPuzPuzzleInfo *self)
68
{
69
  g_return_val_if_fail (IPUZ_IS_PUZZLE_INFO (self), 0);
70

            
71
  return self->flags;
72
}
73

            
74
IPuzCellStats
75
1
ipuz_puzzle_info_get_cell_stats (IPuzPuzzleInfo *self)
76
{
77
1
  IPuzCellStats stats = {0, };
78

            
79
1
  g_return_val_if_fail (IPUZ_IS_PUZZLE_INFO (self), stats);
80

            
81
1
  return self->cell_stats;
82
}
83

            
84
IPuzCharset *
85
ipuz_puzzle_info_get_charset (IPuzPuzzleInfo *self)
86
{
87
  g_return_val_if_fail (IPUZ_IS_PUZZLE_INFO (self), NULL);
88

            
89
  return self->charset;
90
}
91

            
92
IPuzCharset *
93
ipuz_puzzle_info_get_solution_chars (IPuzPuzzleInfo *self)
94
{
95
  g_return_val_if_fail (IPUZ_IS_PUZZLE_INFO (self), NULL);
96

            
97
  return self->solution_chars;
98
}
99

            
100
IPuzCharset *
101
ipuz_puzzle_info_get_clue_lengths (IPuzPuzzleInfo *self)
102
{
103
  g_return_val_if_fail (IPUZ_IS_PUZZLE_INFO (self), NULL);
104

            
105
  return self->clue_lengths;
106
}
107

            
108
guint
109
1
ipuz_puzzle_info_get_pangram_count (IPuzPuzzleInfo *self)
110
{
111
1
  g_return_val_if_fail (IPUZ_IS_PUZZLE_INFO (self), 0);
112

            
113
1
  return self->pangram_count;
114
}
115

            
116
GArray *
117
ipuz_puzzle_info_get_unches (IPuzPuzzleInfo *self)
118
{
119
  g_return_val_if_fail (IPUZ_IS_PUZZLE_INFO (self), NULL);
120

            
121
  return self->unche_list;
122
}