@img/sharp-libvips-dev-wasm32 1.3.0-rc.1 → 1.3.0-rc.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (191) hide show
  1. package/README.md +23 -23
  2. package/include/aom/aom_codec.h +1 -1
  3. package/include/aom/aom_decoder.h +4 -0
  4. package/include/aom/aom_encoder.h +19 -8
  5. package/include/aom/aom_ext_ratectrl.h +664 -0
  6. package/include/aom/aom_image.h +93 -30
  7. package/include/aom/aom_tpl.h +99 -0
  8. package/include/aom/aomcx.h +89 -16
  9. package/include/aom/aomdx.h +12 -0
  10. package/include/expat.h +15 -3
  11. package/include/expat_config.h +6 -6
  12. package/include/expat_external.h +4 -4
  13. package/include/glib-2.0/gio/gdbusconnection.h +2 -8
  14. package/include/glib-2.0/gio/gfileattribute.h +1 -1
  15. package/include/glib-2.0/gio/gfileinfo.h +5 -0
  16. package/include/glib-2.0/gio/gicon.h +1 -1
  17. package/include/glib-2.0/gio/gio-autocleanups.h +0 -1
  18. package/include/glib-2.0/gio/gio-visibility.h +34 -0
  19. package/include/glib-2.0/gio/gio.h +2 -0
  20. package/include/glib-2.0/gio/gioenums.h +66 -44
  21. package/include/glib-2.0/gio/gioenumtypes.h +2 -0
  22. package/include/glib-2.0/gio/giptosmessage.h +46 -0
  23. package/include/glib-2.0/gio/gipv6tclassmessage.h +46 -0
  24. package/include/glib-2.0/gio/gresolver.h +1 -1
  25. package/include/glib-2.0/gio/gsettings.h +1 -1
  26. package/include/glib-2.0/gio/gsocketcontrolmessage.h +2 -0
  27. package/include/glib-2.0/glib/gatomic.h +26 -2
  28. package/include/glib-2.0/glib/gfileutils.h +2 -2
  29. package/include/glib-2.0/glib/ghook.h +3 -1
  30. package/include/glib-2.0/glib/giochannel.h +1 -1
  31. package/include/glib-2.0/glib/gkeyfile.h +1 -1
  32. package/include/glib-2.0/glib/glib-visibility.h +34 -0
  33. package/include/glib-2.0/glib/gmacros.h +32 -0
  34. package/include/glib-2.0/glib/gmain.h +4 -0
  35. package/include/glib-2.0/glib/gmarkup.h +18 -1
  36. package/include/glib-2.0/glib/gmem.h +4 -4
  37. package/include/glib-2.0/glib/gmessages.h +7 -9
  38. package/include/glib-2.0/glib/gnode.h +1 -1
  39. package/include/glib-2.0/glib/goption.h +1 -1
  40. package/include/glib-2.0/glib/gsequence.h +2 -2
  41. package/include/glib-2.0/glib/gslice.h +12 -4
  42. package/include/glib-2.0/glib/gspawn.h +1 -1
  43. package/include/glib-2.0/glib/gstrfuncs.h +191 -1
  44. package/include/glib-2.0/glib/gtestutils.h +6 -3
  45. package/include/glib-2.0/glib/gtimer.h +1 -0
  46. package/include/glib-2.0/glib/guri.h +3 -3
  47. package/include/glib-2.0/glib/gutils.h +10 -1
  48. package/include/glib-2.0/glib/gvarianttype.h +16 -16
  49. package/include/glib-2.0/glib/gversionmacros.h +22 -0
  50. package/include/glib-2.0/gmodule/gmodule-visibility.h +34 -0
  51. package/include/glib-2.0/gmodule.h +1 -1
  52. package/include/glib-2.0/gobject/gbinding.h +1 -1
  53. package/include/glib-2.0/gobject/gobject-visibility.h +34 -0
  54. package/include/glib-2.0/gobject/gobject.h +1 -1
  55. package/include/glib-2.0/gobject/gparam.h +1 -1
  56. package/include/glib-2.0/gobject/gsignal.h +8 -8
  57. package/include/glib-2.0/gobject/gtype.h +17 -17
  58. package/include/hwy/aligned_allocator.h +44 -2
  59. package/include/hwy/auto_tune.h +22 -6
  60. package/include/hwy/base.h +60 -90
  61. package/include/hwy/bit_set.h +410 -0
  62. package/include/hwy/cache_control.h +3 -2
  63. package/include/hwy/detect_compiler_arch.h +134 -14
  64. package/include/hwy/detect_targets.h +82 -36
  65. package/include/hwy/highway.h +15 -0
  66. package/include/hwy/nanobenchmark.h +12 -3
  67. package/include/hwy/ops/arm_neon-inl.h +96 -25
  68. package/include/hwy/ops/arm_sve-inl.h +250 -95
  69. package/include/hwy/ops/emu128-inl.h +12 -7
  70. package/include/hwy/ops/generic_ops-inl.h +271 -131
  71. package/include/hwy/ops/loongarch_lasx-inl.h +31 -9
  72. package/include/hwy/ops/loongarch_lsx-inl.h +33 -12
  73. package/include/hwy/ops/ppc_vsx-inl.h +99 -19
  74. package/include/hwy/ops/rvv-inl.h +239 -130
  75. package/include/hwy/ops/scalar-inl.h +22 -7
  76. package/include/hwy/ops/set_macros-inl.h +163 -107
  77. package/include/hwy/ops/wasm_128-inl.h +13 -22
  78. package/include/hwy/ops/x86_128-inl.h +223 -120
  79. package/include/hwy/ops/x86_256-inl.h +70 -134
  80. package/include/hwy/ops/x86_512-inl.h +130 -134
  81. package/include/hwy/print-inl.h +2 -0
  82. package/include/hwy/profiler.h +355 -264
  83. package/include/hwy/robust_statistics.h +3 -1
  84. package/include/hwy/timer.h +44 -0
  85. package/include/lcms2.h +35 -5
  86. package/include/lcms2_plugin.h +1 -1
  87. package/include/libexif/exif-utils.h +1 -1
  88. package/include/libheif/heif.h +2 -0
  89. package/include/libheif/heif_aux_images.h +2 -2
  90. package/include/libheif/heif_brands.h +16 -4
  91. package/include/libheif/heif_color.h +147 -25
  92. package/include/libheif/heif_components.h +264 -0
  93. package/include/libheif/heif_context.h +18 -4
  94. package/include/libheif/heif_cxx.h +20 -18
  95. package/include/libheif/heif_decoding.h +63 -9
  96. package/include/libheif/heif_encoding.h +46 -12
  97. package/include/libheif/heif_error.h +15 -6
  98. package/include/libheif/heif_export.h +48 -0
  99. package/include/libheif/heif_image.h +94 -32
  100. package/include/libheif/heif_image_handle.h +54 -3
  101. package/include/libheif/heif_items.h +25 -2
  102. package/include/libheif/heif_library.h +13 -18
  103. package/include/libheif/heif_metadata.h +5 -2
  104. package/include/libheif/heif_omaf.h +104 -0
  105. package/include/libheif/heif_plugin.h +80 -13
  106. package/include/libheif/heif_properties.h +259 -5
  107. package/include/libheif/heif_regions.h +5 -3
  108. package/include/libheif/heif_security.h +24 -2
  109. package/include/libheif/heif_sequences.h +163 -14
  110. package/include/libheif/heif_text.h +161 -0
  111. package/include/libheif/heif_tiling.h +2 -2
  112. package/include/libheif/heif_uncompressed.h +29 -5
  113. package/include/libheif/heif_version.h +2 -2
  114. package/include/libpng16/png.h +637 -488
  115. package/include/libpng16/pngconf.h +2 -2
  116. package/include/libpng16/pnglibconf.h +2 -2
  117. package/include/png.h +637 -488
  118. package/include/pngconf.h +2 -2
  119. package/include/pnglibconf.h +2 -2
  120. package/include/resvg.h +3 -3
  121. package/include/tiffconf.h +9 -10
  122. package/include/tiffio.h +10 -9
  123. package/include/tiffvers.h +1 -1
  124. package/include/ultrahdr_api.h +5 -11
  125. package/include/vips/colour.h +2 -2
  126. package/include/vips/memory.h +1 -1
  127. package/include/vips/version.h +4 -4
  128. package/include/zlib.h +3 -3
  129. package/lib/glib-2.0/include/glibconfig.h +1 -3
  130. package/lib/libaom.a +0 -0
  131. package/lib/libcgif.a +0 -0
  132. package/lib/libexif.a +0 -0
  133. package/lib/libexif.la +1 -1
  134. package/lib/libexpat.a +0 -0
  135. package/lib/libexpat.la +2 -2
  136. package/lib/libffi.a +0 -0
  137. package/lib/libgio-2.0.a +0 -0
  138. package/lib/libglib-2.0.a +0 -0
  139. package/lib/libgmodule-2.0.a +0 -0
  140. package/lib/libgobject-2.0.a +0 -0
  141. package/lib/libgthread-2.0.a +0 -0
  142. package/lib/libheif.a +0 -0
  143. package/lib/libhwy.a +0 -0
  144. package/lib/libimagequant.a +0 -0
  145. package/lib/libjpeg.a +0 -0
  146. package/lib/liblcms2.a +0 -0
  147. package/lib/libpng.a +0 -0
  148. package/lib/libpng.la +2 -2
  149. package/lib/libpng16.a +0 -0
  150. package/lib/libpng16.la +2 -2
  151. package/lib/libresvg.a +0 -0
  152. package/lib/libsharpyuv.a +0 -0
  153. package/lib/libtiff.a +0 -0
  154. package/lib/libuhdr.a +0 -0
  155. package/lib/libvips-cpp.a +0 -0
  156. package/lib/libvips.a +0 -0
  157. package/lib/libwebp.a +0 -0
  158. package/lib/libwebpdecoder.a +0 -0
  159. package/lib/libwebpdemux.a +0 -0
  160. package/lib/libwebpmux.a +0 -0
  161. package/lib/libz.a +0 -0
  162. package/lib/pkgconfig/aom.pc +2 -2
  163. package/lib/pkgconfig/cgif.pc +1 -1
  164. package/lib/pkgconfig/expat.pc +1 -1
  165. package/lib/pkgconfig/gio-2.0.pc +1 -1
  166. package/lib/pkgconfig/glib-2.0.pc +1 -1
  167. package/lib/pkgconfig/gmodule-2.0.pc +1 -1
  168. package/lib/pkgconfig/gmodule-export-2.0.pc +1 -1
  169. package/lib/pkgconfig/gmodule-no-export-2.0.pc +1 -1
  170. package/lib/pkgconfig/gobject-2.0.pc +1 -1
  171. package/lib/pkgconfig/gthread-2.0.pc +1 -1
  172. package/lib/pkgconfig/lcms2.pc +1 -1
  173. package/lib/pkgconfig/libexif.pc +1 -1
  174. package/lib/pkgconfig/libheif.pc +1 -1
  175. package/lib/pkgconfig/libhwy.pc +3 -4
  176. package/lib/pkgconfig/libpng.pc +1 -1
  177. package/lib/pkgconfig/libpng16.pc +1 -1
  178. package/lib/pkgconfig/libsharpyuv.pc +1 -1
  179. package/lib/pkgconfig/libtiff-4.pc +2 -2
  180. package/lib/pkgconfig/libwebp.pc +1 -1
  181. package/lib/pkgconfig/libwebpdecoder.pc +11 -0
  182. package/lib/pkgconfig/libwebpmux.pc +1 -1
  183. package/lib/pkgconfig/vips-cpp.pc +1 -1
  184. package/lib/pkgconfig/vips.pc +1 -1
  185. package/package.json +1 -1
  186. package/versions.json +15 -15
  187. package/lib/libsharpyuv.la +0 -41
  188. package/lib/libtiff.la +0 -41
  189. package/lib/libwebp.la +0 -41
  190. package/lib/libwebpdemux.la +0 -41
  191. package/lib/libwebpmux.la +0 -41
