From 8bd6c3e77853528b85640e8662466df89a3fe7a0 Mon Sep 17 00:00:00 2001 From: Kai Huuhko Date: Mon, 23 Jun 2014 18:25:04 +0300 Subject: [PATCH] Eolian: function name part deduplication --- scripts/eolian_generate.py | 33 ++++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/scripts/eolian_generate.py b/scripts/eolian_generate.py index 190bc7b..e0d54ba 100755 --- a/scripts/eolian_generate.py +++ b/scripts/eolian_generate.py @@ -99,6 +99,16 @@ def conv_cls_name(name): return name, name +def conv_func_name(prefix, func_name): + p = prefix.split("_") + f = func_name.split("_") + if p[-1] == f[0]: + p.pop() + prefix = "_".join(p) + func_name = "_".join(f) + return "_".join((prefix, func_name)) + + class Generator(object): tab = " " @@ -234,9 +244,9 @@ class Method(object): self.py_name += "_" if self.eo_prefix: - self.c_name = "_".join((self.eo_prefix, func.name)) + self.c_name = conv_func_name(self.eo_prefix, func.name) elif self.legacy_prefix: - self.c_name = "_".join((self.legacy_prefix, func.name)) + self.c_name = conv_func_name(self.legacy_prefix, func.name) else: raise ValueError("No prefix found for function %r" % (func)) @@ -450,9 +460,11 @@ class Property(object): m = self.setter = Method(eo_prefix, legacy_prefix) m.py_name = "__set__" if eo_prefix: - m.c_name = "_".join((eo_prefix, func.name, "set")) + fname = conv_func_name(eo_prefix, func.name) + m.c_name = "_".join((fname, "set")) elif legacy_prefix: - m.c_name = "_".join((legacy_prefix, func.name, "set")) + fname = conv_func_name(legacy_prefix, func.name) + m.c_name = "_".join((fname, "set")) else: raise ValueError("No prefix found for %r" % (func)) py_params = [] @@ -496,9 +508,11 @@ class Property(object): m = self.getter = Method(eo_prefix, legacy_prefix) m.py_name = "__get__" if eo_prefix: - m.c_name = "_".join((eo_prefix, func.name, "get")) + fname = conv_func_name(eo_prefix, func.name) + m.c_name = "_".join((fname, "get")) elif legacy_prefix: - m.c_name = "_".join((legacy_prefix, func.name, "get")) + fname = conv_func_name(legacy_prefix, func.name) + m.c_name = "_".join((fname, "get")) else: raise ValueError("No prefix found for %r" % (func)) for p in func.property_values_list: @@ -689,9 +703,9 @@ class Class(object): eo_prefix = self.eo_prefix = cls.eo_prefix legacy_prefix = self.legacy_prefix = cls.legacy_prefix - if eo_prefix: + if eo_prefix and eo_prefix != "null": prefix = eo_prefix - elif legacy_prefix: + elif legacy_prefix and legacy_prefix != "null": log.warn("Class %s has legacy prefix" % (cls.name)) prefix = legacy_prefix else: @@ -732,7 +746,8 @@ class Class(object): if eo_prefix: self.default_ctor = EoDefaultConstructor(eo_prefix, None) else: - self.default_ctor = LegacyDefaultConstructor(None, legacy_prefix) + self.default_ctor = LegacyDefaultConstructor( + None, legacy_prefix) props = cls.functions_list_get(eolian.FunctionType.PROPERTY) for prop in props: