~apachelogger/+junk/plymouth-stop-kdm

« back to all changes in this revision

Viewing changes to scripts/new-object.sh

  • Committer: Ray Strode
  • Date: 2007-06-08 16:13:45 UTC
  • Revision ID: git-v1:b4aa90f11c7acc401d151b572fc52a3739cc0d74
add my scripts directory to git

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/bin/bash
 
2
 
 
3
NAMESPACE="Ply"
 
4
AUTHOR="YOUR NAME <youremail@here.com>"
 
5
#-----------------------------------------------------------------------------
 
6
uppercase ()
 
7
{
 
8
  echo "${1}" | tr 'a-z' 'A-Z'
 
9
}
 
10
 
 
11
lowercase ()
 
12
{
 
13
  echo "${1}" | tr 'A-Z' 'a-z'
 
14
}
 
15
 
 
16
change_character ()
 
17
{
 
18
  echo "${1}" | tr "${2}" "${3}"
 
19
}
 
20
 
 
21
delete_character ()
 
22
{
 
23
  echo "${1}" | tr -d "${2}"
 
24
}
 
25
 
 
26
#-----------------------------------------------------------------------------
 
27
MACRO_NAMESPACE="$(change_character $(uppercase ${NAMESPACE}) '-' '_')"
 
28
METHOD_NAMESPACE="$(change_character $(lowercase ${NAMESPACE}) '-' '_')"
 
29
 
 
30
OBJECT_NAME="$(delete_character ${1} '-')"
 
31
MACRO_OBJECT_NAME="$(change_character $(uppercase ${1}) '-' '_')"
 
32
METHOD_OBJECT_NAME="$(change_character $(lowercase ${1}) '-' '_')"
 
33
FULL_OBJECT_NAME="$(delete_character ${NAMESPACE} '-')${OBJECT_NAME}"
 
34
SHORT_OBJECT_NAME="$(lowercase $(echo ${1} | awk -F- '{print $NF}'))"
 
35
 
 
36
HEADER_FILENAME="$(lowercase ${NAMESPACE}-${1}).h"
 
37
HEADER_GUARD="$(change_character $(change_character $(uppercase ${HEADER_FILENAME}) '-' '_') '.' '_')" 
 
38
 
 
39
SOURCE_FILENAME="$(lowercase ${NAMESPACE}-${1}).c"
 
40
 
 
41
MACRO_PREFIX="${MACRO_NAMESPACE}_${MACRO_OBJECT_NAME}"
 
42
METHOD_PREFIX="${METHOD_NAMESPACE}_${METHOD_OBJECT_NAME}"
 
43
 
 
44
ERROR_QUARK="${METHOD_NAMESPACE}-$(lowercase ${1})"
 
45
HUMAN_READABLE_NAME=$(change_character $(lowercase ${1}) '-' ' ')
 
46
 
 
47
#-----------------------------------------------------------------------------
 
48
cat <<  > ${HEADER_FILENAME}
 
49
/* vim: ts=4 sw=2 expandtab autoindent cindent
 
50
 * ${HEADER_FILENAME} - ${2}
 
51
 *
 
52
 * Copyright (C) $(date +%Y) ${AUTHOR}
 
53
 *
 
54
 * This program is free software; you can redistribute it and/or modify
 
55
 * it under the terms of the GNU General Public License as published by
 
56
 * the Free Software Foundation; either version 2, or (at your option)
 
57
 * any later version.
 
58
 *
 
59
 * This program is distributed in the hope that it will be useful,
 
60
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 
61
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
62
 * GNU General Public License for more details.
 
63
 *
 
64
 * You should have received a copy of the GNU General Public License
 
65
 * along with this program; if not, write to the Free Software
 
66
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
 
67
 * 02111-1307, USA.  
 
68
 *
 
69
 * Written By: ${AUTHOR}
 
70
 */
 
71
#ifndef ${HEADER_GUARD}
 
72
#define ${HEADER_GUARD}
 
73
 
 
74
#include <glib.h>
 
75
#include <glib-object.h>
 
76
 
 
77
G_BEGIN_DECLS
 
78
 
 
79
#define ${MACRO_NAMESPACE}_TYPE_${MACRO_OBJECT_NAME} (${METHOD_PREFIX}_get_type ())
 
80
#define ${MACRO_PREFIX}(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), ${MACRO_NAMESPACE}_TYPE_${MACRO_OBJECT_NAME}, ${FULL_OBJECT_NAME}))
 
81
#define ${MACRO_PREFIX}_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), ${MACRO_NAMESPACE}_TYPE_${MACRO_OBJECT_NAME}, ${FULL_OBJECT_NAME}Class))
 
82
#define ${MACRO_NAMESPACE}_IS_${MACRO_OBJECT_NAME}(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ${MACRO_NAMESPACE}_TYPE_${MACRO_OBJECT_NAME}))
 
