import source from lvm2 2.02.79
[external/device-mapper.git] / lib / report / report.h
1 /*
2  * Copyright (C) 2002-2004 Sistina Software, Inc. All rights reserved.
3  * Copyright (C) 2004-2009 Red Hat, Inc. All rights reserved.
4  *
5  * This file is part of LVM2.
6  *
7  * This copyrighted material is made available to anyone wishing to use,
8  * modify, copy, or redistribute it subject to the terms and conditions
9  * of the GNU Lesser General Public License v.2.1.
10  *
11  * You should have received a copy of the GNU Lesser General Public License
12  * along with this program; if not, write to the Free Software Foundation,
13  * Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
14  */
15
16 #ifndef _LVM_REPORT_H
17 #define _LVM_REPORT_H
18
19 #include "metadata-exported.h"
20
21 typedef enum {
22         LVS     = 1,
23         PVS     = 2,
24         VGS     = 4,
25         SEGS    = 8,
26         PVSEGS  = 16,
27         LABEL   = 32
28 } report_type_t;
29
30 struct field;
31 struct report_handle;
32
33 typedef int (*field_report_fn) (struct report_handle * dh, struct field * field,
34                                 const void *data);
35
36 void *report_init(struct cmd_context *cmd, const char *format, const char *keys,
37                   report_type_t *report_type, const char *separator,
38                   int aligned, int buffered, int headings, int field_prefixes,
39                   int quoted, int columns_as_rows);
40 void report_free(void *handle);
41 int report_object(void *handle, struct volume_group *vg,
42                   struct logical_volume *lv, struct physical_volume *pv,
43                   struct lv_segment *seg, struct pv_segment *pvseg);
44 int report_output(void *handle);
45
46 #endif