1 /*
2 libparted - a library for manipulating disk partitions
3 Copyright (C) 1998, 1999, 2000, 2007 Free Software Foundation, Inc.
4
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 3 of the License, or
8 (at your option) any later version.
9
10 This program 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
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17 */
18
19 #ifndef PED_CONSTRAINT_H_INCLUDED
20 #define PED_CONSTRAINT_H_INCLUDED
21
22 typedef struct _PedConstraint PedConstraint;
23
24 #include <parted/device.h>
25 #include <parted/natmath.h>
26
27 struct _PedConstraint {
28 PedAlignment* start_align;
29 PedAlignment* end_align;
30 PedGeometry* start_range;
31 PedGeometry* end_range;
32 PedSector min_size;
33 PedSector max_size;
34 };
35
36 extern int
37 ped_constraint_init (
38 PedConstraint* constraint,
39 const PedAlignment* start_align,
40 const PedAlignment* end_align,
41 const PedGeometry* start_range,
42 const PedGeometry* end_range,
43 PedSector min_size,
44 PedSector max_size);
45
46 extern PedConstraint*
47 ped_constraint_new (
48 const PedAlignment* start_align,
49 const PedAlignment* end_align,
50 const PedGeometry* start_range,
51 const PedGeometry* end_range,
52 PedSector min_size,
53 PedSector max_size);
54
55 extern PedConstraint*
56 ped_constraint_new_from_min_max (
57 const PedGeometry* min,
58 const PedGeometry* max);
59
60 extern PedConstraint*
61 ped_constraint_new_from_min (const PedGeometry* min);
62
63 extern PedConstraint*
64 ped_constraint_new_from_max (const PedGeometry* max);
65
66 extern PedConstraint*
67 ped_constraint_duplicate (const PedConstraint* constraint);
68
69 extern void
70 ped_constraint_done (PedConstraint* constraint);
71
72 extern void
73 ped_constraint_destroy (PedConstraint* constraint);
74
75 extern PedConstraint*
76 ped_constraint_intersect (const PedConstraint* a, const PedConstraint* b);
77
78 extern PedGeometry*
79 ped_constraint_solve_max (const PedConstraint* constraint);
80
81 extern PedGeometry*
82 ped_constraint_solve_nearest (
83 const PedConstraint* constraint, const PedGeometry* geom);
84
85 extern int
86 ped_constraint_is_solution (const PedConstraint* constraint,
87 const PedGeometry* geom);
88
89 extern PedConstraint*
90 ped_constraint_any (const PedDevice* dev);
91
92 extern PedConstraint*
93 ped_constraint_exact (const PedGeometry* geom);
94
95 #endif /* PED_CONSTRAINT_H_INCLUDED */
96