1 /*
2  * Python object wrapper of libvslvm_logical_volume_t
3  *
4  * Copyright (C) 2014-2021, Joachim Metz <joachim.metz@gmail.com>
5  *
6  * Refer to AUTHORS for acknowledgements.
7  *
8  * This program is free software: you can redistribute it and/or modify
9  * it under the terms of the GNU Lesser General Public License as published by
10  * the Free Software Foundation, either version 3 of the License, or
11  * (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU Lesser General Public License
19  * along with this program.  If not, see <https://www.gnu.org/licenses/>.
20  */
21 
22 #if !defined( _PYVSLVM_LOGICAL_VOLUME_H )
23 #define _PYVSLVM_LOGICAL_VOLUME_H
24 
25 #include <common.h>
26 #include <types.h>
27 
28 #include "pyvslvm_libvslvm.h"
29 #include "pyvslvm_python.h"
30 #include "pyvslvm_volume_group.h"
31 
32 #if defined( __cplusplus )
33 extern "C" {
34 #endif
35 
36 typedef struct pyvslvm_logical_volume pyvslvm_logical_volume_t;
37 
38 struct pyvslvm_logical_volume
39 {
40 	/* Python object initialization
41 	 */
42 	PyObject_HEAD
43 
44 	/* The libvslvm logical volume
45 	 */
46 	libvslvm_logical_volume_t *logical_volume;
47 
48 	/* The pyvslvm volume group object
49 	 */
50 	pyvslvm_volume_group_t *volume_group_object;
51 };
52 
53 extern PyMethodDef pyvslvm_logical_volume_object_methods[];
54 extern PyTypeObject pyvslvm_logical_volume_type_object;
55 
56 PyObject *pyvslvm_logical_volume_new(
57            libvslvm_logical_volume_t *logical_volume,
58            pyvslvm_volume_group_t *volume_group_object );
59 
60 int pyvslvm_logical_volume_init(
61      pyvslvm_logical_volume_t *pyvslvm_logical_volume );
62 
63 void pyvslvm_logical_volume_free(
64       pyvslvm_logical_volume_t *pyvslvm_logical_volume );
65 
66 PyObject *pyvslvm_logical_volume_read_buffer(
67            pyvslvm_logical_volume_t *pyvslvm_logical_volume,
68            PyObject *arguments,
69            PyObject *keywords );
70 
71 PyObject *pyvslvm_logical_volume_read_buffer_at_offset(
72            pyvslvm_logical_volume_t *pyvslvm_logical_volume,
73            PyObject *arguments,
74            PyObject *keywords );
75 
76 PyObject *pyvslvm_logical_volume_seek_offset(
77            pyvslvm_logical_volume_t *pyvslvm_logical_volume,
78            PyObject *arguments,
79            PyObject *keywords );
80 
81 PyObject *pyvslvm_logical_volume_get_offset(
82            pyvslvm_logical_volume_t *pyvslvm_logical_volume,
83            PyObject *arguments );
84 
85 PyObject *pyvslvm_logical_volume_get_size(
86            pyvslvm_logical_volume_t *pyvslvm_logical_volume,
87            PyObject *arguments );
88 
89 PyObject *pyvslvm_logical_volume_get_name(
90            pyvslvm_logical_volume_t *pyvslvm_logical_volume,
91            PyObject *arguments );
92 
93 PyObject *pyvslvm_logical_volume_get_identifier(
94            pyvslvm_logical_volume_t *pyvslvm_logical_volume,
95            PyObject *arguments );
96 
97 PyObject *pyvslvm_logical_volume_get_number_of_segments(
98            pyvslvm_logical_volume_t *pyvslvm_logical_volume,
99            PyObject *arguments );
100 
101 PyObject *pyvslvm_logical_volume_get_segment_by_index(
102            PyObject *pyvslvm_logical_volume,
103            int segment_index );
104 
105 PyObject *pyvslvm_logical_volume_get_segment(
106            pyvslvm_logical_volume_t *pyvslvm_logical_volume,
107            PyObject *arguments,
108            PyObject *keywords );
109 
110 PyObject *pyvslvm_logical_volume_get_segments(
111            pyvslvm_logical_volume_t *pyvslvm_logical_volume,
112            PyObject *arguments );
113 
114 #if defined( __cplusplus )
115 }
116 #endif
117 
118 #endif /* !defined( _PYVSLVM_LOGICAL_VOLUME_H ) */
119 
120