@@ -95,7 +95,7 @@ typedef enum
95
95
  G_IO_FLAG_MASK = (1 << 5) - 1,
96
96
  G_IO_FLAG_GET_MASK = G_IO_FLAG_MASK,
97
97
  G_IO_FLAG_SET_MASK = G_IO_FLAG_APPEND | G_IO_FLAG_NONBLOCK
98
- } GIOFlags;
98
+ } G_GNUC_FLAG_ENUM GIOFlags;
99
99
 
100
100
  struct _GIOChannel
101
101
  {
@@ -54,7 +54,7 @@ typedef enum
54
54
  G_KEY_FILE_NONE = 0,
55
55
  G_KEY_FILE_KEEP_COMMENTS = 1 << 0,
56
56
  G_KEY_FILE_KEEP_TRANSLATIONS = 1 << 1
57
- } GKeyFileFlags;
57
+ } G_GNUC_FLAG_ENUM GKeyFileFlags;
58
58
 
59
59
  GLIB_AVAILABLE_IN_ALL
60
60
  GKeyFile *g_key_file_new (void);
@@ -1120,3 +1120,37 @@
1120
1120
  #define GLIB_AVAILABLE_ENUMERATOR_IN_2_88
1121
1121
  #define GLIB_AVAILABLE_TYPE_IN_2_88
