# This file was automatically generated by SWIG (http://www.swig.org).
# Version 1.3.31
#
# Don't modify this file, modify the SWIG interface instead.
# This file is compatible with both classic and new-style classes.

import _Box2D2
import new
new_instancemethod = new.instancemethod
try:
    _swig_property = property
except NameError:
    pass # Python < 2.2 doesn't have 'property'.
def _swig_setattr_nondynamic(self,class_type,name,value,static=1):
    if (name == "thisown"): return self.this.own(value)
    if (name == "this"):
        if type(value).__name__ == 'PySwigObject':
            self.__dict__[name] = value
            return
    method = class_type.__swig_setmethods__.get(name,None)
    if method: return method(self,value)
    if (not static) or hasattr(self,name):
        self.__dict__[name] = value
    else:
        raise AttributeError("You cannot add attributes to %s" % self)

def _swig_setattr(self,class_type,name,value):
    return _swig_setattr_nondynamic(self,class_type,name,value,0)

def _swig_getattr(self,class_type,name):
    if (name == "thisown"): return self.this.own()
    method = class_type.__swig_getmethods__.get(name,None)
    if method: return method(self)
    raise AttributeError,name

def _swig_repr(self):
    try: strthis = "proxy of " + self.this.__repr__()
    except: strthis = ""
    return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,)

import types
try:
    _object = types.ObjectType
    _newclass = 1
except AttributeError:
    class _object : pass
    _newclass = 0
del types


try:
    import weakref
    weakref_proxy = weakref.proxy
except:
    weakref_proxy = lambda x: x



def b2Alloc(*args):
  """b2Alloc(int32 size) -> void"""
  return _Box2D2.b2Alloc(*args)

def b2Free(*args):
  """b2Free(void mem)"""
  return _Box2D2.b2Free(*args)
class b2Version(_object):
    """Proxy of C++ b2Version class"""
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, b2Version, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, b2Version, name)
    __repr__ = _swig_repr
    __swig_setmethods__["major"] = _Box2D2.b2Version_major_set
    __swig_getmethods__["major"] = _Box2D2.b2Version_major_get
    if _newclass:major = _swig_property(_Box2D2.b2Version_major_get, _Box2D2.b2Version_major_set)
    __swig_setmethods__["minor"] = _Box2D2.b2Version_minor_set
    __swig_getmethods__["minor"] = _Box2D2.b2Version_minor_get
    if _newclass:minor = _swig_property(_Box2D2.b2Version_minor_get, _Box2D2.b2Version_minor_set)
    __swig_setmethods__["revision"] = _Box2D2.b2Version_revision_set
    __swig_getmethods__["revision"] = _Box2D2.b2Version_revision_get
    if _newclass:revision = _swig_property(_Box2D2.b2Version_revision_get, _Box2D2.b2Version_revision_set)
    def __init__(self, *args): 
        """__init__(self) -> b2Version"""
        this = _Box2D2.new_b2Version(*args)
        try: self.this.append(this)
        except: self.this = this
    __swig_destroy__ = _Box2D2.delete_b2Version
    __del__ = lambda self : None;
b2Version_swigregister = _Box2D2.b2Version_swigregister
b2Version_swigregister(b2Version)
cvar = _Box2D2.cvar
b2_pi = cvar.b2_pi
b2_maxManifoldPoints = cvar.b2_maxManifoldPoints
b2_maxPolygonVertices = cvar.b2_maxPolygonVertices
b2_maxProxies = cvar.b2_maxProxies
b2_maxPairs = cvar.b2_maxPairs
b2_linearSlop = cvar.b2_linearSlop
b2_angularSlop = cvar.b2_angularSlop
b2_toiSlop = cvar.b2_toiSlop
b2_maxTOIContactsPerIsland = cvar.b2_maxTOIContactsPerIsland
b2_velocityThreshold = cvar.b2_velocityThreshold
b2_maxLinearCorrection = cvar.b2_maxLinearCorrection
b2_maxAngularCorrection = cvar.b2_maxAngularCorrection
b2_maxLinearVelocity = cvar.b2_maxLinearVelocity
b2_maxLinearVelocitySquared = cvar.b2_maxLinearVelocitySquared
b2_maxAngularVelocity = cvar.b2_maxAngularVelocity
b2_maxAngularVelocitySquared = cvar.b2_maxAngularVelocitySquared
b2_contactBaumgarte = cvar.b2_contactBaumgarte
b2_timeToSleep = cvar.b2_timeToSleep
b2_linearSleepTolerance = cvar.b2_linearSleepTolerance
b2_angularSleepTolerance = cvar.b2_angularSleepTolerance


def b2MixFriction(*args):
  """b2MixFriction(float32 friction1, float32 friction2) -> float32"""
  return _Box2D2.b2MixFriction(*args)

def b2MixRestitution(*args):
  """b2MixRestitution(float32 restitution1, float32 restitution2) -> float32"""
  return _Box2D2.b2MixRestitution(*args)

def b2IsValid(*args):
  """b2IsValid(float32 x) -> bool"""
  return _Box2D2.b2IsValid(*args)

def b2InvSqrt(*args):
  """b2InvSqrt(float32 x) -> float32"""
  return _Box2D2.b2InvSqrt(*args)
class b2Vec2(_object):
    """Proxy of C++ b2Vec2 class"""
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, b2Vec2, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, b2Vec2, name)
    __repr__ = _swig_repr
    def __init__(self, *args): 
        """
        __init__(self) -> b2Vec2
        __init__(self, float32 x, float32 y) -> b2Vec2
        """
        this = _Box2D2.new_b2Vec2(*args)
        try: self.this.append(this)
        except: self.this = this
    def SetZero(*args):
        """SetZero(self)"""
        return _Box2D2.b2Vec2_SetZero(*args)

    def Set(*args):
        """Set(self, float32 x_, float32 y_)"""
        return _Box2D2.b2Vec2_Set(*args)

    def __neg__(*args):
        """__neg__(self) -> b2Vec2"""
        return _Box2D2.b2Vec2___neg__(*args)

    def add_vector(*args):
        """add_vector(self, b2Vec2 v)"""
        return _Box2D2.b2Vec2_add_vector(*args)

    def sub_vector(*args):
        """sub_vector(self, b2Vec2 v)"""
        return _Box2D2.b2Vec2_sub_vector(*args)

    def mul_float(*args):
        """mul_float(self, float32 a)"""
        return _Box2D2.b2Vec2_mul_float(*args)

    def Length(*args):
        """Length(self) -> float32"""
        return _Box2D2.b2Vec2_Length(*args)

    def LengthSquared(*args):
        """LengthSquared(self) -> float32"""
        return _Box2D2.b2Vec2_LengthSquared(*args)

    def Normalize(*args):
        """Normalize(self) -> float32"""
        return _Box2D2.b2Vec2_Normalize(*args)

    def IsValid(*args):
        """IsValid(self) -> bool"""
        return _Box2D2.b2Vec2_IsValid(*args)

    __swig_setmethods__["x"] = _Box2D2.b2Vec2_x_set
    __swig_getmethods__["x"] = _Box2D2.b2Vec2_x_get
    if _newclass:x = _swig_property(_Box2D2.b2Vec2_x_get, _Box2D2.b2Vec2_x_set)
    __swig_setmethods__["y"] = _Box2D2.b2Vec2_y_set
    __swig_getmethods__["y"] = _Box2D2.b2Vec2_y_get
    if _newclass:y = _swig_property(_Box2D2.b2Vec2_y_get, _Box2D2.b2Vec2_y_set)
    def __repr__(self):
        return "b2Vec2(%g,%g)" % (self.x, self.y)
    def tuple(self):
        return (self.x, self.y)
    def fromTuple(self, tuple):
        self.x, self.y = tuple
        return self
    def copy(self):
        return b2Vec2(self.x, self.y)
    def __iadd__(self, other):
        self.add_vector(other)
        return self
    def __isub__(self, other):
        self.sub_vector(other)
        return self
    def __imul__(self, a):
        self.mul_float(a)
        return self
    def __idiv__(self, a):
        self.div_float(a)
        return self


    def __div__(*args):
        """__div__(self, float32 a) -> b2Vec2"""
        return _Box2D2.b2Vec2___div__(*args)

    def __mul__(*args):
        """__mul__(self, float32 a) -> b2Vec2"""
        return _Box2D2.b2Vec2___mul__(*args)

    def __add__(*args):
        """__add__(self, b2Vec2 other) -> b2Vec2"""
        return _Box2D2.b2Vec2___add__(*args)

    def __sub__(*args):
        """__sub__(self, b2Vec2 other) -> b2Vec2"""
        return _Box2D2.b2Vec2___sub__(*args)

    def __rmul__(*args):
        """__rmul__(self, float32 a) -> b2Vec2"""
        return _Box2D2.b2Vec2___rmul__(*args)

    def __rdiv__(*args):
        """__rdiv__(self, float32 a) -> b2Vec2"""
        return _Box2D2.b2Vec2___rdiv__(*args)

    def div_float(*args):
        """div_float(self, float32 a)"""
        return _Box2D2.b2Vec2_div_float(*args)

    __swig_destroy__ = _Box2D2.delete_b2Vec2
    __del__ = lambda self : None;
b2Vec2_swigregister = _Box2D2.b2Vec2_swigregister
b2Vec2_swigregister(b2Vec2)

class b2Mat22(_object):
    """Proxy of C++ b2Mat22 class"""
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, b2Mat22, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, b2Mat22, name)
    __repr__ = _swig_repr
    def __init__(self, *args): 
        """
        __init__(self) -> b2Mat22
        __init__(self, b2Vec2 c1, b2Vec2 c2) -> b2Mat22
        __init__(self, float32 a11, float32 a12, float32 a21, float32 a22) -> b2Mat22
        __init__(self, float32 angle) -> b2Mat22
        """
        this = _Box2D2.new_b2Mat22(*args)
        try: self.this.append(this)
        except: self.this = this
    def Set(*args):
        """
        Set(self, b2Vec2 c1, b2Vec2 c2)
        Set(self, float32 angle)
        """
        return _Box2D2.b2Mat22_Set(*args)

    def SetIdentity(*args):
        """SetIdentity(self)"""
        return _Box2D2.b2Mat22_SetIdentity(*args)

    def SetZero(*args):
        """SetZero(self)"""
        return _Box2D2.b2Mat22_SetZero(*args)

    def GetAngle(*args):
        """GetAngle(self) -> float32"""
        return _Box2D2.b2Mat22_GetAngle(*args)

    def Invert(*args):
        """Invert(self) -> b2Mat22"""
        return _Box2D2.b2Mat22_Invert(*args)

    def Solve(*args):
        """Solve(self, b2Vec2 b) -> b2Vec2"""
        return _Box2D2.b2Mat22_Solve(*args)

    __swig_setmethods__["col1"] = _Box2D2.b2Mat22_col1_set
    __swig_getmethods__["col1"] = _Box2D2.b2Mat22_col1_get
    if _newclass:col1 = _swig_property(_Box2D2.b2Mat22_col1_get, _Box2D2.b2Mat22_col1_set)
    __swig_setmethods__["col2"] = _Box2D2.b2Mat22_col2_set
    __swig_getmethods__["col2"] = _Box2D2.b2Mat22_col2_get
    if _newclass:col2 = _swig_property(_Box2D2.b2Mat22_col2_get, _Box2D2.b2Mat22_col2_set)
    def __repr__(self):
        return "b2Mat22(col1: %s col2: %s)" % (self.col1, self.col2)

    __swig_destroy__ = _Box2D2.delete_b2Mat22
    __del__ = lambda self : None;
b2Mat22_swigregister = _Box2D2.b2Mat22_swigregister
b2Mat22_swigregister(b2Mat22)

class b2XForm(_object):
    """Proxy of C++ b2XForm class"""
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, b2XForm, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, b2XForm, name)
    __repr__ = _swig_repr
    def __init__(self, *args): 
        """
        __init__(self) -> b2XForm
        __init__(self, b2Vec2 position, b2Mat22 R) -> b2XForm
        """
        this = _Box2D2.new_b2XForm(*args)
        try: self.this.append(this)
        except: self.this = this
    def SetIdentity(*args):
        """SetIdentity(self)"""
        return _Box2D2.b2XForm_SetIdentity(*args)

    __swig_setmethods__["position"] = _Box2D2.b2XForm_position_set
    __swig_getmethods__["position"] = _Box2D2.b2XForm_position_get
    if _newclass:position = _swig_property(_Box2D2.b2XForm_position_get, _Box2D2.b2XForm_position_set)
    __swig_setmethods__["R"] = _Box2D2.b2XForm_R_set
    __swig_getmethods__["R"] = _Box2D2.b2XForm_R_get
    if _newclass:R = _swig_property(_Box2D2.b2XForm_R_get, _Box2D2.b2XForm_R_set)
    __swig_destroy__ = _Box2D2.delete_b2XForm
    __del__ = lambda self : None;
b2XForm_swigregister = _Box2D2.b2XForm_swigregister
b2XForm_swigregister(b2XForm)

class b2Sweep(_object):
    """Proxy of C++ b2Sweep class"""
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, b2Sweep, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, b2Sweep, name)
    __repr__ = _swig_repr
    def GetXForm(*args):
        """GetXForm(self, b2XForm xf, float32 t)"""
        return _Box2D2.b2Sweep_GetXForm(*args)

    def Advance(*args):
        """Advance(self, float32 t)"""
        return _Box2D2.b2Sweep_Advance(*args)

    __swig_setmethods__["localCenter"] = _Box2D2.b2Sweep_localCenter_set
    __swig_getmethods__["localCenter"] = _Box2D2.b2Sweep_localCenter_get
    if _newclass:localCenter = _swig_property(_Box2D2.b2Sweep_localCenter_get, _Box2D2.b2Sweep_localCenter_set)
    __swig_setmethods__["c0"] = _Box2D2.b2Sweep_c0_set
    __swig_getmethods__["c0"] = _Box2D2.b2Sweep_c0_get
    if _newclass:c0 = _swig_property(_Box2D2.b2Sweep_c0_get, _Box2D2.b2Sweep_c0_set)
    __swig_setmethods__["c"] = _Box2D2.b2Sweep_c_set
    __swig_getmethods__["c"] = _Box2D2.b2Sweep_c_get
    if _newclass:c = _swig_property(_Box2D2.b2Sweep_c_get, _Box2D2.b2Sweep_c_set)
    __swig_setmethods__["a0"] = _Box2D2.b2Sweep_a0_set
    __swig_getmethods__["a0"] = _Box2D2.b2Sweep_a0_get
    if _newclass:a0 = _swig_property(_Box2D2.b2Sweep_a0_get, _Box2D2.b2Sweep_a0_set)
    __swig_setmethods__["a"] = _Box2D2.b2Sweep_a_set
    __swig_getmethods__["a"] = _Box2D2.b2Sweep_a_get
    if _newclass:a = _swig_property(_Box2D2.b2Sweep_a_get, _Box2D2.b2Sweep_a_set)
    __swig_setmethods__["t0"] = _Box2D2.b2Sweep_t0_set
    __swig_getmethods__["t0"] = _Box2D2.b2Sweep_t0_get
    if _newclass:t0 = _swig_property(_Box2D2.b2Sweep_t0_get, _Box2D2.b2Sweep_t0_set)
    def __init__(self, *args): 
        """__init__(self) -> b2Sweep"""
        this = _Box2D2.new_b2Sweep(*args)
        try: self.this.append(this)
        except: self.this = this
    __swig_destroy__ = _Box2D2.delete_b2Sweep
    __del__ = lambda self : None;
b2Sweep_swigregister = _Box2D2.b2Sweep_swigregister
b2Sweep_swigregister(b2Sweep)


def b2Dot(*args):
  """b2Dot(b2Vec2 a, b2Vec2 b) -> float32"""
  return _Box2D2.b2Dot(*args)

def b2sub(*args):
  """b2sub(b2Vec2 a, b2Vec2 b) -> b2Vec2"""
  return _Box2D2.b2sub(*args)

def b2mul(*args):
  """b2mul(float32 s, b2Vec2 a) -> b2Vec2"""
  return _Box2D2.b2mul(*args)

def b2equ(*args):
  """b2equ(b2Vec2 a, b2Vec2 b) -> bool"""
  return _Box2D2.b2equ(*args)

def b2DistanceSquared(*args):
  """b2DistanceSquared(b2Vec2 a, b2Vec2 b) -> float32"""
  return _Box2D2.b2DistanceSquared(*args)

def b2Min(*args):
  """b2Min(b2Vec2 a, b2Vec2 b) -> b2Vec2"""
  return _Box2D2.b2Min(*args)

def b2Max(*args):
  """b2Max(b2Vec2 a, b2Vec2 b) -> b2Vec2"""
  return _Box2D2.b2Max(*args)

def b2Clamp(*args):
  """b2Clamp(b2Vec2 a, b2Vec2 low, b2Vec2 high) -> b2Vec2"""
  return _Box2D2.b2Clamp(*args)
RAND_LIMIT = _Box2D2.RAND_LIMIT

def b2NextPowerOfTwo(*args):
  """b2NextPowerOfTwo(uint32 x) -> uint32"""
  return _Box2D2.b2NextPowerOfTwo(*args)

def b2IsPowerOfTwo(*args):
  """b2IsPowerOfTwo(uint32 x) -> bool"""
  return _Box2D2.b2IsPowerOfTwo(*args)
class b2ContactID(_object):
    """Proxy of C++ b2ContactID class"""
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, b2ContactID, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, b2ContactID, name)
    __repr__ = _swig_repr
    __swig_setmethods__["key"] = _Box2D2.b2ContactID_key_set
    __swig_getmethods__["key"] = _Box2D2.b2ContactID_key_get
    if _newclass:key = _swig_property(_Box2D2.b2ContactID_key_get, _Box2D2.b2ContactID_key_set)
    __swig_getmethods__["features"] = _Box2D2.b2ContactID_features_get
    if _newclass:features = _swig_property(_Box2D2.b2ContactID_features_get)
    def __repr__(self):
        return "b2ContactID(key: %d Features: \n\t%s)" % \
            (self.key, self.features)

    def __init__(self, *args): 
        """__init__(self) -> b2ContactID"""
        this = _Box2D2.new_b2ContactID(*args)
        try: self.this.append(this)
        except: self.this = this
    __swig_destroy__ = _Box2D2.delete_b2ContactID
    __del__ = lambda self : None;
b2ContactID_swigregister = _Box2D2.b2ContactID_swigregister
b2ContactID_swigregister(b2ContactID)
b2Vec2_zero = cvar.b2Vec2_zero
b2Mat22_identity = cvar.b2Mat22_identity
b2XForm_identity = cvar.b2XForm_identity

def b2Cross(*args):
  """
    b2Cross(b2Vec2 a, b2Vec2 b) -> float32
    b2Cross(b2Vec2 a, float32 s) -> b2Vec2
    b2Cross(float32 s, b2Vec2 a) -> b2Vec2
    """
  return _Box2D2.b2Cross(*args)

def b2add(*args):
  """
    b2add(b2Vec2 a, b2Vec2 b) -> b2Vec2
    b2add(b2Mat22 A, b2Mat22 B) -> b2Mat22
    """
  return _Box2D2.b2add(*args)

def b2Mul(*args):
  """
    b2Mul(b2Mat22 A, b2Vec2 v) -> b2Vec2
    b2Mul(b2Mat22 A, b2Mat22 B) -> b2Mat22
    b2Mul(b2XForm T, b2Vec2 v) -> b2Vec2
    """
  return _Box2D2.b2Mul(*args)

def b2MulT(*args):
  """
    b2MulT(b2Mat22 A, b2Vec2 v) -> b2Vec2
    b2MulT(b2Mat22 A, b2Mat22 B) -> b2Mat22
    b2MulT(b2XForm T, b2Vec2 v) -> b2Vec2
    """
  return _Box2D2.b2MulT(*args)

def b2Abs(*args):
  """
    b2Abs(float32 a) -> float32
    b2Abs(b2Vec2 a) -> b2Vec2
    b2Abs(b2Mat22 A) -> b2Mat22
    """
  return _Box2D2.b2Abs(*args)

def b2Random(*args):
  """
    b2Random() -> float32
    b2Random(float32 lo, float32 hi) -> float32
    """
  return _Box2D2.b2Random(*args)
b2_nullFeature = cvar.b2_nullFeature

class b2ContactID_features(_object):
    """Proxy of C++ b2ContactID_features class"""
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, b2ContactID_features, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, b2ContactID_features, name)
    __repr__ = _swig_repr
    __swig_setmethods__["referenceEdge"] = _Box2D2.b2ContactID_features_referenceEdge_set
    __swig_getmethods__["referenceEdge"] = _Box2D2.b2ContactID_features_referenceEdge_get
    if _newclass:referenceEdge = _swig_property(_Box2D2.b2ContactID_features_referenceEdge_get, _Box2D2.b2ContactID_features_referenceEdge_set)
    __swig_setmethods__["incidentEdge"] = _Box2D2.b2ContactID_features_incidentEdge_set
    __swig_getmethods__["incidentEdge"] = _Box2D2.b2ContactID_features_incidentEdge_get
    if _newclass:incidentEdge = _swig_property(_Box2D2.b2ContactID_features_incidentEdge_get, _Box2D2.b2ContactID_features_incidentEdge_set)
    __swig_setmethods__["incidentVertex"] = _Box2D2.b2ContactID_features_incidentVertex_set
    __swig_getmethods__["incidentVertex"] = _Box2D2.b2ContactID_features_incidentVertex_get
    if _newclass:incidentVertex = _swig_property(_Box2D2.b2ContactID_features_incidentVertex_get, _Box2D2.b2ContactID_features_incidentVertex_set)
    __swig_setmethods__["flip"] = _Box2D2.b2ContactID_features_flip_set
    __swig_getmethods__["flip"] = _Box2D2.b2ContactID_features_flip_get
    if _newclass:flip = _swig_property(_Box2D2.b2ContactID_features_flip_get, _Box2D2.b2ContactID_features_flip_set)
    def __repr__(self):
        return "b2ContactID::Features(\n\treferenceFace: %d incidentEdge: %d incidentVertex: %d flip: %d)" % \
            (self.referenceFace, self.incidentEdge, self.incidentVertex, self.flip)

    def __init__(self, *args): 
        """__init__(self) -> b2ContactID_features"""
        this = _Box2D2.new_b2ContactID_features(*args)
        try: self.this.append(this)
        except: self.this = this
    __swig_destroy__ = _Box2D2.delete_b2ContactID_features
    __del__ = lambda self : None;
b2ContactID_features_swigregister = _Box2D2.b2ContactID_features_swigregister
b2ContactID_features_swigregister(b2ContactID_features)

class b2ManifoldPoint(_object):
    """Proxy of C++ b2ManifoldPoint class"""
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, b2ManifoldPoint, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, b2ManifoldPoint, name)
    __repr__ = _swig_repr
    __swig_setmethods__["localPoint1"] = _Box2D2.b2ManifoldPoint_localPoint1_set
    __swig_getmethods__["localPoint1"] = _Box2D2.b2ManifoldPoint_localPoint1_get
    if _newclass:localPoint1 = _swig_property(_Box2D2.b2ManifoldPoint_localPoint1_get, _Box2D2.b2ManifoldPoint_localPoint1_set)
    __swig_setmethods__["localPoint2"] = _Box2D2.b2ManifoldPoint_localPoint2_set
    __swig_getmethods__["localPoint2"] = _Box2D2.b2ManifoldPoint_localPoint2_get
    if _newclass:localPoint2 = _swig_property(_Box2D2.b2ManifoldPoint_localPoint2_get, _Box2D2.b2ManifoldPoint_localPoint2_set)
    __swig_setmethods__["separation"] = _Box2D2.b2ManifoldPoint_separation_set
    __swig_getmethods__["separation"] = _Box2D2.b2ManifoldPoint_separation_get
    if _newclass:separation = _swig_property(_Box2D2.b2ManifoldPoint_separation_get, _Box2D2.b2ManifoldPoint_separation_set)
    __swig_setmethods__["normalImpulse"] = _Box2D2.b2ManifoldPoint_normalImpulse_set
    __swig_getmethods__["normalImpulse"] = _Box2D2.b2ManifoldPoint_normalImpulse_get
    if _newclass:normalImpulse = _swig_property(_Box2D2.b2ManifoldPoint_normalImpulse_get, _Box2D2.b2ManifoldPoint_normalImpulse_set)
    __swig_setmethods__["tangentImpulse"] = _Box2D2.b2ManifoldPoint_tangentImpulse_set
    __swig_getmethods__["tangentImpulse"] = _Box2D2.b2ManifoldPoint_tangentImpulse_get
    if _newclass:tangentImpulse = _swig_property(_Box2D2.b2ManifoldPoint_tangentImpulse_get, _Box2D2.b2ManifoldPoint_tangentImpulse_set)
    __swig_setmethods__["id"] = _Box2D2.b2ManifoldPoint_id_set
    __swig_getmethods__["id"] = _Box2D2.b2ManifoldPoint_id_get
    if _newclass:id = _swig_property(_Box2D2.b2ManifoldPoint_id_get, _Box2D2.b2ManifoldPoint_id_set)
    def __init__(self, *args): 
        """__init__(self) -> b2ManifoldPoint"""
        this = _Box2D2.new_b2ManifoldPoint(*args)
        try: self.this.append(this)
        except: self.this = this
    __swig_destroy__ = _Box2D2.delete_b2ManifoldPoint
    __del__ = lambda self : None;
b2ManifoldPoint_swigregister = _Box2D2.b2ManifoldPoint_swigregister
b2ManifoldPoint_swigregister(b2ManifoldPoint)

class b2Manifold(_object):
    """Proxy of C++ b2Manifold class"""
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, b2Manifold, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, b2Manifold, name)
    __repr__ = _swig_repr
    __swig_setmethods__["points"] = _Box2D2.b2Manifold_points_set
    __swig_getmethods__["points"] = _Box2D2.b2Manifold_points_get
    if _newclass:points = _swig_property(_Box2D2.b2Manifold_points_get, _Box2D2.b2Manifold_points_set)
    __swig_setmethods__["normal"] = _Box2D2.b2Manifold_normal_set
    __swig_getmethods__["normal"] = _Box2D2.b2Manifold_normal_get
    if _newclass:normal = _swig_property(_Box2D2.b2Manifold_normal_get, _Box2D2.b2Manifold_normal_set)
    __swig_setmethods__["pointCount"] = _Box2D2.b2Manifold_pointCount_set
    __swig_getmethods__["pointCount"] = _Box2D2.b2Manifold_pointCount_get
    if _newclass:pointCount = _swig_property(_Box2D2.b2Manifold_pointCount_get, _Box2D2.b2Manifold_pointCount_set)
    def __init__(self, *args): 
        """__init__(self) -> b2Manifold"""
        this = _Box2D2.new_b2Manifold(*args)
        try: self.this.append(this)
        except: self.this = this
    __swig_destroy__ = _Box2D2.delete_b2Manifold
    __del__ = lambda self : None;
b2Manifold_swigregister = _Box2D2.b2Manifold_swigregister
b2Manifold_swigregister(b2Manifold)

class b2Segment(_object):
    """Proxy of C++ b2Segment class"""
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, b2Segment, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, b2Segment, name)
    __repr__ = _swig_repr
    def TestSegment(*args):
        """TestSegment(self, float32 lambda, b2Vec2 normal, b2Segment segment, float32 maxLambda) -> bool"""
        return _Box2D2.b2Segment_TestSegment(*args)

    __swig_setmethods__["p1"] = _Box2D2.b2Segment_p1_set
    __swig_getmethods__["p1"] = _Box2D2.b2Segment_p1_get
    if _newclass:p1 = _swig_property(_Box2D2.b2Segment_p1_get, _Box2D2.b2Segment_p1_set)
    __swig_setmethods__["p2"] = _Box2D2.b2Segment_p2_set
    __swig_getmethods__["p2"] = _Box2D2.b2Segment_p2_get
    if _newclass:p2 = _swig_property(_Box2D2.b2Segment_p2_get, _Box2D2.b2Segment_p2_set)
    def __init__(self, *args): 
        """__init__(self) -> b2Segment"""
        this = _Box2D2.new_b2Segment(*args)
        try: self.this.append(this)
        except: self.this = this
    __swig_destroy__ = _Box2D2.delete_b2Segment
    __del__ = lambda self : None;