83
#define ${MACRO_NAMESPACE}_IS_${MACRO_OBJECT_NAME}_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), ${MACRO_NAMESPACE}_TYPE_${MACRO_OBJECT_NAME}))
 
84
#define ${MACRO_PREFIX}_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS((obj), ${MACRO_NAMESPACE}_TYPE_${MACRO_OBJECT_NAME}, ${FULL_OBJECT_NAME}Class))
 
85
#define ${MACRO_PREFIX}_ERROR (${METHOD_PREFIX}_error_quark ())
 
86
 
 
87
typedef struct _${FULL_OBJECT_NAME} ${FULL_OBJECT_NAME};
 
88
typedef struct _${FULL_OBJECT_NAME}Class ${FULL_OBJECT_NAME}Class;
 
89
typedef struct _${FULL_OBJECT_NAME}Private ${FULL_OBJECT_NAME}Private;
 
90
typedef enum _${FULL_OBJECT_NAME}Error ${FULL_OBJECT_NAME}Error;
 
91
 
 
92
struct _${FULL_OBJECT_NAME}
 
93
{
 
94
  GObject parent;
 
95
 
 
96
  /*< private >*/
 
97
  ${FULL_OBJECT_NAME}Private *priv;
 
98
};
 
99
 
 
100
struct _${FULL_OBJECT_NAME}Class
 
101
{
 
102
  GObjectClass parent_class;
 
103
 
 
104
  /* signals */
 
105
#if 0
 
106
  void (* foo) (${FULL_OBJECT_NAME} *${SHORT_OBJECT_NAME});
 
107
#endif
 
108
};
 
109
 
 
110
enum _${FULL_OBJECT_NAME}Error
 
111
{
 
112
  ${MACRO_PREFIX}_ERROR_GENERIC = 0,
 
113
};
 
114
 
 
115
#ifndef ${MACRO_NAMESPACE}_HIDE_FUNCTION_DECLARATIONS
 
116
GType ${METHOD_PREFIX}_get_type (void);
 
117
GQuark ${METHOD_PREFIX}_error_quark (void);
 
118
 
 
119
${FULL_OBJECT_NAME} *${METHOD_PREFIX}_new (void) G_GNUC_MALLOC;
 
120
#endif
 
121
 
 
122
G_END_DECLS
 
123
#endif /* ${HEADER_GUARD} */
 
124

 
125
#-----------------------------------------------------------------------------
 
126
cat <<  > ${SOURCE_FILENAME}
 
127
/* vim: ts=4 sw=2 expandtab autoindent cindent
 
128
 * ${SOURCE_FILENAME} - ${2}
 
129
 *
 
130
 * Copyright (C) $(date +%Y) ${AUTHOR}
 
131
 *
 
132
 * This program is free software; you can redistribute it and/or modify
 
133
 * it under the terms of the GNU General Public License as published by
 
134
 * the Free Software Foundation; either version 2, or (at your option)
 
135
 * any later version.
 
136
 *
 
137
 * This program is distributed in the hope that it will be useful,
 
138
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 
139
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
140
 * GNU General Public License for more details.
 
141
 *
 
142
 * You should have received a copy of the GNU General Public License
 
143
 * along with this program; if not, write to the Free Software
 
144
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
 
145
 * 02111-1307, USA.  
 
146
 *
 
147
 * Written by: ${AUTHOR}
 
148
 */
 
149
#include "config.h"
 
150
#include "${HEADER_FILENAME}"
 
151
 
 
152
#include <errno.h>
 
153
#include <string.h>
 
154
 
 
155
#include <glib.h>
 
156
#include <glib-object.h>
 
157
#include <glib/gi18n.h>
 
158
 
 
159
struct _${FULL_OBJECT_NAME}Private
 
160
{
 
161
  int bar;
 
162
};
 
163
 
 
164
static void ${METHOD_PREFIX}_finalize (GObject *object);
 
165
#if 0
 
166
static void ${METHOD_PREFIX}_class_install_signals (${FULL_OBJECT_NAME}Class *${SHORT_OBJECT_NAME}_class);
 
167
static void ${METHOD_PREFIX}_class_install_properties (${FULL_OBJECT_NAME}Class *${SHORT_OBJECT_NAME}_class);
 
168
 
 
169
static void ${METHOD_PREFIX}_set_property (GObject      *object,
 
170
                                           guint         prop_id,
 
171
                                           const GValue *value,
 
172
                                           GParamSpec   *pspec);
 
173
static void ${METHOD_PREFIX}_get_property (GObject    *object,
 
174
                                           guint       prop_id,
 
175
                                           GValue     *value,
 
176
                                           GParamSpec *pspec);
 
177
 
 
178
enum
 
