Index: build/generator/swig/header_wrappers.py =================================================================== --- build/generator/swig/header_wrappers.py (revision 16643) +++ build/generator/swig/header_wrappers.py (working copy) @@ -103,10 +103,12 @@ _re_includes = re.compile(r'#\s*include\s*[<"]([^<">;\s]+)') """Regular expression for parsing structs from a C header file""" - _re_structs = re.compile(r'\btypedef\s+struct\s+(svn_[a-z_0-9]+_t)\b\s*(\{?)') + _re_structs = re.compile(r'\btypedef\s+(?:struct|union)\s+' + r'(svn_[a-z_0-9]+)\b\s*(\{?)') """Regular expression for parsing callbacks from a C header file""" - _re_callbacks = re.compile(r'\btypedef\s+struct\s+(svn_[a-z_0-9]+_t)\b|' + _re_callbacks = re.compile(r'\btypedef\s+(?:struct|union)\s+' + r'(svn_[a-z_0-9]+)\b|' r'\n\s*svn_error_t\s*\*\(\*(\w+)\)\s*\(([^)]+)\);') """Regular expression for parsing parameter names from a parameter list""" Index: subversion/include/svn_opt.h =================================================================== --- subversion/include/svn_opt.h (revision 16643) +++ subversion/include/svn_opt.h (working copy) @@ -201,15 +201,20 @@ svn_opt_revision_head }; +/** + * A revision value, which can be stored in one of @c svn_opt_revision_kind + * ways. + */ +typedef union svn_opt_revision_value { + svn_revnum_t number; + apr_time_t date; +} svn_opt_revision_value; /** A revision, specified in one of @c svn_opt_revision_kind ways. */ typedef struct svn_opt_revision_t { enum svn_opt_revision_kind kind; /**< See svn_opt_revision_kind */ - union { - svn_revnum_t number; - apr_time_t date; - } value; /**< Extra data qualifying the @c kind */ + svn_opt_revision_value value; /**< Extra data qualifying the @c kind */ } svn_opt_revision_t; Index: subversion/bindings/swig/python/tests/pool.py =================================================================== --- subversion/bindings/swig/python/tests/pool.py (revision 16643) +++ subversion/bindings/swig/python/tests/pool.py (working copy) @@ -68,9 +68,11 @@ """Check that integer struct members work correctly""" # Test good integer assignment operations - head_revision = svn.core.svn_opt_revision_t() - head_revision.kind = svn.core.svn_opt_revision_head - self.assertEqual(head_revision.kind, svn.core.svn_opt_revision_head) + rev = svn.core.svn_opt_revision_t() + rev.kind = svn.core.svn_opt_revision_number + rev.value.number = 10 + self.assertEqual(rev.kind, svn.core.svn_opt_revision_number) + self.assertEqual(rev.value.number, 10) # Test bad integer assignment operations def test_bad_assignment(self):