b2Segment_swigregister = _Box2D2.b2Segment_swigregister
b2Segment_swigregister(b2Segment)

class b2AABB(_object):
    """Proxy of C++ b2AABB class"""
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, b2AABB, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, b2AABB, name)
    __repr__ = _swig_repr
    def IsValid(*args):
        """IsValid(self) -> bool"""
        return _Box2D2.b2AABB_IsValid(*args)

    __swig_setmethods__["lowerBound"] = _Box2D2.b2AABB_lowerBound_set
    __swig_getmethods__["lowerBound"] = _Box2D2.b2AABB_lowerBound_get
    if _newclass:lowerBound = _swig_property(_Box2D2.b2AABB_lowerBound_get, _Box2D2.b2AABB_lowerBound_set)
    __swig_setmethods__["upperBound"] = _Box2D2.b2AABB_upperBound_set
    __swig_getmethods__["upperBound"] = _Box2D2.b2AABB_upperBound_get
    if _newclass:upperBound = _swig_property(_Box2D2.b2AABB_upperBound_get, _Box2D2.b2AABB_upperBound_set)
    def __init__(self, *args): 
        """__init__(self) -> b2AABB"""
        this = _Box2D2.new_b2AABB(*args)
        try: self.this.append(this)
        except: self.this = this
    __swig_destroy__ = _Box2D2.delete_b2AABB
    __del__ = lambda self : None;
b2AABB_swigregister = _Box2D2.b2AABB_swigregister
b2AABB_swigregister(b2AABB)

class b2OBB(_object):
    """Proxy of C++ b2OBB class"""
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, b2OBB, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, b2OBB, name)
    __repr__ = _swig_repr
    __swig_setmethods__["R"] = _Box2D2.b2OBB_R_set
    __swig_getmethods__["R"] = _Box2D2.b2OBB_R_get
    if _newclass:R = _swig_property(_Box2D2.b2OBB_R_get, _Box2D2.b2OBB_R_set)
    __swig_setmethods__["center"] = _Box2D2.b2OBB_center_set
    __swig_getmethods__["center"] = _Box2D2.b2OBB_center_get
    if _newclass:center = _swig_property(_Box2D2.b2OBB_center_get, _Box2D2.b2OBB_center_set)
    __swig_setmethods__["extents"] = _Box2D2.b2OBB_extents_set
    __swig_getmethods__["extents"] = _Box2D2.b2OBB_extents_get
    if _newclass:extents = _swig_property(_Box2D2.b2OBB_extents_get, _Box2D2.b2OBB_extents_set)
    def __init__(self, *args): 
        """__init__(self) -> b2OBB"""
        this = _Box2D2.new_b2OBB(*args)
        try: self.this.append(this)
        except: self.this = this
    __swig_destroy__ = _Box2D2.delete_b2OBB
    __del__ = lambda self : None;
b2OBB_swigregister = _Box2D2.b2OBB_swigregister
b2OBB_swigregister(b2OBB)


def b2CollideCircles(*args):
  """
    b2CollideCircles(b2Manifold manifold, b2CircleShape circle1, b2XForm xf1, 
        b2CircleShape circle2, b2XForm xf2)
    """
  return _Box2D2.b2CollideCircles(*args)

def b2CollidePolygonAndCircle(*args):
  """
    b2CollidePolygonAndCircle(b2Manifold manifold, b2PolygonShape polygon, b2XForm xf1, 
        b2CircleShape circle, b2XForm xf2)
    """
  return _Box2D2.b2CollidePolygonAndCircle(*args)

def b2CollidePolygons(*args):
  """
    b2CollidePolygons(b2Manifold manifold, b2PolygonShape polygon1, b2XForm xf1, 
        b2PolygonShape polygon2, b2XForm xf2)
    """
  return _Box2D2.b2CollidePolygons(*args)

def b2TimeOfImpact(*args):
  """b2TimeOfImpact(b2Shape shape1, b2Sweep sweep1, b2Shape shape2, b2Sweep sweep2) -> float32"""
  return _Box2D2.b2TimeOfImpact(*args)

def b2TestOverlap(*args):
  """b2TestOverlap(b2AABB a, b2AABB b) -> bool"""
  return _Box2D2.b2TestOverlap(*args)
class b2MassData(_object):
    """Proxy of C++ b2MassData class"""
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, b2MassData, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, b2MassData, name)
    __repr__ = _swig_repr
    __swig_setmethods__["mass"] = _Box2D2.b2MassData_mass_set
    __swig_getmethods__["mass"] = _Box2D2.b2MassData_mass_get
    if _newclass:mass = _swig_property(_Box2D2.b2MassData_mass_get, _Box2D2.b2MassData_mass_set)
    __swig_setmethods__["center"] = _Box2D2.b2MassData_center_set
    __swig_getmethods__["center"] = _Box2D2.b2MassData_center_get
    if _newclass:center = _swig_property(_Box2D2.b2MassData_center_get, _Box2D2.b2MassData_center_set)
    __swig_setmethods__["I"] = _Box2D2.b2MassData_I_set
    __swig_getmethods__["I"] = _Box2D2.b2MassData_I_get
    if _newclass:I = _swig_property(_Box2D2.b2MassData_I_get, _Box2D2.b2MassData_I_set)
    def __init__(self, *args): 
        """__init__(self) -> b2MassData"""
        this = _Box2D2.new_b2MassData(*args)
        try: self.this.append(this)
        except: self.this = this
    __swig_destroy__ = _Box2D2.delete_b2MassData
    __del__ = lambda self : None;
b2MassData_swigregister = _Box2D2.b2MassData_swigregister
b2MassData_swigregister(b2MassData)

def b2Distance(*args):
  """
    b2Distance(b2Vec2 a, b2Vec2 b) -> float32
    b2Distance(b2Vec2 x1, b2Vec2 x2, b2Shape shape1, b2XForm xf1, 
        b2Shape shape2, b2XForm xf2) -> float32
    """
  return _Box2D2.b2Distance(*args)

class b2FilterData(_object):
    """Proxy of C++ b2FilterData class"""
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, b2FilterData, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, b2FilterData, name)
    __repr__ = _swig_repr
    __swig_setmethods__["categoryBits"] = _Box2D2.b2FilterData_categoryBits_set
    __swig_getmethods__["categoryBits"] = _Box2D2.b2FilterData_categoryBits_get
    if _newclass:categoryBits = _swig_property(_Box2D2.b2FilterData_categoryBits_get, _Box2D2.b2FilterData_categoryBits_set)
    __swig_setmethods__["maskBits"] = _Box2D2.b2FilterData_maskBits_set
    __swig_getmethods__["maskBits"] = _Box2D2.b2FilterData_maskBits_get
    if _newclass:maskBits = _swig_property(_Box2D2.b2FilterData_maskBits_get, _Box2D2.b2FilterData_maskBits_set)
    __swig_setmethods__["groupIndex"] = _Box2D2.b2FilterData_groupIndex_set
    __swig_getmethods__["groupIndex"] = _Box2D2.b2FilterData_groupIndex_get
    if _newclass:groupIndex = _swig_property(_Box2D2.b2FilterData_groupIndex_get, _Box2D2.b2FilterData_groupIndex_set)
    def __init__(self, *args): 
        """__init__(self) -> b2FilterData"""
        this = _Box2D2.new_b2FilterData(*args)
        try: self.this.append(this)
        except: self.this = this
    __swig_destroy__ = _Box2D2.delete_b2FilterData
    __del__ = lambda self : None;
b2FilterData_swigregister = _Box2D2.b2FilterData_swigregister
b2FilterData_swigregister(b2FilterData)

e_unknownShape = _Box2D2.e_unknownShape
e_circleShape = _Box2D2.e_circleShape
e_polygonShape = _Box2D2.e_polygonShape
e_shapeTypeCount = _Box2D2.e_shapeTypeCount
class b2ShapeDef(_object):
    """Proxy of C++ b2ShapeDef class"""
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, b2ShapeDef, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, b2ShapeDef, name)
    __repr__ = _swig_repr
    def __init__(self, *args): 
        """__init__(self) -> b2ShapeDef"""
        this = _Box2D2.new_b2ShapeDef(*args)
        try: self.this.append(this)
        except: self.this = this
    __swig_destroy__ = _Box2D2.delete_b2ShapeDef
    __del__ = lambda self : None;
    __swig_setmethods__["type"] = _Box2D2.b2ShapeDef_type_set
    __swig_getmethods__["type"] = _Box2D2.b2ShapeDef_type_get
    if _newclass:type = _swig_property(_Box2D2.b2ShapeDef_type_get, _Box2D2.b2ShapeDef_type_set)
    __swig_setmethods__["userData"] = _Box2D2.b2ShapeDef_userData_set
    __swig_getmethods__["userData"] = _Box2D2.b2ShapeDef_userData_get
    if _newclass:userData = _swig_property(_Box2D2.b2ShapeDef_userData_get, _Box2D2.b2ShapeDef_userData_set)
    __swig_setmethods__["friction"] = _Box2D2.b2ShapeDef_friction_set
    __swig_getmethods__["friction"] = _Box2D2.b2ShapeDef_friction_get
    if _newclass:friction = _swig_property(_Box2D2.b2ShapeDef_friction_get, _Box2D2.b2ShapeDef_friction_set)
    __swig_setmethods__["restitution"] = _Box2D2.b2ShapeDef_restitution_set
    __swig_getmethods__["restitution"] = _Box2D2.b2ShapeDef_restitution_get
    if _newclass:restitution = _swig_property(_Box2D2.b2ShapeDef_restitution_get, _Box2D2.b2ShapeDef_restitution_set)
    __swig_setmethods__["density"] = _Box2D2.b2ShapeDef_density_set
    __swig_getmethods__["density"] = _Box2D2.b2ShapeDef_density_get
    if _newclass:density = _swig_property(_Box2D2.b2ShapeDef_density_get, _Box2D2.b2ShapeDef_density_set)
    __swig_setmethods__["isSensor"] = _Box2D2.b2ShapeDef_isSensor_set
    __swig_getmethods__["isSensor"] = _Box2D2.b2ShapeDef_isSensor_get
    if _newclass:isSensor = _swig_property(_Box2D2.b2ShapeDef_isSensor_get, _Box2D2.b2ShapeDef_isSensor_set)
    __swig_setmethods__["filter"] = _Box2D2.b2ShapeDef_filter_set
    __swig_getmethods__["filter"] = _Box2D2.b2ShapeDef_filter_get
    if _newclass:filter = _swig_property(_Box2D2.b2ShapeDef_filter_get, _Box2D2.b2ShapeDef_filter_set)
b2ShapeDef_swigregister = _Box2D2.b2ShapeDef_swigregister
b2ShapeDef_swigregister(b2ShapeDef)

class b2Shape(_object):
    """Proxy of C++ b2Shape class"""
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, b2Shape, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, b2Shape, name)
    def __init__(self): raise AttributeError, "No constructor defined"
    __repr__ = _swig_repr
    def GetType(*args):
        """GetType(self) -> int"""
        return _Box2D2.b2Shape_GetType(*args)

    def IsSensor(*args):
        """IsSensor(self) -> bool"""
        return _Box2D2.b2Shape_IsSensor(*args)

    def SetFilterData(*args):
        """SetFilterData(self, b2FilterData filter)"""
        return _Box2D2.b2Shape_SetFilterData(*args)

    def GetFilterData(*args):
        """GetFilterData(self) -> b2FilterData"""
        return _Box2D2.b2Shape_GetFilterData(*args)

    def GetBody(*args):
        """GetBody(self) -> b2Body"""
        return _Box2D2.b2Shape_GetBody(*args)

    def GetNext(*args):
        """GetNext(self) -> b2Shape"""
        return _Box2D2.b2Shape_GetNext(*args)

    def GetUserData(self): # override the C++ version as it does not work. 
        """Get the specified userData (m_userData)"""
        return self.pyGetUserData()


    def SetUserData(*args):
        """SetUserData(self, void data)"""
        return _Box2D2.b2Shape_SetUserData(*args)

    def TestPoint(*args):
        """TestPoint(self, b2XForm xf, b2Vec2 p) -> bool"""
        return _Box2D2.b2Shape_TestPoint(*args)

    def TestSegment(*args):
        """
        TestSegment(self, b2XForm xf, float32 lambda, b2Vec2 normal, b2Segment segment, 
            float32 maxLambda) -> bool
        """
        return _Box2D2.b2Shape_TestSegment(*args)

    def ComputeAABB(*args):
        """ComputeAABB(self, b2AABB aabb, b2XForm xf)"""
        return _Box2D2.b2Shape_ComputeAABB(*args)

    def ComputeSweptAABB(*args):
        """ComputeSweptAABB(self, b2AABB aabb, b2XForm xf1, b2XForm xf2)"""
        return _Box2D2.b2Shape_ComputeSweptAABB(*args)

    def ComputeMass(*args):
        """ComputeMass(self, b2MassData massData)"""
        return _Box2D2.b2Shape_ComputeMass(*args)

    def GetSweepRadius(*args):
        """GetSweepRadius(self) -> float32"""
        return _Box2D2.b2Shape_GetSweepRadius(*args)

    def GetFriction(*args):
        """GetFriction(self) -> float32"""
        return _Box2D2.b2Shape_GetFriction(*args)

    def GetRestitution(*args):
        """GetRestitution(self) -> float32"""
        return _Box2D2.b2Shape_GetRestitution(*args)

    def __repr__(self):
        return "b2Shape(from Body %s )" % (self.GetBody())
    def typeName(self):
        types = {  e_unknownShape   : "Unknown",
                    e_circleShape   : "Circle",
                    e_polygonShape  : "Polygon",
                    e_shapeTypeCount: "ShapeType" }
        return types[self.GetType()]
    def getAsType(self):
        """Return a typecasted version of the shape"""
        return (getattr(self, "as%s" % self.typeName())) ()

    def asCircle(*args):
        """asCircle(self) -> b2CircleShape"""
        return _Box2D2.b2Shape_asCircle(*args)

    def asPolygon(*args):
        """asPolygon(self) -> b2PolygonShape"""
        return _Box2D2.b2Shape_asPolygon(*args)

    def pyGetUserData(*args):
        """pyGetUserData(self) -> PyObject"""
        return _Box2D2.b2Shape_pyGetUserData(*args)

b2Shape_swigregister = _Box2D2.b2Shape_swigregister
b2Shape_swigregister(b2Shape)

def b2JointInfo(self):
    """Return a rather verbose string representation of a joint"""
    props = dir(self)
    ignoreList = ('this', 'thisown', 'next', 'prev', 'm_next', 'm_prev')
    info  = []
    for prop in dir(self):
        if prop[:2]=='__' or prop in ignoreList: continue
        if not callable(getattr(self, prop)): 
            info.append(prop + ":")
            info.append(str(getattr(self, prop)))
    return "%s(%s)" % (self.__class__.__name__, " ".join(info))

e_unknownJoint = _Box2D2.e_unknownJoint
e_revoluteJoint = _Box2D2.e_revoluteJoint
e_prismaticJoint = _Box2D2.e_prismaticJoint
e_distanceJoint = _Box2D2.e_distanceJoint
e_pulleyJoint = _Box2D2.e_pulleyJoint
e_mouseJoint = _Box2D2.e_mouseJoint
e_gearJoint = _Box2D2.e_gearJoint
e_inactiveLimit = _Box2D2.e_inactiveLimit
e_atLowerLimit = _Box2D2.e_atLowerLimit
e_atUpperLimit = _Box2D2.e_atUpperLimit
e_equalLimits = _Box2D2.e_equalLimits
class b2Jacobian(_object):
    """Proxy of C++ b2Jacobian class"""
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, b2Jacobian, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, b2Jacobian, name)
    __repr__ = _swig_repr
    __swig_setmethods__["linear1"] = _Box2D2.b2Jacobian_linear1_set
    __swig_getmethods__["linear1"] = _Box2D2.b2Jacobian_linear1_get
    if _newclass:linear1 = _swig_property(_Box2D2.b2Jacobian_linear1_get, _Box2D2.b2Jacobian_linear1_set)
    __swig_setmethods__["angular1"] = _Box2D2.b2Jacobian_angular1_set
    __swig_getmethods__["angular1"] = _Box2D2.b2Jacobian_angular1_get
    if _newclass:angular1 = _swig_property(_Box2D2.b2Jacobian_angular1_get, _Box2D2.b2Jacobian_angular1_set)
    __swig_setmethods__["linear2"] = _Box2D2.b2Jacobian_linear2_set
    __swig_getmethods__["linear2"] = _Box2D2.b2Jacobian_linear2_get
    if _newclass:linear2 = _swig_property(_Box2D2.b2Jacobian_linear2_get, _Box2D2.b2Jacobian_linear2_set)
    __swig_setmethods__["angular2"] = _Box2D2.b2Jacobian_angular2_set
    __swig_getmethods__["angular2"] = _Box2D2.b2Jacobian_angular2_get
    if _newclass:angular2 = _swig_property(_Box2D2.b2Jacobian_angular2_get, _Box2D2.b2Jacobian_angular2_set)
    def SetZero(*args):
        """SetZero(self)"""
        return _Box2D2.b2Jacobian_SetZero(*args)

    def Set(*args):
        """Set(self, b2Vec2 x1, float32 a1, b2Vec2 x2, float32 a2)"""
        return _Box2D2.b2Jacobian_Set(*args)

    def Compute(*args):
        """Compute(self, b2Vec2 x1, float32 a1, b2Vec2 x2, float32 a2) -> float32"""
        return _Box2D2.b2Jacobian_Compute(*args)

    def __repr__(self):
        return "b2Jacobian(linear1: %s: linear2: %s angular1: %s angular2: %s)" %\
            (self.linear1, self.linear2, self.angular1, self.angular2)

    def __init__(self, *args): 
        """__init__(self) -> b2Jacobian"""
        this = _Box2D2.new_b2Jacobian(*args)
        try: self.this.append(this)
        except: self.this = this
    __swig_destroy__ = _Box2D2.delete_b2Jacobian
    __del__ = lambda self : None;
b2Jacobian_swigregister = _Box2D2.b2Jacobian_swigregister
b2Jacobian_swigregister(b2Jacobian)

class b2JointEdge(_object):
    """Proxy of C++ b2JointEdge class"""
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, b2JointEdge, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, b2JointEdge, name)
    __repr__ = _swig_repr
    __swig_setmethods__["other"] = _Box2D2.b2JointEdge_other_set
    __swig_getmethods__["other"] = _Box2D2.b2JointEdge_other_get
    if _newclass:other = _swig_property(_Box2D2.b2JointEdge_other_get, _Box2D2.b2JointEdge_other_set)
    __swig_setmethods__["joint"] = _Box2D2.b2JointEdge_joint_set
    __swig_getmethods__["joint"] = _Box2D2.b2JointEdge_joint_get
    if _newclass:joint = _swig_property(_Box2D2.b2JointEdge_joint_get, _Box2D2.b2JointEdge_joint_set)
    __swig_setmethods__["prev"] = _Box2D2.b2JointEdge_prev_set
    __swig_getmethods__["prev"] = _Box2D2.b2JointEdge_prev_get
    if _newclass:prev = _swig_property(_Box2D2.b2JointEdge_prev_get, _Box2D2.b2JointEdge_prev_set)
    __swig_setmethods__["next"] = _Box2D2.b2JointEdge_next_set
    __swig_getmethods__["next"] = _Box2D2.b2JointEdge_next_get
    if _newclass:next = _swig_property(_Box2D2.b2JointEdge_next_get, _Box2D2.b2JointEdge_next_set)
    def __repr__(self):
        return "b2JointEdge(other: %s)" % (self.other)

    def __init__(self, *args): 
        """__init__(self) -> b2JointEdge"""
        this = _Box2D2.new_b2JointEdge(*args)
        try: self.this.append(this)
        except: self.this = this
    __swig_destroy__ = _Box2D2.delete_b2JointEdge
    __del__ = lambda self : None;
b2JointEdge_swigregister = _Box2D2.b2JointEdge_swigregister
b2JointEdge_swigregister(b2JointEdge)

class b2JointDef(_object):
    """Proxy of C++ b2JointDef class"""
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, b2JointDef, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, b2JointDef, name)
    __repr__ = _swig_repr
    def __init__(self, *args): 
        """__init__(self) -> b2JointDef"""
        this = _Box2D2.new_b2JointDef(*args)
        try: self.this.append(this)
        except: self.this = this
    __swig_setmethods__["type"] = _Box2D2.b2JointDef_type_set
    __swig_getmethods__["type"] = _Box2D2.b2JointDef_type_get
    if _newclass:type = _swig_property(_Box2D2.b2JointDef_type_get, _Box2D2.b2JointDef_type_set)
    __swig_setmethods__["userData"] = _Box2D2.b2JointDef_userData_set
    __swig_getmethods__["userData"] = _Box2D2.b2JointDef_userData_get
    if _newclass:userData = _swig_property(_Box2D2.b2JointDef_userData_get, _Box2D2.b2JointDef_userData_set)
    __swig_setmethods__["body1"] = _Box2D2.b2JointDef_body1_set
    __swig_getmethods__["body1"] = _Box2D2.b2JointDef_body1_get
    if _newclass:body1 = _swig_property(_Box2D2.b2JointDef_body1_get, _Box2D2.b2JointDef_body1_set)
    __swig_setmethods__["body2"] = _Box2D2.b2JointDef_body2_set
    __swig_getmethods__["body2"] = _Box2D2.b2JointDef_body2_get
    if _newclass:body2 = _swig_property(_Box2D2.b2JointDef_body2_get, _Box2D2.b2JointDef_body2_set)
    __swig_setmethods__["collideConnected"] = _Box2D2.b2JointDef_collideConnected_set
    __swig_getmethods__["collideConnected"] = _Box2D2.b2JointDef_collideConnected_get
    if _newclass:collideConnected = _swig_property(_Box2D2.b2JointDef_collideConnected_get, _Box2D2.b2JointDef_collideConnected_set)
    def __repr__(self):
        return "b2JointDef(body1: %s body2: %s)" % (self.body1, self.body2)
    def typeName(self):
        types = { e_unknownJoint  : "Unknown",
                  e_mouseJoint    : "Mouse", 
                  e_gearJoint     : "Gear",
                  e_distanceJoint : "Distance",
                  e_prismaticJoint: "Prismatic",
                  e_pulleyJoint   : "Pulley",
                  e_revoluteJoint : "Revolute" }
        return types[self.GetType()]

    __swig_destroy__ = _Box2D2.delete_b2JointDef
    __del__ = lambda self : None;
b2JointDef_swigregister = _Box2D2.b2JointDef_swigregister
b2JointDef_swigregister(b2JointDef)

class b2Joint(_object):
    """Proxy of C++ b2Joint class"""
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, b2Joint, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, b2Joint, name)
    def __init__(self): raise AttributeError, "No constructor defined"
    __repr__ = _swig_repr
    def GetType(*args):
        """GetType(self) -> int"""
        return _Box2D2.b2Joint_GetType(*args)

    def GetBody1(*args):
        """GetBody1(self) -> b2Body"""
        return _Box2D2.b2Joint_GetBody1(*args)

    def GetBody2(*args):
        """GetBody2(self) -> b2Body"""
        return _Box2D2.b2Joint_GetBody2(*args)

    def GetAnchor1(*args):
        """GetAnchor1(self) -> b2Vec2"""
        return _Box2D2.b2Joint_GetAnchor1(*args)

    def GetAnchor2(*args):
        """GetAnchor2(self) -> b2Vec2"""
        return _Box2D2.b2Joint_GetAnchor2(*args)

    def GetReactionForce(*args):
        """GetReactionForce(self) -> b2Vec2"""
        return _Box2D2.b2Joint_GetReactionForce(*args)

    def GetReactionTorque(*args):
        """GetReactionTorque(self) -> float32"""
        return _Box2D2.b2Joint_GetReactionTorque(*args)

    def GetNext(*args):
        """GetNext(self) -> b2Joint"""
        return _Box2D2.b2Joint_GetNext(*args)

    def GetUserData(self): # override the C++ version as it does not work. 
        """Get the specified userData (m_userData)"""
        return self.pyGetUserData()


    def SetUserData(*args):
        """SetUserData(self, void data)"""
        return _Box2D2.b2Joint_SetUserData(*args)

    def __repr__(self):
        return "b2Joint(m_body1: %s m_body2: %s getAsType(): %s)" % (self.m_body1, self.m_body2, self.getAsType())
    def typeName(self):
        types = { e_unknownJoint  : "Unknown",
                  e_mouseJoint    : "Mouse", 
                  e_gearJoint     : "Gear",
                  e_distanceJoint : "Distance",
                  e_prismaticJoint: "Prismatic",
                  e_pulleyJoint   : "Pulley",
                  e_revoluteJoint : "Revolute" }
        return types[self.GetType()]
    def getAsType(self):
        """Return a typecasted version of the joint"""
        return (getattr(self, "as%sJoint" % self.typeName())) ()

    def pyGetUserData(*args):
        """pyGetUserData(self) -> PyObject"""
        return _Box2D2.b2Joint_pyGetUserData(*args)

    def asMouseJoint(*args):
        """asMouseJoint(self) -> b2MouseJoint"""
        return _Box2D2.b2Joint_asMouseJoint(*args)

    def asGearJoint(*args):
        """asGearJoint(self) -> b2GearJoint"""
        return _Box2D2.b2Joint_asGearJoint(*args)

    def asDistanceJoint(*args):
        """asDistanceJoint(self) -> b2DistanceJoint"""
        return _Box2D2.b2Joint_asDistanceJoint(*args)

    def asPrismaticJoint(*args):
        """asPrismaticJoint(self) -> b2PrismaticJoint"""
        return _Box2D2.b2Joint_asPrismaticJoint(*args)

    def asPulleyJoint(*args):
        """asPulleyJoint(self) -> b2PulleyJoint"""
        return _Box2D2.b2Joint_asPulleyJoint(*args)

    def asRevoluteJoint(*args):
        """asRevoluteJoint(self) -> b2RevoluteJoint"""
        return _Box2D2.b2Joint_asRevoluteJoint(*args)

b2Joint_swigregister = _Box2D2.b2Joint_swigregister
b2Joint_swigregister(b2Joint)

class b2CircleDef(b2ShapeDef):
    """Proxy of C++ b2CircleDef class"""
    __swig_setmethods__ = {}
    for _s in [b2ShapeDef]: __swig_setmethods__.update(getattr(_s,'__swig_setmethods__',{}))
    __setattr__ = lambda self, name, value: _swig_setattr(self, b2CircleDef, name, value)
    __swig_getmethods__ = {}
    for _s in [b2ShapeDef]: __swig_getmethods__.update(getattr(_s,'__swig_getmethods__',{}))
    __getattr__ = lambda self, name: _swig_getattr(self, b2CircleDef, name)
    __repr__ = _swig_repr
    def __init__(self, *args): 
        """__init__(self) -> b2CircleDef"""
        this = _Box2D2.new_b2CircleDef(*args)
        try: self.this.append(this)
        except: self.this = this
    __swig_setmethods__["localPosition"] = _Box2D2.b2CircleDef_localPosition_set
    __swig_getmethods__["localPosition"] = _Box2D2.b2CircleDef_localPosition_get
    if _newclass:localPosition = _swig_property(_Box2D2.b2CircleDef_localPosition_get, _Box2D2.b2CircleDef_localPosition_set)
    __swig_setmethods__["radius"] = _Box2D2.b2CircleDef_radius_set
    __swig_getmethods__["radius"] = _Box2D2.b2CircleDef_radius_get
    if _newclass:radius = _swig_property(_Box2D2.b2CircleDef_radius_get, _Box2D2.b2CircleDef_radius_set)
    __swig_destroy__ = _Box2D2.delete_b2CircleDef
    __del__ = lambda self : None;
b2CircleDef_swigregister = _Box2D2.b2CircleDef_swigregister
b2CircleDef_swigregister(b2CircleDef)

class b2CircleShape(b2Shape):
    """Proxy of C++ b2CircleShape class"""
    __swig_setmethods__ = {}
    for _s in [b2Shape]: __swig_setmethods__.update(getattr(_s,'__swig_setmethods__',{}))
    __setattr__ = lambda self, name, value: _swig_setattr(self, b2CircleShape, name, value)
    __swig_getmethods__ = {}
    for _s in [b2Shape]: __swig_getmethods__.update(getattr(_s,'__swig_getmethods__',{}))
    __getattr__ = lambda self, name: _swig_getattr(self, b2CircleShape, name)
    def __init__(self): raise AttributeError, "No constructor defined"
    __repr__ = _swig_repr
    def TestPoint(*args):
        """TestPoint(self, b2XForm transform, b2Vec2 p) -> bool"""
        return _Box2D2.b2CircleShape_TestPoint(*args)

    def TestSegment(*args):
        """
        TestSegment(self, b2XForm transform, float32 lambda, b2Vec2 normal, b2Segment segment, 
            float32 maxLambda) -> bool
        """
        return _Box2D2.b2CircleShape_TestSegment(*args)

    def ComputeAABB(*args):
        """ComputeAABB(self, b2AABB aabb, b2XForm transform)"""
        return _Box2D2.b2CircleShape_ComputeAABB(*args)

    def ComputeSweptAABB(*args):
        """ComputeSweptAABB(self, b2AABB aabb, b2XForm transform1, b2XForm transform2)"""
        return _Box2D2.b2CircleShape_ComputeSweptAABB(*args)

    def ComputeMass(*args):
        """ComputeMass(self, b2MassData massData)"""
        return _Box2D2.b2CircleShape_ComputeMass(*args)

    def GetLocalPosition(*args):
        """GetLocalPosition(self) -> b2Vec2"""
        return _Box2D2.b2CircleShape_GetLocalPosition(*args)

    def GetRadius(*args):
        """GetRadius(self) -> float32"""
        return _Box2D2.b2CircleShape_GetRadius(*args)

    __swig_destroy__ = _Box2D2.delete_b2CircleShape
    __del__ = lambda self : None;
b2CircleShape_swigregister = _Box2D2.b2CircleShape_swigregister
b2CircleShape_swigregister(b2CircleShape)

class b2PolygonDef(b2ShapeDef):
    """Proxy of C++ b2PolygonDef class"""
    __swig_setmethods__ = {}
    for _s in [b2ShapeDef]: __swig_setmethods__.update(getattr(_s,'__swig_setmethods__',{}))
    __setattr__ = lambda self, name, value: _swig_setattr(self, b2PolygonDef, name, value)
    __swig_getmethods__ = {}
    for _s in [b2ShapeDef]: __swig_getmethods__.update(getattr(_s,'__swig_getmethods__',{}))
    __getattr__ = lambda self, name: _swig_getattr(self, b2PolygonDef, name)
    __repr__ = _swig_repr
    def __init__(self, *args): 
        """__init__(self) -> b2PolygonDef"""
        this = _Box2D2.new_b2PolygonDef(*args)
        try: self.this.append(this)
        except: self.this = this
    def SetAsBox(*args):
        """
        SetAsBox(self, float32 hx, float32 hy)
        SetAsBox(self, float32 hx, float32 hy, b2Vec2 center, float32 angle)
        """
        return _Box2D2.b2PolygonDef_SetAsBox(*args)

    __swig_setmethods__["vertices"] = _Box2D2.b2PolygonDef_vertices_set
    __swig_getmethods__["vertices"] = _Box2D2.b2PolygonDef_vertices_get
    if _newclass:vertices = _swig_property(_Box2D2.b2PolygonDef_vertices_get, _Box2D2.b2PolygonDef_vertices_set)
    __swig_setmethods__["vertexCount"] = _Box2D2.b2PolygonDef_vertexCount_set
    __swig_getmethods__["vertexCount"] = _Box2D2.b2PolygonDef_vertexCount_get
    if _newclass:vertexCount = _swig_property(_Box2D2.b2PolygonDef_vertexCount_get, _Box2D2.b2PolygonDef_vertexCount_set)
    def __repr__(self):
        return "b2PolygonDef(vertices: %s count: %d)" % (self.getVertices_tuple(), self.vertexCount)
    def getVertices_tuple(self):
        """Returns all of the vertices as a list of tuples [ (x1,y1), (x2,y2) ... (xN,yN) ]"""
        vertices = []
        for i in range(0, self.vertexCount):
            vertices.append( (self.getVertex(i).x, self.getVertex(i).y ) )
        return vertices
    def getVertices_b2Vec2(self):
        """Returns all of the vertices as a list of b2Vec2's [ (x1,y1), (x2,y2) ... (xN,yN) ]"""
        vertices = []
        for i in range(0, self.vertexCount):
            vertices.append(self.getVertex(i))
        return vertices
    def setVertices_tuple(self, vertices):
        """Sets all of the vertices (up to b2_maxPolygonVertices) given a tuple 
            in the format ( (x1,y1), (x2,y2) ... (xN,yN) )"""
        if len(vertices) > b2_maxPolygonVertices:
            raise ValueError
        self.vertexCount = len(vertices)
        for i in range(0, self.vertexCount):
            self.setVertex(i, vertices[i][0], vertices[i][1])
    def setVertices_b2Vec2(self, vertices):
        """Sets all of the vertices (up to b2_maxPolygonVertices) given a tuple 
            in the format ( (x1,y1), (x2,y2) ... (xN,yN) ) where each vertex
            is a b2Vec2"""
        if len(vertices) > b2_maxPolygonVertices:
            raise ValueError
        self.vertexCount = len(vertices)
        for i in range(0, self.vertexCount):
            self.setVertex(i, vertices[i])

    def getVertex(*args):
        """getVertex(self, uint16 vnum) -> b2Vec2"""
        return _Box2D2.b2PolygonDef_getVertex(*args)

    def setVertex(*args):
        """
        setVertex(self, uint16 vnum, b2Vec2 value)
        setVertex(self, uint16 vnum, float32 x, float32 y)
        """
        return _Box2D2.b2PolygonDef_setVertex(*args)

    __swig_destroy__ = _Box2D2.delete_b2PolygonDef
    __del__ = lambda self : None;
b2PolygonDef_swigregister = _Box2D2.b2PolygonDef_swigregister
b2PolygonDef_swigregister(b2PolygonDef)

class b2PolygonShape(b2Shape):
    """Proxy of C++ b2PolygonShape class"""
    __swig_setmethods__ = {}
    for _s in [b2Shape]: __swig_setmethods__.update(getattr(_s,'__swig_setmethods__',{}))
    __setattr__ = lambda self, name, value: _swig_setattr(self, b2PolygonShape, name, value)
    __swig_getmethods__ = {}
    for _s in [b2Shape]: __swig_getmethods__.update(getattr(_s,'__swig_getmethods__',{}))
    __getattr__ = lambda self, name: _swig_getattr(self, b2PolygonShape, name)
    def __init__(self): raise AttributeError, "No constructor defined"
    __repr__ = _swig_repr
    def TestPoint(*args):
        """TestPoint(self, b2XForm transform, b2Vec2 p) -> bool"""
        return _Box2D2.b2PolygonShape_TestPoint(*args)

    def TestSegment(*args):
        """
        TestSegment(self, b2XForm transform, float32 lambda, b2Vec2 normal, b2Segment segment, 
            float32 maxLambda) -> bool
        """
        return _Box2D2.b2PolygonShape_TestSegment(*args)

    def ComputeAABB(*args):
        """ComputeAABB(self, b2AABB aabb, b2XForm transform)"""
        return _Box2D2.b2PolygonShape_ComputeAABB(*args)

    def ComputeSweptAABB(*args):
        """ComputeSweptAABB(self, b2AABB aabb, b2XForm transform1, b2XForm transform2)"""
        return _Box2D2.b2PolygonShape_ComputeSweptAABB(*args)

    def ComputeMass(*args):
        """ComputeMass(self, b2MassData massData)"""
        return _Box2D2.b2PolygonShape_ComputeMass(*args)

    def GetOBB(*args):
        """GetOBB(self) -> b2OBB"""
        return _Box2D2.b2PolygonShape_GetOBB(*args)

    def GetCentroid(*args):
        """GetCentroid(self) -> b2Vec2"""
        return _Box2D2.b2PolygonShape_GetCentroid(*args)

    def GetVertexCount(*args):
        """GetVertexCount(self) -> int32"""
        return _Box2D2.b2PolygonShape_GetVertexCount(*args)

    def GetCoreVertices(*args):
        """GetCoreVertices(self) -> b2Vec2"""
        return _Box2D2.b2PolygonShape_GetCoreVertices(*args)

    def GetNormals(*args):
        """GetNormals(self) -> b2Vec2"""
        return _Box2D2.b2PolygonShape_GetNormals(*args)

    def GetFirstVertex(*args):
        """GetFirstVertex(self, b2XForm xf) -> b2Vec2"""
        return _Box2D2.b2PolygonShape_GetFirstVertex(*args)

    def Centroid(*args):
        """Centroid(self, b2XForm xf) -> b2Vec2"""
        return _Box2D2.b2PolygonShape_Centroid(*args)

    def Support(*args):
        """Support(self, b2XForm xf, b2Vec2 d) -> b2Vec2"""
        return _Box2D2.b2PolygonShape_Support(*args)

    def __repr__(self):
        return "b2PolygonShape(vertices: %s count: %d)" % (self.getVertices_tuple(), self.vertexCount)
    def getVertices_tuple(self):
        """Returns all of the vertices as a list of tuples [ (x1,y1), (x2,y2) ... (xN,yN) ]"""
        vertices = []
        for i in range(0, self.vertexCount):
            vertices.append( (self.getVertex(i).x, self.getVertex(i).y ) )
        return vertices
    def getVertices_b2Vec2(self):
        """Returns all of the vertices as a list of b2Vec2's [ (x1,y1), (x2,y2) ... (xN,yN) ]"""
        vertices = []
        for i in range(0, self.GetVertexCount()):
            vertices.append(self.getVertex(i))
        return vertices

    def getVertex(*args):
        """getVertex(self, uint16 vnum) -> b2Vec2"""
        return _Box2D2.b2PolygonShape_getVertex(*args)

    __swig_destroy__ = _Box2D2.delete_b2PolygonShape
    __del__ = lambda self : None;
b2PolygonShape_swigregister = _Box2D2.b2PolygonShape_swigregister
b2PolygonShape_swigregister(b2PolygonShape)

class b2Pair(_object):
    """Proxy of C++ b2Pair class"""
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, b2Pair, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, b2Pair, name)
    __repr__ = _swig_repr
    e_pairBuffered = _Box2D2.b2Pair_e_pairBuffered
    e_pairRemoved = _Box2D2.b2Pair_e_pairRemoved
    e_pairFinal = _Box2D2.b2Pair_e_pairFinal
    def SetBuffered(*args):
        """SetBuffered(self)"""
        return _Box2D2.b2Pair_SetBuffered(*args)

    def ClearBuffered(*args):
        """ClearBuffered(self)"""
        return _Box2D2.b2Pair_ClearBuffered(*args)

    def IsBuffered(*args):
        """IsBuffered(self) -> bool"""
        return _Box2D2.b2Pair_IsBuffered(*args)

    def SetRemoved(*args):
        """SetRemoved(self)"""
        return _Box2D2.b2Pair_SetRemoved(*args)

    def ClearRemoved(*args):
        """ClearRemoved(self)"""
        return _Box2D2.b2Pair_ClearRemoved(*args)

    def IsRemoved(*args):
        """IsRemoved(self) -> bool"""
        return _Box2D2.b2Pair_IsRemoved(*args)

    def SetFinal(*args):
        """SetFinal(self)"""
        return _Box2D2.b2Pair_SetFinal(*args)

    def IsFinal(*args):
        """IsFinal(self) -> bool"""
        return _Box2D2.b2Pair_IsFinal(*args)

    __swig_setmethods__["userData"] = _Box2D2.b2Pair_userData_set
    __swig_getmethods__["userData"] = _Box2D2.b2Pair_userData_get
    if _newclass:userData = _swig_property(_Box2D2.b2Pair_userData_get, _Box2D2.b2Pair_userData_set)
    __swig_setmethods__["proxyId1"] = _Box2D2.b2Pair_proxyId1_set
    __swig_getmethods__["proxyId1"] = _Box2D2.b2Pair_proxyId1_get
    if _newclass:proxyId1 = _swig_property(_Box2D2.b2Pair_proxyId1_get, _Box2D2.b2Pair_proxyId1_set)
    __swig_setmethods__["proxyId2"] = _Box2D2.b2Pair_proxyId2_set
    __swig_getmethods__["proxyId2"] = _Box2D2.b2Pair_proxyId2_get
    if _newclass:proxyId2 = _swig_property(_Box2D2.b2Pair_proxyId2_get, _Box2D2.b2Pair_proxyId2_set)
    __swig_setmethods__["next"] = _Box2D2.b2Pair_next_set
    __swig_getmethods__["next"] = _Box2D2.b2Pair_next_get
    if _newclass:next = _swig_property(_Box2D2.b2Pair_next_get, _Box2D2.b2Pair_next_set)
    __swig_setmethods__["status"] = _Box2D2.b2Pair_status_set
    __swig_getmethods__["status"] = _Box2D2.b2Pair_status_get
    if _newclass:status = _swig_property(_Box2D2.b2Pair_status_get, _Box2D2.b2Pair_status_set)
    def __init__(self, *args): 
        """__init__(self) -> b2Pair"""
        this = _Box2D2.new_b2Pair(*args)
        try: self.this.append(this)
        except: self.this = this
    __swig_destroy__ = _Box2D2.delete_b2Pair
    __del__ = lambda self : None;
b2Pair_swigregister = _Box2D2.b2Pair_swigregister
b2Pair_swigregister(b2Pair)
b2_nullPair = cvar.b2_nullPair
b2_nullProxy = cvar.b2_nullProxy
b2_tableCapacity = cvar.b2_tableCapacity
b2_tableMask = cvar.b2_tableMask

class b2BufferedPair(_object):
    """Proxy of C++ b2BufferedPair class"""
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, b2BufferedPair, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, b2BufferedPair, name)
    __repr__ = _swig_repr
    __swig_setmethods__["proxyId1"] = _Box2D2.b2BufferedPair_proxyId1_set
    __swig_getmethods__["proxyId1"] = _Box2D2.b2BufferedPair_proxyId1_get
    if _newclass:proxyId1 = _swig_property(_Box2D2.b2BufferedPair_proxyId1_get, _Box2D2.b2BufferedPair_proxyId1_set)
    __swig_setmethods__["proxyId2"] = _Box2D2.b2BufferedPair_proxyId2_set
    __swig_getmethods__["proxyId2"] = _Box2D2.b2BufferedPair_proxyId2_get
    if _newclass:proxyId2 = _swig_property(_Box2D2.b2BufferedPair_proxyId2_get, _Box2D2.b2BufferedPair_proxyId2_set)
    def __init__(self, *args): 
        """__init__(self) -> b2BufferedPair"""
        this = _Box2D2.new_b2BufferedPair(*args)
        try: self.this.append(this)
        except: self.this = this
    __swig_destroy__ = _Box2D2.delete_b2BufferedPair
    __del__ = lambda self : None;
b2BufferedPair_swigregister = _Box2D2.b2BufferedPair_swigregister
b2BufferedPair_swigregister(b2BufferedPair)

class b2PairCallback(_object):
    """Proxy of C++ b2PairCallback class"""
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, b2PairCallback, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, b2PairCallback, name)
    def __init__(self): raise AttributeError, "No constructor defined"
    __repr__ = _swig_repr
    __swig_destroy__ = _Box2D2.delete_b2PairCallback
    __del__ = lambda self : None;
    def PairAdded(*args):
        """PairAdded(self, void proxyUserData1, void proxyUserData2) -> void"""
        return _Box2D2.b2PairCallback_PairAdded(*args)

    def PairRemoved(*args):
        """PairRemoved(self, void proxyUserData1, void proxyUserData2, void pairUserData)"""
        return _Box2D2.b2PairCallback_PairRemoved(*args)

b2PairCallback_swigregister = _Box2D2.b2PairCallback_swigregister
b2PairCallback_swigregister(b2PairCallback)

class b2PairManager(_object):
    """Proxy of C++ b2PairManager class"""
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, b2PairManager, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, b2PairManager, name)
    __repr__ = _swig_repr
    def __init__(self, *args): 
        """__init__(self) -> b2PairManager"""
        this = _Box2D2.new_b2PairManager(*args)
        try: self.this.append(this)
        except: self.this = this
    def Initialize(*args):
        """Initialize(self, b2BroadPhase broadPhase, b2PairCallback callback)"""
        return _Box2D2.b2PairManager_Initialize(*args)

    def AddBufferedPair(*args):
        """AddBufferedPair(self, int32 proxyId1, int32 proxyId2)"""
        return _Box2D2.b2PairManager_AddBufferedPair(*args)

    def RemoveBufferedPair(*args):
        """RemoveBufferedPair(self, int32 proxyId1, int32 proxyId2)"""
        return _Box2D2.b2PairManager_RemoveBufferedPair(*args)

    def Commit(*args):
        """Commit(self)"""
        return _Box2D2.b2PairManager_Commit(*args)

    __swig_setmethods__["m_broadPhase"] = _Box2D2.b2PairManager_m_broadPhase_set
    __swig_getmethods__["m_broadPhase"] = _Box2D2.b2PairManager_m_broadPhase_get
    if _newclass:m_broadPhase = _swig_property(_Box2D2.b2PairManager_m_broadPhase_get, _Box2D2.b2PairManager_m_broadPhase_set)
    __swig_setmethods__["m_callback"] = _Box2D2.b2PairManager_m_callback_set
    __swig_getmethods__["m_callback"] = _Box2D2.b2PairManager_m_callback_get
    if _newclass:m_callback = _swig_property(_Box2D2.b2PairManager_m_callback_get, _Box2D2.b2PairManager_m_callback_set)
    __swig_setmethods__["m_pairs"] = _Box2D2.b2PairManager_m_pairs_set
    __swig_getmethods__["m_pairs"] = _Box2D2.b2PairManager_m_pairs_get
    if _newclass:m_pairs = _swig_property(_Box2D2.b2PairManager_m_pairs_get, _Box2D2.b2PairManager_m_pairs_set)
    __swig_setmethods__["m_freePair"] = _Box2D2.b2PairManager_m_freePair_set
    __swig_getmethods__["m_freePair"] = _Box2D2.b2PairManager_m_freePair_get
    if _newclass:m_freePair = _swig_property(_Box2D2.b2PairManager_m_freePair_get, _Box2D2.b2PairManager_m_freePair_set)
    __swig_setmethods__["m_pairCount"] = _Box2D2.b2PairManager_m_pairCount_set
    __swig_getmethods__["m_pairCount"] = _Box2D2.b2PairManager_m_pairCount_get
    if _newclass:m_pairCount = _swig_property(_Box2D2.b2PairManager_m_pairCount_get, _Box2D2.b2PairManager_m_pairCount_set)
    __swig_setmethods__["m_pairBuffer"] = _Box2D2.b2PairManager_m_pairBuffer_set
    __swig_getmethods__["m_pairBuffer"] = _Box2D2.b2PairManager_m_pairBuffer_get
    if _newclass:m_pairBuffer = _swig_property(_Box2D2.b2PairManager_m_pairBuffer_get, _Box2D2.b2PairManager_m_pairBuffer_set)
    __swig_setmethods__["m_pairBufferCount"] = _Box2D2.b2PairManager_m_pairBufferCount_set
    __swig_getmethods__["m_pairBufferCount"] = _Box2D2.b2PairManager_m_pairBufferCount_get
    if _newclass:m_pairBufferCount = _swig_property(_Box2D2.b2PairManager_m_pairBufferCount_get, _Box2D2.b2PairManager_m_pairBufferCount_set)
    __swig_setmethods__["m_hashTable"] = _Box2D2.b2PairManager_m_hashTable_set
    __swig_getmethods__["m_hashTable"] = _Box2D2.b2PairManager_m_hashTable_get
    if _newclass:m_hashTable = _swig_property(_Box2D2.b2PairManager_m_hashTable_get, _Box2D2.b2PairManager_m_hashTable_set)
    __swig_destroy__ = _Box2D2.delete_b2PairManager
    __del__ = lambda self : None;
b2PairManager_swigregister = _Box2D2.b2PairManager_swigregister
b2PairManager_swigregister(b2PairManager)

class b2Bound(_object):
    """Proxy of C++ b2Bound class"""
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, b2Bound, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, b2Bound, name)
    __repr__ = _swig_repr
    def IsLower(*args):
        """IsLower(self) -> bool"""
        return _Box2D2.b2Bound_IsLower(*args)

    def IsUpper(*args):
        """IsUpper(self) -> bool"""
        return _Box2D2.b2Bound_IsUpper(*args)

    __swig_setmethods__["value"] = _Box2D2.b2Bound_value_set
    __swig_getmethods__["value"] = _Box2D2.b2Bound_value_get
    if _newclass:value = _swig_property(_Box2D2.b2Bound_value_get, _Box2D2.b2Bound_value_set)
    __swig_setmethods__["proxyId"] = _Box2D2.b2Bound_proxyId_set
    __swig_getmethods__["proxyId"] = _Box2D2.b2Bound_proxyId_get
    if _newclass:proxyId = _swig_property(_Box2D2.b2Bound_proxyId_get, _Box2D2.b2Bound_proxyId_set)
    __swig_setmethods__["stabbingCount"] = _Box2D2.b2Bound_stabbingCount_set
    __swig_getmethods__["stabbingCount"] = _Box2D2.b2Bound_stabbingCount_get
    if _newclass:stabbingCount = _swig_property(_Box2D2.b2Bound_stabbingCount_get, _Box2D2.b2Bound_stabbingCount_set)
    def __init__(self, *args): 
        """__init__(self) -> b2Bound"""
        this = _Box2D2.new_b2Bound(*args)
        try: self.this.append(this)
        except: self.this = this
    __swig_destroy__ = _Box2D2.delete_b2Bound
    __del__ = lambda self : None;
b2Bound_swigregister = _Box2D2.b2Bound_swigregister
b2Bound_swigregister(b2Bound)
b2_invalid = cvar.b2_invalid
b2_nullEdge = cvar.b2_nullEdge

class b2Proxy(_object):
    """Proxy of C++ b2Proxy class"""
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, b2Proxy, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, b2Proxy, name)
    __repr__ = _swig_repr
    def GetNext(*args):
        """GetNext(self) -> uint16"""
        return _Box2D2.b2Proxy_GetNext(*args)

    def SetNext(*args):
        """SetNext(self, uint16 next)"""
        return _Box2D2.b2Proxy_SetNext(*args)

    def IsValid(*args):
        """IsValid(self) -> bool"""
        return _Box2D2.b2Proxy_IsValid(*args)

    __swig_setmethods__["lowerBounds"] = _Box2D2.b2Proxy_lowerBounds_set
    __swig_getmethods__["lowerBounds"] = _Box2D2.b2Proxy_lowerBounds_get
    if _newclass:lowerBounds = _swig_property(_Box2D2.b2Proxy_lowerBounds_get, _Box2D2.b2Proxy_lowerBounds_set)
    __swig_setmethods__["upperBounds"] = _Box2D2.b2Proxy_upperBounds_set
    __swig_getmethods__["upperBounds"] = _Box2D2.b2Proxy_upperBounds_get
    if _newclass:upperBounds = _swig_property(_Box2D2.b2Proxy_upperBounds_get, _Box2D2.b2Proxy_upperBounds_set)
    __swig_setmethods__["overlapCount"] = _Box2D2.b2Proxy_overlapCount_set
    __swig_getmethods__["overlapCount"] = _Box2D2.b2Proxy_overlapCount_get
    if _newclass:overlapCount = _swig_property(_Box2D2.b2Proxy_overlapCount_get, _Box2D2.b2Proxy_overlapCount_set)
    __swig_setmethods__["timeStamp"] = _Box2D2.b2Proxy_timeStamp_set
    __swig_getmethods__["timeStamp"] = _Box2D2.b2Proxy_timeStamp_get
    if _newclass:timeStamp = _swig_property(_Box2D2.b2Proxy_timeStamp_get, _Box2D2.b2Proxy_timeStamp_set)
    __swig_setmethods__["userData"] = _Box2D2.b2Proxy_userData_set
    __swig_getmethods__["userData"] = _Box2D2.b2Proxy_userData_get
    if _newclass:userData = _swig_property(_Box2D2.b2Proxy_userData_get, _Box2D2.b2Proxy_userData_set)
    def __init__(self, *args): 
        """__init__(self) -> b2Proxy"""
        this = _Box2D2.new_b2Proxy(*args)
        try: self.this.append(this)
        except: self.this = this
    __swig_destroy__ = _Box2D2.delete_b2Proxy
    __del__ = lambda self : None;
b2Proxy_swigregister = _Box2D2.b2Proxy_swigregister
b2Proxy_swigregister(b2Proxy)