1122
1122
  #endif
1123
+
1124
+ #if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_90
1125
+ #define GLIB_DEPRECATED_IN_2_90 GLIB_DEPRECATED
1126
+ #define GLIB_DEPRECATED_IN_2_90_FOR(f) GLIB_DEPRECATED_FOR (f)
1127
+ #define GLIB_DEPRECATED_MACRO_IN_2_90 GLIB_DEPRECATED_MACRO
1128
+ #define GLIB_DEPRECATED_MACRO_IN_2_90_FOR(f) GLIB_DEPRECATED_MACRO_FOR (f)
1129
+ #define GLIB_DEPRECATED_ENUMERATOR_IN_2_90 GLIB_DEPRECATED_ENUMERATOR
1130
+ #define GLIB_DEPRECATED_ENUMERATOR_IN_2_90_FOR(f) GLIB_DEPRECATED_ENUMERATOR_FOR (f)
1131
+ #define GLIB_DEPRECATED_TYPE_IN_2_90 GLIB_DEPRECATED_TYPE
1132
+ #define GLIB_DEPRECATED_TYPE_IN_2_90_FOR(f) GLIB_DEPRECATED_TYPE_FOR (f)
1133
+ #else
1134
+ #define GLIB_DEPRECATED_IN_2_90 _GLIB_EXTERN
1135
+ #define GLIB_DEPRECATED_IN_2_90_FOR(f) _GLIB_EXTERN
1136
+ #define GLIB_DEPRECATED_MACRO_IN_2_90
1137
+ #define GLIB_DEPRECATED_MACRO_IN_2_90_FOR(f)
1138
+ #define GLIB_DEPRECATED_ENUMERATOR_IN_2_90
1139
+ #define GLIB_DEPRECATED_ENUMERATOR_IN_2_90_FOR(f)
1140
+ #define GLIB_DEPRECATED_TYPE_IN_2_90
1141
+ #define GLIB_DEPRECATED_TYPE_IN_2_90_FOR(f)
1142
+ #endif
1143
+
1144
+ #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_90
1145
+ #define GLIB_AVAILABLE_IN_2_90 GLIB_UNAVAILABLE (2, 90)
1146
+ #define GLIB_AVAILABLE_STATIC_INLINE_IN_2_90 GLIB_UNAVAILABLE_STATIC_INLINE (2, 90)
1147
+ #define GLIB_AVAILABLE_MACRO_IN_2_90 GLIB_UNAVAILABLE_MACRO (2, 90)
1148
+ #define GLIB_AVAILABLE_ENUMERATOR_IN_2_90 GLIB_UNAVAILABLE_ENUMERATOR (2, 90)
1149
+ #define GLIB_AVAILABLE_TYPE_IN_2_90 GLIB_UNAVAILABLE_TYPE (2, 90)
1150
+ #else
1151
+ #define GLIB_AVAILABLE_IN_2_90 _GLIB_EXTERN
1152
+ #define GLIB_AVAILABLE_STATIC_INLINE_IN_2_90
1153
+ #define GLIB_AVAILABLE_MACRO_IN_2_90
1154
+ #define GLIB_AVAILABLE_ENUMERATOR_IN_2_90
1155
+ #define GLIB_AVAILABLE_TYPE_IN_2_90
1156
+ #endif
@@ -779,6 +779,38 @@
779
779
  #define GLIB_CANNOT_IGNORE_DEPRECATIONS
780
780
  #endif
781
781
 
782
+ /**
783
+ * G_GNUC_FLAG_ENUM:
784
+ *
785
+ * Expands to the GNU C `flag_enum` attribute if the compiler is `gcc` or `clang`.
786
+ * This attribute indicates that an enumerated type is used in bitwise
787
+ * operations.
788
+ * It is sometimes used in static analysis.
789
+ *
790
+ * See the
791
+ * [GNU C documentation](https://gcc.gnu.org/onlinedocs/gcc/Common-Type-Attributes.html#index-flag_005fenum-type-attribute)
792
+ * for details.
793
+ *
794
+ * |[<!-- language="C" -->
795
+ * typedef enum {
796
+ * G_KEY_FILE_NONE = 0,
797
+ * G_KEY_FILE_KEEP_COMMENTS = 1 << 0,
798
+ * G_KEY_FILE_KEEP_TRANSLATIONS = 1 << 1
799
+ * } G_GNUC_FLAG_ENUM GKeyFileFlags;
800
+ * ]|
801
+ *
802
+ * The attribute can also be placed after `enum` and before the opening brace,
803
+ * but that may cause it to be misinterpreted as the name of the enum if the
804
+ * macro is not defined.
805
+ *
806
+ * Since: 2.88
807
+ */
808
+ #if g_macro__has_attribute(flag_enum)
809
+ #define G_GNUC_FLAG_ENUM __attribute__((flag_enum))
810
+ #else
811
+ #define G_GNUC_FLAG_ENUM
812
+ #endif
813
+
782
814
  /**
783
815
  * G_GNUC_MAY_ALIAS:
784
816
  *
@@ -28,6 +28,8 @@
28
28
  #include <glib/gslist.h>
29
29
  #include <glib/gthread.h>
30
30
 
31
+ #include <stdint.h>
32
+
31
33
  G_BEGIN_DECLS
32
34
 
33
35
  typedef enum /*< flags >*/
