Make it an error to include non-top-level headers Users should #include <hb.h> (or hb-ft.h, hb-glib.h, etc), but never things like hb-shape.h directly. This makes it easier to refactor headers later on without breaking compatibility.
diff --git a/src/hb-blob.h b/src/hb-blob.h index 50c9ae3..360310b 100644 --- a/src/hb-blob.h +++ b/src/hb-blob.h
@@ -24,6 +24,10 @@ * Red Hat Author(s): Behdad Esfahbod */ +#ifndef HB_H_IN +#error "Include <hb.h> instead." +#endif + #ifndef HB_BLOB_H #define HB_BLOB_H
diff --git a/src/hb-buffer.h b/src/hb-buffer.h index 9582ebe..ca1bbf4 100644 --- a/src/hb-buffer.h +++ b/src/hb-buffer.h
@@ -27,6 +27,10 @@ * Google Author(s): Behdad Esfahbod */ +#ifndef HB_H_IN +#error "Include <hb.h> instead." +#endif + #ifndef HB_BUFFER_H #define HB_BUFFER_H
diff --git a/src/hb-common.h b/src/hb-common.h index 4265bb3..df929ea 100644 --- a/src/hb-common.h +++ b/src/hb-common.h
@@ -26,6 +26,10 @@ * Google Author(s): Behdad Esfahbod */ +#ifndef HB_H_IN +#error "Include <hb.h> instead." +#endif + #ifndef HB_COMMON_H #define HB_COMMON_H
diff --git a/src/hb-font.h b/src/hb-font.h index 8a9dda5..7e64515 100644 --- a/src/hb-font.h +++ b/src/hb-font.h
@@ -24,6 +24,10 @@ * Red Hat Author(s): Behdad Esfahbod */ +#ifndef HB_H_IN +#error "Include <hb.h> instead." +#endif + #ifndef HB_FONT_H #define HB_FONT_H
diff --git a/src/hb-ft.h b/src/hb-ft.h index c1772ac..696251e 100644 --- a/src/hb-ft.h +++ b/src/hb-ft.h
@@ -29,8 +29,6 @@ #include "hb.h" -#include "hb-font.h" - #include <ft2build.h> #include FT_FREETYPE_H
diff --git a/src/hb-glib.h b/src/hb-glib.h index 3bc3ebf..63a9d33 100644 --- a/src/hb-glib.h +++ b/src/hb-glib.h
@@ -30,6 +30,7 @@ #define HB_GLIB_H #include "hb.h" + #include <glib.h> HB_BEGIN_DECLS
diff --git a/src/hb-gobject.h b/src/hb-gobject.h index 25fc941..4f23fdd 100644 --- a/src/hb-gobject.h +++ b/src/hb-gobject.h
@@ -28,6 +28,7 @@ #define HB_GOBJECT_H #include "hb.h" + #include <glib-object.h> HB_BEGIN_DECLS
diff --git a/src/hb-graphite2.h b/src/hb-graphite2.h index 68bd019..3eba9e0 100644 --- a/src/hb-graphite2.h +++ b/src/hb-graphite2.h
@@ -26,8 +26,7 @@ #ifndef HB_GRAPHITE2_H #define HB_GRAPHITE2_H -#include "hb-common.h" -#include "hb-shape.h" +#include "hb.h" HB_BEGIN_DECLS @@ -41,6 +40,8 @@ unsigned int num_features, const char * const *shaper_options); +/* TODO add gr_font/face etc getters and other glue API */ + HB_END_DECLS #endif /* HB_GRAPHITE2_H */
diff --git a/src/hb-icu.h b/src/hb-icu.h index ecabec2..d22a8e1 100644 --- a/src/hb-icu.h +++ b/src/hb-icu.h
@@ -30,6 +30,7 @@ #define HB_ICU_H #include "hb.h" + #include <unicode/uscript.h>
diff --git a/src/hb-ot-layout.h b/src/hb-ot-layout.h index 447e35d..430e54c 100644 --- a/src/hb-ot-layout.h +++ b/src/hb-ot-layout.h
@@ -24,12 +24,14 @@ * Red Hat Author(s): Behdad Esfahbod */ +#ifndef HB_OT_H_IN +#error "Include <hb-ot.h> instead." +#endif + #ifndef HB_OT_LAYOUT_H #define HB_OT_LAYOUT_H -#include "hb-common.h" -#include "hb-buffer.h" -#include "hb-font.h" +#include "hb.h" #include "hb-ot-tag.h"
diff --git a/src/hb-ot-shape.h b/src/hb-ot-shape.h index 1897e84..cc18be6 100644 --- a/src/hb-ot-shape.h +++ b/src/hb-ot-shape.h
@@ -24,15 +24,16 @@ * Red Hat Author(s): Behdad Esfahbod */ +#ifndef HB_OT_H_IN +#error "Include <hb-ot.h> instead." +#endif + #ifndef HB_OT_SHAPE_H #define HB_OT_SHAPE_H -#include "hb-common.h" -#include "hb-shape.h" - - HB_BEGIN_DECLS +#include "hb.h" hb_bool_t hb_ot_shape (hb_font_t *font,
diff --git a/src/hb-ot-tag.h b/src/hb-ot-tag.h index 427a069..1bf12ab 100644 --- a/src/hb-ot-tag.h +++ b/src/hb-ot-tag.h
@@ -24,10 +24,14 @@ * Red Hat Author(s): Behdad Esfahbod */ +#ifndef HB_OT_H_IN +#error "Include <hb-ot.h> instead." +#endif + #ifndef HB_OT_TAG_H #define HB_OT_TAG_H -#include "hb-common.h" +#include "hb.h" HB_BEGIN_DECLS
diff --git a/src/hb-ot.h b/src/hb-ot.h index fd6dd58..a825a86 100644 --- a/src/hb-ot.h +++ b/src/hb-ot.h
@@ -26,6 +26,7 @@ #ifndef HB_OT_H #define HB_OT_H +#define HB_OT_H_IN #include "hb.h" @@ -36,4 +37,5 @@ HB_BEGIN_DECLS HB_END_DECLS +#undef HB_OT_H_IN #endif /* HB_OT_H */
diff --git a/src/hb-private.hh b/src/hb-private.hh index c757e2d..f561260 100644 --- a/src/hb-private.hh +++ b/src/hb-private.hh
@@ -33,7 +33,10 @@ #include "config.h" #endif -#include "hb-common.h" +#include "hb.h" +#include "hb-ot.h" +#define HB_H_IN +#define HB_OT_H_IN #include <stdlib.h> #include <stddef.h>
diff --git a/src/hb-shape.h b/src/hb-shape.h index 685b11d..99c24ab 100644 --- a/src/hb-shape.h +++ b/src/hb-shape.h
@@ -24,6 +24,10 @@ * Red Hat Author(s): Behdad Esfahbod */ +#ifndef HB_H_IN +#error "Include <hb.h> instead." +#endif + #ifndef HB_SHAPE_H #define HB_SHAPE_H
diff --git a/src/hb-unicode.h b/src/hb-unicode.h index 13886df..205e4c7 100644 --- a/src/hb-unicode.h +++ b/src/hb-unicode.h
@@ -28,6 +28,10 @@ * Google Author(s): Behdad Esfahbod */ +#ifndef HB_H_IN +#error "Include <hb.h> instead." +#endif + #ifndef HB_UNICODE_H #define HB_UNICODE_H
diff --git a/src/hb-uniscribe.h b/src/hb-uniscribe.h index dbcacd7..7bf8090 100644 --- a/src/hb-uniscribe.h +++ b/src/hb-uniscribe.h
@@ -27,8 +27,7 @@ #ifndef HB_UNISCRIBE_H #define HB_UNISCRIBE_H -#include "hb-common.h" -#include "hb-shape.h" +#include "hb.h" #define _WIN32_WINNT 0x0500 #include <windows.h>
diff --git a/src/hb-version.h.in b/src/hb-version.h.in index 47a9b30..43634f9 100644 --- a/src/hb-version.h.in +++ b/src/hb-version.h.in
@@ -24,6 +24,10 @@ * Google Author(s): Behdad Esfahbod */ +#ifndef HB_H_IN +#error "Include <hb.h> instead." +#endif + #ifndef HB_VERSION_H #define HB_VERSION_H
diff --git a/src/hb.h b/src/hb.h index 0a2ebd9..996dc91 100644 --- a/src/hb.h +++ b/src/hb.h
@@ -26,6 +26,7 @@ #ifndef HB_H #define HB_H +#define HB_H_IN #include "hb-blob.h" #include "hb-buffer.h" @@ -38,4 +39,5 @@ HB_BEGIN_DECLS HB_END_DECLS +#undef HB_H_IN #endif /* HB_H */