class b2BroadPhase(_object):
    """Proxy of C++ b2BroadPhase class"""
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, b2BroadPhase, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, b2BroadPhase, name)
    __repr__ = _swig_repr
    def __init__(self, *args): 
        """__init__(self, b2AABB worldAABB, b2PairCallback callback) -> b2BroadPhase"""
        this = _Box2D2.new_b2BroadPhase(*args)
        try: self.this.append(this)
        except: self.this = this
    __swig_destroy__ = _Box2D2.delete_b2BroadPhase
    __del__ = lambda self : None;
    def InRange(*args):
        """InRange(self, b2AABB aabb) -> bool"""
        return _Box2D2.b2BroadPhase_InRange(*args)

    def CreateProxy(*args):
        """CreateProxy(self, b2AABB aabb, void userData) -> uint16"""
        return _Box2D2.b2BroadPhase_CreateProxy(*args)

    def DestroyProxy(*args):
        """DestroyProxy(self, int32 proxyId)"""
        return _Box2D2.b2BroadPhase_DestroyProxy(*args)

    def MoveProxy(*args):
        """MoveProxy(self, int32 proxyId, b2AABB aabb)"""
        return _Box2D2.b2BroadPhase_MoveProxy(*args)

    def Commit(*args):
        """Commit(self)"""
        return _Box2D2.b2BroadPhase_Commit(*args)

    def GetProxy(*args):
        """GetProxy(self, int32 proxyId) -> b2Proxy"""
        return _Box2D2.b2BroadPhase_GetProxy(*args)

    def Query(*args):
        """Query(self, b2AABB aabb, void userData, int32 maxCount) -> int32"""
        return _Box2D2.b2BroadPhase_Query(*args)

    def Validate(*args):
        """Validate(self)"""
        return _Box2D2.b2BroadPhase_Validate(*args)

    def ValidatePairs(*args):
        """ValidatePairs(self)"""
        return _Box2D2.b2BroadPhase_ValidatePairs(*args)

    __swig_setmethods__["m_pairManager"] = _Box2D2.b2BroadPhase_m_pairManager_set
    __swig_getmethods__["m_pairManager"] = _Box2D2.b2BroadPhase_m_pairManager_get
    if _newclass:m_pairManager = _swig_property(_Box2D2.b2BroadPhase_m_pairManager_get, _Box2D2.b2BroadPhase_m_pairManager_set)
    __swig_setmethods__["m_proxyPool"] = _Box2D2.b2BroadPhase_m_proxyPool_set
    __swig_getmethods__["m_proxyPool"] = _Box2D2.b2BroadPhase_m_proxyPool_get
    if _newclass:m_proxyPool = _swig_property(_Box2D2.b2BroadPhase_m_proxyPool_get, _Box2D2.b2BroadPhase_m_proxyPool_set)
    __swig_setmethods__["m_freeProxy"] = _Box2D2.b2BroadPhase_m_freeProxy_set
    __swig_getmethods__["m_freeProxy"] = _Box2D2.b2BroadPhase_m_freeProxy_get
    if _newclass:m_freeProxy = _swig_property(_Box2D2.b2BroadPhase_m_freeProxy_get, _Box2D2.b2BroadPhase_m_freeProxy_set)
    __swig_setmethods__["m_bounds"] = _Box2D2.b2BroadPhase_m_bounds_set
    __swig_getmethods__["m_bounds"] = _Box2D2.b2BroadPhase_m_bounds_get
    if _newclass:m_bounds = _swig_property(_Box2D2.b2BroadPhase_m_bounds_get, _Box2D2.b2BroadPhase_m_bounds_set)
    __swig_setmethods__["m_queryResults"] = _Box2D2.b2BroadPhase_m_queryResults_set
    __swig_getmethods__["m_queryResults"] = _Box2D2.b2BroadPhase_m_queryResults_get
    if _newclass:m_queryResults = _swig_property(_Box2D2.b2BroadPhase_m_queryResults_get, _Box2D2.b2BroadPhase_m_queryResults_set)
    __swig_setmethods__["m_queryResultCount"] = _Box2D2.b2BroadPhase_m_queryResultCount_set
    __swig_getmethods__["m_queryResultCount"] = _Box2D2.b2BroadPhase_m_queryResultCount_get
    if _newclass:m_queryResultCount = _swig_property(_Box2D2.b2BroadPhase_m_queryResultCount_get, _Box2D2.b2BroadPhase_m_queryResultCount_set)
    __swig_setmethods__["m_worldAABB"] = _Box2D2.b2BroadPhase_m_worldAABB_set
    __swig_getmethods__["m_worldAABB"] = _Box2D2.b2BroadPhase_m_worldAABB_get
    if _newclass:m_worldAABB = _swig_property(_Box2D2.b2BroadPhase_m_worldAABB_get, _Box2D2.b2BroadPhase_m_worldAABB_set)
    __swig_setmethods__["m_quantizationFactor"] = _Box2D2.b2BroadPhase_m_quantizationFactor_set
    __swig_getmethods__["m_quantizationFactor"] = _Box2D2.b2BroadPhase_m_quantizationFactor_get
    if _newclass:m_quantizationFactor = _swig_property(_Box2D2.b2BroadPhase_m_quantizationFactor_get, _Box2D2.b2BroadPhase_m_quantizationFactor_set)
    __swig_setmethods__["m_proxyCount"] = _Box2D2.b2BroadPhase_m_proxyCount_set
    __swig_getmethods__["m_proxyCount"] = _Box2D2.b2BroadPhase_m_proxyCount_get
    if _newclass:m_proxyCount = _swig_property(_Box2D2.b2BroadPhase_m_proxyCount_get, _Box2D2.b2BroadPhase_m_proxyCount_set)
    __swig_setmethods__["m_timeStamp"] = _Box2D2.b2BroadPhase_m_timeStamp_set
    __swig_getmethods__["m_timeStamp"] = _Box2D2.b2BroadPhase_m_timeStamp_get
    if _newclass:m_timeStamp = _swig_property(_Box2D2.b2BroadPhase_m_timeStamp_get, _Box2D2.b2BroadPhase_m_timeStamp_set)
    __swig_setmethods__["s_validate"] = _Box2D2.b2BroadPhase_s_validate_set
    __swig_getmethods__["s_validate"] = _Box2D2.b2BroadPhase_s_validate_get
    if _newclass:s_validate = _swig_property(_Box2D2.b2BroadPhase_s_validate_get, _Box2D2.b2BroadPhase_s_validate_set)
b2BroadPhase_swigregister = _Box2D2.b2BroadPhase_swigregister
b2BroadPhase_swigregister(b2BroadPhase)

class b2DestructionListener(_object):
    """Proxy of C++ b2DestructionListener class"""
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, b2DestructionListener, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, b2DestructionListener, name)
    __repr__ = _swig_repr
    __swig_destroy__ = _Box2D2.delete_b2DestructionListener
    __del__ = lambda self : None;
    def SayGoodbye(*args):
        """
        SayGoodbye(self, b2Joint joint)
        SayGoodbye(self, b2Shape shape)
        """
        return _Box2D2.b2DestructionListener_SayGoodbye(*args)

    def __init__(self, *args): 
        """__init__(self) -> b2DestructionListener"""
        if self.__class__ == b2DestructionListener:
            args = (None,) + args
        else:
            args = (self,) + args
        this = _Box2D2.new_b2DestructionListener(*args)
        try: self.this.append(this)
        except: self.this = this
    def __disown__(self):
        self.this.disown()
        _Box2D2.disown_b2DestructionListener(self)
        return weakref_proxy(self)
b2DestructionListener_swigregister = _Box2D2.b2DestructionListener_swigregister
b2DestructionListener_swigregister(b2DestructionListener)

class b2BoundaryListener(_object):
    """Proxy of C++ b2BoundaryListener class"""
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, b2BoundaryListener, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, b2BoundaryListener, name)
    __repr__ = _swig_repr
    __swig_destroy__ = _Box2D2.delete_b2BoundaryListener
    __del__ = lambda self : None;
    def Violation(*args):
        """Violation(self, b2Body body)"""
        return _Box2D2.b2BoundaryListener_Violation(*args)

    def __init__(self, *args): 
        """__init__(self) -> b2BoundaryListener"""
        if self.__class__ == b2BoundaryListener:
            args = (None,) + args
        else:
            args = (self,) + args
        this = _Box2D2.new_b2BoundaryListener(*args)
        try: self.this.append(this)
        except: self.this = this
    def __disown__(self):
        self.this.disown()
        _Box2D2.disown_b2BoundaryListener(self)
        return weakref_proxy(self)
b2BoundaryListener_swigregister = _Box2D2.b2BoundaryListener_swigregister
b2BoundaryListener_swigregister(b2BoundaryListener)

class b2ContactFilter(_object):
    """Proxy of C++ b2ContactFilter class"""
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, b2ContactFilter, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, b2ContactFilter, name)
    __repr__ = _swig_repr
    __swig_destroy__ = _Box2D2.delete_b2ContactFilter
    __del__ = lambda self : None;
    def ShouldCollide(*args):
        """ShouldCollide(self, b2Shape shape1, b2Shape shape2) -> bool"""
        return _Box2D2.b2ContactFilter_ShouldCollide(*args)

    def __init__(self, *args): 
        """__init__(self) -> b2ContactFilter"""
        this = _Box2D2.new_b2ContactFilter(*args)
        try: self.this.append(this)
        except: self.this = this
b2ContactFilter_swigregister = _Box2D2.b2ContactFilter_swigregister
b2ContactFilter_swigregister(b2ContactFilter)

class b2ContactListener(_object):
    """Proxy of C++ b2ContactListener class"""
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, b2ContactListener, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, b2ContactListener, name)
    __repr__ = _swig_repr
    __swig_destroy__ = _Box2D2.delete_b2ContactListener
    __del__ = lambda self : None;
    def Add(*args):
        """Add(self, b2ContactPoint point)"""
        return _Box2D2.b2ContactListener_Add(*args)

    def Persist(*args):
        """Persist(self, b2ContactPoint point)"""
        return _Box2D2.b2ContactListener_Persist(*args)

    def Remove(*args):
        """Remove(self, b2ContactPoint point)"""
        return _Box2D2.b2ContactListener_Remove(*args)

    def Result(*args):
        """Result(self, b2ContactResult point)"""
        return _Box2D2.b2ContactListener_Result(*args)

    def __init__(self, *args): 
        """__init__(self) -> b2ContactListener"""
        if self.__class__ == b2ContactListener:
            args = (None,) + args
        else:
            args = (self,) + args
        this = _Box2D2.new_b2ContactListener(*args)
        try: self.this.append(this)
        except: self.this = this
    def __disown__(self):
        self.this.disown()
        _Box2D2.disown_b2ContactListener(self)
        return weakref_proxy(self)
b2ContactListener_swigregister = _Box2D2.b2ContactListener_swigregister
b2ContactListener_swigregister(b2ContactListener)

class b2Color(_object):
    """Proxy of C++ b2Color class"""
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, b2Color, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, b2Color, name)
    __repr__ = _swig_repr
    def __init__(self, *args): 
        """
        __init__(self) -> b2Color
        __init__(self, float32 r, float32 g, float32 b) -> b2Color
        """
        this = _Box2D2.new_b2Color(*args)
        try: self.this.append(this)
        except: self.this = this
    __swig_setmethods__["r"] = _Box2D2.b2Color_r_set
    __swig_getmethods__["r"] = _Box2D2.b2Color_r_get
    if _newclass:r = _swig_property(_Box2D2.b2Color_r_get, _Box2D2.b2Color_r_set)
    __swig_setmethods__["g"] = _Box2D2.b2Color_g_set
    __swig_getmethods__["g"] = _Box2D2.b2Color_g_get
    if _newclass:g = _swig_property(_Box2D2.b2Color_g_get, _Box2D2.b2Color_g_set)
    __swig_setmethods__["b"] = _Box2D2.b2Color_b_set
    __swig_getmethods__["b"] = _Box2D2.b2Color_b_get
    if _newclass:b = _swig_property(_Box2D2.b2Color_b_get, _Box2D2.b2Color_b_set)
    __swig_destroy__ = _Box2D2.delete_b2Color
    __del__ = lambda self : None;
b2Color_swigregister = _Box2D2.b2Color_swigregister
b2Color_swigregister(b2Color)

class b2DebugDraw(_object):
    """Proxy of C++ b2DebugDraw class"""
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, b2DebugDraw, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, b2DebugDraw, name)
    __repr__ = _swig_repr
    def __init__(self, *args): 
        """__init__(self) -> b2DebugDraw"""
        if self.__class__ == b2DebugDraw:
            args = (None,) + args
        else:
            args = (self,) + args
        this = _Box2D2.new_b2DebugDraw(*args)
        try: self.this.append(this)
        except: self.this = this
    __swig_destroy__ = _Box2D2.delete_b2DebugDraw
    __del__ = lambda self : None;
    e_shapeBit = _Box2D2.b2DebugDraw_e_shapeBit
    e_jointBit = _Box2D2.b2DebugDraw_e_jointBit
    e_coreShapeBit = _Box2D2.b2DebugDraw_e_coreShapeBit
    e_aabbBit = _Box2D2.b2DebugDraw_e_aabbBit
    e_obbBit = _Box2D2.b2DebugDraw_e_obbBit
    e_pairBit = _Box2D2.b2DebugDraw_e_pairBit
    e_centerOfMassBit = _Box2D2.b2DebugDraw_e_centerOfMassBit
    def SetFlags(*args):
        """SetFlags(self, uint32 flags)"""
        return _Box2D2.b2DebugDraw_SetFlags(*args)

    def GetFlags(*args):
        """GetFlags(self) -> uint32"""
        return _Box2D2.b2DebugDraw_GetFlags(*args)

    def AppendFlags(*args):
        """AppendFlags(self, uint32 flags)"""
        return _Box2D2.b2DebugDraw_AppendFlags(*args)

    def ClearFlags(*args):
        """ClearFlags(self, uint32 flags)"""
        return _Box2D2.b2DebugDraw_ClearFlags(*args)

    def DrawPolygon(*args):
        """DrawPolygon(self, b2Vec2 vertices, int32 vertexCount, b2Color color)"""
        return _Box2D2.b2DebugDraw_DrawPolygon(*args)

    def DrawSolidPolygon(*args):
        """DrawSolidPolygon(self, b2Vec2 vertices, int32 vertexCount, b2Color color)"""
        return _Box2D2.b2DebugDraw_DrawSolidPolygon(*args)

    def DrawCircle(*args):
        """DrawCircle(self, b2Vec2 center, float32 radius, b2Color color)"""
        return _Box2D2.b2DebugDraw_DrawCircle(*args)

    def DrawSolidCircle(*args):
        """DrawSolidCircle(self, b2Vec2 center, float32 radius, b2Vec2 axis, b2Color color)"""
        return _Box2D2.b2DebugDraw_DrawSolidCircle(*args)

    def DrawSegment(*args):
        """DrawSegment(self, b2Vec2 p1, b2Vec2 p2, b2Color color)"""
        return _Box2D2.b2DebugDraw_DrawSegment(*args)

    def DrawXForm(*args):
        """DrawXForm(self, b2XForm xf)"""
        return _Box2D2.b2DebugDraw_DrawXForm(*args)

    def __disown__(self):
        self.this.disown()
        _Box2D2.disown_b2DebugDraw(self)
        return weakref_proxy(self)
b2DebugDraw_swigregister = _Box2D2.b2DebugDraw_swigregister
b2DebugDraw_swigregister(b2DebugDraw)

class b2BlockAllocator(_object):
    """Proxy of C++ b2BlockAllocator class"""
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, b2BlockAllocator, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, b2BlockAllocator, name)
    __repr__ = _swig_repr
    def __init__(self, *args): 
        """__init__(self) -> b2BlockAllocator"""
        this = _Box2D2.new_b2BlockAllocator(*args)
        try: self.this.append(this)
        except: self.this = this
    __swig_destroy__ = _Box2D2.delete_b2BlockAllocator
    __del__ = lambda self : None;
    def Allocate(*args):
        """Allocate(self, int32 size) -> void"""
        return _Box2D2.b2BlockAllocator_Allocate(*args)

    def Free(*args):
        """Free(self, void p, int32 size)"""
        return _Box2D2.b2BlockAllocator_Free(*args)

    def Clear(*args):
        """Clear(self)"""
        return _Box2D2.b2BlockAllocator_Clear(*args)

b2BlockAllocator_swigregister = _Box2D2.b2BlockAllocator_swigregister
b2BlockAllocator_swigregister(b2BlockAllocator)
b2_chunkSize = cvar.b2_chunkSize
b2_maxBlockSize = cvar.b2_maxBlockSize
b2_blockSizes = cvar.b2_blockSizes
b2_chunkArrayIncrement = cvar.b2_chunkArrayIncrement

class b2StackEntry(_object):
    """Proxy of C++ b2StackEntry class"""
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, b2StackEntry, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, b2StackEntry, name)
    __repr__ = _swig_repr
    __swig_setmethods__["data"] = _Box2D2.b2StackEntry_data_set
    __swig_getmethods__["data"] = _Box2D2.b2StackEntry_data_get
    if _newclass:data = _swig_property(_Box2D2.b2StackEntry_data_get, _Box2D2.b2StackEntry_data_set)
    __swig_setmethods__["size"] = _Box2D2.b2StackEntry_size_set
    __swig_getmethods__["size"] = _Box2D2.b2StackEntry_size_get
    if _newclass:size = _swig_property(_Box2D2.b2StackEntry_size_get, _Box2D2.b2StackEntry_size_set)
    __swig_setmethods__["usedMalloc"] = _Box2D2.b2StackEntry_usedMalloc_set
    __swig_getmethods__["usedMalloc"] = _Box2D2.b2StackEntry_usedMalloc_get
    if _newclass:usedMalloc = _swig_property(_Box2D2.b2StackEntry_usedMalloc_get, _Box2D2.b2StackEntry_usedMalloc_set)
    def __init__(self, *args): 
        """__init__(self) -> b2StackEntry"""
        this = _Box2D2.new_b2StackEntry(*args)
        try: self.this.append(this)
        except: self.this = this
    __swig_destroy__ = _Box2D2.delete_b2StackEntry
    __del__ = lambda self : None;
b2StackEntry_swigregister = _Box2D2.b2StackEntry_swigregister
b2StackEntry_swigregister(b2StackEntry)
b2_stackSize = cvar.b2_stackSize
b2_maxStackEntries = cvar.b2_maxStackEntries

class b2StackAllocator(_object):
    """Proxy of C++ b2StackAllocator class"""
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, b2StackAllocator, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, b2StackAllocator, name)
    __repr__ = _swig_repr
    def __init__(self, *args): 
        """__init__(self) -> b2StackAllocator"""
        this = _Box2D2.new_b2StackAllocator(*args)
        try: self.this.append(this)
        except: self.this = this
    __swig_destroy__ = _Box2D2.delete_b2StackAllocator
    __del__ = lambda self : None;
    def Allocate(*args):
        """Allocate(self, int32 size) -> void"""
        return _Box2D2.b2StackAllocator_Allocate(*args)

    def Free(*args):
        """Free(self, void p)"""
        return _Box2D2.b2StackAllocator_Free(*args)

    def GetMaxAllocation(*args):
        """GetMaxAllocation(self) -> int32"""
        return _Box2D2.b2StackAllocator_GetMaxAllocation(*args)

b2StackAllocator_swigregister = _Box2D2.b2StackAllocator_swigregister
b2StackAllocator_swigregister(b2StackAllocator)

class b2ContactRegister(_object):
    """Proxy of C++ b2ContactRegister class"""
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, b2ContactRegister, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, b2ContactRegister, name)
    __repr__ = _swig_repr
    __swig_setmethods__["createFcn"] = _Box2D2.b2ContactRegister_createFcn_set
    __swig_getmethods__["createFcn"] = _Box2D2.b2ContactRegister_createFcn_get
    if _newclass:createFcn = _swig_property(_Box2D2.b2ContactRegister_createFcn_get, _Box2D2.b2ContactRegister_createFcn_set)
    __swig_setmethods__["destroyFcn"] = _Box2D2.b2ContactRegister_destroyFcn_set
    __swig_getmethods__["destroyFcn"] = _Box2D2.b2ContactRegister_destroyFcn_get
    if _newclass:destroyFcn = _swig_property(_Box2D2.b2ContactRegister_destroyFcn_get, _Box2D2.b2ContactRegister_destroyFcn_set)
    __swig_setmethods__["primary"] = _Box2D2.b2ContactRegister_primary_set
    __swig_getmethods__["primary"] = _Box2D2.b2ContactRegister_primary_get
    if _newclass:primary = _swig_property(_Box2D2.b2ContactRegister_primary_get, _Box2D2.b2ContactRegister_primary_set)
    def __init__(self, *args): 
        """__init__(self) -> b2ContactRegister"""
        this = _Box2D2.new_b2ContactRegister(*args)
        try: self.this.append(this)
        except: self.this = this
    __swig_destroy__ = _Box2D2.delete_b2ContactRegister
    __del__ = lambda self : None;
b2ContactRegister_swigregister = _Box2D2.b2ContactRegister_swigregister
b2ContactRegister_swigregister(b2ContactRegister)

class b2ContactEdge(_object):
    """Proxy of C++ b2ContactEdge class"""
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, b2ContactEdge, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, b2ContactEdge, name)
    __repr__ = _swig_repr
    __swig_setmethods__["other"] = _Box2D2.b2ContactEdge_other_set
    __swig_getmethods__["other"] = _Box2D2.b2ContactEdge_other_get
    if _newclass:other = _swig_property(_Box2D2.b2ContactEdge_other_get, _Box2D2.b2ContactEdge_other_set)
    __swig_setmethods__["contact"] = _Box2D2.b2ContactEdge_contact_set
    __swig_getmethods__["contact"] = _Box2D2.b2ContactEdge_contact_get
    if _newclass:contact = _swig_property(_Box2D2.b2ContactEdge_contact_get, _Box2D2.b2ContactEdge_contact_set)
    __swig_setmethods__["prev"] = _Box2D2.b2ContactEdge_prev_set
    __swig_getmethods__["prev"] = _Box2D2.b2ContactEdge_prev_get
    if _newclass:prev = _swig_property(_Box2D2.b2ContactEdge_prev_get, _Box2D2.b2ContactEdge_prev_set)
    __swig_setmethods__["next"] = _Box2D2.b2ContactEdge_next_set
    __swig_getmethods__["next"] = _Box2D2.b2ContactEdge_next_get
    if _newclass:next = _swig_property(_Box2D2.b2ContactEdge_next_get, _Box2D2.b2ContactEdge_next_set)
    def __init__(self, *args): 
        """__init__(self) -> b2ContactEdge"""
        this = _Box2D2.new_b2ContactEdge(*args)
        try: self.this.append(this)
        except: self.this = this
    __swig_destroy__ = _Box2D2.delete_b2ContactEdge
    __del__ = lambda self : None;
b2ContactEdge_swigregister = _Box2D2.b2ContactEdge_swigregister
b2ContactEdge_swigregister(b2ContactEdge)

class b2ContactPoint(_object):
    """Proxy of C++ b2ContactPoint class"""
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, b2ContactPoint, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, b2ContactPoint, name)
    __repr__ = _swig_repr
    __swig_setmethods__["shape1"] = _Box2D2.b2ContactPoint_shape1_set
    __swig_getmethods__["shape1"] = _Box2D2.b2ContactPoint_shape1_get
    if _newclass:shape1 = _swig_property(_Box2D2.b2ContactPoint_shape1_get, _Box2D2.b2ContactPoint_shape1_set)
    __swig_setmethods__["shape2"] = _Box2D2.b2ContactPoint_shape2_set
    __swig_getmethods__["shape2"] = _Box2D2.b2ContactPoint_shape2_get
    if _newclass:shape2 = _swig_property(_Box2D2.b2ContactPoint_shape2_get, _Box2D2.b2ContactPoint_shape2_set)
    __swig_setmethods__["position"] = _Box2D2.b2ContactPoint_position_set
    __swig_getmethods__["position"] = _Box2D2.b2ContactPoint_position_get
    if _newclass:position = _swig_property(_Box2D2.b2ContactPoint_position_get, _Box2D2.b2ContactPoint_position_set)
    __swig_setmethods__["velocity"] = _Box2D2.b2ContactPoint_velocity_set
    __swig_getmethods__["velocity"] = _Box2D2.b2ContactPoint_velocity_get
    if _newclass:velocity = _swig_property(_Box2D2.b2ContactPoint_velocity_get, _Box2D2.b2ContactPoint_velocity_set)
    __swig_setmethods__["normal"] = _Box2D2.b2ContactPoint_normal_set
    __swig_getmethods__["normal"] = _Box2D2.b2ContactPoint_normal_get
    if _newclass:normal = _swig_property(_Box2D2.b2ContactPoint_normal_get, _Box2D2.b2ContactPoint_normal_set)
    __swig_setmethods__["separation"] = _Box2D2.b2ContactPoint_separation_set
    __swig_getmethods__["separation"] = _Box2D2.b2ContactPoint_separation_get
    if _newclass:separation = _swig_property(_Box2D2.b2ContactPoint_separation_get, _Box2D2.b2ContactPoint_separation_set)
    __swig_setmethods__["friction"] = _Box2D2.b2ContactPoint_friction_set
    __swig_getmethods__["friction"] = _Box2D2.b2ContactPoint_friction_get
    if _newclass:friction = _swig_property(_Box2D2.b2ContactPoint_friction_get, _Box2D2.b2ContactPoint_friction_set)
    __swig_setmethods__["restitution"] = _Box2D2.b2ContactPoint_restitution_set
    __swig_getmethods__["restitution"] = _Box2D2.b2ContactPoint_restitution_get
    if _newclass:restitution = _swig_property(_Box2D2.b2ContactPoint_restitution_get, _Box2D2.b2ContactPoint_restitution_set)
    __swig_setmethods__["id"] = _Box2D2.b2ContactPoint_id_set
    __swig_getmethods__["id"] = _Box2D2.b2ContactPoint_id_get
    if _newclass:id = _swig_property(_Box2D2.b2ContactPoint_id_get, _Box2D2.b2ContactPoint_id_set)
    def __repr__(self):
        return "b2ContactPoint(\n\tid: %s\n\tshape1: %s\n\tshape2: %s\n\tposition: %s\n\tnormal: %s\n\tseparation: %f normalForce: %f tangentForce: %f)" % \
            (self.id, self.shape1, self.shape2, self.position, self.normal, self.separation, self.normalForce, self.tangentForce)

    def __init__(self, *args): 
        """__init__(self) -> b2ContactPoint"""
        this = _Box2D2.new_b2ContactPoint(*args)
        try: self.this.append(this)
        except: self.this = this
    __swig_destroy__ = _Box2D2.delete_b2ContactPoint
    __del__ = lambda self : None;
b2ContactPoint_swigregister = _Box2D2.b2ContactPoint_swigregister
b2ContactPoint_swigregister(b2ContactPoint)

class b2ContactResult(_object):
    """Proxy of C++ b2ContactResult class"""
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, b2ContactResult, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, b2ContactResult, name)
    __repr__ = _swig_repr
    __swig_setmethods__["shape1"] = _Box2D2.b2ContactResult_shape1_set
    __swig_getmethods__["shape1"] = _Box2D2.b2ContactResult_shape1_get
    if _newclass:shape1 = _swig_property(_Box2D2.b2ContactResult_shape1_get, _Box2D2.b2ContactResult_shape1_set)
    __swig_setmethods__["shape2"] = _Box2D2.b2ContactResult_shape2_set
    __swig_getmethods__["shape2"] = _Box2D2.b2ContactResult_shape2_get
    if _newclass:shape2 = _swig_property(_Box2D2.b2ContactResult_shape2_get, _Box2D2.b2ContactResult_shape2_set)
    __swig_setmethods__["position"] = _Box2D2.b2ContactResult_position_set
    __swig_getmethods__["position"] = _Box2D2.b2ContactResult_position_get
    if _newclass:position = _swig_property(_Box2D2.b2ContactResult_position_get, _Box2D2.b2ContactResult_position_set)
    __swig_setmethods__["normal"] = _Box2D2.b2ContactResult_normal_set
    __swig_getmethods__["normal"] = _Box2D2.b2ContactResult_normal_get
    if _newclass:normal = _swig_property(_Box2D2.b2ContactResult_normal_get, _Box2D2.b2ContactResult_normal_set)
    __swig_setmethods__["normalImpulse"] = _Box2D2.b2ContactResult_normalImpulse_set
    __swig_getmethods__["normalImpulse"] = _Box2D2.b2ContactResult_normalImpulse_get
    if _newclass:normalImpulse = _swig_property(_Box2D2.b2ContactResult_normalImpulse_get, _Box2D2.b2ContactResult_normalImpulse_set)
    __swig_setmethods__["tangentImpulse"] = _Box2D2.b2ContactResult_tangentImpulse_set
    __swig_getmethods__["tangentImpulse"] = _Box2D2.b2ContactResult_tangentImpulse_get
    if _newclass:tangentImpulse = _swig_property(_Box2D2.b2ContactResult_tangentImpulse_get, _Box2D2.b2ContactResult_tangentImpulse_set)
    __swig_setmethods__["id"] = _Box2D2.b2ContactResult_id_set
    __swig_getmethods__["id"] = _Box2D2.b2ContactResult_id_get
    if _newclass:id = _swig_property(_Box2D2.b2ContactResult_id_get, _Box2D2.b2ContactResult_id_set)
    def __init__(self, *args): 
        """__init__(self) -> b2ContactResult"""
        this = _Box2D2.new_b2ContactResult(*args)
        try: self.this.append(this)
        except: self.this = this
    __swig_destroy__ = _Box2D2.delete_b2ContactResult
    __del__ = lambda self : None;
b2ContactResult_swigregister = _Box2D2.b2ContactResult_swigregister
b2ContactResult_swigregister(b2ContactResult)

