mail-notification

Fork of Jean-Yves Lefort's mail-notification, a tray icon to notify of new mail
git clone https://code.djc.id.au/git/mail-notification/

jbsrc/lib/src/core/jb-resource.h (10767B) - raw

      1 /*
      2  * JB, the Jean-Yves Lefort's Build System
      3  * Copyright (C) 2008 Jean-Yves Lefort <jylefort@brutele.be>
      4  *
      5  * This program is free software; you can redistribute it and/or modify
      6  * it under the terms of the GNU General Public License as published by
      7  * the Free Software Foundation; either version 3 of the License, or
      8  * (at your option) any later version.
      9  *
     10  * This program is distributed in the hope that it will be useful,
     11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
     12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13  * GNU General Public License for more details.
     14  *
     15  * You should have received a copy of the GNU General Public License along
     16  * with this program; if not, write to the Free Software Foundation, Inc.,
     17  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
     18  */
     19 
     20 #ifndef _JB_RESOURCE_H
     21 #define _JB_RESOURCE_H
     22 
     23 #include <stdarg.h>
     24 #include <glib-object.h>
     25 #include "jb-decls.h"
     26 #include "jb-compile-options.h"
     27 #include "jb-install-options.h"
     28 
     29 #define JB_TYPE_RESOURCE		(jb_resource_get_type())
     30 #define JB_RESOURCE(obj)		(G_TYPE_CHECK_INSTANCE_CAST((obj), JB_TYPE_RESOURCE, JBResource))
     31 #define JB_RESOURCE_CLASS(class)	(G_TYPE_CHECK_CLASS_CAST((class), JB_TYPE_RESOURCE, JBResourceClass))
     32 #define JB_IS_RESOURCE(obj)		(G_TYPE_CHECK_INSTANCE_TYPE((obj), JB_TYPE_RESOURCE))
     33 #define JB_RESOURCE_GET_CLASS(obj)	(G_TYPE_INSTANCE_GET_CLASS((obj), JB_TYPE_RESOURCE, JBResourceClass))
     34 
     35 typedef struct
     36 {
     37   GObject	parent;
     38 } JBResource;
     39 
     40 typedef struct
     41 {
     42   GObjectClass	parent;
     43 
     44   char *	(*to_string)			(JBResource *self);
     45 
     46   void		(*pre_build)			(JBResource *self);
     47   void		(*build)			(JBResource *self);
     48   void		(*install)			(JBResource *self);
     49   void		(*makedist)			(JBResource *self);
     50   void		(*clean)			(JBResource *self);
     51   void		(*distclean)			(JBResource *self);
     52   void		(*maintainerclean)		(JBResource *self);
     53 } JBResourceClass;
     54 
     55 GType jb_resource_get_type (void);
     56 
     57 char *jb_resource_to_string (JBResource *self);
     58 
     59 void jb_resource_pre_build (JBResource *self);
     60 void jb_resource_build (JBResource *self);
     61 void jb_resource_install (JBResource *self);
     62 void jb_resource_makedist (JBResource *self);
     63 void jb_resource_clean (JBResource *self);
     64 void jb_resource_distclean (JBResource *self);
     65 void jb_resource_maintainerclean (JBResource *self);
     66 
     67 void jb_resource_message_building (JBResource *self);
     68 
     69 #define JB_TYPE_GROUP_RESOURCE		(jb_group_resource_get_type())
     70 #define JB_GROUP_RESOURCE(obj)		(G_TYPE_CHECK_INSTANCE_CAST((obj), JB_TYPE_GROUP_RESOURCE, JBGroupResource))
     71 #define JB_IS_GROUP_RESOURCE(obj)	(G_TYPE_CHECK_INSTANCE_TYPE((obj), JB_TYPE_GROUP_RESOURCE))
     72 
     73 struct JBGroupResource
     74 {
     75   JBResource	parent;
     76 
     77   JBGroup	*group;
     78 };
     79 
     80 typedef struct
     81 {
     82   JBResourceClass	parent;
     83 } JBGroupResourceClass;
     84 
     85 GType jb_group_resource_get_type (void);
     86 
     87 #define JB_TYPE_OBJECT_RESOURCE			(jb_object_resource_get_type())
     88 #define JB_OBJECT_RESOURCE(obj)			(G_TYPE_CHECK_INSTANCE_CAST((obj), JB_TYPE_OBJECT_RESOURCE, JBObjectResource))
     89 #define JB_OBJECT_RESOURCE_CLASS(class)		(G_TYPE_CHECK_CLASS_CAST((class), JB_TYPE_OBJECT_RESOURCE, JBObjectResourceClass))
     90 #define JB_IS_OBJECT_RESOURCE(obj)		(G_TYPE_CHECK_INSTANCE_TYPE((obj), JB_TYPE_OBJECT_RESOURCE))
     91 #define JB_OBJECT_RESOURCE_GET_CLASS(obj)	(G_TYPE_INSTANCE_GET_CLASS((obj), JB_TYPE_OBJECT_RESOURCE, JBObjectResourceClass))
     92 
     93 typedef struct
     94 {
     95   JBResource	parent;
     96 
     97   JBObject	*object;
     98 } JBObjectResource;
     99 
    100 typedef struct
    101 {
    102   JBResourceClass	parent;
    103 
    104   char *		(*get_object_file) (JBObjectResource *self);
    105 } JBObjectResourceClass;
    106 
    107 GType jb_object_resource_get_type (void);
    108 
    109 #define JB_TYPE_TEMPLATE		(jb_template_get_type())
    110 #define JB_TEMPLATE(obj)		(G_TYPE_CHECK_INSTANCE_CAST((obj), JB_TYPE_TEMPLATE, JBTemplate))
    111 #define JB_IS_TEMPLATE(obj)		(G_TYPE_CHECK_INSTANCE_TYPE((obj), JB_TYPE_TEMPLATE))
    112 
    113 typedef struct
    114 {
    115   JBGroupResource	parent;
    116 
    117   char			*filename;
    118 } JBTemplate;
    119 
    120 typedef struct
    121 {
    122   JBGroupResourceClass	parent;
    123 } JBTemplateClass;
    124 
    125 GType jb_template_get_type (void);
    126 
    127 JBTemplate *jb_template_new (const char *filename);
    128 
    129 #define JB_TYPE_DATA_FILE		(jb_data_file_get_type())
    130 #define JB_DATA_FILE(obj)		(G_TYPE_CHECK_INSTANCE_CAST((obj), JB_TYPE_DATA_FILE, JBDataFile))
    131 #define JB_IS_DATA_FILE(obj)		(G_TYPE_CHECK_INSTANCE_TYPE((obj), JB_TYPE_DATA_FILE))
    132 
    133 typedef struct
    134 {
    135   JBGroupResource	parent;
    136 
    137   char			*filename;
    138 
    139   JBInstallOptions	*install_options;
    140 } JBDataFile;
    141 
    142 typedef struct
    143 {
    144   JBGroupResourceClass	parent;
    145 } JBDataFileClass;
    146 
    147 GType jb_data_file_get_type (void);
    148 
    149 JBDataFile *jb_data_file_new (const char *filename);
    150 
    151 #define JB_TYPE_SOURCE			(jb_source_get_type())
    152 #define JB_SOURCE(obj)			(G_TYPE_CHECK_INSTANCE_CAST((obj), JB_TYPE_SOURCE, JBSource))
    153 #define JB_IS_SOURCE(obj)		(G_TYPE_CHECK_INSTANCE_TYPE((obj), JB_TYPE_SOURCE))
    154 
    155 typedef struct
    156 {
    157   JBObjectResource	parent;
    158 
    159   char			*filename;
    160 } JBSource;
    161 
    162 typedef struct
    163 {
    164   JBObjectResourceClass	parent;
    165 } JBSourceClass;
    166 
    167 GType jb_source_get_type (void);
    168 
    169 JBSource *jb_source_new (const char *filename);
    170 
    171 #define JB_TYPE_GOB_CLASS		(jb_gob_class_get_type())
    172 #define JB_GOB_CLASS(obj)		(G_TYPE_CHECK_INSTANCE_CAST((obj), JB_TYPE_GOB_CLASS, JBGobClass))
    173 #define JB_IS_GOB_CLASS(obj)		(G_TYPE_CHECK_INSTANCE_TYPE((obj), JB_TYPE_GOB_CLASS))
    174 
    175 typedef struct
    176 {
    177   JBObjectResource	parent;
    178 
    179   char			*name;	/* Foo:Bar */
    180 } JBGobClass;
    181 
    182 typedef struct
    183 {
    184   JBObjectResourceClass	parent;
    185 } JBGobClassClass;
    186 
    187 GType jb_gob_class_get_type (void);
    188 
    189 JBGobClass *jb_gob_class_new (const char *name);
    190 
    191 #define JB_TYPE_INTLTOOL_FILE		(jb_intltool_file_get_type())
    192 #define JB_INTLTOOL_FILE(obj)		(G_TYPE_CHECK_INSTANCE_CAST((obj), JB_TYPE_INTLTOOL_FILE, JBIntltoolFile))
    193 #define JB_IS_INTLTOOL_FILE(obj)	(G_TYPE_CHECK_INSTANCE_TYPE((obj), JB_TYPE_INTLTOOL_FILE))
    194 
    195 typedef struct
    196 {
    197   JBGroupResource	parent;
    198 
    199   char			*type;
    200   char			*filename;
    201   char			*merge_flags;
    202 
    203   JBInstallOptions	*install_options;
    204 } JBIntltoolFile;
    205 
    206 typedef struct
    207 {
    208   JBGroupResourceClass	parent;
    209 } JBIntltoolFileClass;
    210 
    211 GType jb_intltool_file_get_type (void);
    212 
    213 JBIntltoolFile *jb_intltool_file_new (const char *type,
    214 				      const char *filename,
    215 				      const char *merge_flags);
    216 
    217 #define JB_TYPE_GCONF_SCHEMAS		(jb_gconf_schemas_get_type())
    218 #define JB_GCONF_SCHEMAS(obj)		(G_TYPE_CHECK_INSTANCE_CAST((obj), JB_TYPE_GCONF_SCHEMAS, JBGConfSchemas))
    219 #define JB_IS_GCONF_SCHEMAS(obj)	(G_TYPE_CHECK_INSTANCE_TYPE((obj), JB_TYPE_GCONF_SCHEMAS))
    220 
    221 typedef struct
    222 {
    223   JBIntltoolFile	parent;
    224 } JBGConfSchemas;
    225 
    226 typedef struct
    227 {
    228   JBIntltoolFileClass	parent;
    229 } JBGConfSchemasClass;
    230 
    231 GType jb_gconf_schemas_get_type (void);
    232 
    233 JBGConfSchemas *jb_gconf_schemas_new (const char *filename);
    234 
    235 #define JB_TYPE_GNOME_HELP		(jb_gnome_help_get_type())
    236 #define JB_GNOME_HELP(obj)		(G_TYPE_CHECK_INSTANCE_CAST((obj), JB_TYPE_GNOME_HELP, JBGnomeHelp))
    237 #define JB_IS_GNOME_HELP(obj)		(G_TYPE_CHECK_INSTANCE_TYPE((obj), JB_TYPE_GNOME_HELP))
    238 
    239 typedef struct
    240 {
    241   JBGroupResource	parent;
    242 
    243   char			*name;
    244   char			*lang;
    245   char			**entities;
    246 } JBGnomeHelp;
    247 
    248 typedef struct
    249 {
    250   JBGroupResourceClass	parent;
    251 } JBGnomeHelpClass;
    252 
    253 GType jb_gnome_help_get_type (void);
    254 
    255 JBGnomeHelp *jb_gnome_help_new (const char *lang, const char *entities);
    256 
    257 #define JB_TYPE_TRANSLATIONS		(jb_translations_get_type())
    258 #define JB_TRANSLATIONS(obj)		(G_TYPE_CHECK_INSTANCE_CAST((obj), JB_TYPE_TRANSLATIONS, JBTranslations))
    259 #define JB_IS_TRANSLATIONS(obj)		(G_TYPE_CHECK_INSTANCE_TYPE((obj), JB_TYPE_TRANSLATIONS))
    260 
    261 typedef struct
    262 {
    263   JBGroupResource	parent;
    264 
    265   char			*lang;
    266 } JBTranslations;
    267 
    268 typedef struct
    269 {
    270   JBGroupResourceClass	parent;
    271 } JBTranslationsClass;
    272 
    273 GType jb_translations_get_type (void);
    274 
    275 JBTranslations *jb_translations_new (const char *lang);
    276 
    277 #define JB_TYPE_RULE			(jb_rule_get_type())
    278 #define JB_RULE(obj)			(G_TYPE_CHECK_INSTANCE_CAST((obj), JB_TYPE_RULE, JBRule))
    279 #define JB_IS_RULE(obj)			(G_TYPE_CHECK_INSTANCE_TYPE((obj), JB_TYPE_RULE))
    280 
    281 typedef struct
    282 {
    283   JBGroupResource	parent;
    284 
    285   GSList		*dependencies;
    286   GSList		*output_files;
    287   GSList		*input_files;
    288 
    289   char			*build_message;
    290   GSList		*build_commands;
    291 
    292   char			*install_message;
    293   GSList		*install_commands;
    294 } JBRule;
    295 
    296 typedef struct
    297 {
    298   JBGroupResourceClass	parent;
    299 } JBRuleClass;
    300 
    301 GType jb_rule_get_type (void);
    302 
    303 JBRule *jb_rule_new (void);
    304 
    305 void jb_rule_add_dependency (JBRule *self, JBGroupResource *res);
    306 
    307 void jb_rule_add_input_file (JBRule *self, const char *format, ...) G_GNUC_PRINTF(2, 3);
    308 void jb_rule_add_output_file (JBRule *self, const char *format, ...) G_GNUC_PRINTF(2, 3);
    309 
    310 void jb_rule_set_build_message (JBRule *self, const char *format, ...) G_GNUC_PRINTF(2, 3);
    311 void jb_rule_add_build_command (JBRule *self, const char *format, ...) G_GNUC_PRINTF(2, 3);
    312 
    313 void jb_rule_set_install_message (JBRule *self, const char *format, ...) G_GNUC_PRINTF(2, 3);
    314 void jb_rule_add_install_command (JBRule *self, const char *format, ...) G_GNUC_PRINTF(2, 3);
    315 
    316 #define JB_TYPE_OBJECT			(jb_object_get_type())
    317 #define JB_OBJECT(obj)			(G_TYPE_CHECK_INSTANCE_CAST((obj), JB_TYPE_OBJECT, JBObject))
    318 #define JB_OBJECT_CLASS(class)		(G_TYPE_CHECK_CLASS_CAST((class), JB_TYPE_OBJECT, JBObjectClass))
    319 #define JB_IS_OBJECT(obj)		(G_TYPE_CHECK_INSTANCE_TYPE((obj), JB_TYPE_OBJECT))
    320 #define JB_OBJECT_GET_CLASS(obj)	(G_TYPE_INSTANCE_GET_CLASS((obj), JB_TYPE_OBJECT, JBObjectClass))
    321 
    322 struct JBObject
    323 {
    324   JBGroupResource	parent;
    325 
    326   char			*name;
    327 
    328   JBCompileOptions	*compile_options;
    329   JBInstallOptions	*install_options;
    330 
    331   GSList		*resources;
    332   GSList		*headers;
    333 };
    334 
    335 typedef struct
    336 {
    337   JBGroupResourceClass	parent;
    338 
    339   const char		*type;
    340 
    341   /* these fields can be NULL */
    342   const char		*stock_cflags;
    343   const char		*stock_cppflags;
    344   const char		*stock_ldflags;
    345   const char		*stock_libs;
    346 
    347   char *		(*get_output_file) (JBObject *self);
    348 } JBObjectClass;
    349 
    350 GType jb_object_get_type (void);
    351 
    352 void jb_object_add_source (JBObject *self, const char *name);
    353 void jb_object_add_sources (JBObject *self, const char *name, ...) G_GNUC_NULL_TERMINATED;
    354 
    355 #define JB_TYPE_PROGRAM			(jb_program_get_type())
    356 #define JB_PROGRAM(obj)			(G_TYPE_CHECK_INSTANCE_CAST((obj), JB_TYPE_PROGRAM, JBProgram))
    357 #define JB_IS_PROGRAM(obj)		(G_TYPE_CHECK_INSTANCE_TYPE((obj), JB_TYPE_PROGRAM))
    358 
    359 typedef struct
    360 {
    361   JBObject	parent;
    362 } JBProgram;
    363 
    364 typedef struct
    365 {
    366   JBObjectClass	parent;
    367 } JBProgramClass;
    368 
    369 GType jb_program_get_type (void);
    370 
    371 JBProgram *jb_program_new (const char *name);
    372 
    373 #define JB_TYPE_MODULE			(jb_module_get_type())
    374 #define JB_MODULE(obj)			(G_TYPE_CHECK_INSTANCE_CAST((obj), JB_TYPE_MODULE, JBModule))
    375 #define JB_IS_MODULE(obj)		(G_TYPE_CHECK_INSTANCE_TYPE((obj), JB_TYPE_MODULE))
    376 
    377 typedef struct
    378 {
    379   JBObject	parent;
    380 } JBModule;
    381 
    382 typedef struct
    383 {
    384   JBObjectClass	parent;
    385 } JBModuleClass;
    386 
    387 GType jb_module_get_type (void);
    388 
    389 JBModule *jb_module_new (const char *name);
    390 
    391 #endif /* _JB_RESOURCE_H */