179
{
 
180
  PROP_0 = 0,
 
181
  PROP_BAR
 
182
};
 
183
 
 
184
#define ${MACRO_PREFIX}_DEFAULT_BAR 1
 
185
 
 
186
enum
 
187
{
 
188
  FOO = 0,
 
189
  NUMBER_OF_SIGNALS
 
190
};
 
191
 
 
192
static guint ${METHOD_PREFIX}_signals[NUMBER_OF_SIGNALS];
 
193
#endif
 
194
 
 
195
G_DEFINE_TYPE (${FULL_OBJECT_NAME}, ${METHOD_PREFIX}, G_TYPE_OBJECT);
 
196
 
 
197
static void
 
198
${METHOD_PREFIX}_class_init (${FULL_OBJECT_NAME}Class *${SHORT_OBJECT_NAME}_class)
 
199
{
 
200
  GObjectClass *object_class;
 
201
 
 
202
  object_class = G_OBJECT_CLASS (${SHORT_OBJECT_NAME}_class);
 
203
 
 
204
  object_class->finalize = ${METHOD_PREFIX}_finalize;
 
205
  
 
206
#if 0
 
207
  ${METHOD_PREFIX}_class_install_properties (${SHORT_OBJECT_NAME}_class);
 
208
  ${METHOD_PREFIX}_class_install_signals (${SHORT_OBJECT_NAME}_class);
 
209
#endif
 
210
 
 
211
  g_type_class_add_private (${SHORT_OBJECT_NAME}_class, sizeof (${FULL_OBJECT_NAME}Private));
 
212
}
 
213
 
 
214
#if 0
 
215
static void
 
216
${METHOD_PREFIX}_class_install_signals (${FULL_OBJECT_NAME}Class *${SHORT_OBJECT_NAME}_class)
 
217
{
 
218
  GObjectClass *object_class;
 
219
 
 
220
  object_class = G_OBJECT_CLASS (${SHORT_OBJECT_NAME}_class);
 
221
 
 
222
  ${METHOD_PREFIX}_signals[FOO] =
 
223
    g_signal_new ("foo", G_OBJECT_CLASS_TYPE (object_class),
 
224
                  G_SIGNAL_RUN_LAST,
 
225
                  G_STRUCT_OFFSET (${FULL_OBJECT_NAME}Class, foo),
 
226
                  NULL, NULL, g_cclosure_marshal_VOID__VOID,
 
227
                  G_TYPE_NONE, 0);
 
228
  ${SHORT_OBJECT_NAME}_class->foo = NULL;
 
229
}
 
230
 
 
231
static void
 
232
${METHOD_PREFIX}_class_install_properties (${FULL_OBJECT_NAME}Class *${SHORT_OBJECT_NAME}_class)
 
233
{
 
234
  GObjectClass *object_class;
 
235
  GParamSpec *param_spec;
 
236
 
 
237
  object_class = G_OBJECT_CLASS (${SHORT_OBJECT_NAME}_class);
 
238
  object_class->set_property = ${METHOD_PREFIX}_set_property;
 
239
  object_class->get_property = ${METHOD_PREFIX}_get_property;
 
240
 
 
241
  param_spec = g_param_spec_int ("bar", _("Bar"),
 
242
                               _("The amount of bar"),
 
243
                               0, G_MAXINT,
 
244
                               ${MACRO_PREFIX}_DEFAULT_BAR,
 
245
                               G_PARAM_READWRITE | G_PARAM_CONSTRUCT);
 
246
  g_object_class_install_property (object_class, PROP_BAR, param_spec);
 
247
}
 
248
#endif
 
249
 
 
250
static void
 
251
${METHOD_PREFIX}_init (${FULL_OBJECT_NAME} *${SHORT_OBJECT_NAME})
 
252
{
 
253
  ${SHORT_OBJECT_NAME}->priv = G_TYPE_INSTANCE_GET_PRIVATE (${SHORT_OBJECT_NAME}, 
 
254
                                                            ${MACRO_NAMESPACE}_TYPE_${MACRO_OBJECT_NAME},
 
255
                                                            ${FULL_OBJECT_NAME}Private);
 
256
 
 
257
}
 
258
 
 
259
static void
 
260
${METHOD_PREFIX}_finalize (GObject *object)
 
261
{
 
262
  ${FULL_OBJECT_NAME} *${SHORT_OBJECT_NAME};
 
263
  GObjectClass *parent_class;
 
264
  
 
265
  ${SHORT_OBJECT_NAME} = ${MACRO_PREFIX} (object);
 
266
 
 
267
  parent_class = G_OBJECT_CLASS (${METHOD_PREFIX}_parent_class);
 
268
 
 
269
 
 
270
 
 
271
  if (parent_class->finalize != NULL)
 
272
    parent_class->finalize (object);
 
273
}
 