class b2Contact(_object):
    """Proxy of C++ b2Contact class"""
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, b2Contact, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, b2Contact, name)
    def __init__(self): raise AttributeError, "No constructor defined"
    __repr__ = _swig_repr
    def GetManifolds(*args):
        """GetManifolds(self) -> b2Manifold"""
        return _Box2D2.b2Contact_GetManifolds(*args)

    def GetManifoldCount(*args):
        """GetManifoldCount(self) -> int32"""
        return _Box2D2.b2Contact_GetManifoldCount(*args)

    def IsSolid(*args):
        """IsSolid(self) -> bool"""
        return _Box2D2.b2Contact_IsSolid(*args)

    def GetNext(*args):
        """GetNext(self) -> b2Contact"""
        return _Box2D2.b2Contact_GetNext(*args)

    def GetShape1(*args):
        """GetShape1(self) -> b2Shape"""
        return _Box2D2.b2Contact_GetShape1(*args)

    def GetShape2(*args):
        """GetShape2(self) -> b2Shape"""
        return _Box2D2.b2Contact_GetShape2(*args)

    e_nonSolidFlag = _Box2D2.b2Contact_e_nonSolidFlag
    e_slowFlag = _Box2D2.b2Contact_e_slowFlag
    e_islandFlag = _Box2D2.b2Contact_e_islandFlag
    e_toiFlag = _Box2D2.b2Contact_e_toiFlag
    def AddType(*args):
        """
        AddType(b2ContactCreateFcn createFcn, b2ContactDestroyFcn destroyFcn, 
            b2ShapeType type1, b2ShapeType type2)
        """
        return _Box2D2.b2Contact_AddType(*args)

    if _newclass:AddType = staticmethod(AddType)
    __swig_getmethods__["AddType"] = lambda x: AddType
    def InitializeRegisters(*args):
        """InitializeRegisters()"""
        return _Box2D2.b2Contact_InitializeRegisters(*args)

    if _newclass:InitializeRegisters = staticmethod(InitializeRegisters)
    __swig_getmethods__["InitializeRegisters"] = lambda x: InitializeRegisters
    def Create(*args):
        """Create(b2Shape shape1, b2Shape shape2, b2BlockAllocator allocator) -> b2Contact"""
        return _Box2D2.b2Contact_Create(*args)

    if _newclass:Create = staticmethod(Create)
    __swig_getmethods__["Create"] = lambda x: Create
    def Destroy(*args):
        """Destroy(b2Contact contact, b2BlockAllocator allocator)"""
        return _Box2D2.b2Contact_Destroy(*args)

    if _newclass:Destroy = staticmethod(Destroy)
    __swig_getmethods__["Destroy"] = lambda x: Destroy
    __swig_destroy__ = _Box2D2.delete_b2Contact
    __del__ = lambda self : None;
    def Update(*args):
        """Update(self, b2ContactListener listener)"""
        return _Box2D2.b2Contact_Update(*args)

    def Evaluate(*args):
        """Evaluate(self, b2ContactListener listener)"""
        return _Box2D2.b2Contact_Evaluate(*args)

    __swig_setmethods__["s_registers"] = _Box2D2.b2Contact_s_registers_set
    __swig_getmethods__["s_registers"] = _Box2D2.b2Contact_s_registers_get
    if _newclass:s_registers = _swig_property(_Box2D2.b2Contact_s_registers_get, _Box2D2.b2Contact_s_registers_set)
    __swig_setmethods__["s_initialized"] = _Box2D2.b2Contact_s_initialized_set
    __swig_getmethods__["s_initialized"] = _Box2D2.b2Contact_s_initialized_get
    if _newclass:s_initialized = _swig_property(_Box2D2.b2Contact_s_initialized_get, _Box2D2.b2Contact_s_initialized_set)
    __swig_setmethods__["m_flags"] = _Box2D2.b2Contact_m_flags_set
    __swig_getmethods__["m_flags"] = _Box2D2.b2Contact_m_flags_get
    if _newclass:m_flags = _swig_property(_Box2D2.b2Contact_m_flags_get, _Box2D2.b2Contact_m_flags_set)
    __swig_setmethods__["m_manifoldCount"] = _Box2D2.b2Contact_m_manifoldCount_set
    __swig_getmethods__["m_manifoldCount"] = _Box2D2.b2Contact_m_manifoldCount_get
    if _newclass:m_manifoldCount = _swig_property(_Box2D2.b2Contact_m_manifoldCount_get, _Box2D2.b2Contact_m_manifoldCount_set)
    __swig_setmethods__["m_prev"] = _Box2D2.b2Contact_m_prev_set
    __swig_getmethods__["m_prev"] = _Box2D2.b2Contact_m_prev_get
    if _newclass:m_prev = _swig_property(_Box2D2.b2Contact_m_prev_get, _Box2D2.b2Contact_m_prev_set)
    __swig_setmethods__["m_next"] = _Box2D2.b2Contact_m_next_set
    __swig_getmethods__["m_next"] = _Box2D2.b2Contact_m_next_get
    if _newclass:m_next = _swig_property(_Box2D2.b2Contact_m_next_get, _Box2D2.b2Contact_m_next_set)
    __swig_setmethods__["m_node1"] = _Box2D2.b2Contact_m_node1_set
    __swig_getmethods__["m_node1"] = _Box2D2.b2Contact_m_node1_get
    if _newclass:m_node1 = _swig_property(_Box2D2.b2Contact_m_node1_get, _Box2D2.b2Contact_m_node1_set)
    __swig_setmethods__["m_node2"] = _Box2D2.b2Contact_m_node2_set
    __swig_getmethods__["m_node2"] = _Box2D2.b2Contact_m_node2_get
    if _newclass:m_node2 = _swig_property(_Box2D2.b2Contact_m_node2_get, _Box2D2.b2Contact_m_node2_set)
    __swig_setmethods__["m_shape1"] = _Box2D2.b2Contact_m_shape1_set
    __swig_getmethods__["m_shape1"] = _Box2D2.b2Contact_m_shape1_get
    if _newclass:m_shape1 = _swig_property(_Box2D2.b2Contact_m_shape1_get, _Box2D2.b2Contact_m_shape1_set)
    __swig_setmethods__["m_shape2"] = _Box2D2.b2Contact_m_shape2_set
    __swig_getmethods__["m_shape2"] = _Box2D2.b2Contact_m_shape2_get
    if _newclass:m_shape2 = _swig_property(_Box2D2.b2Contact_m_shape2_get, _Box2D2.b2Contact_m_shape2_set)
    __swig_setmethods__["m_friction"] = _Box2D2.b2Contact_m_friction_set
    __swig_getmethods__["m_friction"] = _Box2D2.b2Contact_m_friction_get
    if _newclass:m_friction = _swig_property(_Box2D2.b2Contact_m_friction_get, _Box2D2.b2Contact_m_friction_set)
    __swig_setmethods__["m_restitution"] = _Box2D2.b2Contact_m_restitution_set
    __swig_getmethods__["m_restitution"] = _Box2D2.b2Contact_m_restitution_get
    if _newclass:m_restitution = _swig_property(_Box2D2.b2Contact_m_restitution_get, _Box2D2.b2Contact_m_restitution_set)
    __swig_setmethods__["m_toi"] = _Box2D2.b2Contact_m_toi_set
    __swig_getmethods__["m_toi"] = _Box2D2.b2Contact_m_toi_get
    if _newclass:m_toi = _swig_property(_Box2D2.b2Contact_m_toi_get, _Box2D2.b2Contact_m_toi_set)
b2Contact_swigregister = _Box2D2.b2Contact_swigregister
b2Contact_swigregister(b2Contact)

def b2Contact_AddType(*args):
  """
    b2Contact_AddType(b2ContactCreateFcn createFcn, b2ContactDestroyFcn destroyFcn, 
        b2ShapeType type1, b2ShapeType type2)
    """
  return _Box2D2.b2Contact_AddType(*args)

def b2Contact_InitializeRegisters(*args):
  """b2Contact_InitializeRegisters()"""
  return _Box2D2.b2Contact_InitializeRegisters(*args)

def b2Contact_Create(*args):
  """b2Contact_Create(b2Shape shape1, b2Shape shape2, b2BlockAllocator allocator) -> b2Contact"""
  return _Box2D2.b2Contact_Create(*args)

def b2Contact_Destroy(*args):
  """b2Contact_Destroy(b2Contact contact, b2BlockAllocator allocator)"""
  return _Box2D2.b2Contact_Destroy(*args)

class b2NullContact(b2Contact):
    """Proxy of C++ b2NullContact class"""
    __swig_setmethods__ = {}
    for _s in [b2Contact]: __swig_setmethods__.update(getattr(_s,'__swig_setmethods__',{}))
    __setattr__ = lambda self, name, value: _swig_setattr(self, b2NullContact, name, value)
    __swig_getmethods__ = {}
    for _s in [b2Contact]: __swig_getmethods__.update(getattr(_s,'__swig_getmethods__',{}))
    __getattr__ = lambda self, name: _swig_getattr(self, b2NullContact, name)
    __repr__ = _swig_repr
    def __init__(self, *args): 
        """__init__(self) -> b2NullContact"""
        this = _Box2D2.new_b2NullContact(*args)
        try: self.this.append(this)
        except: self.this = this
    def Evaluate(*args):
        """Evaluate(self, b2ContactListener ?)"""
        return _Box2D2.b2NullContact_Evaluate(*args)

    def GetManifolds(*args):
        """GetManifolds(self) -> b2Manifold"""
        return _Box2D2.b2NullContact_GetManifolds(*args)

    __swig_destroy__ = _Box2D2.delete_b2NullContact
    __del__ = lambda self : None;
b2NullContact_swigregister = _Box2D2.b2NullContact_swigregister
b2NullContact_swigregister(b2NullContact)

class b2ContactManager(b2PairCallback):
    """Proxy of C++ b2ContactManager class"""
    __swig_setmethods__ = {}
    for _s in [b2PairCallback]: __swig_setmethods__.update(getattr(_s,'__swig_setmethods__',{}))
    __setattr__ = lambda self, name, value: _swig_setattr(self, b2ContactManager, name, value)
    __swig_getmethods__ = {}
    for _s in [b2PairCallback]: __swig_getmethods__.update(getattr(_s,'__swig_getmethods__',{}))
    __getattr__ = lambda self, name: _swig_getattr(self, b2ContactManager, name)
    __repr__ = _swig_repr
    def __init__(self, *args): 
        """__init__(self) -> b2ContactManager"""
        this = _Box2D2.new_b2ContactManager(*args)
        try: self.this.append(this)
        except: self.this = this
    def PairAdded(*args):
        """PairAdded(self, void proxyUserData1, void proxyUserData2) -> void"""
        return _Box2D2.b2ContactManager_PairAdded(*args)

    def PairRemoved(*args):
        """PairRemoved(self, void proxyUserData1, void proxyUserData2, void pairUserData)"""
        return _Box2D2.b2ContactManager_PairRemoved(*args)

    def Destroy(*args):
        """Destroy(self, b2Contact c)"""
        return _Box2D2.b2ContactManager_Destroy(*args)

    def Collide(*args):
        """Collide(self)"""
        return _Box2D2.b2ContactManager_Collide(*args)

    __swig_setmethods__["m_world"] = _Box2D2.b2ContactManager_m_world_set
    __swig_getmethods__["m_world"] = _Box2D2.b2ContactManager_m_world_get
    if _newclass:m_world = _swig_property(_Box2D2.b2ContactManager_m_world_get, _Box2D2.b2ContactManager_m_world_set)
    __swig_setmethods__["m_nullContact"] = _Box2D2.b2ContactManager_m_nullContact_set
    __swig_getmethods__["m_nullContact"] = _Box2D2.b2ContactManager_m_nullContact_get
    if _newclass:m_nullContact = _swig_property(_Box2D2.b2ContactManager_m_nullContact_get, _Box2D2.b2ContactManager_m_nullContact_set)
    __swig_setmethods__["m_destroyImmediate"] = _Box2D2.b2ContactManager_m_destroyImmediate_set
    __swig_getmethods__["m_destroyImmediate"] = _Box2D2.b2ContactManager_m_destroyImmediate_get
    if _newclass:m_destroyImmediate = _swig_property(_Box2D2.b2ContactManager_m_destroyImmediate_get, _Box2D2.b2ContactManager_m_destroyImmediate_set)
    __swig_destroy__ = _Box2D2.delete_b2ContactManager
    __del__ = lambda self : None;
b2ContactManager_swigregister = _Box2D2.b2ContactManager_swigregister
b2ContactManager_swigregister(b2ContactManager)

class b2TimeStep(_object):
    """Proxy of C++ b2TimeStep class"""
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, b2TimeStep, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, b2TimeStep, name)
    __repr__ = _swig_repr
    __swig_setmethods__["dt"] = _Box2D2.b2TimeStep_dt_set
    __swig_getmethods__["dt"] = _Box2D2.b2TimeStep_dt_get
    if _newclass:dt = _swig_property(_Box2D2.b2TimeStep_dt_get, _Box2D2.b2TimeStep_dt_set)
    __swig_setmethods__["inv_dt"] = _Box2D2.b2TimeStep_inv_dt_set
    __swig_getmethods__["inv_dt"] = _Box2D2.b2TimeStep_inv_dt_get
    if _newclass:inv_dt = _swig_property(_Box2D2.b2TimeStep_inv_dt_get, _Box2D2.b2TimeStep_inv_dt_set)
    __swig_setmethods__["dtRatio"] = _Box2D2.b2TimeStep_dtRatio_set
    __swig_getmethods__["dtRatio"] = _Box2D2.b2TimeStep_dtRatio_get
    if _newclass:dtRatio = _swig_property(_Box2D2.b2TimeStep_dtRatio_get, _Box2D2.b2TimeStep_dtRatio_set)
    __swig_setmethods__["maxIterations"] = _Box2D2.b2TimeStep_maxIterations_set
    __swig_getmethods__["maxIterations"] = _Box2D2.b2TimeStep_maxIterations_get
    if _newclass:maxIterations = _swig_property(_Box2D2.b2TimeStep_maxIterations_get, _Box2D2.b2TimeStep_maxIterations_set)
    __swig_setmethods__["warmStarting"] = _Box2D2.b2TimeStep_warmStarting_set
    __swig_getmethods__["warmStarting"] = _Box2D2.b2TimeStep_warmStarting_get
    if _newclass:warmStarting = _swig_property(_Box2D2.b2TimeStep_warmStarting_get, _Box2D2.b2TimeStep_warmStarting_set)
    __swig_setmethods__["positionCorrection"] = _Box2D2.b2TimeStep_positionCorrection_set
    __swig_getmethods__["positionCorrection"] = _Box2D2.b2TimeStep_positionCorrection_get
    if _newclass:positionCorrection = _swig_property(_Box2D2.b2TimeStep_positionCorrection_get, _Box2D2.b2TimeStep_positionCorrection_set)
    def __init__(self, *args): 
        """__init__(self) -> b2TimeStep"""
        this = _Box2D2.new_b2TimeStep(*args)
        try: self.this.append(this)
        except: self.this = this
    __swig_destroy__ = _Box2D2.delete_b2TimeStep
    __del__ = lambda self : None;
b2TimeStep_swigregister = _Box2D2.b2TimeStep_swigregister
b2TimeStep_swigregister(b2TimeStep)

class b2World(_object):
    """Proxy of C++ b2World class"""
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, b2World, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, b2World, name)
    __repr__ = _swig_repr
    def __init__(self, *args): 
        """__init__(self, b2AABB worldAABB, b2Vec2 gravity, bool doSleep) -> b2World"""
        this = _Box2D2.new_b2World(*args)
        try: self.this.append(this)
        except: self.this = this
    __swig_destroy__ = _Box2D2.delete_b2World
    __del__ = lambda self : None;
    def SetDestructionListener(*args):
        """SetDestructionListener(self, b2DestructionListener listener)"""
        return _Box2D2.b2World_SetDestructionListener(*args)

    def SetBoundaryListener(*args):
        """SetBoundaryListener(self, b2BoundaryListener listener)"""
        return _Box2D2.b2World_SetBoundaryListener(*args)

    def SetContactFilter(*args):
        """SetContactFilter(self, b2ContactFilter filter)"""
        return _Box2D2.b2World_SetContactFilter(*args)

    def SetContactListener(*args):
        """SetContactListener(self, b2ContactListener listener)"""
        return _Box2D2.b2World_SetContactListener(*args)

    def SetDebugDraw(*args):
        """SetDebugDraw(self, b2DebugDraw debugDraw)"""
        return _Box2D2.b2World_SetDebugDraw(*args)

    def CreateBody(*args):
        """CreateBody(self, b2BodyDef def) -> b2Body"""
        return _Box2D2.b2World_CreateBody(*args)

    def DestroyBody(*args):
        """DestroyBody(self, b2Body body)"""
        return _Box2D2.b2World_DestroyBody(*args)

    def CreateJoint(*args):
        """CreateJoint(self, b2JointDef def) -> b2Joint"""
        return _Box2D2.b2World_CreateJoint(*args)

    def DestroyJoint(*args):
        """DestroyJoint(self, b2Joint joint)"""
        return _Box2D2.b2World_DestroyJoint(*args)

    def GetGroundBody(*args):
        """GetGroundBody(self) -> b2Body"""
        return _Box2D2.b2World_GetGroundBody(*args)

    def Step(*args):
        """Step(self, float32 timeStep, int32 iterations)"""
        return _Box2D2.b2World_Step(*args)

    def GetBodyList(*args):
        """GetBodyList(self) -> b2Body"""
        return _Box2D2.b2World_GetBodyList(*args)

    def GetJointList(*args):
        """GetJointList(self) -> b2Joint"""
        return _Box2D2.b2World_GetJointList(*args)

    def Refilter(*args):
        """Refilter(self, b2Shape shape)"""
        return _Box2D2.b2World_Refilter(*args)

    def SetWarmStarting(*args):
        """SetWarmStarting(self, bool flag)"""
        return _Box2D2.b2World_SetWarmStarting(*args)

    def SetPositionCorrection(*args):
        """SetPositionCorrection(self, bool flag)"""
        return _Box2D2.b2World_SetPositionCorrection(*args)

    def SetContinuousPhysics(*args):
        """SetContinuousPhysics(self, bool flag)"""
        return _Box2D2.b2World_SetContinuousPhysics(*args)

    def Validate(*args):
        """Validate(self)"""
        return _Box2D2.b2World_Validate(*args)

    def GetProxyCount(*args):
        """GetProxyCount(self) -> int32"""
        return _Box2D2.b2World_GetProxyCount(*args)

    def GetPairCount(*args):
        """GetPairCount(self) -> int32"""
        return _Box2D2.b2World_GetPairCount(*args)

    def GetBodyCount(*args):
        """GetBodyCount(self) -> int32"""
        return _Box2D2.b2World_GetBodyCount(*args)

    def GetJointCount(*args):
        """GetJointCount(self) -> int32"""
        return _Box2D2.b2World_GetJointCount(*args)

    def GetContactCount(*args):
        """GetContactCount(self) -> int32"""
        return _Box2D2.b2World_GetContactCount(*args)

    def SetGravity(*args):
        """SetGravity(self, b2Vec2 gravity)"""
        return _Box2D2.b2World_SetGravity(*args)

    def Query(*args):
        """
        Query(self, b2AABB aabb, b2Shape shapes, int32 maxCount) -> int32
        Query(self, b2AABB aabb, uint32 maxCount) -> PyObject
        """
        return _Box2D2.b2World_Query(*args)

b2World_swigregister = _Box2D2.b2World_swigregister
b2World_swigregister(b2World)

class b2BodyDef(_object):
    """Proxy of C++ b2BodyDef class"""
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, b2BodyDef, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, b2BodyDef, name)
    __repr__ = _swig_repr
    def __init__(self, *args): 
        """__init__(self) -> b2BodyDef"""
        this = _Box2D2.new_b2BodyDef(*args)
        try: self.this.append(this)
        except: self.this = this
    __swig_setmethods__["massData"] = _Box2D2.b2BodyDef_massData_set
    __swig_getmethods__["massData"] = _Box2D2.b2BodyDef_massData_get
    if _newclass:massData = _swig_property(_Box2D2.b2BodyDef_massData_get, _Box2D2.b2BodyDef_massData_set)
    __swig_setmethods__["userData"] = _Box2D2.b2BodyDef_userData_set
    __swig_getmethods__["userData"] = _Box2D2.b2BodyDef_userData_get
    if _newclass:userData = _swig_property(_Box2D2.b2BodyDef_userData_get, _Box2D2.b2BodyDef_userData_set)
    __swig_setmethods__["position"] = _Box2D2.b2BodyDef_position_set
    __swig_getmethods__["position"] = _Box2D2.b2BodyDef_position_get
    if _newclass:position = _swig_property(_Box2D2.b2BodyDef_position_get, _Box2D2.b2BodyDef_position_set)
    __swig_setmethods__["angle"] = _Box2D2.b2BodyDef_angle_set
    __swig_getmethods__["angle"] = _Box2D2.b2BodyDef_angle_get
    if _newclass:angle = _swig_property(_Box2D2.b2BodyDef_angle_get, _Box2D2.b2BodyDef_angle_set)
    __swig_setmethods__["linearDamping"] = _Box2D2.b2BodyDef_linearDamping_set
    __swig_getmethods__["linearDamping"] = _Box2D2.b2BodyDef_linearDamping_get
    if _newclass:linearDamping = _swig_property(_Box2D2.b2BodyDef_linearDamping_get, _Box2D2.b2BodyDef_linearDamping_set)
    __swig_setmethods__["angularDamping"] = _Box2D2.b2BodyDef_angularDamping_set
    __swig_getmethods__["angularDamping"] = _Box2D2.b2BodyDef_angularDamping_get
    if _newclass:angularDamping = _swig_property(_Box2D2.b2BodyDef_angularDamping_get, _Box2D2.b2BodyDef_angularDamping_set)
    __swig_setmethods__["allowSleep"] = _Box2D2.b2BodyDef_allowSleep_set
    __swig_getmethods__["allowSleep"] = _Box2D2.b2BodyDef_allowSleep_get
    if _newclass:allowSleep = _swig_property(_Box2D2.b2BodyDef_allowSleep_get, _Box2D2.b2BodyDef_allowSleep_set)
    __swig_setmethods__["isSleeping"] = _Box2D2.b2BodyDef_isSleeping_set
    __swig_getmethods__["isSleeping"] = _Box2D2.b2BodyDef_isSleeping_get
    if _newclass:isSleeping = _swig_property(_Box2D2.b2BodyDef_isSleeping_get, _Box2D2.b2BodyDef_isSleeping_set)
    __swig_setmethods__["fixedRotation"] = _Box2D2.b2BodyDef_fixedRotation_set
    __swig_getmethods__["fixedRotation"] = _Box2D2.b2BodyDef_fixedRotation_get
    if _newclass:fixedRotation = _swig_property(_Box2D2.b2BodyDef_fixedRotation_get, _Box2D2.b2BodyDef_fixedRotation_set)
    __swig_setmethods__["isBullet"] = _Box2D2.b2BodyDef_isBullet_set
    __swig_getmethods__["isBullet"] = _Box2D2.b2BodyDef_isBullet_get
    if _newclass:isBullet = _swig_property(_Box2D2.b2BodyDef_isBullet_get, _Box2D2.b2BodyDef_isBullet_set)
    __swig_destroy__ = _Box2D2.delete_b2BodyDef
    __del__ = lambda self : None;
b2BodyDef_swigregister = _Box2D2.b2BodyDef_swigregister
b2BodyDef_swigregister(b2BodyDef)

class b2Body(_object):
    """Proxy of C++ b2Body class"""
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, b2Body, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, b2Body, name)
    def __init__(self): raise AttributeError, "No constructor defined"
    __repr__ = _swig_repr
    def CreateShape(*args):
        """CreateShape(self, b2ShapeDef shapeDef) -> b2Shape"""
        return _Box2D2.b2Body_CreateShape(*args)

    def DestroyShape(*args):
        """DestroyShape(self, b2Shape shape)"""
        return _Box2D2.b2Body_DestroyShape(*args)

    def SetMass(*args):
        """SetMass(self, b2MassData massData)"""
        return _Box2D2.b2Body_SetMass(*args)

    def SetMassFromShapes(*args):
        """SetMassFromShapes(self)"""
        return _Box2D2.b2Body_SetMassFromShapes(*args)

    def SetXForm(*args):
        """SetXForm(self, b2Vec2 position, float32 angle) -> bool"""
        return _Box2D2.b2Body_SetXForm(*args)

    def GetXForm(*args):
        """GetXForm(self) -> b2XForm"""
        return _Box2D2.b2Body_GetXForm(*args)

    def GetPosition(*args):
        """GetPosition(self) -> b2Vec2"""
        return _Box2D2.b2Body_GetPosition(*args)

    def GetAngle(*args):
        """GetAngle(self) -> float32"""
        return _Box2D2.b2Body_GetAngle(*args)

    def GetWorldCenter(*args):
        """GetWorldCenter(self) -> b2Vec2"""
        return _Box2D2.b2Body_GetWorldCenter(*args)

    def GetLocalCenter(*args):
        """GetLocalCenter(self) -> b2Vec2"""
        return _Box2D2.b2Body_GetLocalCenter(*args)

    def SetLinearVelocity(*args):
        """SetLinearVelocity(self, b2Vec2 v)"""
        return _Box2D2.b2Body_SetLinearVelocity(*args)

    def GetLinearVelocity(*args):
        """GetLinearVelocity(self) -> b2Vec2"""
        return _Box2D2.b2Body_GetLinearVelocity(*args)

    def SetAngularVelocity(*args):
        """SetAngularVelocity(self, float32 omega)"""
        return _Box2D2.b2Body_SetAngularVelocity(*args)

    def GetAngularVelocity(*args):
        """GetAngularVelocity(self) -> float32"""
        return _Box2D2.b2Body_GetAngularVelocity(*args)

    def ApplyForce(*args):
        """ApplyForce(self, b2Vec2 force, b2Vec2 point)"""
        return _Box2D2.b2Body_ApplyForce(*args)

    def ApplyTorque(*args):
        """ApplyTorque(self, float32 torque)"""
        return _Box2D2.b2Body_ApplyTorque(*args)

    def ApplyImpulse(*args):
        """ApplyImpulse(self, b2Vec2 impulse, b2Vec2 point)"""
        return _Box2D2.b2Body_ApplyImpulse(*args)

    def GetMass(*args):
        """GetMass(self) -> float32"""
        return _Box2D2.b2Body_GetMass(*args)

    def GetInertia(*args):
        """GetInertia(self) -> float32"""
        return _Box2D2.b2Body_GetInertia(*args)

    def GetWorldPoint(*args):
        """GetWorldPoint(self, b2Vec2 localPoint) -> b2Vec2"""
        return _Box2D2.b2Body_GetWorldPoint(*args)

    def GetWorldVector(*args):
        """GetWorldVector(self, b2Vec2 localVector) -> b2Vec2"""
        return _Box2D2.b2Body_GetWorldVector(*args)

    def GetLocalPoint(*args):
        """GetLocalPoint(self, b2Vec2 worldPoint) -> b2Vec2"""
        return _Box2D2.b2Body_GetLocalPoint(*args)

    def GetLocalVector(*args):
        """GetLocalVector(self, b2Vec2 worldVector) -> b2Vec2"""
        return _Box2D2.b2Body_GetLocalVector(*args)

    def GetLinearVelocityFromWorldPoint(*args):
        """GetLinearVelocityFromWorldPoint(self, b2Vec2 worldPoint) -> b2Vec2"""
        return _Box2D2.b2Body_GetLinearVelocityFromWorldPoint(*args)

    def GetLinearVelocityFromLocalPoint(*args):
        """GetLinearVelocityFromLocalPoint(self, b2Vec2 localPoint) -> b2Vec2"""
        return _Box2D2.b2Body_GetLinearVelocityFromLocalPoint(*args)

    def IsBullet(*args):
        """IsBullet(self) -> bool"""
        return _Box2D2.b2Body_IsBullet(*args)

    def SetBullet(*args):
        """SetBullet(self, bool flag)"""
        return _Box2D2.b2Body_SetBullet(*args)

    def IsStatic(*args):
        """IsStatic(self) -> bool"""
        return _Box2D2.b2Body_IsStatic(*args)

    def IsDynamic(*args):
        """IsDynamic(self) -> bool"""
        return _Box2D2.b2Body_IsDynamic(*args)

    def IsFrozen(*args):
        """IsFrozen(self) -> bool"""
        return _Box2D2.b2Body_IsFrozen(*args)

    def IsSleeping(*args):
        """IsSleeping(self) -> bool"""
        return _Box2D2.b2Body_IsSleeping(*args)

    def AllowSleeping(*args):
        """AllowSleeping(self, bool flag)"""
        return _Box2D2.b2Body_AllowSleeping(*args)

    def WakeUp(*args):
        """WakeUp(self)"""
        return _Box2D2.b2Body_WakeUp(*args)

    def PutToSleep(*args):
        """PutToSleep(self)"""
        return _Box2D2.b2Body_PutToSleep(*args)

    def GetShapeList(*args):
        """GetShapeList(self) -> b2Shape"""
        return _Box2D2.b2Body_GetShapeList(*args)

    def GetJointList(*args):
        """GetJointList(self) -> b2JointEdge"""
        return _Box2D2.b2Body_GetJointList(*args)

    def GetNext(*args):
        """GetNext(self) -> b2Body"""
        return _Box2D2.b2Body_GetNext(*args)

    def GetUserData(self): # override the C++ version as it does not work. 
        """Get the specified userData (m_userData)"""
        return self.pyGetUserData()


    def SetUserData(*args):
        """SetUserData(self, void data)"""
        return _Box2D2.b2Body_SetUserData(*args)

    def GetWorld(*args):
        """GetWorld(self) -> b2World"""
        return _Box2D2.b2Body_GetWorld(*args)

    def __repr__(self):
        return "b2Body(Position: %s)" % (self.GetPosition())

    def pyGetUserData(*args):
        """pyGetUserData(self) -> PyObject"""
        return _Box2D2.b2Body_pyGetUserData(*args)