@@ -830,6 +832,8 @@ G_GNUC_END_IGNORE_DEPRECATIONS
830
832
 
831
833
  GLIB_AVAILABLE_IN_ALL
832
834
  gint64 g_get_monotonic_time (void);
835
+ GLIB_AVAILABLE_IN_2_88
836
+ uint64_t g_get_monotonic_time_ns (void);
833
837
  GLIB_AVAILABLE_IN_ALL
834
838
  gint64 g_get_real_time (void);
835
839
 
@@ -102,7 +102,7 @@ typedef enum
102
102
  G_MARKUP_TREAT_CDATA_AS_TEXT = 1 << 1,
103
103
  G_MARKUP_PREFIX_ERROR_POSITION = 1 << 2,
104
104
  G_MARKUP_IGNORE_QUALIFIED = 1 << 3
105
- } GMarkupParseFlags;
105
+ } G_GNUC_FLAG_ENUM GMarkupParseFlags;
106
106
 
107
107
  /**
108
108
  * GMarkupParseContext:
@@ -229,6 +229,23 @@ void g_markup_parse_context_get_position (GMarkupParseContext *c
229
229
  gint *char_number);
230
230
  GLIB_AVAILABLE_IN_2_88
231
231
  gsize g_markup_parse_context_get_offset (GMarkupParseContext *context);
232
+
233
+ GLIB_AVAILABLE_IN_2_88
234
+ void g_markup_parse_context_get_tag_start (GMarkupParseContext *context,
235
+ gsize *line_number,
236
+ gsize *char_number,
237
+ gsize *offset);
238
+ GLIB_AVAILABLE_IN_2_90
239
+ void g_markup_parse_context_get_attribute_position
240
+ (GMarkupParseContext *context,
241
+ unsigned int attr,
242
+ size_t *start_lines,
243
+ size_t *start_chars,
244
+ size_t *start_offset,
245
+ size_t *end_lines,
246
+ size_t *end_chars,
247
+ size_t *end_offset);
248
+
232
249
  GLIB_AVAILABLE_IN_ALL
233
250
  gpointer g_markup_parse_context_get_user_data (GMarkupParseContext *context);
234
251
 
@@ -86,14 +86,14 @@ GLIB_AVAILABLE_IN_ALL
86
86
  gpointer g_malloc0 (gsize n_bytes) G_GNUC_MALLOC G_GNUC_ALLOC_SIZE(1);
87
87
  GLIB_AVAILABLE_IN_ALL
88
88
  gpointer g_realloc (gpointer mem,
89
- gsize n_bytes) G_GNUC_WARN_UNUSED_RESULT;
89
+ gsize n_bytes) G_GNUC_WARN_UNUSED_RESULT G_GNUC_ALLOC_SIZE(2);
90
90
  GLIB_AVAILABLE_IN_ALL
91
91
  gpointer g_try_malloc (gsize n_bytes) G_GNUC_MALLOC G_GNUC_ALLOC_SIZE(1);
92
92
  GLIB_AVAILABLE_IN_ALL
93
93
  gpointer g_try_malloc0 (gsize n_bytes) G_GNUC_MALLOC G_GNUC_ALLOC_SIZE(1);
94
94
  GLIB_AVAILABLE_IN_ALL
95
95
  gpointer g_try_realloc (gpointer mem,
96
- gsize n_bytes) G_GNUC_WARN_UNUSED_RESULT;
96
+ gsize n_bytes) G_GNUC_WARN_UNUSED_RESULT G_GNUC_ALLOC_SIZE(2);
97
97
 
98
98
  GLIB_AVAILABLE_IN_ALL
99
99
  gpointer g_malloc_n (gsize n_blocks,
@@ -104,7 +104,7 @@ gpointer g_malloc0_n (gsize n_blocks,
104
104
  GLIB_AVAILABLE_IN_ALL
105
105
  gpointer g_realloc_n (gpointer mem,
106
106
  gsize n_blocks,
107
- gsize n_block_bytes) G_GNUC_WARN_UNUSED_RESULT;
107
+ gsize n_block_bytes) G_GNUC_WARN_UNUSED_RESULT G_GNUC_ALLOC_SIZE2(2,3);
108
108
  GLIB_AVAILABLE_IN_ALL
109
109
  gpointer g_try_malloc_n (gsize n_blocks,
110
110
  gsize n_block_bytes) G_GNUC_MALLOC G_GNUC_ALLOC_SIZE2(1,2);
@@ -114,7 +114,7 @@ gpointer g_try_malloc0_n (gsize n_blocks,
114
114
  GLIB_AVAILABLE_IN_ALL
115
115
  gpointer g_try_realloc_n (gpointer mem,
116
116
  gsize n_blocks,
117
- gsize n_block_bytes) G_GNUC_WARN_UNUSED_RESULT;
117
+ gsize n_block_bytes) G_GNUC_WARN_UNUSED_RESULT G_GNUC_ALLOC_SIZE2(2,3);
118
118
 
119
119
  GLIB_AVAILABLE_IN_2_72
120
120
  gpointer g_aligned_alloc (gsize n_blocks,
@@ -32,6 +32,7 @@
32
32
  #endif
33
33
 
34
34
  #include <stdarg.h>
35
+ #include <stdlib.h>
35
36
  #include <glib/gatomic.h>
36
37
  #include <glib/gtypes.h>
37
38
  #include <glib/gmacros.h>
@@ -67,7 +68,7 @@ typedef enum
67
68
  G_LOG_LEVEL_DEBUG = 1 << 7,
68
69
 
69
70
  G_LOG_LEVEL_MASK = ~(G_LOG_FLAG_RECURSION | G_LOG_FLAG_FATAL)
70
- } GLogLevelFlags;
71
+ } G_GNUC_FLAG_ENUM GLogLevelFlags;
71
72
 
72
73
  /* GLib log levels that are considered fatal by default */
