commit-gnue
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

r5915 - trunk/gnue-appserver/src/classrep


From: johannes
Subject: r5915 - trunk/gnue-appserver/src/classrep
Date: Wed, 7 Jul 2004 17:13:55 -0500 (CDT)

Author: johannes
Date: 2004-06-16 02:02:52 -0500 (Wed, 16 Jun 2004)
New Revision: 5915

Modified:
   trunk/gnue-appserver/src/classrep/Property.py
   trunk/gnue-appserver/src/classrep/helpers.py
Log:
Reference types won't fail if they're from a different module than the defining 
class.


Modified: trunk/gnue-appserver/src/classrep/Property.py
===================================================================
--- trunk/gnue-appserver/src/classrep/Property.py       2004-06-15 18:45:00 UTC 
(rev 5914)
+++ trunk/gnue-appserver/src/classrep/Property.py       2004-06-16 07:02:52 UTC 
(rev 5915)
@@ -222,7 +222,7 @@
     """
 
     res = helpers.verifyType (self.gnue_type, self.gnue_length,
-                              self.gnue_scale, self.module.classes)
+                              self.gnue_scale, self.module.modules)
     self.isReference     = res is not None
     self.referencedClass = res
     self.isValidated     = True

Modified: trunk/gnue-appserver/src/classrep/helpers.py
===================================================================
--- trunk/gnue-appserver/src/classrep/helpers.py        2004-06-15 18:45:00 UTC 
(rev 5914)
+++ trunk/gnue-appserver/src/classrep/helpers.py        2004-06-16 07:02:52 UTC 
(rev 5915)
@@ -84,34 +84,42 @@
 # Check if a given reference is valid
 # -----------------------------------------------------------------------------
 
-def verifyReference (reference, length, scale, classes):
+def verifyReference (reference, length, scale, modules):
   """
   This function verifies if @reference is a valid reference type. @length and
-  @scale must be None or zero and the given class dictionary (@classes) must
-  have a classe named @reference.
+  @scale must be None or zero and the given module dictionary must
+  have a classe named 'reference'.
+  @param reference: the classname to be verified
+  @param length: the length of the type definition
+  @param scale: the length of the type definition
+  @param modules: module dictionary to be used for lookups
+  @return: None if reference is an invalid classname, or the class object
+      otherwise.
   """
-  if classes.has_key (reference):
-    if length is not None and length:
-      raise TypeFormatError, u_("Reference types must not have a 'length'")
-    if scale is not None and scale:
-      raise TypeFormatError, u_("Reference types must not have a 'scale'")
+  for module in modules.values ():
+    if module.classes.has_key (reference):
+      if length is not None and length:
+        raise TypeFormatError, u_("Reference types must not have a 'length'")
+      if scale is not None and scale:
+        raise TypeFormatError, u_("Reference types must not have a 'scale'")
 
-    return True
-  else:
-    return False
+      return module.classes [reference]
 
+  return None
 
+
 # -----------------------------------------------------------------------------
 # Verify a given type
 # -----------------------------------------------------------------------------
 
-def verifyType (typename, length, scale, classes):
+def verifyType (typename, length, scale, modules):
   """
   This function verifies a given type, length and scale combination, optionally
-  using the given class dictionary for lookups of references.
+  using the given module dictionary for lookups of references.
   """
-  if verifyReference (typename, length, scale, classes):
-    return classes [typename]
+  ref = verifyReference (typename, length, scale, modules)
+  if ref is not None:
+    return ref
 
   else:
     verifyBasetype (typename, length, scale)





reply via email to

[Prev in Thread] Current Thread [Next in Thread]