b2Body_swigregister = _Box2D2.b2Body_swigregister
b2Body_swigregister(b2Body)

class b2DistanceJointDef(b2JointDef):
    """Proxy of C++ b2DistanceJointDef class"""
    __swig_setmethods__ = {}
    for _s in [b2JointDef]: __swig_setmethods__.update(getattr(_s,'__swig_setmethods__',{}))
    __setattr__ = lambda self, name, value: _swig_setattr(self, b2DistanceJointDef, name, value)
    __swig_getmethods__ = {}
    for _s in [b2JointDef]: __swig_getmethods__.update(getattr(_s,'__swig_getmethods__',{}))
    __getattr__ = lambda self, name: _swig_getattr(self, b2DistanceJointDef, name)
    __repr__ = _swig_repr
    def __init__(self, *args): 
        """__init__(self) -> b2DistanceJointDef"""
        this = _Box2D2.new_b2DistanceJointDef(*args)
        try: self.this.append(this)
        except: self.this = this
    def Initialize(*args):
        """Initialize(self, b2Body body1, b2Body body2, b2Vec2 anchor1, b2Vec2 anchor2)"""
        return _Box2D2.b2DistanceJointDef_Initialize(*args)

    __swig_setmethods__["localAnchor1"] = _Box2D2.b2DistanceJointDef_localAnchor1_set
    __swig_getmethods__["localAnchor1"] = _Box2D2.b2DistanceJointDef_localAnchor1_get
    if _newclass:localAnchor1 = _swig_property(_Box2D2.b2DistanceJointDef_localAnchor1_get, _Box2D2.b2DistanceJointDef_localAnchor1_set)
    __swig_setmethods__["localAnchor2"] = _Box2D2.b2DistanceJointDef_localAnchor2_set
    __swig_getmethods__["localAnchor2"] = _Box2D2.b2DistanceJointDef_localAnchor2_get
    if _newclass:localAnchor2 = _swig_property(_Box2D2.b2DistanceJointDef_localAnchor2_get, _Box2D2.b2DistanceJointDef_localAnchor2_set)
    __swig_setmethods__["length"] = _Box2D2.b2DistanceJointDef_length_set
    __swig_getmethods__["length"] = _Box2D2.b2DistanceJointDef_length_get
    if _newclass:length = _swig_property(_Box2D2.b2DistanceJointDef_length_get, _Box2D2.b2DistanceJointDef_length_set)
    __swig_setmethods__["frequencyHz"] = _Box2D2.b2DistanceJointDef_frequencyHz_set
    __swig_getmethods__["frequencyHz"] = _Box2D2.b2DistanceJointDef_frequencyHz_get
    if _newclass:frequencyHz = _swig_property(_Box2D2.b2DistanceJointDef_frequencyHz_get, _Box2D2.b2DistanceJointDef_frequencyHz_set)
    __swig_setmethods__["dampingRatio"] = _Box2D2.b2DistanceJointDef_dampingRatio_set
    __swig_getmethods__["dampingRatio"] = _Box2D2.b2DistanceJointDef_dampingRatio_get
    if _newclass:dampingRatio = _swig_property(_Box2D2.b2DistanceJointDef_dampingRatio_get, _Box2D2.b2DistanceJointDef_dampingRatio_set)
    __swig_destroy__ = _Box2D2.delete_b2DistanceJointDef
    __del__ = lambda self : None;
b2DistanceJointDef_swigregister = _Box2D2.b2DistanceJointDef_swigregister
b2DistanceJointDef_swigregister(b2DistanceJointDef)

class b2DistanceJoint(b2Joint):
    """Proxy of C++ b2DistanceJoint class"""
    __swig_setmethods__ = {}
    for _s in [b2Joint]: __swig_setmethods__.update(getattr(_s,'__swig_setmethods__',{}))
    __setattr__ = lambda self, name, value: _swig_setattr(self, b2DistanceJoint, name, value)
    __swig_getmethods__ = {}
    for _s in [b2Joint]: __swig_getmethods__.update(getattr(_s,'__swig_getmethods__',{}))
    __getattr__ = lambda self, name: _swig_getattr(self, b2DistanceJoint, name)
    __repr__ = _swig_repr
    def GetAnchor1(*args):
        """GetAnchor1(self) -> b2Vec2"""
        return _Box2D2.b2DistanceJoint_GetAnchor1(*args)

    def GetAnchor2(*args):
        """GetAnchor2(self) -> b2Vec2"""
        return _Box2D2.b2DistanceJoint_GetAnchor2(*args)

    def GetReactionForce(*args):
        """GetReactionForce(self) -> b2Vec2"""
        return _Box2D2.b2DistanceJoint_GetReactionForce(*args)

    def GetReactionTorque(*args):
        """GetReactionTorque(self) -> float32"""
        return _Box2D2.b2DistanceJoint_GetReactionTorque(*args)

    def __init__(self, *args): 
        """__init__(self, b2DistanceJointDef data) -> b2DistanceJoint"""
        this = _Box2D2.new_b2DistanceJoint(*args)
        try: self.this.append(this)
        except: self.this = this
    def InitVelocityConstraints(*args):
        """InitVelocityConstraints(self, b2TimeStep step)"""
        return _Box2D2.b2DistanceJoint_InitVelocityConstraints(*args)

    def SolveVelocityConstraints(*args):
        """SolveVelocityConstraints(self, b2TimeStep step)"""
        return _Box2D2.b2DistanceJoint_SolveVelocityConstraints(*args)

    def SolvePositionConstraints(*args):
        """SolvePositionConstraints(self) -> bool"""
        return _Box2D2.b2DistanceJoint_SolvePositionConstraints(*args)

    __swig_setmethods__["m_localAnchor1"] = _Box2D2.b2DistanceJoint_m_localAnchor1_set
    __swig_getmethods__["m_localAnchor1"] = _Box2D2.b2DistanceJoint_m_localAnchor1_get
    if _newclass:m_localAnchor1 = _swig_property(_Box2D2.b2DistanceJoint_m_localAnchor1_get, _Box2D2.b2DistanceJoint_m_localAnchor1_set)
    __swig_setmethods__["m_localAnchor2"] = _Box2D2.b2DistanceJoint_m_localAnchor2_set
    __swig_getmethods__["m_localAnchor2"] = _Box2D2.b2DistanceJoint_m_localAnchor2_get
    if _newclass:m_localAnchor2 = _swig_property(_Box2D2.b2DistanceJoint_m_localAnchor2_get, _Box2D2.b2DistanceJoint_m_localAnchor2_set)
    __swig_setmethods__["m_u"] = _Box2D2.b2DistanceJoint_m_u_set
    __swig_getmethods__["m_u"] = _Box2D2.b2DistanceJoint_m_u_get
    if _newclass:m_u = _swig_property(_Box2D2.b2DistanceJoint_m_u_get, _Box2D2.b2DistanceJoint_m_u_set)
    __swig_setmethods__["m_frequencyHz"] = _Box2D2.b2DistanceJoint_m_frequencyHz_set
    __swig_getmethods__["m_frequencyHz"] = _Box2D2.b2DistanceJoint_m_frequencyHz_get
    if _newclass:m_frequencyHz = _swig_property(_Box2D2.b2DistanceJoint_m_frequencyHz_get, _Box2D2.b2DistanceJoint_m_frequencyHz_set)
    __swig_setmethods__["m_dampingRatio"] = _Box2D2.b2DistanceJoint_m_dampingRatio_set
    __swig_getmethods__["m_dampingRatio"] = _Box2D2.b2DistanceJoint_m_dampingRatio_get
    if _newclass:m_dampingRatio = _swig_property(_Box2D2.b2DistanceJoint_m_dampingRatio_get, _Box2D2.b2DistanceJoint_m_dampingRatio_set)
    __swig_setmethods__["m_gamma"] = _Box2D2.b2DistanceJoint_m_gamma_set
    __swig_getmethods__["m_gamma"] = _Box2D2.b2DistanceJoint_m_gamma_get
    if _newclass:m_gamma = _swig_property(_Box2D2.b2DistanceJoint_m_gamma_get, _Box2D2.b2DistanceJoint_m_gamma_set)
    __swig_setmethods__["m_bias"] = _Box2D2.b2DistanceJoint_m_bias_set
    __swig_getmethods__["m_bias"] = _Box2D2.b2DistanceJoint_m_bias_get
    if _newclass:m_bias = _swig_property(_Box2D2.b2DistanceJoint_m_bias_get, _Box2D2.b2DistanceJoint_m_bias_set)
    __swig_setmethods__["m_impulse"] = _Box2D2.b2DistanceJoint_m_impulse_set
    __swig_getmethods__["m_impulse"] = _Box2D2.b2DistanceJoint_m_impulse_get
    if _newclass:m_impulse = _swig_property(_Box2D2.b2DistanceJoint_m_impulse_get, _Box2D2.b2DistanceJoint_m_impulse_set)
    __swig_setmethods__["m_mass"] = _Box2D2.b2DistanceJoint_m_mass_set
    __swig_getmethods__["m_mass"] = _Box2D2.b2DistanceJoint_m_mass_get
    if _newclass:m_mass = _swig_property(_Box2D2.b2DistanceJoint_m_mass_get, _Box2D2.b2DistanceJoint_m_mass_set)
    __swig_setmethods__["m_length"] = _Box2D2.b2DistanceJoint_m_length_set
    __swig_getmethods__["m_length"] = _Box2D2.b2DistanceJoint_m_length_get
    if _newclass:m_length = _swig_property(_Box2D2.b2DistanceJoint_m_length_get, _Box2D2.b2DistanceJoint_m_length_set)
    def __repr__(self):
        return b2JointInfo(self)

    __swig_destroy__ = _Box2D2.delete_b2DistanceJoint
    __del__ = lambda self : None;
b2DistanceJoint_swigregister = _Box2D2.b2DistanceJoint_swigregister
b2DistanceJoint_swigregister(b2DistanceJoint)

class b2MouseJointDef(b2JointDef):
    """Proxy of C++ b2MouseJointDef class"""
    __swig_setmethods__ = {}
    for _s in [b2JointDef]: __swig_setmethods__.update(getattr(_s,'__swig_setmethods__',{}))
    __setattr__ = lambda self, name, value: _swig_setattr(self, b2MouseJointDef, name, value)
    __swig_getmethods__ = {}
    for _s in [b2JointDef]: __swig_getmethods__.update(getattr(_s,'__swig_getmethods__',{}))
    __getattr__ = lambda self, name: _swig_getattr(self, b2MouseJointDef, name)
    __repr__ = _swig_repr
    def __init__(self, *args): 
        """__init__(self) -> b2MouseJointDef"""
        this = _Box2D2.new_b2MouseJointDef(*args)
        try: self.this.append(this)
        except: self.this = this
    __swig_setmethods__["target"] = _Box2D2.b2MouseJointDef_target_set
    __swig_getmethods__["target"] = _Box2D2.b2MouseJointDef_target_get
    if _newclass:target = _swig_property(_Box2D2.b2MouseJointDef_target_get, _Box2D2.b2MouseJointDef_target_set)
    __swig_setmethods__["maxForce"] = _Box2D2.b2MouseJointDef_maxForce_set
    __swig_getmethods__["maxForce"] = _Box2D2.b2MouseJointDef_maxForce_get
    if _newclass:maxForce = _swig_property(_Box2D2.b2MouseJointDef_maxForce_get, _Box2D2.b2MouseJointDef_maxForce_set)
    __swig_setmethods__["frequencyHz"] = _Box2D2.b2MouseJointDef_frequencyHz_set
    __swig_getmethods__["frequencyHz"] = _Box2D2.b2MouseJointDef_frequencyHz_get
    if _newclass:frequencyHz = _swig_property(_Box2D2.b2MouseJointDef_frequencyHz_get, _Box2D2.b2MouseJointDef_frequencyHz_set)
    __swig_setmethods__["dampingRatio"] = _Box2D2.b2MouseJointDef_dampingRatio_set
    __swig_getmethods__["dampingRatio"] = _Box2D2.b2MouseJointDef_dampingRatio_get
    if _newclass:dampingRatio = _swig_property(_Box2D2.b2MouseJointDef_dampingRatio_get, _Box2D2.b2MouseJointDef_dampingRatio_set)
    __swig_setmethods__["timeStep"] = _Box2D2.b2MouseJointDef_timeStep_set
    __swig_getmethods__["timeStep"] = _Box2D2.b2MouseJointDef_timeStep_get
    if _newclass:timeStep = _swig_property(_Box2D2.b2MouseJointDef_timeStep_get, _Box2D2.b2MouseJointDef_timeStep_set)
    __swig_destroy__ = _Box2D2.delete_b2MouseJointDef
    __del__ = lambda self : None;
b2MouseJointDef_swigregister = _Box2D2.b2MouseJointDef_swigregister
b2MouseJointDef_swigregister(b2MouseJointDef)

class b2MouseJoint(b2Joint):
    """Proxy of C++ b2MouseJoint class"""
    __swig_setmethods__ = {}
    for _s in [b2Joint]: __swig_setmethods__.update(getattr(_s,'__swig_setmethods__',{}))
    __setattr__ = lambda self, name, value: _swig_setattr(self, b2MouseJoint, name, value)
    __swig_getmethods__ = {}
    for _s in [b2Joint]: __swig_getmethods__.update(getattr(_s,'__swig_getmethods__',{}))
    __getattr__ = lambda self, name: _swig_getattr(self, b2MouseJoint, name)
    __repr__ = _swig_repr
    def GetAnchor1(*args):
        """GetAnchor1(self) -> b2Vec2"""
        return _Box2D2.b2MouseJoint_GetAnchor1(*args)

    def GetAnchor2(*args):
        """GetAnchor2(self) -> b2Vec2"""
        return _Box2D2.b2MouseJoint_GetAnchor2(*args)

    def GetReactionForce(*args):
        """GetReactionForce(self) -> b2Vec2"""
        return _Box2D2.b2MouseJoint_GetReactionForce(*args)

    def GetReactionTorque(*args):
        """GetReactionTorque(self) -> float32"""
        return _Box2D2.b2MouseJoint_GetReactionTorque(*args)

    def SetTarget(*args):
        """SetTarget(self, b2Vec2 target)"""
        return _Box2D2.b2MouseJoint_SetTarget(*args)

    def __init__(self, *args): 
        """__init__(self, b2MouseJointDef def) -> b2MouseJoint"""
        this = _Box2D2.new_b2MouseJoint(*args)
        try: self.this.append(this)
        except: self.this = this
    def InitVelocityConstraints(*args):
        """InitVelocityConstraints(self, b2TimeStep step)"""
        return _Box2D2.b2MouseJoint_InitVelocityConstraints(*args)

    def SolveVelocityConstraints(*args):
        """SolveVelocityConstraints(self, b2TimeStep step)"""
        return _Box2D2.b2MouseJoint_SolveVelocityConstraints(*args)

    def SolvePositionConstraints(*args):
        """SolvePositionConstraints(self) -> bool"""
        return _Box2D2.b2MouseJoint_SolvePositionConstraints(*args)

    __swig_setmethods__["m_localAnchor"] = _Box2D2.b2MouseJoint_m_localAnchor_set
    __swig_getmethods__["m_localAnchor"] = _Box2D2.b2MouseJoint_m_localAnchor_get
    if _newclass:m_localAnchor = _swig_property(_Box2D2.b2MouseJoint_m_localAnchor_get, _Box2D2.b2MouseJoint_m_localAnchor_set)
    __swig_setmethods__["m_target"] = _Box2D2.b2MouseJoint_m_target_set
    __swig_getmethods__["m_target"] = _Box2D2.b2MouseJoint_m_target_get
    if _newclass:m_target = _swig_property(_Box2D2.b2MouseJoint_m_target_get, _Box2D2.b2MouseJoint_m_target_set)
    __swig_setmethods__["m_impulse"] = _Box2D2.b2MouseJoint_m_impulse_set
    __swig_getmethods__["m_impulse"] = _Box2D2.b2MouseJoint_m_impulse_get
    if _newclass:m_impulse = _swig_property(_Box2D2.b2MouseJoint_m_impulse_get, _Box2D2.b2MouseJoint_m_impulse_set)
    __swig_setmethods__["m_mass"] = _Box2D2.b2MouseJoint_m_mass_set
    __swig_getmethods__["m_mass"] = _Box2D2.b2MouseJoint_m_mass_get
    if _newclass:m_mass = _swig_property(_Box2D2.b2MouseJoint_m_mass_get, _Box2D2.b2MouseJoint_m_mass_set)
    __swig_setmethods__["m_C"] = _Box2D2.b2MouseJoint_m_C_set
    __swig_getmethods__["m_C"] = _Box2D2.b2MouseJoint_m_C_get
    if _newclass:m_C = _swig_property(_Box2D2.b2MouseJoint_m_C_get, _Box2D2.b2MouseJoint_m_C_set)
    __swig_setmethods__["m_maxForce"] = _Box2D2.b2MouseJoint_m_maxForce_set
    __swig_getmethods__["m_maxForce"] = _Box2D2.b2MouseJoint_m_maxForce_get
    if _newclass:m_maxForce = _swig_property(_Box2D2.b2MouseJoint_m_maxForce_get, _Box2D2.b2MouseJoint_m_maxForce_set)
    __swig_setmethods__["m_beta"] = _Box2D2.b2MouseJoint_m_beta_set
    __swig_getmethods__["m_beta"] = _Box2D2.b2MouseJoint_m_beta_get
    if _newclass:m_beta = _swig_property(_Box2D2.b2MouseJoint_m_beta_get, _Box2D2.b2MouseJoint_m_beta_set)
    __swig_setmethods__["m_gamma"] = _Box2D2.b2MouseJoint_m_gamma_set
    __swig_getmethods__["m_gamma"] = _Box2D2.b2MouseJoint_m_gamma_get
    if _newclass:m_gamma = _swig_property(_Box2D2.b2MouseJoint_m_gamma_get, _Box2D2.b2MouseJoint_m_gamma_set)
    def __repr__(self):
        return b2JointInfo(self)

    __swig_destroy__ = _Box2D2.delete_b2MouseJoint
    __del__ = lambda self : None;
b2MouseJoint_swigregister = _Box2D2.b2MouseJoint_swigregister
b2MouseJoint_swigregister(b2MouseJoint)

class b2PrismaticJointDef(b2JointDef):
    """Proxy of C++ b2PrismaticJointDef class"""
    __swig_setmethods__ = {}
    for _s in [b2JointDef]: __swig_setmethods__.update(getattr(_s,'__swig_setmethods__',{}))
    __setattr__ = lambda self, name, value: _swig_setattr(self, b2PrismaticJointDef, name, value)
    __swig_getmethods__ = {}
    for _s in [b2JointDef]: __swig_getmethods__.update(getattr(_s,'__swig_getmethods__',{}))
    __getattr__ = lambda self, name: _swig_getattr(self, b2PrismaticJointDef, name)
    __repr__ = _swig_repr
    def __init__(self, *args): 
        """__init__(self) -> b2PrismaticJointDef"""
        this = _Box2D2.new_b2PrismaticJointDef(*args)
        try: self.this.append(this)
        except: self.this = this
    def Initialize(*args):
        """Initialize(self, b2Body body1, b2Body body2, b2Vec2 anchor, b2Vec2 axis)"""
        return _Box2D2.b2PrismaticJointDef_Initialize(*args)

    __swig_setmethods__["localAnchor1"] = _Box2D2.b2PrismaticJointDef_localAnchor1_set
    __swig_getmethods__["localAnchor1"] = _Box2D2.b2PrismaticJointDef_localAnchor1_get
    if _newclass:localAnchor1 = _swig_property(_Box2D2.b2PrismaticJointDef_localAnchor1_get, _Box2D2.b2PrismaticJointDef_localAnchor1_set)
    __swig_setmethods__["localAnchor2"] = _Box2D2.b2PrismaticJointDef_localAnchor2_set
    __swig_getmethods__["localAnchor2"] = _Box2D2.b2PrismaticJointDef_localAnchor2_get
    if _newclass:localAnchor2 = _swig_property(_Box2D2.b2PrismaticJointDef_localAnchor2_get, _Box2D2.b2PrismaticJointDef_localAnchor2_set)
    __swig_setmethods__["localAxis1"] = _Box2D2.b2PrismaticJointDef_localAxis1_set
    __swig_getmethods__["localAxis1"] = _Box2D2.b2PrismaticJointDef_localAxis1_get
    if _newclass:localAxis1 = _swig_property(_Box2D2.b2PrismaticJointDef_localAxis1_get, _Box2D2.b2PrismaticJointDef_localAxis1_set)
    __swig_setmethods__["referenceAngle"] = _Box2D2.b2PrismaticJointDef_referenceAngle_set
    __swig_getmethods__["referenceAngle"] = _Box2D2.b2PrismaticJointDef_referenceAngle_get
    if _newclass:referenceAngle = _swig_property(_Box2D2.b2PrismaticJointDef_referenceAngle_get, _Box2D2.b2PrismaticJointDef_referenceAngle_set)
    __swig_setmethods__["enableLimit"] = _Box2D2.b2PrismaticJointDef_enableLimit_set
    __swig_getmethods__["enableLimit"] = _Box2D2.b2PrismaticJointDef_enableLimit_get
    if _newclass:enableLimit = _swig_property(_Box2D2.b2PrismaticJointDef_enableLimit_get, _Box2D2.b2PrismaticJointDef_enableLimit_set)
    __swig_setmethods__["lowerTranslation"] = _Box2D2.b2PrismaticJointDef_lowerTranslation_set
    __swig_getmethods__["lowerTranslation"] = _Box2D2.b2PrismaticJointDef_lowerTranslation_get
    if _newclass:lowerTranslation = _swig_property(_Box2D2.b2PrismaticJointDef_lowerTranslation_get, _Box2D2.b2PrismaticJointDef_lowerTranslation_set)
    __swig_setmethods__["upperTranslation"] = _Box2D2.b2PrismaticJointDef_upperTranslation_set
    __swig_getmethods__["upperTranslation"] = _Box2D2.b2PrismaticJointDef_upperTranslation_get
    if _newclass:upperTranslation = _swig_property(_Box2D2.b2PrismaticJointDef_upperTranslation_get, _Box2D2.b2PrismaticJointDef_upperTranslation_set)
    __swig_setmethods__["enableMotor"] = _Box2D2.b2PrismaticJointDef_enableMotor_set
    __swig_getmethods__["enableMotor"] = _Box2D2.b2PrismaticJointDef_enableMotor_get
    if _newclass:enableMotor = _swig_property(_Box2D2.b2PrismaticJointDef_enableMotor_get, _Box2D2.b2PrismaticJointDef_enableMotor_set)
    __swig_setmethods__["maxMotorForce"] = _Box2D2.b2PrismaticJointDef_maxMotorForce_set
    __swig_getmethods__["maxMotorForce"] = _Box2D2.b2PrismaticJointDef_maxMotorForce_get
    if _newclass:maxMotorForce = _swig_property(_Box2D2.b2PrismaticJointDef_maxMotorForce_get, _Box2D2.b2PrismaticJointDef_maxMotorForce_set)
    __swig_setmethods__["motorSpeed"] = _Box2D2.b2PrismaticJointDef_motorSpeed_set
    __swig_getmethods__["motorSpeed"] = _Box2D2.b2PrismaticJointDef_motorSpeed_get
    if _newclass:motorSpeed = _swig_property(_Box2D2.b2PrismaticJointDef_motorSpeed_get, _Box2D2.b2PrismaticJointDef_motorSpeed_set)
    __swig_destroy__ = _Box2D2.delete_b2PrismaticJointDef
    __del__ = lambda self : None;
b2PrismaticJointDef_swigregister = _Box2D2.b2PrismaticJointDef_swigregister
b2PrismaticJointDef_swigregister(b2PrismaticJointDef)