73
74
  #define G_LOG_FATAL_MASK (G_LOG_FLAG_RECURSION | G_LOG_LEVEL_ERROR)
@@ -329,7 +330,7 @@ void g_log_structured_standard (const gchar *log_domain,
329
330
  g_log_structured_standard (G_LOG_DOMAIN, G_LOG_LEVEL_ERROR, \
330
331
  __FILE__, G_STRINGIFY (__LINE__), \
331
332
  G_STRFUNC, __VA_ARGS__); \
332
- for (;;) ; \
333
+ abort (); \
333
334
  } G_STMT_END
334
335
  #define g_message(...) g_log_structured_standard (G_LOG_DOMAIN, G_LOG_LEVEL_MESSAGE, \
335
336
  __FILE__, G_STRINGIFY (__LINE__), \
@@ -347,14 +348,11 @@ void g_log_structured_standard (const gchar *log_domain,
347
348
  __FILE__, G_STRINGIFY (__LINE__), \
348
349
  G_STRFUNC, __VA_ARGS__)
349
350
  #else
350
- /* for(;;) ; so that GCC knows that control doesn't go past g_error().
351
- * Put space before ending semicolon to avoid C++ build warnings.
352
- */
353
351
  #define g_error(...) G_STMT_START { \
354
352
  g_log (G_LOG_DOMAIN, \
355
353
  G_LOG_LEVEL_ERROR, \
356
354
  __VA_ARGS__); \
357
- for (;;) ; \
355
+ abort (); \
358
356
  } G_STMT_END
359
357
  #define g_message(...) g_log (G_LOG_DOMAIN, \
360
358
  G_LOG_LEVEL_MESSAGE, \
@@ -378,7 +376,7 @@ void g_log_structured_standard (const gchar *log_domain,
378
376
  g_log_structured_standard (G_LOG_DOMAIN, G_LOG_LEVEL_ERROR, \
379
377
  __FILE__, G_STRINGIFY (__LINE__), \
380
378
  G_STRFUNC, format); \
381
- for (;;) ; \
379
+ abort (); \
382
380
  } G_STMT_END
383
381
  #define g_message(format...) g_log_structured_standard (G_LOG_DOMAIN, G_LOG_LEVEL_MESSAGE, \
384
382
  __FILE__, G_STRINGIFY (__LINE__), \
@@ -400,7 +398,7 @@ void g_log_structured_standard (const gchar *log_domain,
400
398
  g_log (G_LOG_DOMAIN, \
401
399
  G_LOG_LEVEL_ERROR, \
402
400
  format); \
403
- for (;;) ; \
401
+ abort (); \
404
402
  } G_STMT_END
405
403
 
406
404
  #define g_message(format...) g_log (G_LOG_DOMAIN, \
@@ -432,7 +430,7 @@ g_error (const gchar *format,
432
430
  g_logv (G_LOG_DOMAIN, G_LOG_LEVEL_ERROR, format, args);
433
431
  va_end (args);
434
432
 
435
- for(;;) ;
433
+ abort ();
436
434
  }
437
435
  static inline void
438
436
  g_message (const gchar *format,
@@ -46,7 +46,7 @@ typedef enum
46
46
  G_TRAVERSE_MASK = 0x03,
47
47
  G_TRAVERSE_LEAFS = G_TRAVERSE_LEAVES,
48
48
  G_TRAVERSE_NON_LEAFS = G_TRAVERSE_NON_LEAVES
49
- } GTraverseFlags;
49
+ } G_GNUC_FLAG_ENUM GTraverseFlags;
50
50
 
51
51
  /* Tree traverse orders */
52
52
  typedef enum
@@ -111,7 +111,7 @@ typedef enum
111
111
  G_OPTION_FLAG_OPTIONAL_ARG = 1 << 5,
112
112
  G_OPTION_FLAG_NOALIAS = 1 << 6,
113
113
  G_OPTION_FLAG_DEPRECATED GLIB_AVAILABLE_ENUMERATOR_IN_2_84 = 1 << 7
114
- } GOptionFlags;
114
+ } G_GNUC_FLAG_ENUM GOptionFlags;
115
115
 
116
116
  /**
117
117
  * GOptionArg:
@@ -43,7 +43,7 @@ GSequence * g_sequence_new (GDestroyNotify data_des
43
43
  GLIB_AVAILABLE_IN_ALL
44
44
  void g_sequence_free (GSequence *seq);
45
45
  GLIB_AVAILABLE_IN_ALL
46
- gint g_sequence_get_length (GSequence *seq);
46
+ gint g_sequence_get_length (GSequence *seq) G_GNUC_PURE;
47
47
  GLIB_AVAILABLE_IN_ALL
48
48
  void g_sequence_foreach (GSequence *seq,
49
49
  GFunc func,
@@ -62,7 +62,7 @@ void g_sequence_sort_iter (GSequence *seq,
62
62
  GSequenceIterCompareFunc cmp_func,
63
63
  gpointer cmp_data);
64
64
  GLIB_AVAILABLE_IN_2_48
65
- gboolean g_sequence_is_empty (GSequence *seq);
65
+ gboolean g_sequence_is_empty (GSequence *seq) G_GNUC_PURE;
66
66
 
67
67
 
68
68
  /* Getting iters */
