Branch data Line data Source code
1 : : #include <gio/gio.h> 2 : : 3 : : #if defined (__ELF__) && ( __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 6)) 4 : : # define SECTION __attribute__ ((section (".gresource.config_file_resources"), aligned (8))) 5 : : #else 6 : : # define SECTION 7 : : #endif 8 : : 9 : : static const SECTION union { const guint8 data[445]; const double alignment; void * const ptr;} config_file_resources_resource_data = { 10 : : "\107\126\141\162\151\141\156\164\000\000\000\000\000\000\000\000" 11 : : "\030\000\000\000\344\000\000\000\000\000\000\050\007\000\000\000" 12 : : "\000\000\000\000\000\000\000\000\001\000\000\000\004\000\000\000" 13 : : "\005\000\000\000\005\000\000\000\006\000\000\000\113\120\220\013" 14 : : "\003\000\000\000\344\000\000\000\004\000\114\000\350\000\000\000" 15 : : "\354\000\000\000\243\056\304\273\004\000\000\000\354\000\000\000" 16 : : "\030\000\166\000\010\001\000\000\062\001\000\000\023\234\071\242" 17 : : "\006\000\000\000\062\001\000\000\022\000\114\000\104\001\000\000" 18 : : "\110\001\000\000\324\265\002\000\377\377\377\377\110\001\000\000" 19 : : "\001\000\114\000\114\001\000\000\120\001\000\000\130\107\147\076" 20 : : "\002\000\000\000\120\001\000\000\007\000\114\000\130\001\000\000" 21 : : "\140\001\000\000\257\371\305\305\004\000\000\000\140\001\000\000" 22 : : "\020\000\166\000\160\001\000\000\261\001\000\000\260\267\044\060" 23 : : "\000\000\000\000\261\001\000\000\006\000\114\000\270\001\000\000" 24 : : "\274\001\000\000\157\162\147\057\006\000\000\000\143\157\156\146" 25 : : "\151\147\055\164\145\163\164\055\151\156\166\141\154\151\144\056" 26 : : "\143\157\156\146\000\000\000\000\032\000\000\000\000\000\000\000" 27 : : "\164\150\151\163\040\145\156\164\040\141\040\166\141\154\151\144" 28 : : "\040\143\157\156\146\040\146\151\154\145\000\000\050\165\165\141" 29 : : "\171\051\154\151\142\147\163\171\163\164\145\155\163\145\162\166" 30 : : "\151\143\145\057\004\000\000\000\057\000\000\000\000\000\000\000" 31 : : "\143\157\156\146\151\147\057\000\001\000\000\000\005\000\000\000" 32 : : "\143\157\156\146\151\147\055\164\145\163\164\056\143\157\156\146" 33 : : "\061\000\000\000\000\000\000\000\133\124\145\163\164\135\012\106" 34 : : "\151\154\145\075\061\060\060\060\012\106\151\154\145\104\145\146" 35 : : "\141\165\154\164\075\164\162\165\145\012\012\133\104\145\146\141" 36 : : "\165\154\164\107\162\157\165\160\135\000\000\050\165\165\141\171" 37 : : "\051\147\156\157\155\145\057\000\002\000\000\000" }; 38 : : 39 : : static GStaticResource static_resource = { config_file_resources_resource_data.data, sizeof (config_file_resources_resource_data.data) - 1 /* nul terminator */, NULL, NULL, NULL }; 40 : : 41 : : G_GNUC_INTERNAL 42 : : GResource *config_file_resources_get_resource (void); 43 : 9 : GResource *config_file_resources_get_resource (void) 44 : : { 45 : 9 : return g_static_resource_get_resource (&static_resource); 46 : : } 47 : : /* GLIB - Library of useful routines for C programming 48 : : * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald 49 : : * 50 : : * This library is free software; you can redistribute it and/or 51 : : * modify it under the terms of the GNU Lesser General Public 52 : : * License as published by the Free Software Foundation; either 53 : : * version 2.1 of the License, or (at your option) any later version. 54 : : * 55 : : * This library is distributed in the hope that it will be useful, 56 : : * but WITHOUT ANY WARRANTY; without even the implied warranty of 57 : : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 58 : : * Lesser General Public License for more details. 59 : : * 60 : : * You should have received a copy of the GNU Lesser General Public 61 : : * License along with this library; if not, see <http://www.gnu.org/licenses/>. 62 : : */ 63 : : 64 : : /* 65 : : * Modified by the GLib Team and others 1997-2000. See the AUTHORS 66 : : * file for a list of people on the GLib Team. See the ChangeLog 67 : : * files for a list of changes. These files are distributed with 68 : : * GLib at ftp://ftp.gtk.org/pub/gtk/. 69 : : */ 70 : : 71 : : #ifndef __G_CONSTRUCTOR_H__ 72 : : #define __G_CONSTRUCTOR_H__ 73 : : 74 : : /* 75 : : If G_HAS_CONSTRUCTORS is true then the compiler support *both* constructors and 76 : : destructors, in a usable way, including e.g. on library unload. If not you're on 77 : : your own. 78 : : 79 : : Some compilers need #pragma to handle this, which does not work with macros, 80 : : so the way you need to use this is (for constructors): 81 : : 82 : : #ifdef G_DEFINE_CONSTRUCTOR_NEEDS_PRAGMA 83 : : #pragma G_DEFINE_CONSTRUCTOR_PRAGMA_ARGS(my_constructor) 84 : : #endif 85 : : G_DEFINE_CONSTRUCTOR(my_constructor) 86 : : static void my_constructor(void) { 87 : : ... 88 : : } 89 : : 90 : : */ 91 : : 92 : : #ifndef __GTK_DOC_IGNORE__ 93 : : 94 : : #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7) 95 : : 96 : : #define G_HAS_CONSTRUCTORS 1 97 : : 98 : : #define G_DEFINE_CONSTRUCTOR(_func) static void __attribute__((constructor)) _func (void); 99 : : #define G_DEFINE_DESTRUCTOR(_func) static void __attribute__((destructor)) _func (void); 100 : : 101 : : #elif defined (_MSC_VER) && (_MSC_VER >= 1500) 102 : : /* Visual studio 2008 and later has _Pragma */ 103 : : 104 : : /* 105 : : * Only try to include gslist.h if not already included via glib.h, 106 : : * so that items using gconstructor.h outside of GLib (such as 107 : : * GResources) continue to build properly. 108 : : */ 109 : : #ifndef __G_LIB_H__ 110 : : #include "gslist.h" 111 : : #endif 112 : : 113 : : #include <stdlib.h> 114 : : 115 : : #define G_HAS_CONSTRUCTORS 1 116 : : 117 : : /* We do some weird things to avoid the constructors being optimized 118 : : * away on VS2015 if WholeProgramOptimization is enabled. First we 119 : : * make a reference to the array from the wrapper to make sure its 120 : : * references. Then we use a pragma to make sure the wrapper function 121 : : * symbol is always included at the link stage. Also, the symbols 122 : : * need to be extern (but not dllexport), even though they are not 123 : : * really used from another object file. 124 : : */ 125 : : 126 : : /* We need to account for differences between the mangling of symbols 127 : : * for x86 and x64/ARM/ARM64 programs, as symbols on x86 are prefixed 128 : : * with an underscore but symbols on x64/ARM/ARM64 are not. 129 : : */ 130 : : #ifdef _M_IX86 131 : : #define G_MSVC_SYMBOL_PREFIX "_" 132 : : #else 133 : : #define G_MSVC_SYMBOL_PREFIX "" 134 : : #endif 135 : : 136 : : #define G_DEFINE_CONSTRUCTOR(_func) G_MSVC_CTOR (_func, G_MSVC_SYMBOL_PREFIX) 137 : : #define G_DEFINE_DESTRUCTOR(_func) G_MSVC_DTOR (_func, G_MSVC_SYMBOL_PREFIX) 138 : : 139 : : #define G_MSVC_CTOR(_func,_sym_prefix) \ 140 : : static void _func(void); \ 141 : : extern int (* _array ## _func)(void); \ 142 : : int _func ## _wrapper(void) { _func(); g_slist_find (NULL, _array ## _func); return 0; } \ 143 : : __pragma(comment(linker,"/include:" _sym_prefix # _func "_wrapper")) \ 144 : : __pragma(section(".CRT$XCU",read)) \ 145 : : __declspec(allocate(".CRT$XCU")) int (* _array ## _func)(void) = _func ## _wrapper; 146 : : 147 : : #define G_MSVC_DTOR(_func,_sym_prefix) \ 148 : : static void _func(void); \ 149 : : extern int (* _array ## _func)(void); \ 150 : : int _func ## _constructor(void) { atexit (_func); g_slist_find (NULL, _array ## _func); return 0; } \ 151 : : __pragma(comment(linker,"/include:" _sym_prefix # _func "_constructor")) \ 152 : : __pragma(section(".CRT$XCU",read)) \ 153 : : __declspec(allocate(".CRT$XCU")) int (* _array ## _func)(void) = _func ## _constructor; 154 : : 155 : : #elif defined (_MSC_VER) 156 : : 157 : : #define G_HAS_CONSTRUCTORS 1 158 : : 159 : : /* Pre Visual studio 2008 must use #pragma section */ 160 : : #define G_DEFINE_CONSTRUCTOR_NEEDS_PRAGMA 1 161 : : #define G_DEFINE_DESTRUCTOR_NEEDS_PRAGMA 1 162 : : 163 : : #define G_DEFINE_CONSTRUCTOR_PRAGMA_ARGS(_func) \ 164 : : section(".CRT$XCU",read) 165 : : #define G_DEFINE_CONSTRUCTOR(_func) \ 166 : : static void _func(void); \ 167 : : static int _func ## _wrapper(void) { _func(); return 0; } \ 168 : : __declspec(allocate(".CRT$XCU")) static int (*p)(void) = _func ## _wrapper; 169 : : 170 : : #define G_DEFINE_DESTRUCTOR_PRAGMA_ARGS(_func) \ 171 : : section(".CRT$XCU",read) 172 : : #define G_DEFINE_DESTRUCTOR(_func) \ 173 : : static void _func(void); \ 174 : : static int _func ## _constructor(void) { atexit (_func); return 0; } \ 175 : : __declspec(allocate(".CRT$XCU")) static int (* _array ## _func)(void) = _func ## _constructor; 176 : : 177 : : #elif defined(__SUNPRO_C) 178 : : 179 : : /* This is not tested, but i believe it should work, based on: 180 : : * http://opensource.apple.com/source/OpenSSL098/OpenSSL098-35/src/fips/fips_premain.c 181 : : */ 182 : : 183 : : #define G_HAS_CONSTRUCTORS 1 184 : : 185 : : #define G_DEFINE_CONSTRUCTOR_NEEDS_PRAGMA 1 186 : : #define G_DEFINE_DESTRUCTOR_NEEDS_PRAGMA 1 187 : : 188 : : #define G_DEFINE_CONSTRUCTOR_PRAGMA_ARGS(_func) \ 189 : : init(_func) 190 : : #define G_DEFINE_CONSTRUCTOR(_func) \ 191 : : static void _func(void); 192 : : 193 : : #define G_DEFINE_DESTRUCTOR_PRAGMA_ARGS(_func) \ 194 : : fini(_func) 195 : : #define G_DEFINE_DESTRUCTOR(_func) \ 196 : : static void _func(void); 197 : : 198 : : #else 199 : : 200 : : /* constructors not supported for this compiler */ 201 : : 202 : : #endif 203 : : 204 : : #endif /* __GTK_DOC_IGNORE__ */ 205 : : #endif /* __G_CONSTRUCTOR_H__ */ 206 : : 207 : : #ifdef G_HAS_CONSTRUCTORS 208 : : 209 : : #ifdef G_DEFINE_CONSTRUCTOR_NEEDS_PRAGMA 210 : : #pragma G_DEFINE_CONSTRUCTOR_PRAGMA_ARGS(config_file_resourcesresource_constructor) 211 : : #endif 212 : : G_DEFINE_CONSTRUCTOR(config_file_resourcesresource_constructor) 213 : : #ifdef G_DEFINE_DESTRUCTOR_NEEDS_PRAGMA 214 : : #pragma G_DEFINE_DESTRUCTOR_PRAGMA_ARGS(config_file_resourcesresource_destructor) 215 : : #endif 216 : : G_DEFINE_DESTRUCTOR(config_file_resourcesresource_destructor) 217 : : 218 : : #else 219 : : #warning "Constructor not supported on this compiler, linking in resources will not work" 220 : : #endif 221 : : 222 : 1 : static void config_file_resourcesresource_constructor (void) 223 : : { 224 : 1 : g_static_resource_init (&static_resource); 225 : 1 : } 226 : : 227 : 1 : static void config_file_resourcesresource_destructor (void) 228 : : { 229 : 1 : g_static_resource_fini (&static_resource); 230 : 1 : }