class b2PrismaticJoint(b2Joint):
    """Proxy of C++ b2PrismaticJoint class"""
    __swig_setmethods__ = {}
    for _s in [b2Joint]: __swig_setmethods__.update(getattr(_s,'__swig_setmethods__',{}))
    __setattr__ = lambda self, name, value: _swig_setattr(self, b2PrismaticJoint, name, value)
    __swig_getmethods__ = {}
    for _s in [b2Joint]: __swig_getmethods__.update(getattr(_s,'__swig_getmethods__',{}))
    __getattr__ = lambda self, name: _swig_getattr(self, b2PrismaticJoint, name)
    __repr__ = _swig_repr
    def GetAnchor1(*args):
        """GetAnchor1(self) -> b2Vec2"""
        return _Box2D2.b2PrismaticJoint_GetAnchor1(*args)

    def GetAnchor2(*args):
        """GetAnchor2(self) -> b2Vec2"""
        return _Box2D2.b2PrismaticJoint_GetAnchor2(*args)

    def GetReactionForce(*args):
        """GetReactionForce(self) -> b2Vec2"""
        return _Box2D2.b2PrismaticJoint_GetReactionForce(*args)

    def GetReactionTorque(*args):
        """GetReactionTorque(self) -> float32"""
        return _Box2D2.b2PrismaticJoint_GetReactionTorque(*args)

    def GetJointTranslation(*args):
        """GetJointTranslation(self) -> float32"""
        return _Box2D2.b2PrismaticJoint_GetJointTranslation(*args)

    def GetJointSpeed(*args):
        """GetJointSpeed(self) -> float32"""
        return _Box2D2.b2PrismaticJoint_GetJointSpeed(*args)

    def IsLimitEnabled(*args):
        """IsLimitEnabled(self) -> bool"""
        return _Box2D2.b2PrismaticJoint_IsLimitEnabled(*args)

    def EnableLimit(*args):
        """EnableLimit(self, bool flag)"""
        return _Box2D2.b2PrismaticJoint_EnableLimit(*args)

    def GetLowerLimit(*args):
        """GetLowerLimit(self) -> float32"""
        return _Box2D2.b2PrismaticJoint_GetLowerLimit(*args)

    def GetUpperLimit(*args):
        """GetUpperLimit(self) -> float32"""
        return _Box2D2.b2PrismaticJoint_GetUpperLimit(*args)

    def SetLimits(*args):
        """SetLimits(self, float32 lower, float32 upper)"""
        return _Box2D2.b2PrismaticJoint_SetLimits(*args)

    def IsMotorEnabled(*args):
        """IsMotorEnabled(self) -> bool"""
        return _Box2D2.b2PrismaticJoint_IsMotorEnabled(*args)

    def EnableMotor(*args):
        """EnableMotor(self, bool flag)"""
        return _Box2D2.b2PrismaticJoint_EnableMotor(*args)

    def SetMotorSpeed(*args):
        """SetMotorSpeed(self, float32 speed)"""
        return _Box2D2.b2PrismaticJoint_SetMotorSpeed(*args)

    def GetMotorSpeed(*args):
        """GetMotorSpeed(self) -> float32"""
        return _Box2D2.b2PrismaticJoint_GetMotorSpeed(*args)

    def SetMaxMotorForce(*args):
        """SetMaxMotorForce(self, float32 force)"""
        return _Box2D2.b2PrismaticJoint_SetMaxMotorForce(*args)

    def GetMotorForce(*args):
        """GetMotorForce(self) -> float32"""
        return _Box2D2.b2PrismaticJoint_GetMotorForce(*args)

    def __init__(self, *args): 
        """__init__(self, b2PrismaticJointDef def) -> b2PrismaticJoint"""
        this = _Box2D2.new_b2PrismaticJoint(*args)
        try: self.this.append(this)
        except: self.this = this
    def InitVelocityConstraints(*args):
        """InitVelocityConstraints(self, b2TimeStep step)"""
        return _Box2D2.b2PrismaticJoint_InitVelocityConstraints(*args)

    def SolveVelocityConstraints(*args):
        """SolveVelocityConstraints(self, b2TimeStep step)"""
        return _Box2D2.b2PrismaticJoint_SolveVelocityConstraints(*args)

    def SolvePositionConstraints(*args):
        """SolvePositionConstraints(self) -> bool"""
        return _Box2D2.b2PrismaticJoint_SolvePositionConstraints(*args)

    __swig_setmethods__["m_localAnchor1"] = _Box2D2.b2PrismaticJoint_m_localAnchor1_set
    __swig_getmethods__["m_localAnchor1"] = _Box2D2.b2PrismaticJoint_m_localAnchor1_get
    if _newclass:m_localAnchor1 = _swig_property(_Box2D2.b2PrismaticJoint_m_localAnchor1_get, _Box2D2.b2PrismaticJoint_m_localAnchor1_set)
    __swig_setmethods__["m_localAnchor2"] = _Box2D2.b2PrismaticJoint_m_localAnchor2_set
    __swig_getmethods__["m_localAnchor2"] = _Box2D2.b2PrismaticJoint_m_localAnchor2_get
    if _newclass:m_localAnchor2 = _swig_property(_Box2D2.b2PrismaticJoint_m_localAnchor2_get, _Box2D2.b2PrismaticJoint_m_localAnchor2_set)
    __swig_setmethods__["m_localXAxis1"] = _Box2D2.b2PrismaticJoint_m_localXAxis1_set
    __swig_getmethods__["m_localXAxis1"] = _Box2D2.b2PrismaticJoint_m_localXAxis1_get
    if _newclass:m_localXAxis1 = _swig_property(_Box2D2.b2PrismaticJoint_m_localXAxis1_get, _Box2D2.b2PrismaticJoint_m_localXAxis1_set)
    __swig_setmethods__["m_localYAxis1"] = _Box2D2.b2PrismaticJoint_m_localYAxis1_set
    __swig_getmethods__["m_localYAxis1"] = _Box2D2.b2PrismaticJoint_m_localYAxis1_get
    if _newclass:m_localYAxis1 = _swig_property(_Box2D2.b2PrismaticJoint_m_localYAxis1_get, _Box2D2.b2PrismaticJoint_m_localYAxis1_set)
    __swig_setmethods__["m_refAngle"] = _Box2D2.b2PrismaticJoint_m_refAngle_set
    __swig_getmethods__["m_refAngle"] = _Box2D2.b2PrismaticJoint_m_refAngle_get
    if _newclass:m_refAngle = _swig_property(_Box2D2.b2PrismaticJoint_m_refAngle_get, _Box2D2.b2PrismaticJoint_m_refAngle_set)
    __swig_setmethods__["m_linearJacobian"] = _Box2D2.b2PrismaticJoint_m_linearJacobian_set
    __swig_getmethods__["m_linearJacobian"] = _Box2D2.b2PrismaticJoint_m_linearJacobian_get
    if _newclass:m_linearJacobian = _swig_property(_Box2D2.b2PrismaticJoint_m_linearJacobian_get, _Box2D2.b2PrismaticJoint_m_linearJacobian_set)
    __swig_setmethods__["m_linearMass"] = _Box2D2.b2PrismaticJoint_m_linearMass_set
    __swig_getmethods__["m_linearMass"] = _Box2D2.b2PrismaticJoint_m_linearMass_get
    if _newclass:m_linearMass = _swig_property(_Box2D2.b2PrismaticJoint_m_linearMass_get, _Box2D2.b2PrismaticJoint_m_linearMass_set)
    __swig_setmethods__["m_force"] = _Box2D2.b2PrismaticJoint_m_force_set
    __swig_getmethods__["m_force"] = _Box2D2.b2PrismaticJoint_m_force_get
    if _newclass:m_force = _swig_property(_Box2D2.b2PrismaticJoint_m_force_get, _Box2D2.b2PrismaticJoint_m_force_set)
    __swig_setmethods__["m_angularMass"] = _Box2D2.b2PrismaticJoint_m_angularMass_set
    __swig_getmethods__["m_angularMass"] = _Box2D2.b2PrismaticJoint_m_angularMass_get
    if _newclass:m_angularMass = _swig_property(_Box2D2.b2PrismaticJoint_m_angularMass_get, _Box2D2.b2PrismaticJoint_m_angularMass_set)
    __swig_setmethods__["m_torque"] = _Box2D2.b2PrismaticJoint_m_torque_set
    __swig_getmethods__["m_torque"] = _Box2D2.b2PrismaticJoint_m_torque_get
    if _newclass:m_torque = _swig_property(_Box2D2.b2PrismaticJoint_m_torque_get, _Box2D2.b2PrismaticJoint_m_torque_set)
    __swig_setmethods__["m_motorJacobian"] = _Box2D2.b2PrismaticJoint_m_motorJacobian_set
    __swig_getmethods__["m_motorJacobian"] = _Box2D2.b2PrismaticJoint_m_motorJacobian_get
    if _newclass:m_motorJacobian = _swig_property(_Box2D2.b2PrismaticJoint_m_motorJacobian_get, _Box2D2.b2PrismaticJoint_m_motorJacobian_set)
    __swig_setmethods__["m_motorMass"] = _Box2D2.b2PrismaticJoint_m_motorMass_set
    __swig_getmethods__["m_motorMass"] = _Box2D2.b2PrismaticJoint_m_motorMass_get
    if _newclass:m_motorMass = _swig_property(_Box2D2.b2PrismaticJoint_m_motorMass_get, _Box2D2.b2PrismaticJoint_m_motorMass_set)
    __swig_setmethods__["m_motorForce"] = _Box2D2.b2PrismaticJoint_m_motorForce_set
    __swig_getmethods__["m_motorForce"] = _Box2D2.b2PrismaticJoint_m_motorForce_get
    if _newclass:m_motorForce = _swig_property(_Box2D2.b2PrismaticJoint_m_motorForce_get, _Box2D2.b2PrismaticJoint_m_motorForce_set)
    __swig_setmethods__["m_limitForce"] = _Box2D2.b2PrismaticJoint_m_limitForce_set
    __swig_getmethods__["m_limitForce"] = _Box2D2.b2PrismaticJoint_m_limitForce_get
    if _newclass:m_limitForce = _swig_property(_Box2D2.b2PrismaticJoint_m_limitForce_get, _Box2D2.b2PrismaticJoint_m_limitForce_set)
    __swig_setmethods__["m_limitPositionImpulse"] = _Box2D2.b2PrismaticJoint_m_limitPositionImpulse_set
    __swig_getmethods__["m_limitPositionImpulse"] = _Box2D2.b2PrismaticJoint_m_limitPositionImpulse_get
    if _newclass:m_limitPositionImpulse = _swig_property(_Box2D2.b2PrismaticJoint_m_limitPositionImpulse_get, _Box2D2.b2PrismaticJoint_m_limitPositionImpulse_set)
    __swig_setmethods__["m_lowerTranslation"] = _Box2D2.b2PrismaticJoint_m_lowerTranslation_set
    __swig_getmethods__["m_lowerTranslation"] = _Box2D2.b2PrismaticJoint_m_lowerTranslation_get
    if _newclass:m_lowerTranslation = _swig_property(_Box2D2.b2PrismaticJoint_m_lowerTranslation_get, _Box2D2.b2PrismaticJoint_m_lowerTranslation_set)
    __swig_setmethods__["m_upperTranslation"] = _Box2D2.b2PrismaticJoint_m_upperTranslation_set
    __swig_getmethods__["m_upperTranslation"] = _Box2D2.b2PrismaticJoint_m_upperTranslation_get
    if _newclass:m_upperTranslation = _swig_property(_Box2D2.b2PrismaticJoint_m_upperTranslation_get, _Box2D2.b2PrismaticJoint_m_upperTranslation_set)
    __swig_setmethods__["m_maxMotorForce"] = _Box2D2.b2PrismaticJoint_m_maxMotorForce_set
    __swig_getmethods__["m_maxMotorForce"] = _Box2D2.b2PrismaticJoint_m_maxMotorForce_get
    if _newclass:m_maxMotorForce = _swig_property(_Box2D2.b2PrismaticJoint_m_maxMotorForce_get, _Box2D2.b2PrismaticJoint_m_maxMotorForce_set)
    __swig_setmethods__["m_motorSpeed"] = _Box2D2.b2PrismaticJoint_m_motorSpeed_set
    __swig_getmethods__["m_motorSpeed"] = _Box2D2.b2PrismaticJoint_m_motorSpeed_get
    if _newclass:m_motorSpeed = _swig_property(_Box2D2.b2PrismaticJoint_m_motorSpeed_get, _Box2D2.b2PrismaticJoint_m_motorSpeed_set)
    __swig_setmethods__["m_enableLimit"] = _Box2D2.b2PrismaticJoint_m_enableLimit_set
    __swig_getmethods__["m_enableLimit"] = _Box2D2.b2PrismaticJoint_m_enableLimit_get
    if _newclass:m_enableLimit = _swig_property(_Box2D2.b2PrismaticJoint_m_enableLimit_get, _Box2D2.b2PrismaticJoint_m_enableLimit_set)
    __swig_setmethods__["m_enableMotor"] = _Box2D2.b2PrismaticJoint_m_enableMotor_set
    __swig_getmethods__["m_enableMotor"] = _Box2D2.b2PrismaticJoint_m_enableMotor_get
    if _newclass:m_enableMotor = _swig_property(_Box2D2.b2PrismaticJoint_m_enableMotor_get, _Box2D2.b2PrismaticJoint_m_enableMotor_set)
    __swig_setmethods__["m_limitState"] = _Box2D2.b2PrismaticJoint_m_limitState_set
    __swig_getmethods__["m_limitState"] = _Box2D2.b2PrismaticJoint_m_limitState_get
    if _newclass:m_limitState = _swig_property(_Box2D2.b2PrismaticJoint_m_limitState_get, _Box2D2.b2PrismaticJoint_m_limitState_set)
    def __repr__(self):
        return b2JointInfo(self)

    __swig_destroy__ = _Box2D2.delete_b2PrismaticJoint
    __del__ = lambda self : None;
b2PrismaticJoint_swigregister = _Box2D2.b2PrismaticJoint_swigregister
b2PrismaticJoint_swigregister(b2PrismaticJoint)

class b2RevoluteJointDef(b2JointDef):
    """Proxy of C++ b2RevoluteJointDef class"""
    __swig_setmethods__ = {}
    for _s in [b2JointDef]: __swig_setmethods__.update(getattr(_s,'__swig_setmethods__',{}))
    __setattr__ = lambda self, name, value: _swig_setattr(self, b2RevoluteJointDef, name, value)
    __swig_getmethods__ = {}
    for _s in [b2JointDef]: __swig_getmethods__.update(getattr(_s,'__swig_getmethods__',{}))
    __getattr__ = lambda self, name: _swig_getattr(self, b2RevoluteJointDef, name)
    __repr__ = _swig_repr
    def __init__(self, *args): 
        """__init__(self) -> b2RevoluteJointDef"""
        this = _Box2D2.new_b2RevoluteJointDef(*args)
        try: self.this.append(this)
        except: self.this = this
    def Initialize(*args):
        """Initialize(self, b2Body body1, b2Body body2, b2Vec2 anchor)"""
        return _Box2D2.b2RevoluteJointDef_Initialize(*args)

    __swig_setmethods__["localAnchor1"] = _Box2D2.b2RevoluteJointDef_localAnchor1_set
    __swig_getmethods__["localAnchor1"] = _Box2D2.b2RevoluteJointDef_localAnchor1_get
    if _newclass:localAnchor1 = _swig_property(_Box2D2.b2RevoluteJointDef_localAnchor1_get, _Box2D2.b2RevoluteJointDef_localAnchor1_set)
    __swig_setmethods__["localAnchor2"] = _Box2D2.b2RevoluteJointDef_localAnchor2_set
    __swig_getmethods__["localAnchor2"] = _Box2D2.b2RevoluteJointDef_localAnchor2_get
    if _newclass:localAnchor2 = _swig_property(_Box2D2.b2RevoluteJointDef_localAnchor2_get, _Box2D2.b2RevoluteJointDef_localAnchor2_set)
    __swig_setmethods__["referenceAngle"] = _Box2D2.b2RevoluteJointDef_referenceAngle_set
    __swig_getmethods__["referenceAngle"] = _Box2D2.b2RevoluteJointDef_referenceAngle_get
    if _newclass:referenceAngle = _swig_property(_Box2D2.b2RevoluteJointDef_referenceAngle_get, _Box2D2.b2RevoluteJointDef_referenceAngle_set)
    __swig_setmethods__["enableLimit"] = _Box2D2.b2RevoluteJointDef_enableLimit_set
    __swig_getmethods__["enableLimit"] = _Box2D2.b2RevoluteJointDef_enableLimit_get
    if _newclass:enableLimit = _swig_property(_Box2D2.b2RevoluteJointDef_enableLimit_get, _Box2D2.b2RevoluteJointDef_enableLimit_set)
    __swig_setmethods__["lowerAngle"] = _Box2D2.b2RevoluteJointDef_lowerAngle_set
    __swig_getmethods__["lowerAngle"] = _Box2D2.b2RevoluteJointDef_lowerAngle_get
    if _newclass:lowerAngle = _swig_property(_Box2D2.b2RevoluteJointDef_lowerAngle_get, _Box2D2.b2RevoluteJointDef_lowerAngle_set)
    __swig_setmethods__["upperAngle"] = _Box2D2.b2RevoluteJointDef_upperAngle_set
    __swig_getmethods__["upperAngle"] = _Box2D2.b2RevoluteJointDef_upperAngle_get
    if _newclass:upperAngle = _swig_property(_Box2D2.b2RevoluteJointDef_upperAngle_get, _Box2D2.b2RevoluteJointDef_upperAngle_set)
    __swig_setmethods__["enableMotor"] = _Box2D2.b2RevoluteJointDef_enableMotor_set
    __swig_getmethods__["enableMotor"] = _Box2D2.b2RevoluteJointDef_enableMotor_get
    if _newclass:enableMotor = _swig_property(_Box2D2.b2RevoluteJointDef_enableMotor_get, _Box2D2.b2RevoluteJointDef_enableMotor_set)
    __swig_setmethods__["motorSpeed"] = _Box2D2.b2RevoluteJointDef_motorSpeed_set
    __swig_getmethods__["motorSpeed"] = _Box2D2.b2RevoluteJointDef_motorSpeed_get
    if _newclass:motorSpeed = _swig_property(_Box2D2.b2RevoluteJointDef_motorSpeed_get, _Box2D2.b2RevoluteJointDef_motorSpeed_set)
    __swig_setmethods__["maxMotorTorque"] = _Box2D2.b2RevoluteJointDef_maxMotorTorque_set
    __swig_getmethods__["maxMotorTorque"] = _Box2D2.b2RevoluteJointDef_maxMotorTorque_get
    if _newclass:maxMotorTorque = _swig_property(_Box2D2.b2RevoluteJointDef_maxMotorTorque_get, _Box2D2.b2RevoluteJointDef_maxMotorTorque_set)
    __swig_destroy__ = _Box2D2.delete_b2RevoluteJointDef
    __del__ = lambda self : None;
b2RevoluteJointDef_swigregister = _Box2D2.b2RevoluteJointDef_swigregister
b2RevoluteJointDef_swigregister(b2RevoluteJointDef)

class b2RevoluteJoint(b2Joint):
    """Proxy of C++ b2RevoluteJoint class"""
    __swig_setmethods__ = {}
    for _s in [b2Joint]: __swig_setmethods__.update(getattr(_s,'__swig_setmethods__',{}))
    __setattr__ = lambda self, name, value: _swig_setattr(self, b2RevoluteJoint, name, value)
    __swig_getmethods__ = {}
    for _s in [b2Joint]: __swig_getmethods__.update(getattr(_s,'__swig_getmethods__',{}))
    __getattr__ = lambda self, name: _swig_getattr(self, b2RevoluteJoint, name)
    __repr__ = _swig_repr
    def GetAnchor1(*args):
        """GetAnchor1(self) -> b2Vec2"""
        return _Box2D2.b2RevoluteJoint_GetAnchor1(*args)

    def GetAnchor2(*args):
        """GetAnchor2(self) -> b2Vec2"""
        return _Box2D2.b2RevoluteJoint_GetAnchor2(*args)

    def GetReactionForce(*args):
        """GetReactionForce(self) -> b2Vec2"""
        return _Box2D2.b2RevoluteJoint_GetReactionForce(*args)

    def GetReactionTorque(*args):
        """GetReactionTorque(self) -> float32"""
        return _Box2D2.b2RevoluteJoint_GetReactionTorque(*args)

    def GetJointAngle(*args):
        """GetJointAngle(self) -> float32"""
        return _Box2D2.b2RevoluteJoint_GetJointAngle(*args)

    def GetJointSpeed(*args):
        """GetJointSpeed(self) -> float32"""
        return _Box2D2.b2RevoluteJoint_GetJointSpeed(*args)

    def IsLimitEnabled(*args):
        """IsLimitEnabled(self) -> bool"""
        return _Box2D2.b2RevoluteJoint_IsLimitEnabled(*args)

    def EnableLimit(*args):
        """EnableLimit(self, bool flag)"""
        return _Box2D2.b2RevoluteJoint_EnableLimit(*args)

    def GetLowerLimit(*args):
        """GetLowerLimit(self) -> float32"""
        return _Box2D2.b2RevoluteJoint_GetLowerLimit(*args)

    def GetUpperLimit(*args):
        """GetUpperLimit(self) -> float32"""
        return _Box2D2.b2RevoluteJoint_GetUpperLimit(*args)

    def SetLimits(*args):
        """SetLimits(self, float32 lower, float32 upper)"""
        return _Box2D2.b2RevoluteJoint_SetLimits(*args)

    def IsMotorEnabled(*args):
        """IsMotorEnabled(self) -> bool"""
        return _Box2D2.b2RevoluteJoint_IsMotorEnabled(*args)

    def EnableMotor(*args):
        """EnableMotor(self, bool flag)"""
        return _Box2D2.b2RevoluteJoint_EnableMotor(*args)

    def SetMotorSpeed(*args):
        """SetMotorSpeed(self, float32 speed)"""
        return _Box2D2.b2RevoluteJoint_SetMotorSpeed(*args)

    def GetMotorSpeed(*args):
        """GetMotorSpeed(self) -> float32"""
        return _Box2D2.b2RevoluteJoint_GetMotorSpeed(*args)

    def SetMaxMotorTorque(*args):
        """SetMaxMotorTorque(self, float32 torque)"""
        return _Box2D2.b2RevoluteJoint_SetMaxMotorTorque(*args)

    def GetMotorTorque(*args):
        """GetMotorTorque(self) -> float32"""
        return _Box2D2.b2RevoluteJoint_GetMotorTorque(*args)

    def __init__(self, *args): 
        """__init__(self, b2RevoluteJointDef def) -> b2RevoluteJoint"""
        this = _Box2D2.new_b2RevoluteJoint(*args)
        try: self.this.append(this)
        except: self.this = this
    def InitVelocityConstraints(*args):
        """InitVelocityConstraints(self, b2TimeStep step)"""
        return _Box2D2.b2RevoluteJoint_InitVelocityConstraints(*args)

    def SolveVelocityConstraints(*args):
        """SolveVelocityConstraints(self, b2TimeStep step)"""
        return _Box2D2.b2RevoluteJoint_SolveVelocityConstraints(*args)

    def SolvePositionConstraints(*args):
        """SolvePositionConstraints(self) -> bool"""
        return _Box2D2.b2RevoluteJoint_SolvePositionConstraints(*args)

    __swig_setmethods__["m_localAnchor1"] = _Box2D2.b2RevoluteJoint_m_localAnchor1_set
    __swig_getmethods__["m_localAnchor1"] = _Box2D2.b2RevoluteJoint_m_localAnchor1_get
    if _newclass:m_localAnchor1 = _swig_property(_Box2D2.b2RevoluteJoint_m_localAnchor1_get, _Box2D2.b2RevoluteJoint_m_localAnchor1_set)
    __swig_setmethods__["m_localAnchor2"] = _Box2D2.b2RevoluteJoint_m_localAnchor2_set
    __swig_getmethods__["m_localAnchor2"] = _Box2D2.b2RevoluteJoint_m_localAnchor2_get
    if _newclass:m_localAnchor2 = _swig_property(_Box2D2.b2RevoluteJoint_m_localAnchor2_get, _Box2D2.b2RevoluteJoint_m_localAnchor2_set)
    __swig_setmethods__["m_pivotForce"] = _Box2D2.b2RevoluteJoint_m_pivotForce_set
    __swig_getmethods__["m_pivotForce"] = _Box2D2.b2RevoluteJoint_m_pivotForce_get
    if _newclass:m_pivotForce = _swig_property(_Box2D2.b2RevoluteJoint_m_pivotForce_get, _Box2D2.b2RevoluteJoint_m_pivotForce_set)
    __swig_setmethods__["m_motorForce"] = _Box2D2.b2RevoluteJoint_m_motorForce_set
    __swig_getmethods__["m_motorForce"] = _Box2D2.b2RevoluteJoint_m_motorForce_get
    if _newclass:m_motorForce = _swig_property(_Box2D2.b2RevoluteJoint_m_motorForce_get, _Box2D2.b2RevoluteJoint_m_motorForce_set)
    __swig_setmethods__["m_limitForce"] = _Box2D2.b2RevoluteJoint_m_limitForce_set
    __swig_getmethods__["m_limitForce"] = _Box2D2.b2RevoluteJoint_m_limitForce_get
    if _newclass:m_limitForce = _swig_property(_Box2D2.b2RevoluteJoint_m_limitForce_get, _Box2D2.b2RevoluteJoint_m_limitForce_set)
    __swig_setmethods__["m_limitPositionImpulse"] = _Box2D2.b2RevoluteJoint_m_limitPositionImpulse_set
    __swig_getmethods__["m_limitPositionImpulse"] = _Box2D2.b2RevoluteJoint_m_limitPositionImpulse_get
    if _newclass:m_limitPositionImpulse = _swig_property(_Box2D2.b2RevoluteJoint_m_limitPositionImpulse_get, _Box2D2.b2RevoluteJoint_m_limitPositionImpulse_set)
    __swig_setmethods__["m_pivotMass"] = _Box2D2.b2RevoluteJoint_m_pivotMass_set
    __swig_getmethods__["m_pivotMass"] = _Box2D2.b2RevoluteJoint_m_pivotMass_get
    if _newclass:m_pivotMass = _swig_property(_Box2D2.b2RevoluteJoint_m_pivotMass_get, _Box2D2.b2RevoluteJoint_m_pivotMass_set)
    __swig_setmethods__["m_motorMass"] = _Box2D2.b2RevoluteJoint_m_motorMass_set
    __swig_getmethods__["m_motorMass"] = _Box2D2.b2RevoluteJoint_m_motorMass_get
    if _newclass:m_motorMass = _swig_property(_Box2D2.b2RevoluteJoint_m_motorMass_get, _Box2D2.b2RevoluteJoint_m_motorMass_set)
    __swig_setmethods__["m_enableMotor"] = _Box2D2.b2RevoluteJoint_m_enableMotor_set
    __swig_getmethods__["m_enableMotor"] = _Box2D2.b2RevoluteJoint_m_enableMotor_get
    if _newclass:m_enableMotor = _swig_property(_Box2D2.b2RevoluteJoint_m_enableMotor_get, _Box2D2.b2RevoluteJoint_m_enableMotor_set)
    __swig_setmethods__["m_maxMotorTorque"] = _Box2D2.b2RevoluteJoint_m_maxMotorTorque_set
    __swig_getmethods__["m_maxMotorTorque"] = _Box2D2.b2RevoluteJoint_m_maxMotorTorque_get
    if _newclass:m_maxMotorTorque = _swig_property(_Box2D2.b2RevoluteJoint_m_maxMotorTorque_get, _Box2D2.b2RevoluteJoint_m_maxMotorTorque_set)
    __swig_setmethods__["m_motorSpeed"] = _Box2D2.b2RevoluteJoint_m_motorSpeed_set
    __swig_getmethods__["m_motorSpeed"] = _Box2D2.b2RevoluteJoint_m_motorSpeed_get
    if _newclass:m_motorSpeed = _swig_property(_Box2D2.b2RevoluteJoint_m_motorSpeed_get, _Box2D2.b2RevoluteJoint_m_motorSpeed_set)
    __swig_setmethods__["m_enableLimit"] = _Box2D2.b2RevoluteJoint_m_enableLimit_set
    __swig_getmethods__["m_enableLimit"] = _Box2D2.b2RevoluteJoint_m_enableLimit_get
    if _newclass:m_enableLimit = _swig_property(_Box2D2.b2RevoluteJoint_m_enableLimit_get, _Box2D2.b2RevoluteJoint_m_enableLimit_set)
    __swig_setmethods__["m_referenceAngle"] = _Box2D2.b2RevoluteJoint_m_referenceAngle_set
    __swig_getmethods__["m_referenceAngle"] = _Box2D2.b2RevoluteJoint_m_referenceAngle_get
    if _newclass:m_referenceAngle = _swig_property(_Box2D2.b2RevoluteJoint_m_referenceAngle_get, _Box2D2.b2RevoluteJoint_m_referenceAngle_set)
    __swig_setmethods__["m_lowerAngle"] = _Box2D2.b2RevoluteJoint_m_lowerAngle_set
    __swig_getmethods__["m_lowerAngle"] = _Box2D2.b2RevoluteJoint_m_lowerAngle_get
    if _newclass:m_lowerAngle = _swig_property(_Box2D2.b2RevoluteJoint_m_lowerAngle_get, _Box2D2.b2RevoluteJoint_m_lowerAngle_set)
    __swig_setmethods__["m_upperAngle"] = _Box2D2.b2RevoluteJoint_m_upperAngle_set
    __swig_getmethods__["m_upperAngle"] = _Box2D2.b2RevoluteJoint_m_upperAngle_get
    if _newclass:m_upperAngle = _swig_property(_Box2D2.b2RevoluteJoint_m_upperAngle_get, _Box2D2.b2RevoluteJoint_m_upperAngle_set)
    __swig_setmethods__["m_limitState"] = _Box2D2.b2RevoluteJoint_m_limitState_set
    __swig_getmethods__["m_limitState"] = _Box2D2.b2RevoluteJoint_m_limitState_get
    if _newclass:m_limitState = _swig_property(_Box2D2.b2RevoluteJoint_m_limitState_get, _Box2D2.b2RevoluteJoint_m_limitState_set)
    def __repr__(self):
        return b2JointInfo(self)

    __swig_destroy__ = _Box2D2.delete_b2RevoluteJoint
    __del__ = lambda self : None;
b2RevoluteJoint_swigregister = _Box2D2.b2RevoluteJoint_swigregister
b2RevoluteJoint_swigregister(b2RevoluteJoint)