@@ -45,21 +45,29 @@ GLIB_AVAILABLE_IN_ALL
45
45
  void g_slice_free_chain_with_offset (gsize block_size,
46
46
  gpointer mem_chain,
47
47
  gsize next_offset);
48
- #define g_slice_new(type) ((type*) g_slice_alloc (sizeof (type)))
48
+
49
+ #ifndef __GI_SCANNER__
50
+ /* Private helper to give the allocation size for a struct — we want to
51
+ * guarantee non-empty allocations, so it returns a minimum of 1B. This is
52
+ * necessary because some compilers do allow empty (zero size) structs. */
53
+ #define g_slice_alloc_size(type) (sizeof (type) > 0 ? sizeof (type) : 1)
54
+ #endif
55
+
56
+ #define g_slice_new(type) ((type*) g_slice_alloc (g_slice_alloc_size (type)))
49
57
 
50
58
  /* Allow the compiler to inline memset(). Since the size is a constant, this
51
59
  * can significantly improve performance. */
52
60
  #if defined (__GNUC__) && (__GNUC__ >= 2) && defined (__OPTIMIZE__)
53
61
  # define g_slice_new0(type) \
54
62
  (type *) (G_GNUC_EXTENSION ({ \
55
- gsize __s = sizeof (type); \
63
+ gsize __s = g_slice_alloc_size (type); \
56
64
  gpointer __p; \
57
65
  __p = g_slice_alloc (__s); \
58
66
  memset (__p, 0, __s); \
59
67
  __p; \
60
68
  }))
61
69
  #else
62
- # define g_slice_new0(type) ((type*) g_slice_alloc0 (sizeof (type)))
70
+ # define g_slice_new0(type) ((type*) g_slice_alloc0 (g_slice_alloc_size (type)))
63
71
  #endif
64
72
 
65
73
  /* MemoryBlockType *
@@ -76,7 +84,7 @@ void g_slice_free_chain_with_offset (gsize block_size,
76
84
 
77
85
  /* we go through extra hoops to ensure type safety */
78
86
  #define g_slice_dup(type, mem) \
79
- (1 ? (type*) g_slice_copy (sizeof (type), (mem)) \
87
+ (1 ? (type*) g_slice_copy (g_slice_alloc_size (type), (mem)) \
80
88
  : ((void) ((type*) 0 == (mem)), (type*) 0))
81
89
  #define g_slice_free(type, mem) \
82
90
  G_STMT_START { \
@@ -214,7 +214,7 @@ typedef enum
214
214
  * Since: 2.74
215
215
  */
216
216
  G_SPAWN_STDIN_FROM_DEV_NULL = 1 << 11
217
- } GSpawnFlags;
217
+ } G_GNUC_FLAG_ENUM GSpawnFlags;
218
218
 
219
219
  GLIB_AVAILABLE_IN_ALL
220
220
  GQuark g_spawn_error_quark (void);
@@ -54,7 +54,7 @@ typedef enum {
54
54
  G_ASCII_SPACE = 1 << 8,
55
55
  G_ASCII_UPPER = 1 << 9,
56
56
  G_ASCII_XDIGIT = 1 << 10
57
- } GAsciiType;
57
+ } G_GNUC_FLAG_ENUM GAsciiType;
58
58
 
59
59
  GLIB_VAR const guint16 * const g_ascii_table;
60
60
 
@@ -471,6 +471,9 @@ gboolean g_ascii_string_to_unsigned (const gchar *str,
471
471
  * }
