Skip to contentSkip to conversation

Allow use headers in C++.

PATCH In review Milan Broz 4 participants 5 messages Jun 14, 2010 – Jun 16, 2010

lore
Share & tools
lore

Milan Broz

author
#0 lore raw

PATCH 1/1 Allow use headers in C++.

Remove C++ private keyword from header.
Add extern C definition for libdevmapper and lvm2app.

---
 libdm/libdevmapper.h |   13 ++++++++++---
 libdm/libdm-report.c |    4 ++--
 liblvm/lvm2app.h     |    6 ++++++
 3 files changed, 18 insertions(+), 5 deletions(-)
libdm/libdevmapper.h +10 -3
index 0b67a0f..7c72cf7 100644
@@ -1,6 +1,6 @@
 /*
  * Copyright (C) 2001-2004 Sistina Software, Inc. All rights reserved.
- * Copyright (C) 2004-2007 Red Hat, Inc. All rights reserved.
+ * Copyright (C) 2004-2010 Red Hat, Inc. All rights reserved.
  *
  * This file is part of the device-mapper userspace tools.
  *
@@ -29,6 +29,10 @@
 #include <stdlib.h>
 #include <stdio.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /*****************************************************************
  * The first section of this file provides direct access to the
  * individual device-mapper ioctls.  Since it is quite laborious to
@@ -1022,7 +1026,7 @@ struct dm_report_field_type {
 	const char heading[32];	/* string printed in header */
 	int (*report_fn)(struct dm_report *rh, struct dm_pool *mem,
 			 struct dm_report_field *field, const void *data,
-			 void *private);
+			 void *private_data);
 	const char *desc;	/* description of the field */
 };
 
@@ -1044,7 +1048,7 @@ struct dm_report *dm_report_init(uint32_t *report_types,
 				 const char *output_separator,
 				 uint32_t output_flags,
 				 const char *sort_keys,
-				 void *private);
+				 void *private_data);
 int dm_report_object(struct dm_report *rh, void *object);
 int dm_report_output(struct dm_report *rh);
 void dm_report_free(struct dm_report *rh);
@@ -1163,4 +1167,7 @@ int dm_udev_wait(uint32_t cookie);
 
 #define DM_DEV_DIR_UMASK 0022
 
+#ifdef __cplusplus
+}
+#endif
 #endif				/* LIB_DEVICE_MAPPER_H */
libdm/libdm-report.c +2 -2
index e13115a..2b044b5 100644
@@ -566,7 +566,7 @@ struct dm_report *dm_report_init(uint32_t *report_types,
 				 const char *output_separator,
 				 uint32_t output_flags,
 				 const char *sort_keys,
-				 void *private)
+				 void *private_data)
 {
 	struct dm_report *rh;
 	const struct dm_report_object_type *type;
@@ -588,7 +588,7 @@ struct dm_report *dm_report_init(uint32_t *report_types,
 	rh->separator = output_separator;
 	rh->fields = fields;
 	rh->types = types;
-	rh->private = private;
+	rh->private = private_data;
 
 	rh->flags |= output_flags & DM_REPORT_OUTPUT_MASK;
 
liblvm/lvm2app.h +6 -0
index 09455da..05f804f 100644
@@ -18,6 +18,9 @@
 
 #include <stdint.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
 
 /******************************** WARNING ***********************************
  *
@@ -1194,4 +1197,7 @@ uint64_t lvm_pv_get_free(const pv_t pv);
  */
 int lvm_pv_resize(const pv_t pv, uint64_t new_size);
 
+#ifdef __cplusplus
+}
+#endif
 #endif /* _LIB_LVM2APP_H */
Signature · 1 line
1.7.1
#1 lore raw

PATCH 1/1 Allow use headers in C++.

Quoted 3 lines · Milan Broz

Remove C++ private keyword from header.
Add extern C definition for libdevmapper and lvm2app.
---

Thank you.

#2 lore raw
In reply to Milan Broz
Quoted 1 line · Milan Broz

Remove C++ private keyword from header.

...

Quoted 14 lines
libdm/libdm-report.c +1 -1
index e13115a..2b044b5 100644
@@ -566,7 +566,7 @@ struct dm_report *dm_report_init(uint32_t *report_types,
 				 const char *output_separator,
 				 uint32_t output_flags,
 				 const char *sort_keys,
-				 void *private)
+				 void *private_data)
 {
 	struct dm_report *rh;
 	const struct dm_report_object_type *type;

libdm/libdm-report.c struct dm_report *dm_report_init(uint32_t *report_types, · line 593

Quoted 7 lines
libdm/libdm-report.c +1 -1
@@ -588,7 +588,7 @@ struct dm_report *dm_report_init(uint32_t *report_types,
 	rh->separator = output_separator;
 	rh->fields = fields;
 	rh->types = types;
-	rh->private = private;
+	rh->private = private_data;
 
 	rh->flags |= output_flags & DM_REPORT_OUTPUT_MASK;

Should struct dm_report's "private" be renamed too?

author
#3 lore raw
Quoted 25 lines · Mike Snitzer
Quoted 1 line · Milan Broz

Remove C++ private keyword from header.

...

Quoted 20 lines
libdm/libdm-report.c +2 -2
index e13115a..2b044b5 100644
@@ -566,7 +566,7 @@ struct dm_report *dm_report_init(uint32_t *report_types,
 				 const char *output_separator,
 				 uint32_t output_flags,
 				 const char *sort_keys,
-				 void *private)
+				 void *private_data)
 {
 	struct dm_report *rh;
 	const struct dm_report_object_type *type;
@@ -588,7 +588,7 @@ struct dm_report *dm_report_init(uint32_t *report_types,
 	rh->separator = output_separator;
 	rh->fields = fields;
 	rh->types = types;
-	rh->private = private;
+	rh->private = private_data;
 
Quoted 3 lines

libdm/libdm-report.c struct dm_report *dm_report_init(uint32_t *report_types, · line 593

Quoted 1 line
libdm/libdm-report.c +0 -0
 	rh->flags |= output_flags & DM_REPORT_OUTPUT_MASK;

Should struct dm_report's "private" be renamed too?

Not needed, that's not part of external API/ABI but internal to library. (There are more such conflicting names, but these are not problem in compilation, because this is always compiled in C only.)

Milan

#4 lore raw

PATCH 1/1 Allow use headers in C++.

In reply to Milan Broz

Dne 14.6.2010 18:20, Milan Broz napsal(a):

libdm/libdevmapper.h

Quoted 13 lines

Remove C++ private keyword from header.
Add extern C definition for libdevmapper and lvm2app.

---
  libdm/libdevmapper.h |   13 ++++++++++---
  libdm/libdm-report.c |    4 ++--
  liblvm/lvm2app.h     |    6 ++++++
  3 files changed, 18 insertions(+), 5 deletions(-)
libdm/libdevmapper.h +0 -0
index 0b67a0f..7c72cf7 100644
@@ -1,6 +1,6 @@

Ack

When we do this for libdevmapper.h and lvm2app.h, then for consistency C++ externs should be applied to remaing user exported headers:

libdevmapper-event.h
lvm2cmd.h

Zdenek