class b2PulleyJointDef(b2JointDef):
    """Proxy of C++ b2PulleyJointDef class"""
    __swig_setmethods__ = {}
    for _s in [b2JointDef]: __swig_setmethods__.update(getattr(_s,'__swig_setmethods__',{}))
    __setattr__ = lambda self, name, value: _swig_setattr(self, b2PulleyJointDef, name, value)
    __swig_getmethods__ = {}
    for _s in [b2JointDef]: __swig_getmethods__.update(getattr(_s,'__swig_getmethods__',{}))
    __getattr__ = lambda self, name: _swig_getattr(self, b2PulleyJointDef, name)
    __repr__ = _swig_repr
    def __init__(self, *args): 
        """__init__(self) -> b2PulleyJointDef"""
        this = _Box2D2.new_b2PulleyJointDef(*args)
        try: self.this.append(this)
        except: self.this = this
    def Initialize(*args):
        """
        Initialize(self, b2Body body1, b2Body body2, b2Vec2 groundAnchor1, b2Vec2 groundAnchor2, 
            b2Vec2 anchor1, b2Vec2 anchor2, 
            float32 ratio)
        """
        return _Box2D2.b2PulleyJointDef_Initialize(*args)

    __swig_setmethods__["groundAnchor1"] = _Box2D2.b2PulleyJointDef_groundAnchor1_set
    __swig_getmethods__["groundAnchor1"] = _Box2D2.b2PulleyJointDef_groundAnchor1_get
    if _newclass:groundAnchor1 = _swig_property(_Box2D2.b2PulleyJointDef_groundAnchor1_get, _Box2D2.b2PulleyJointDef_groundAnchor1_set)
    __swig_setmethods__["groundAnchor2"] = _Box2D2.b2PulleyJointDef_groundAnchor2_set
    __swig_getmethods__["groundAnchor2"] = _Box2D2.b2PulleyJointDef_groundAnchor2_get
    if _newclass:groundAnchor2 = _swig_property(_Box2D2.b2PulleyJointDef_groundAnchor2_get, _Box2D2.b2PulleyJointDef_groundAnchor2_set)
    __swig_setmethods__["localAnchor1"] = _Box2D2.b2PulleyJointDef_localAnchor1_set
    __swig_getmethods__["localAnchor1"] = _Box2D2.b2PulleyJointDef_localAnchor1_get
    if _newclass:localAnchor1 = _swig_property(_Box2D2.b2PulleyJointDef_localAnchor1_get, _Box2D2.b2PulleyJointDef_localAnchor1_set)
    __swig_setmethods__["localAnchor2"] = _Box2D2.b2PulleyJointDef_localAnchor2_set
    __swig_getmethods__["localAnchor2"] = _Box2D2.b2PulleyJointDef_localAnchor2_get
    if _newclass:localAnchor2 = _swig_property(_Box2D2.b2PulleyJointDef_localAnchor2_get, _Box2D2.b2PulleyJointDef_localAnchor2_set)
    __swig_setmethods__["length1"] = _Box2D2.b2PulleyJointDef_length1_set
    __swig_getmethods__["length1"] = _Box2D2.b2PulleyJointDef_length1_get
    if _newclass:length1 = _swig_property(_Box2D2.b2PulleyJointDef_length1_get, _Box2D2.b2PulleyJointDef_length1_set)
    __swig_setmethods__["maxLength1"] = _Box2D2.b2PulleyJointDef_maxLength1_set
    __swig_getmethods__["maxLength1"] = _Box2D2.b2PulleyJointDef_maxLength1_get
    if _newclass:maxLength1 = _swig_property(_Box2D2.b2PulleyJointDef_maxLength1_get, _Box2D2.b2PulleyJointDef_maxLength1_set)
    __swig_setmethods__["length2"] = _Box2D2.b2PulleyJointDef_length2_set
    __swig_getmethods__["length2"] = _Box2D2.b2PulleyJointDef_length2_get
    if _newclass:length2 = _swig_property(_Box2D2.b2PulleyJointDef_length2_get, _Box2D2.b2PulleyJointDef_length2_set)
    __swig_setmethods__["maxLength2"] = _Box2D2.b2PulleyJointDef_maxLength2_set
    __swig_getmethods__["maxLength2"] = _Box2D2.b2PulleyJointDef_maxLength2_get
    if _newclass:maxLength2 = _swig_property(_Box2D2.b2PulleyJointDef_maxLength2_get, _Box2D2.b2PulleyJointDef_maxLength2_set)
    __swig_setmethods__["ratio"] = _Box2D2.b2PulleyJointDef_ratio_set
    __swig_getmethods__["ratio"] = _Box2D2.b2PulleyJointDef_ratio_get
    if _newclass:ratio = _swig_property(_Box2D2.b2PulleyJointDef_ratio_get, _Box2D2.b2PulleyJointDef_ratio_set)
    __swig_destroy__ = _Box2D2.delete_b2PulleyJointDef
    __del__ = lambda self : None;
b2PulleyJointDef_swigregister = _Box2D2.b2PulleyJointDef_swigregister
b2PulleyJointDef_swigregister(b2PulleyJointDef)
b2_minPulleyLength = cvar.b2_minPulleyLength

class b2PulleyJoint(b2Joint):
    """Proxy of C++ b2PulleyJoint class"""
    __swig_setmethods__ = {}
    for _s in [b2Joint]: __swig_setmethods__.update(getattr(_s,'__swig_setmethods__',{}))
    __setattr__ = lambda self, name, value: _swig_setattr(self, b2PulleyJoint, name, value)
    __swig_getmethods__ = {}
    for _s in [b2Joint]: __swig_getmethods__.update(getattr(_s,'__swig_getmethods__',{}))
    __getattr__ = lambda self, name: _swig_getattr(self, b2PulleyJoint, name)
    __repr__ = _swig_repr
    def GetAnchor1(*args):
        """GetAnchor1(self) -> b2Vec2"""
        return _Box2D2.b2PulleyJoint_GetAnchor1(*args)

    def GetAnchor2(*args):
        """GetAnchor2(self) -> b2Vec2"""
        return _Box2D2.b2PulleyJoint_GetAnchor2(*args)

    def GetReactionForce(*args):
        """GetReactionForce(self) -> b2Vec2"""
        return _Box2D2.b2PulleyJoint_GetReactionForce(*args)

    def GetReactionTorque(*args):
        """GetReactionTorque(self) -> float32"""
        return _Box2D2.b2PulleyJoint_GetReactionTorque(*args)

    def GetGroundAnchor1(*args):
        """GetGroundAnchor1(self) -> b2Vec2"""
        return _Box2D2.b2PulleyJoint_GetGroundAnchor1(*args)

    def GetGroundAnchor2(*args):
        """GetGroundAnchor2(self) -> b2Vec2"""
        return _Box2D2.b2PulleyJoint_GetGroundAnchor2(*args)

    def GetLength1(*args):
        """GetLength1(self) -> float32"""
        return _Box2D2.b2PulleyJoint_GetLength1(*args)

    def GetLength2(*args):
        """GetLength2(self) -> float32"""
        return _Box2D2.b2PulleyJoint_GetLength2(*args)

    def GetRatio(*args):
        """GetRatio(self) -> float32"""
        return _Box2D2.b2PulleyJoint_GetRatio(*args)

    def __init__(self, *args): 
        """__init__(self, b2PulleyJointDef data) -> b2PulleyJoint"""
        this = _Box2D2.new_b2PulleyJoint(*args)
        try: self.this.append(this)
        except: self.this = this
    def InitVelocityConstraints(*args):
        """InitVelocityConstraints(self, b2TimeStep step)"""
        return _Box2D2.b2PulleyJoint_InitVelocityConstraints(*args)

    def SolveVelocityConstraints(*args):
        """SolveVelocityConstraints(self, b2TimeStep step)"""
        return _Box2D2.b2PulleyJoint_SolveVelocityConstraints(*args)

    def SolvePositionConstraints(*args):
        """SolvePositionConstraints(self) -> bool"""
        return _Box2D2.b2PulleyJoint_SolvePositionConstraints(*args)

    __swig_setmethods__["m_ground"] = _Box2D2.b2PulleyJoint_m_ground_set
    __swig_getmethods__["m_ground"] = _Box2D2.b2PulleyJoint_m_ground_get
    if _newclass:m_ground = _swig_property(_Box2D2.b2PulleyJoint_m_ground_get, _Box2D2.b2PulleyJoint_m_ground_set)
    __swig_setmethods__["m_groundAnchor1"] = _Box2D2.b2PulleyJoint_m_groundAnchor1_set
    __swig_getmethods__["m_groundAnchor1"] = _Box2D2.b2PulleyJoint_m_groundAnchor1_get
    if _newclass:m_groundAnchor1 = _swig_property(_Box2D2.b2PulleyJoint_m_groundAnchor1_get, _Box2D2.b2PulleyJoint_m_groundAnchor1_set)
    __swig_setmethods__["m_groundAnchor2"] = _Box2D2.b2PulleyJoint_m_groundAnchor2_set
    __swig_getmethods__["m_groundAnchor2"] = _Box2D2.b2PulleyJoint_m_groundAnchor2_get
    if _newclass:m_groundAnchor2 = _swig_property(_Box2D2.b2PulleyJoint_m_groundAnchor2_get, _Box2D2.b2PulleyJoint_m_groundAnchor2_set)
    __swig_setmethods__["m_localAnchor1"] = _Box2D2.b2PulleyJoint_m_localAnchor1_set
    __swig_getmethods__["m_localAnchor1"] = _Box2D2.b2PulleyJoint_m_localAnchor1_get
    if _newclass:m_localAnchor1 = _swig_property(_Box2D2.b2PulleyJoint_m_localAnchor1_get, _Box2D2.b2PulleyJoint_m_localAnchor1_set)
    __swig_setmethods__["m_localAnchor2"] = _Box2D2.b2PulleyJoint_m_localAnchor2_set
    __swig_getmethods__["m_localAnchor2"] = _Box2D2.b2PulleyJoint_m_localAnchor2_get
    if _newclass:m_localAnchor2 = _swig_property(_Box2D2.b2PulleyJoint_m_localAnchor2_get, _Box2D2.b2PulleyJoint_m_localAnchor2_set)
    __swig_setmethods__["m_u1"] = _Box2D2.b2PulleyJoint_m_u1_set
    __swig_getmethods__["m_u1"] = _Box2D2.b2PulleyJoint_m_u1_get
    if _newclass:m_u1 = _swig_property(_Box2D2.b2PulleyJoint_m_u1_get, _Box2D2.b2PulleyJoint_m_u1_set)
    __swig_setmethods__["m_u2"] = _Box2D2.b2PulleyJoint_m_u2_set
    __swig_getmethods__["m_u2"] = _Box2D2.b2PulleyJoint_m_u2_get
    if _newclass:m_u2 = _swig_property(_Box2D2.b2PulleyJoint_m_u2_get, _Box2D2.b2PulleyJoint_m_u2_set)
    __swig_setmethods__["m_constant"] = _Box2D2.b2PulleyJoint_m_constant_set
    __swig_getmethods__["m_constant"] = _Box2D2.b2PulleyJoint_m_constant_get
    if _newclass:m_constant = _swig_property(_Box2D2.b2PulleyJoint_m_constant_get, _Box2D2.b2PulleyJoint_m_constant_set)
    __swig_setmethods__["m_ratio"] = _Box2D2.b2PulleyJoint_m_ratio_set
    __swig_getmethods__["m_ratio"] = _Box2D2.b2PulleyJoint_m_ratio_get
    if _newclass:m_ratio = _swig_property(_Box2D2.b2PulleyJoint_m_ratio_get, _Box2D2.b2PulleyJoint_m_ratio_set)
    __swig_setmethods__["m_maxLength1"] = _Box2D2.b2PulleyJoint_m_maxLength1_set
    __swig_getmethods__["m_maxLength1"] = _Box2D2.b2PulleyJoint_m_maxLength1_get
    if _newclass:m_maxLength1 = _swig_property(_Box2D2.b2PulleyJoint_m_maxLength1_get, _Box2D2.b2PulleyJoint_m_maxLength1_set)
    __swig_setmethods__["m_maxLength2"] = _Box2D2.b2PulleyJoint_m_maxLength2_set
    __swig_getmethods__["m_maxLength2"] = _Box2D2.b2PulleyJoint_m_maxLength2_get
    if _newclass:m_maxLength2 = _swig_property(_Box2D2.b2PulleyJoint_m_maxLength2_get, _Box2D2.b2PulleyJoint_m_maxLength2_set)
    __swig_setmethods__["m_pulleyMass"] = _Box2D2.b2PulleyJoint_m_pulleyMass_set
    __swig_getmethods__["m_pulleyMass"] = _Box2D2.b2PulleyJoint_m_pulleyMass_get
    if _newclass:m_pulleyMass = _swig_property(_Box2D2.b2PulleyJoint_m_pulleyMass_get, _Box2D2.b2PulleyJoint_m_pulleyMass_set)
    __swig_setmethods__["m_limitMass1"] = _Box2D2.b2PulleyJoint_m_limitMass1_set
    __swig_getmethods__["m_limitMass1"] = _Box2D2.b2PulleyJoint_m_limitMass1_get
    if _newclass:m_limitMass1 = _swig_property(_Box2D2.b2PulleyJoint_m_limitMass1_get, _Box2D2.b2PulleyJoint_m_limitMass1_set)
    __swig_setmethods__["m_limitMass2"] = _Box2D2.b2PulleyJoint_m_limitMass2_set
    __swig_getmethods__["m_limitMass2"] = _Box2D2.b2PulleyJoint_m_limitMass2_get
    if _newclass:m_limitMass2 = _swig_property(_Box2D2.b2PulleyJoint_m_limitMass2_get, _Box2D2.b2PulleyJoint_m_limitMass2_set)
    __swig_setmethods__["m_force"] = _Box2D2.b2PulleyJoint_m_force_set
    __swig_getmethods__["m_force"] = _Box2D2.b2PulleyJoint_m_force_get
    if _newclass:m_force = _swig_property(_Box2D2.b2PulleyJoint_m_force_get, _Box2D2.b2PulleyJoint_m_force_set)
    __swig_setmethods__["m_limitForce1"] = _Box2D2.b2PulleyJoint_m_limitForce1_set
    __swig_getmethods__["m_limitForce1"] = _Box2D2.b2PulleyJoint_m_limitForce1_get
    if _newclass:m_limitForce1 = _swig_property(_Box2D2.b2PulleyJoint_m_limitForce1_get, _Box2D2.b2PulleyJoint_m_limitForce1_set)
    __swig_setmethods__["m_limitForce2"] = _Box2D2.b2PulleyJoint_m_limitForce2_set
    __swig_getmethods__["m_limitForce2"] = _Box2D2.b2PulleyJoint_m_limitForce2_get
    if _newclass:m_limitForce2 = _swig_property(_Box2D2.b2PulleyJoint_m_limitForce2_get, _Box2D2.b2PulleyJoint_m_limitForce2_set)
    __swig_setmethods__["m_positionImpulse"] = _Box2D2.b2PulleyJoint_m_positionImpulse_set
    __swig_getmethods__["m_positionImpulse"] = _Box2D2.b2PulleyJoint_m_positionImpulse_get
    if _newclass:m_positionImpulse = _swig_property(_Box2D2.b2PulleyJoint_m_positionImpulse_get, _Box2D2.b2PulleyJoint_m_positionImpulse_set)
    __swig_setmethods__["m_limitPositionImpulse1"] = _Box2D2.b2PulleyJoint_m_limitPositionImpulse1_set
    __swig_getmethods__["m_limitPositionImpulse1"] = _Box2D2.b2PulleyJoint_m_limitPositionImpulse1_get
    if _newclass:m_limitPositionImpulse1 = _swig_property(_Box2D2.b2PulleyJoint_m_limitPositionImpulse1_get, _Box2D2.b2PulleyJoint_m_limitPositionImpulse1_set)
    __swig_setmethods__["m_limitPositionImpulse2"] = _Box2D2.b2PulleyJoint_m_limitPositionImpulse2_set
    __swig_getmethods__["m_limitPositionImpulse2"] = _Box2D2.b2PulleyJoint_m_limitPositionImpulse2_get
    if _newclass:m_limitPositionImpulse2 = _swig_property(_Box2D2.b2PulleyJoint_m_limitPositionImpulse2_get, _Box2D2.b2PulleyJoint_m_limitPositionImpulse2_set)
    __swig_setmethods__["m_state"] = _Box2D2.b2PulleyJoint_m_state_set
    __swig_getmethods__["m_state"] = _Box2D2.b2PulleyJoint_m_state_get
    if _newclass:m_state = _swig_property(_Box2D2.b2PulleyJoint_m_state_get, _Box2D2.b2PulleyJoint_m_state_set)
    __swig_setmethods__["m_limitState1"] = _Box2D2.b2PulleyJoint_m_limitState1_set
    __swig_getmethods__["m_limitState1"] = _Box2D2.b2PulleyJoint_m_limitState1_get
    if _newclass:m_limitState1 = _swig_property(_Box2D2.b2PulleyJoint_m_limitState1_get, _Box2D2.b2PulleyJoint_m_limitState1_set)
    __swig_setmethods__["m_limitState2"] = _Box2D2.b2PulleyJoint_m_limitState2_set
    __swig_getmethods__["m_limitState2"] = _Box2D2.b2PulleyJoint_m_limitState2_get
    if _newclass:m_limitState2 = _swig_property(_Box2D2.b2PulleyJoint_m_limitState2_get, _Box2D2.b2PulleyJoint_m_limitState2_set)
    def __repr__(self):
        return b2JointInfo(self)

    __swig_destroy__ = _Box2D2.delete_b2PulleyJoint
    __del__ = lambda self : None;
b2PulleyJoint_swigregister = _Box2D2.b2PulleyJoint_swigregister
b2PulleyJoint_swigregister(b2PulleyJoint)

class b2GearJointDef(b2JointDef):
    """Proxy of C++ b2GearJointDef class"""
    __swig_setmethods__ = {}
    for _s in [b2JointDef]: __swig_setmethods__.update(getattr(_s,'__swig_setmethods__',{}))
    __setattr__ = lambda self, name, value: _swig_setattr(self, b2GearJointDef, name, value)
    __swig_getmethods__ = {}
    for _s in [b2JointDef]: __swig_getmethods__.update(getattr(_s,'__swig_getmethods__',{}))
    __getattr__ = lambda self, name: _swig_getattr(self, b2GearJointDef, name)
    __repr__ = _swig_repr
    def __init__(self, *args): 
        """__init__(self) -> b2GearJointDef"""
        this = _Box2D2.new_b2GearJointDef(*args)
        try: self.this.append(this)
        except: self.this = this
    __swig_setmethods__["joint1"] = _Box2D2.b2GearJointDef_joint1_set
    __swig_getmethods__["joint1"] = _Box2D2.b2GearJointDef_joint1_get
    if _newclass:joint1 = _swig_property(_Box2D2.b2GearJointDef_joint1_get, _Box2D2.b2GearJointDef_joint1_set)
    __swig_setmethods__["joint2"] = _Box2D2.b2GearJointDef_joint2_set
    __swig_getmethods__["joint2"] = _Box2D2.b2GearJointDef_joint2_get
    if _newclass:joint2 = _swig_property(_Box2D2.b2GearJointDef_joint2_get, _Box2D2.b2GearJointDef_joint2_set)
    __swig_setmethods__["ratio"] = _Box2D2.b2GearJointDef_ratio_set
    __swig_getmethods__["ratio"] = _Box2D2.b2GearJointDef_ratio_get
    if _newclass:ratio = _swig_property(_Box2D2.b2GearJointDef_ratio_get, _Box2D2.b2GearJointDef_ratio_set)
    __swig_destroy__ = _Box2D2.delete_b2GearJointDef
    __del__ = lambda self : None;
b2GearJointDef_swigregister = _Box2D2.b2GearJointDef_swigregister
b2GearJointDef_swigregister(b2GearJointDef)

class b2GearJoint(b2Joint):
    """Proxy of C++ b2GearJoint class"""
    __swig_setmethods__ = {}
    for _s in [b2Joint]: __swig_setmethods__.update(getattr(_s,'__swig_setmethods__',{}))
    __setattr__ = lambda self, name, value: _swig_setattr(self, b2GearJoint, name, value)
    __swig_getmethods__ = {}
    for _s in [b2Joint]: __swig_getmethods__.update(getattr(_s,'__swig_getmethods__',{}))
    __getattr__ = lambda self, name: _swig_getattr(self, b2GearJoint, name)
    __repr__ = _swig_repr
    def GetAnchor1(*args):
        """GetAnchor1(self) -> b2Vec2"""
        return _Box2D2.b2GearJoint_GetAnchor1(*args)

    def GetAnchor2(*args):
        """GetAnchor2(self) -> b2Vec2"""
        return _Box2D2.b2GearJoint_GetAnchor2(*args)

    def GetReactionForce(*args):
        """GetReactionForce(self) -> b2Vec2"""
        return _Box2D2.b2GearJoint_GetReactionForce(*args)

    def GetReactionTorque(*args):
        """GetReactionTorque(self) -> float32"""
        return _Box2D2.b2GearJoint_GetReactionTorque(*args)

    def GetRatio(*args):
        """GetRatio(self) -> float32"""
        return _Box2D2.b2GearJoint_GetRatio(*args)

    def __init__(self, *args): 
        """__init__(self, b2GearJointDef data) -> b2GearJoint"""
        this = _Box2D2.new_b2GearJoint(*args)
        try: self.this.append(this)
        except: self.this = this
    def InitVelocityConstraints(*args):
        """InitVelocityConstraints(self, b2TimeStep step)"""
        return _Box2D2.b2GearJoint_InitVelocityConstraints(*args)

    def SolveVelocityConstraints(*args):
        """SolveVelocityConstraints(self, b2TimeStep step)"""
        return _Box2D2.b2GearJoint_SolveVelocityConstraints(*args)

    def SolvePositionConstraints(*args):
        """SolvePositionConstraints(self) -> bool"""
        return _Box2D2.b2GearJoint_SolvePositionConstraints(*args)

    __swig_setmethods__["m_ground1"] = _Box2D2.b2GearJoint_m_ground1_set
    __swig_getmethods__["m_ground1"] = _Box2D2.b2GearJoint_m_ground1_get
    if _newclass:m_ground1 = _swig_property(_Box2D2.b2GearJoint_m_ground1_get, _Box2D2.b2GearJoint_m_ground1_set)
    __swig_setmethods__["m_ground2"] = _Box2D2.b2GearJoint_m_ground2_set
    __swig_getmethods__["m_ground2"] = _Box2D2.b2GearJoint_m_ground2_get
    if _newclass:m_ground2 = _swig_property(_Box2D2.b2GearJoint_m_ground2_get, _Box2D2.b2GearJoint_m_ground2_set)
    __swig_setmethods__["m_revolute1"] = _Box2D2.b2GearJoint_m_revolute1_set
    __swig_getmethods__["m_revolute1"] = _Box2D2.b2GearJoint_m_revolute1_get
    if _newclass:m_revolute1 = _swig_property(_Box2D2.b2GearJoint_m_revolute1_get, _Box2D2.b2GearJoint_m_revolute1_set)
    __swig_setmethods__["m_prismatic1"] = _Box2D2.b2GearJoint_m_prismatic1_set
    __swig_getmethods__["m_prismatic1"] = _Box2D2.b2GearJoint_m_prismatic1_get
    if _newclass:m_prismatic1 = _swig_property(_Box2D2.b2GearJoint_m_prismatic1_get, _Box2D2.b2GearJoint_m_prismatic1_set)
    __swig_setmethods__["m_revolute2"] = _Box2D2.b2GearJoint_m_revolute2_set
    __swig_getmethods__["m_revolute2"] = _Box2D2.b2GearJoint_m_revolute2_get
    if _newclass:m_revolute2 = _swig_property(_Box2D2.b2GearJoint_m_revolute2_get, _Box2D2.b2GearJoint_m_revolute2_set)
    __swig_setmethods__["m_prismatic2"] = _Box2D2.b2GearJoint_m_prismatic2_set
    __swig_getmethods__["m_prismatic2"] = _Box2D2.b2GearJoint_m_prismatic2_get
    if _newclass:m_prismatic2 = _swig_property(_Box2D2.b2GearJoint_m_prismatic2_get, _Box2D2.b2GearJoint_m_prismatic2_set)
    __swig_setmethods__["m_groundAnchor1"] = _Box2D2.b2GearJoint_m_groundAnchor1_set
    __swig_getmethods__["m_groundAnchor1"] = _Box2D2.b2GearJoint_m_groundAnchor1_get
    if _newclass:m_groundAnchor1 = _swig_property(_Box2D2.b2GearJoint_m_groundAnchor1_get, _Box2D2.b2GearJoint_m_groundAnchor1_set)
    __swig_setmethods__["m_groundAnchor2"] = _Box2D2.b2GearJoint_m_groundAnchor2_set
    __swig_getmethods__["m_groundAnchor2"] = _Box2D2.b2GearJoint_m_groundAnchor2_get
    if _newclass:m_groundAnchor2 = _swig_property(_Box2D2.b2GearJoint_m_groundAnchor2_get, _Box2D2.b2GearJoint_m_groundAnchor2_set)
    __swig_setmethods__["m_localAnchor1"] = _Box2D2.b2GearJoint_m_localAnchor1_set
    __swig_getmethods__["m_localAnchor1"] = _Box2D2.b2GearJoint_m_localAnchor1_get
    if _newclass:m_localAnchor1 = _swig_property(_Box2D2.b2GearJoint_m_localAnchor1_get, _Box2D2.b2GearJoint_m_localAnchor1_set)
    __swig_setmethods__["m_localAnchor2"] = _Box2D2.b2GearJoint_m_localAnchor2_set
    __swig_getmethods__["m_localAnchor2"] = _Box2D2.b2GearJoint_m_localAnchor2_get
    if _newclass:m_localAnchor2 = _swig_property(_Box2D2.b2GearJoint_m_localAnchor2_get, _Box2D2.b2GearJoint_m_localAnchor2_set)
    __swig_setmethods__["m_J"] = _Box2D2.b2GearJoint_m_J_set
    __swig_getmethods__["m_J"] = _Box2D2.b2GearJoint_m_J_get
    if _newclass:m_J = _swig_property(_Box2D2.b2GearJoint_m_J_get, _Box2D2.b2GearJoint_m_J_set)
    __swig_setmethods__["m_constant"] = _Box2D2.b2GearJoint_m_constant_set
    __swig_getmethods__["m_constant"] = _Box2D2.b2GearJoint_m_constant_get
    if _newclass:m_constant = _swig_property(_Box2D2.b2GearJoint_m_constant_get, _Box2D2.b2GearJoint_m_constant_set)
    __swig_setmethods__["m_ratio"] = _Box2D2.b2GearJoint_m_ratio_set
    __swig_getmethods__["m_ratio"] = _Box2D2.b2GearJoint_m_ratio_get
    if _newclass:m_ratio = _swig_property(_Box2D2.b2GearJoint_m_ratio_get, _Box2D2.b2GearJoint_m_ratio_set)
    __swig_setmethods__["m_mass"] = _Box2D2.b2GearJoint_m_mass_set
    __swig_getmethods__["m_mass"] = _Box2D2.b2GearJoint_m_mass_get
    if _newclass:m_mass = _swig_property(_Box2D2.b2GearJoint_m_mass_get, _Box2D2.b2GearJoint_m_mass_set)
    __swig_setmethods__["m_force"] = _Box2D2.b2GearJoint_m_force_set
    __swig_getmethods__["m_force"] = _Box2D2.b2GearJoint_m_force_get
    if _newclass:m_force = _swig_property(_Box2D2.b2GearJoint_m_force_get, _Box2D2.b2GearJoint_m_force_set)
    def __repr__(self):
        return b2JointInfo(self)

    __swig_destroy__ = _Box2D2.delete_b2GearJoint
    __del__ = lambda self : None;
b2GearJoint_swigregister = _Box2D2.b2GearJoint_swigregister
b2GearJoint_swigregister(b2GearJoint)