472
472
  * ```
473
473
  *
474
+ * See also [func@GLib.set_str_take] for a version of this which steals
475
+ * ownership of @new_str.
476
+ *
474
477
  * Returns: true if the value of @str_pointer changed, false otherwise
475
478
  *
476
479
  * Since: 2.76
@@ -497,6 +500,193 @@ g_set_str (char **str_pointer,
497
500
  return TRUE;
498
501
  }
499
502
 
503
+ /**
504
+ * g_set_str_take: (skip)
505
+ * @str_pointer: (inout) (not optional) (nullable): a pointer to either
506
+ * a string or `NULL`
507
+ * @new_str: (transfer full) (nullable): a string to assign to @str_pointer
508
+ *
509
+ * Updates a pointer to a string to @new_str and returns whether the
510
+ * string was changed. Steals ownership of @new_str.
511
+ *
512
+ * If @new_str matches the previous string, this function will free @new_str and
513
+ * leave @str_pointer unchanged. If @new_str is different, it will be assigned
514
+ * to @str_pointer and the previous string pointed to by @str_pointer will be
515
+ * freed with [func@GLib.free].
516
+ *
517
+ * @str_pointer must not be `NULL`, but can point to a `NULL` value.
518
+ *
519
+ * One convenient usage of this function is in implementing property settings:
520
+ * ```C
521
+ * void
522
+ * foo_set_bar (Foo *foo,
523
+ * const char *new_bar)
524
+ * {
525
+ * g_autofree computed_new_bar = NULL;
526
+ *
527
+ * g_return_if_fail (IS_FOO (foo));
528
+ *
529
+ * computed_new_bar = g_strconcat (new_bar, "some-suffix", NULL);
530
+ *
531
+ * if (g_set_str_take (&foo->bar, g_steal_pointer (&computed_new_bar)))
532
+ * g_object_notify (foo, "bar");
533
+ * }
534
+ * ```
535
+ *
536
+ * See also [func@GLib.set_str] for a version of this which takes a copy of
537
+ * @new_str.
538
+ *
539
+ * Returns: true if the value of @str_pointer changed, false otherwise
540
+ *
541
+ * Since: 2.90
542
+ */
543
+ GLIB_AVAILABLE_STATIC_INLINE_IN_2_90
544
+ static inline gboolean g_set_str_take (char **str_pointer,
545
+ char *new_str);
546
+
547
+ GLIB_AVAILABLE_STATIC_INLINE_IN_2_90
548
+ static inline gboolean
549
+ g_set_str_take (char **str_pointer,
550
+ char *new_str)
551
+ {
552
+ /* You could pass the value of `*str_pointer` in to this function, but you
553
+ * really should do it using g_steal_pointer() to document the ownership
554
+ * transfer. */
555
+ if (*str_pointer == new_str)
556
+ return FALSE;
557
+
558
+ if (*str_pointer != NULL &&
559
+ new_str != NULL &&
560
+ strcmp (*str_pointer, new_str) == 0)
561
+ {
562
+ g_free (new_str);
563
+ return FALSE;
564
+ }
565
+
566
+ g_free (*str_pointer);
567
+ *str_pointer = new_str;
568
+ new_str = NULL; /* stolen */
569
+
570
+ return TRUE;
571
+ }
572
+
573
+ /**
574
+ * g_set_strv: (skip)
575
+ * @strv_pointer: (inout) (not optional) (nullable): a pointer to either
576
+ * a `NULL`-terminated string array or `NULL`
577
+ * @new_strv: (nullable): a NULL-terminated string array to assign to
578
+ * @strv_pointer
579
+ *
580
+ * Safely replaces a string vector.
581
+ *
582
+ * Updates a pointer to a `NULL`-terminated string array to a copy of @new_strv
583
+ * and returns whether the value was changed.
584
+ *
585
+ * If @new_strv matches the previous array, this function is a no-op. If
586
+ * @new_strv is different, a copy of it will be assigned to @strv_pointer and
587
+ * the previous array pointed to by @strv_pointer will be freed with
588
+ * [func@GLib.strfreev].
589
+ *
590
+ * The contents of both string arrays are compared for equality before
591
+ * replacing the value. In the worst case this requires O(N) time.
592
+ *
593
+ * This function avoids a potential use-after-free when @new_strv reuses
594
+ * pointers from the original string array. This allows callers to build
595
+ * a replacement array using existing strings without needing to copy
596
+ * them beforehand.
597
+ *
598
+ * @strv_pointer must not be `NULL`, but can point to a `NULL` value.
599
+ *
600
+ * Returns: true if the value of @strv_pointer changed, false otherwise
601
+ *
602
+ * Since: 2.90
603
+ */
604
+ GLIB_AVAILABLE_STATIC_INLINE_IN_2_90
605
+ static inline gboolean g_set_strv (char ***strv_pointer,
606
+ const char * const *new_strv);
607
+
608
+ GLIB_AVAILABLE_STATIC_INLINE_IN_2_90
609
+ static inline gboolean
610
+ g_set_strv (char ***strv_pointer,
611
+ const char * const *new_strv)
612
+ {
613
+ char **copy;
614
+
615
+ if ((const char * const *)*strv_pointer == new_strv)
616
+ return FALSE;
617
+
618
+ G_GNUC_BEGIN_IGNORE_DEPRECATIONS
619
+ if (*strv_pointer && new_strv &&
620
+ g_strv_equal ((const char * const *)*strv_pointer, new_strv))
621
+ return FALSE;
622
+ G_GNUC_END_IGNORE_DEPRECATIONS
623
+
624
+ copy = g_strdupv ((char **) (guintptr) new_strv);
625
+ g_strfreev (*strv_pointer);
626
+ *strv_pointer = copy;
627
+
628
+ return TRUE;
629
+ }
630
+
631
+ /**
632
+ * g_set_strv_take: (skip)
633
+ * @strv_pointer: (inout) (not optional) (nullable): a pointer to either
634
+ * a `NULL`-terminated string array or `NULL`
635
+ * @new_strv: (transfer full) (nullable): a `NULL`-terminated string array to
636
+ * assign to @strv_pointer
637
+ *
638
+ * Safely replaces a string vector, taking ownership of the new value.
639
+ *
640
+ * Updates a pointer to a `NULL`-terminated string array to @new_strv and
641
+ * returns whether the value was changed.
642
+ *
643
+ * If @new_strv contains the same strings as the previous array, this function
644
+ * is a no-op. If @new_strv is different, it will be assigned to @strv_pointer
645
+ * and the previous array pointed to by @strv_pointer will be freed with
646
+ * [func@GLib.strfreev].
647
+ *
648
+ * If @new_strv does not replace the existing value, it will be freed with
649
+ * [func@GLib.strfreev], unless it is `NULL`.
650
+ *
651
+ * The contents of both string arrays are compared for equality before
652
+ * replacing the value. In the worst case this requires O(N) time.
653
+ *
654
+ * @strv_pointer must not be `NULL`, but can point to a `NULL` value.
655
+ * @new_strv must be `NULL` or a string array not already stored in
656
+ * @strv_pointer.
657
+ *
658
+ * Returns: true if the value of @strv_pointer changed, false otherwise
659
+ *
660
+ * Since: 2.90
661
+ */
662
+ GLIB_AVAILABLE_STATIC_INLINE_IN_2_90
663
+ static inline gboolean g_set_strv_take (char ***strv_pointer,
664
+ char **new_strv);
665
+
666
+ GLIB_AVAILABLE_STATIC_INLINE_IN_2_90
667
+ static inline gboolean
668
+ g_set_strv_take (char ***strv_pointer,
669
+ char **new_strv)
670
+ {
671
+ if (*strv_pointer == NULL && new_strv == NULL)
672
+ return FALSE;
673
+
674
+ G_GNUC_BEGIN_IGNORE_DEPRECATIONS
675
+ if (*strv_pointer && new_strv &&
676
+ g_strv_equal ((const char * const *)*strv_pointer,
677
+ (const char * const *)new_strv))
678
+ {
679
+ g_strfreev (new_strv);
680
+ return FALSE;
681
+ }
682
+ G_GNUC_END_IGNORE_DEPRECATIONS
683
+
684
+ g_strfreev (*strv_pointer);
685
+ *strv_pointer = new_strv;
686
+
687
+ return TRUE;
688
+ }
689
+
500
690
  G_END_DECLS
501
691
 
502
692
  #endif /* __G_STRFUNCS_H__ */
@@ -526,7 +526,7 @@ typedef enum {
526
526
  G_TEST_TRAP_SILENCE_STDOUT = 1 << 7,
527
527
  G_TEST_TRAP_SILENCE_STDERR = 1 << 8,
528
528
  G_TEST_TRAP_INHERIT_STDIN = 1 << 9
529
- } GTestTrapFlags GLIB_DEPRECATED_TYPE_IN_2_38_FOR(GTestSubprocessFlags);
529
+ } G_GNUC_FLAG_ENUM GTestTrapFlags GLIB_DEPRECATED_TYPE_IN_2_38_FOR(GTestSubprocessFlags);
530
530
 
531
531
  G_GNUC_BEGIN_IGNORE_DEPRECATIONS
532
532
 
@@ -540,8 +540,9 @@ typedef enum {
540
540
  G_TEST_SUBPROCESS_DEFAULT GLIB_AVAILABLE_ENUMERATOR_IN_2_74 = 0,
541
541
  G_TEST_SUBPROCESS_INHERIT_STDIN = 1 << 0,
542
542
  G_TEST_SUBPROCESS_INHERIT_STDOUT = 1 << 1,
543
- G_TEST_SUBPROCESS_INHERIT_STDERR = 1 << 2
544
- } GTestSubprocessFlags;
543
+ G_TEST_SUBPROCESS_INHERIT_STDERR = 1 << 2,
544
+ G_TEST_SUBPROCESS_INHERIT_DESCRIPTORS GLIB_AVAILABLE_ENUMERATOR_IN_2_88 = 1 << 3,
545
+ } G_GNUC_FLAG_ENUM GTestSubprocessFlags;
545
546
 
546
547
  GLIB_AVAILABLE_IN_2_38
547
548
  void g_test_trap_subprocess (const char *test_path,
@@ -555,6 +556,8 @@ void g_test_trap_subprocess_with_envp (const char *test_path,
555
556
 
556
557
  GLIB_AVAILABLE_IN_ALL
557
558
  gboolean g_test_trap_has_passed (void);
559
+ GLIB_AVAILABLE_IN_2_88
560
+ gboolean g_test_trap_has_skipped (void);
558
561
  GLIB_AVAILABLE_IN_ALL
559
562
  gboolean g_test_trap_reached_timeout (void);
560
563
  #define g_test_trap_assert_passed() g_test_trap_assertions (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, 0, 0)
@@ -42,6 +42,7 @@ G_BEGIN_DECLS
42
42
  typedef struct _GTimer GTimer;
43
43
 
44
44
  #define G_USEC_PER_SEC 1000000
45
+ #define G_NSEC_PER_SEC G_GUINT64_CONSTANT(1000000000) GLIB_AVAILABLE_MACRO_IN_2_88
45
46
 
46
47
  GLIB_AVAILABLE_IN_ALL
47
48
  GTimer* g_timer_new (void);
@@ -90,7 +90,7 @@ typedef enum {
90
90
  G_URI_FLAGS_ENCODED_PATH = 1 << 6,
91
91
  G_URI_FLAGS_ENCODED_FRAGMENT = 1 << 7,
92
92
  G_URI_FLAGS_SCHEME_NORMALIZE GLIB_AVAILABLE_ENUMERATOR_IN_2_68 = 1 << 8,
93
- } GUriFlags;
93
+ } G_GNUC_FLAG_ENUM GUriFlags;
94
94
 
95
95
  GLIB_AVAILABLE_IN_2_66
96
96
  gboolean g_uri_split (const gchar *uri_ref,
@@ -211,7 +211,7 @@ typedef enum {
211
211
  G_URI_HIDE_AUTH_PARAMS = 1 << 2,
212
212
  G_URI_HIDE_QUERY = 1 << 3,
213
213
  G_URI_HIDE_FRAGMENT = 1 << 4,
214
- } GUriHideFlags;
214
+ } G_GNUC_FLAG_ENUM GUriHideFlags;
215
215
 
216
216
  GLIB_AVAILABLE_IN_2_66
217
217
  char * g_uri_to_string (GUri *uri);
@@ -261,7 +261,7 @@ typedef enum {
261
261
  G_URI_PARAMS_CASE_INSENSITIVE = 1 << 0,
262
262
  G_URI_PARAMS_WWW_FORM = 1 << 1,
263
263
  G_URI_PARAMS_PARSE_RELAXED = 1 << 2,
264
- } GUriParamsFlags;
264
+ } G_GNUC_FLAG_ENUM GUriParamsFlags;
265
265
 
266
266
  GLIB_AVAILABLE_IN_2_66
267
267
  GHashTable *g_uri_parse_params (const gchar *params,
@@ -248,6 +248,15 @@ typedef enum {
248
248
  G_USER_DIRECTORY_TEMPLATES,
249
249
  G_USER_DIRECTORY_VIDEOS,
250
250
 
251
+ /**
252
+ * G_USER_DIRECTORY_PROJECTS:
253
+ *
254
+ * The user's Projects directory.
255
+ *
256
+ * Since: 2.90
257
+ */
258
+ G_USER_DIRECTORY_PROJECTS,
259
+
251
260
  G_USER_N_DIRECTORIES
252
261
  } GUserDirectory;
253
262
 
@@ -299,7 +308,7 @@ typedef enum
299
308
  G_FORMAT_SIZE_BITS = 1 << 2,
300
309
  G_FORMAT_SIZE_ONLY_VALUE GLIB_AVAILABLE_ENUMERATOR_IN_2_74 = 1 << 3,
301
310
  G_FORMAT_SIZE_ONLY_UNIT GLIB_AVAILABLE_ENUMERATOR_IN_2_74 = 1 << 4
302
- } GFormatSizeFlags;
311
+ } G_GNUC_FLAG_ENUM GFormatSizeFlags;
303
312
 
304
313
  GLIB_AVAILABLE_IN_2_30
305
314
  gchar *g_format_size_full (guint64 size,