X-Git-Url: http://deadsoftware.ru/gitweb?p=dsw-obn.git;a=blobdiff_plain;f=generator.c;h=ff4896d3880de3b018213680a62c216a192e05da;hp=991b6dd83c416be4d19a81a0722c30f29d6e12d5;hb=89dfaf94ddbbc501020554232ce026b6584e8045;hpb=3818049ca3679e8fcc432345d41a2d930f7874e4 diff --git a/generator.c b/generator.c index 991b6dd..ff4896d 100644 --- a/generator.c +++ b/generator.c @@ -161,25 +161,31 @@ oberon_generator_get_full_name(char * name, int max_len, oberon_object_t * x) return; } - char parent[256]; - parent[0] = 0; - + int add_module_prefix; switch(x -> class) { case OBERON_CLASS_FIELD: case OBERON_CLASS_PARAM: case OBERON_CLASS_VAR_PARAM: /* В локальных областях префиксы излишни */ + add_module_prefix = 0; break; default: - oberon_generator_get_full_name(parent, 256, x -> parent); + add_module_prefix = 1; break; } + char parent[256]; + oberon_generator_get_full_name(parent, 256, x -> parent); + if(strlen(parent) > 0) { snprintf(name, max_len, "%s_%s", parent, x -> name); } + else if(add_module_prefix) + { + snprintf(name, max_len, "%s_%s", x -> module -> name, x -> name); + } else { snprintf(name, max_len, "%s", x -> name);