274
 
 
275
#if 0
 
276
static void 
 
277
${METHOD_PREFIX}_set_property (GObject      *object,
 
278
                               guint         prop_id,
 
279
                               const GValue *value,
 
280
                               GParamSpec   *pspec)
 
281
{
 
282
  ${FULL_OBJECT_NAME} *${SHORT_OBJECT_NAME} = ${MACRO_PREFIX} (object);
 
283
 
 
284
  switch (prop_id)
 
285
    {
 
286
      case PROP_BAR:
 
287
        ${METHOD_PREFIX}_set_bar (${SHORT_OBJECT_NAME}, 
 
288
                                  g_value_get_int (value));
 
289
        break;
 
290
      
 
291
      default:
 
292
        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 
293
    }
 
294
}
 
295
 
 
296
static void 
 
297
${METHOD_PREFIX}_get_property (GObject    *object,
 
298
                               guint       prop_id,
 
299
                               GValue     *value,
 
300
                               GParamSpec *pspec)
 
301
{
 
302
  ${FULL_OBJECT_NAME} *${SHORT_OBJECT_NAME} = ${MACRO_PREFIX} (object);
 
303
 
 
304
  switch (prop_id)
 
305
    {
 
306
      case PROP_BAR:
 
307
            g_value_set_int (value, 
 
308
                             ${METHOD_PREFIX}_get_bar (${SHORT_OBJECT_NAME}));
 
309
        break;
 
310
      
 
311
      default:
 
312
        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 
313
    }
 
314
}
 
315
#endif
 
316
 
 
317
GQuark
 
318
${METHOD_PREFIX}_error_quark (void)
 
319
{
 
320
  static GQuark error_quark = 0;
 
321
 
 
322
  if (error_quark == 0)
 
323
    error_quark = g_quark_from_static_string ("${ERROR_QUARK}");
 
324
 
 
325
  return error_quark;
 
326
}
 
327
 
 
328
${FULL_OBJECT_NAME} *
 
329
${METHOD_PREFIX}_new (void)
 
330
{
 
331
  ${FULL_OBJECT_NAME} *${SHORT_OBJECT_NAME};
 
332
 
 
333
  ${SHORT_OBJECT_NAME} = g_object_new (${MACRO_NAMESPACE}_TYPE_${MACRO_OBJECT_NAME}, NULL);
 
334
 
 
335
  return ${SHORT_OBJECT_NAME};
 
336
}
 
337
 
 
338
#if 0
 
339
void
 
340
${METHOD_PREFIX}_set_bar (${FULL_OBJECT_NAME} *${SHORT_OBJECT_NAME},
 
341
                          int                  bar)
 
342
{
 
343
  if (${SHORT_OBJECT_NAME}->priv->bar != bar)
 
344
    {
 
345
      ${SHORT_OBJECT_NAME}->priv->bar = bar;
 
346
      g_object_notify (G_OBJECT (${SHORT_OBJECT_NAME}), "bar");
 
347
    }
 
348
}
 
349
 
 
350
int
 
351
${METHOD_PREFIX}_get_bar (${FULL_OBJECT_NAME} *${SHORT_OBJECT_NAME})
 
352
{
 
353
  return ${SHORT_OBJECT_NAME}->priv->bar;
 
354
}
 
355
#endif
 
356
 
 
357
#ifdef ${MACRO_PREFIX}_ENABLE_TEST
 
358
 
 
359
#include <stdio.h>
 
360
#include <glib.h>
 
361
 
 
362
int
 
363
main (int    argc,
 
364
      char **argv)
 
365
{
 
366
  ${FULL_OBJECT_NAME} *${SHORT_OBJECT_NAME};
 
367
  int exit_code;
 
368
 
 
369
  g_log_set_always_fatal (G_LOG_LEVEL_ERROR 
 
370
                          | G_LOG_LEVEL_CRITICAL 
 
371
                          | G_LOG_LEVEL_WARNING);
 
372
 
 
373
  g_type_init ();
 
374
 
 
375
  ${SHORT_OBJECT_NAME} = ${METHOD_PREFIX}_new ();
 
376
 
 
377
  g_object_unref (${SHORT_OBJECT_NAME});
 
378
 
 
379
  exit_code = 0;
 
380
 
 
381
  return exit_code;
 
382
}
 
383
#endif /* ${MACRO_PREFIX}_ENABLE_TEST */
 
384

 
385
 
 
386
uncrustify -c $(dirname $0)/default.cfg ${HEADER_FILENAME}
 
387
mv ${HEADER_FILENAME}.uncrustify ${HEADER_FILENAME}
 
388
uncrustify -c $(dirname $0)/default.cfg ${SOURCE_FILENAME}
 
389
mv ${SOURCE_FILENAME}.uncrustify ${SOURCE_FILENAME}