00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00027 #ifndef PED_NATMATH_H_INCLUDED
00028 #define PED_NATMATH_H_INCLUDED
00029
00030
00031 typedef struct _PedAlignment PedAlignment;
00032
00033 #include <parted/disk.h>
00034
00035 #define PED_MIN(a, b) ( ((a)<(b)) ? (a) : (b) )
00036 #define PED_MAX(a, b) ( ((a)>(b)) ? (a) : (b) )
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055 struct _PedAlignment {
00056 PedSector offset;
00057 PedSector grain_size;
00058 };
00059
00060 extern PedSector ped_round_up_to (PedSector sector, PedSector grain_size);
00061 extern PedSector ped_round_down_to (PedSector sector, PedSector grain_size);
00062 extern PedSector ped_round_to_nearest (PedSector sector, PedSector grain_size);
00063 extern PedSector ped_greatest_common_divisor (PedSector a, PedSector b);
00064
00065 extern int ped_alignment_init (PedAlignment* align, PedSector offset,
00066 PedSector grain_size);
00067 extern PedAlignment* ped_alignment_new (PedSector offset, PedSector grain_size);
00068 extern void ped_alignment_destroy (PedAlignment* align);
00069 extern PedAlignment* ped_alignment_duplicate (const PedAlignment* align);
00070 extern PedAlignment* ped_alignment_intersect (const PedAlignment* a,
00071 const PedAlignment* b);
00072
00073 extern PedSector
00074 ped_alignment_align_up (const PedAlignment* align, const PedGeometry* geom,
00075 PedSector sector);
00076 extern PedSector
00077 ped_alignment_align_down (const PedAlignment* align, const PedGeometry* geom,
00078 PedSector sector);
00079 extern PedSector
00080 ped_alignment_align_nearest (const PedAlignment* align, const PedGeometry* geom,
00081 PedSector sector);
00082
00083 extern int
00084 ped_alignment_is_aligned (const PedAlignment* align, const PedGeometry* geom,
00085 PedSector sector);
00086
00087 extern const PedAlignment* ped_alignment_any;
00088 extern const PedAlignment* ped_alignment_none;
00089
00090 extern inline PedSector
00091 ped_div_round_up (PedSector numerator, PedSector divisor);
00092
00093 extern inline PedSector
00094 ped_div_round_to_nearest (PedSector numerator, PedSector divisor);
00095
00096 #endif
00097