]> git.draconx.ca Git - gob-dx.git/blobdiff - src/checks.c
Release 1.0.7
[gob-dx.git] / src / checks.c
index 9283309709a10ff696ca418dac220c3fc084614b..062d6357c2e11521ed3cbe1cbdb4dcc5967ea2fb 100644 (file)
 #include "checks.h"
 
 static void
-check_duplicate(Class *c, Node *node, char *id, int line_no,
+check_duplicate(Class *c, Node *node, const char *id, int line_no,
                gboolean underscore)
 {
        GList *l;
        for(l = c->nodes; l != NULL; l = g_list_next(l)) {
                Node *n = l->data;
-               char *nid;
+               const char *nid;
                int nline_no;
                gboolean here_underscore = FALSE;
                if(n->type == METHOD_NODE) {
@@ -183,12 +183,12 @@ check_bad_symbols(Class *c)
 }
 
 static void
-check_duplicate_named(Class *c, Node *node, char *id, int line_no)
+check_duplicate_named(Class *c, Node *node, const char *id, int line_no)
 {
        GList *l;
        for(l = c->nodes; l != NULL; l = g_list_next(l)) {
                Node *n = l->data;
-               char *nid;
+               const char *nid;
                int nline_no;
                if(n->type == METHOD_NODE) {
                        Method *m = (Method *)n;
@@ -582,3 +582,27 @@ count_initializers(Class *c)
        }
        return num;
 }
+
+gboolean
+find_get_type (Class *c)
+{
+       GList *l;
+       for(l = c->nodes; l != NULL; l = g_list_next(l)) {
+               Node *n = l->data;
+               Method *m = (Method *)n;
+               if(n->type == METHOD_NODE &&
+                  strcmp (m->id, "get_type") == 0) {
+                       if (m->method != REGULAR_METHOD ||
+                           m->scope != PUBLIC_SCOPE ||
+                           m->args != NULL) {
+                               error_printf (GOB_ERROR, m->line_no,
+                                             "get_type method must be a "
+                                             "regular public method with "
+                                             "no arguments");
+                       }
+                       return TRUE;
+               }
+       }
+
+       return FALSE;
+}