summaryrefslogtreecommitdiffstats
path: root/bindings
diff options
context:
space:
mode:
authorBenjamin Dauvergne <bdauvergne@entrouvert.com>2010-06-06 14:03:57 +0000
committerBenjamin Dauvergne <bdauvergne@entrouvert.com>2010-06-06 14:03:57 +0000
commit52372fa4379d87a47330087934b8120794e66560 (patch)
tree4543006f2d02231b57cc0e90e73fc986d567ba3b /bindings
parent692e2985974febda3c83e87e63b7541d6b663f2f (diff)
downloadlasso-52372fa4379d87a47330087934b8120794e66560.tar.gz
lasso-52372fa4379d87a47330087934b8120794e66560.tar.xz
lasso-52372fa4379d87a47330087934b8120794e66560.zip
Bindings: keep retro compatibility for member field names
* Special kludge price go to PHP: methods name are insensitive so nothing to do here, BUT, if you use getters/setters then your objects fields can be case insensitive too ;-) (DNS, dns, DnS, dNs all maps to get_dns ).
Diffstat (limited to 'bindings')
-rw-r--r--bindings/java/lang.py27
-rw-r--r--bindings/python/lang.py3
-rw-r--r--bindings/utils.py8
3 files changed, 36 insertions, 2 deletions
diff --git a/bindings/java/lang.py b/bindings/java/lang.py
index 9d221192..64ec2e0f 100644
--- a/bindings/java/lang.py
+++ b/bindings/java/lang.py
@@ -286,7 +286,7 @@ protected static native void destroy(long cptr);
def JNI_member_function_prefix(self,c,m):
klassname = c.name[5:]
- mname = format_as_camelcase(m[1])
+ mname = old_format_as_camelcase(m[1])
return '%s_%s' % (klassname,mname)
def generate_JNI_member(self, c, fd):
@@ -804,7 +804,9 @@ protected static native void destroy(long cptr);
for m in c.members:
type, name, options = m
prefix = self.JNI_member_function_prefix(c,m)
- jname = format_as_camelcase('_'+name)
+ jname = format_as_camelcase(name)
+ jname = jname[0].capitalize() + jname[1:]
+ old_jname = old_format_as_camelcase('_' + name)
jtype = self.JNI_member_type(m)
if type == 'GList*' or type == 'const GList*':
print >> fd, ' public void set%s(List list) {' % jname
@@ -829,6 +831,20 @@ protected static native void destroy(long cptr);
print >> fd, ' public void removeFrom%s(%s value) {' % (jname,jtype)
print >> fd, ' LassoJNI.%s_remove(this, value);' % prefix
print >> fd, ' }'
+ if old_jname != jname:
+ print >> fd, ' public void set%s(List list) {' % old_jname
+ print >> fd, ' this.set%s(list);' % jname
+ print >> fd, ' }'
+ print >> fd, ' public List get%s() {' % old_jname
+ print >> fd, ' return this.get%s();' % jname
+ print >> fd, ' }'
+ print >> fd, ' public void addTo%s(%s value) {' % (old_jname,jtype)
+ print >> fd, ' this.addTo%s(value);' % jname
+ print >> fd, ' }'
+ if m[2].get('element-type') not in ('xmlNode*',):
+ print >> fd, ' public void removeFrom%s(%s value) {' % (old_jname,jtype)
+ print >> fd, ' this.removeFrom%s(value);' % jname
+ print >> fd, ' }'
elif type == 'GHashTable*':
print >> fd, ' public void set%s(Map map) {' % jname
print >> fd, ' %s[] arr = null;' % jtype
@@ -848,6 +864,13 @@ protected static native void destroy(long cptr);
print >> fd, ' public %s get%s() {' % (jtype,jname)
print >> fd, ' return LassoJNI.%s_get(this);' % prefix
print >> fd, ' }'
+ if old_jname != jname:
+ print >> fd, ' public void set%s(%s value) {' % (old_jname,jtype)
+ print >> fd, ' this.set%s(value);' % jname
+ print >> fd, ' }'
+ print >> fd, ' public %s get%s() {' % (jtype,old_jname)
+ print >> fd, ' return this.get%s();' % jname
+ print >> fd, ' }'
print >> fd, ' /* Methods */'
for m in c.methods:
return_type = self.JNI_return_type(m.return_type)
diff --git a/bindings/python/lang.py b/bindings/python/lang.py
index 54d6812f..c3b1a53f 100644
--- a/bindings/python/lang.py
+++ b/bindings/python/lang.py
@@ -430,6 +430,9 @@ if WSF_SUPPORT:
print >> fd, ' _lasso.%s_%s_set(self._cptr, value)' % (
klassname, mname)
print >> fd, ' %s = property(get_%s, set_%s)' % (mname, mname, mname)
+ old_mname = old_format_as_camelcase(m[1])
+ if mname != old_mname:
+ print >> fd, ' %s = %s' % (old_mname, mname)
print >> fd, ''
# first pass on methods, getting accessors
diff --git a/bindings/utils.py b/bindings/utils.py
index 90dab016..230f0859 100644
--- a/bindings/utils.py
+++ b/bindings/utils.py
@@ -59,6 +59,14 @@ def camelcase_to_list(varname):
last = x
return map(str.lower,map(''.join,l))
+def old_format_as_camelcase(var):
+ '''Format an identifier name into CamelCase'''
+ if '_' in var:
+ return format_underscore_as_camelcase(var)
+ if var[0] in string.uppercase:
+ var = var[0].lower() + var[1:]
+ var = re.sub(r'([a-z])(ID)([A-Z]|$)', r'\1Id\3', var) # replace standing ID by Id
+ return var
def format_as_camelcase(var):
'''Format an identifier name into CamelCase'''