# This file was automatically generated by SWIG (https://www.swig.org).
# Version 4.1.1
#
# Do not make changes to this file unless you know what you are doing - modify
# the SWIG interface file instead.

from sys import version_info as _swig_python_version_info
# Import the low-level C/C++ module
if __package__ or "." in __name__:
    from . import _pypropertywrapper
else:
    import _pypropertywrapper

try:
    import builtins as __builtin__
except ImportError:
    import __builtin__

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


def _swig_setattr_nondynamic_instance_variable(set):
    def set_instance_attr(self, name, value):
        if name == "this":
            set(self, name, value)
        elif name == "thisown":
            self.this.own(value)
        elif hasattr(self, name) and isinstance(getattr(type(self), name), property):
            set(self, name, value)
        else:
            raise AttributeError("You cannot add instance attributes to %s" % self)
    return set_instance_attr


def _swig_setattr_nondynamic_class_variable(set):
    def set_class_attr(cls, name, value):
        if hasattr(cls, name) and not isinstance(getattr(cls, name), property):
            set(cls, name, value)
        else:
            raise AttributeError("You cannot add class attributes to %s" % cls)
    return set_class_attr


def _swig_add_metaclass(metaclass):
    """Class decorator for adding a metaclass to a SWIG wrapped class - a slimmed down version of six.add_metaclass"""
    def wrapper(cls):
        return metaclass(cls.__name__, cls.__bases__, cls.__dict__.copy())
    return wrapper


class _SwigNonDynamicMeta(type):
    """Meta class to enforce nondynamic attributes (no new attributes) for a class"""
    __setattr__ = _swig_setattr_nondynamic_class_variable(type.__setattr__)


import ooflib.SWIG.engine.element
import ooflib.SWIG.common.coord
import ooflib.SWIG.engine.csubproblem
import ooflib.SWIG.common.doublevec
import ooflib.SWIG.common.lock
import ooflib.SWIG.engine.equation
import ooflib.SWIG.engine.fieldindex
import ooflib.SWIG.engine.planarity
import ooflib.SWIG.engine.flux
import ooflib.SWIG.engine.outputval
import ooflib.SWIG.engine.nodalequation
import ooflib.SWIG.engine.femesh
import ooflib.SWIG.common.cmicrostructure
import ooflib.SWIG.common.pixelgroup
import ooflib.SWIG.common.pixelattribute
import ooflib.SWIG.common.timestamp
import ooflib.SWIG.engine.field
import ooflib.SWIG.engine.freedom
import ooflib.SWIG.engine.pointdata
import ooflib.SWIG.engine.node
import ooflib.SWIG.engine.material
import ooflib.SWIG.common.abstractimage
import ooflib.SWIG.common.ccolor
import ooflib.SWIG.engine.property
import ooflib.SWIG.engine.meshiterator
import ooflib.SWIG.engine.linearizedsystem
import ooflib.SWIG.engine.sparsemat
import ooflib.SWIG.engine.edge
import ooflib.SWIG.engine.mastercoord
import ooflib.SWIG.engine.elementnodeiterator
import ooflib.SWIG.engine.gausspoint
class PyFluxProperty(ooflib.SWIG.engine.property.FluxProperty):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, arg2, arg3, name):
        _pypropertywrapper.PyFluxProperty_swiginit(self, _pypropertywrapper.new_PyFluxProperty(arg2, arg3, name))
    __swig_destroy__ = _pypropertywrapper.delete_PyFluxProperty

# Register PyFluxProperty in _pypropertywrapper:
_pypropertywrapper.PyFluxProperty_swigregister(PyFluxProperty)
class PyEqnProperty(ooflib.SWIG.engine.property.EqnProperty):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, arg2, arg3, name):
        _pypropertywrapper.PyEqnProperty_swiginit(self, _pypropertywrapper.new_PyEqnProperty(arg2, arg3, name))
    __swig_destroy__ = _pypropertywrapper.delete_PyEqnProperty

# Register PyEqnProperty in _pypropertywrapper:
_pypropertywrapper.PyEqnProperty_swigregister(PyEqnProperty)
class PyPropertyElementData(ooflib.SWIG.engine.element.ElementData):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, name, dat):
        _pypropertywrapper.PyPropertyElementData_swiginit(self, _pypropertywrapper.new_PyPropertyElementData(name, dat))

    def data(self):
        return _pypropertywrapper.PyPropertyElementData_data(self)
    __swig_destroy__ = _pypropertywrapper.delete_PyPropertyElementData

# Register PyPropertyElementData in _pypropertywrapper:
_pypropertywrapper.PyPropertyElementData_swigregister(PyPropertyElementData)
# -*- python -*-

# This software was produced by NIST, an agency of the U.S. government,
# and by statute is not subject to copyright in the United States.
# Recipients of this software assume all responsibilities associated
# with its operation, modification and maintenance. However, to
# facilitate maintenance we ask that before distributing modified
# versions of this software, you first contact the authors at
# oof_manager@nist.gov. 

# These are the Pythonized wrappers for the virtual functions
# of the Property class, as seen from Python.  They are called
# back from the C++ PyPropertyWrapper class, and in turn call
# the corresponding methods of the derived pure-Python
# property.  Their primary function is to wrap their arguments
# in the swigged constructors, so all the SWIG'd methods
# are available in the derived-class routine.

from ooflib.SWIG.common import ooferror
from ooflib.SWIG.engine import csubproblem
from ooflib.SWIG.engine import element
from ooflib.SWIG.engine import elementnodeiterator
from ooflib.SWIG.engine import equation
from ooflib.SWIG.engine import femesh
from ooflib.SWIG.engine import flux
from ooflib.SWIG.engine import property
from ooflib.SWIG.engine import mastercoord
from ooflib.SWIG.engine import material
from ooflib.SWIG.engine import smallsystem
from ooflib.SWIG.engine.IO import propertyoutput
from ooflib.common import debug

# Wrapper functions for Python Property methods.  These functions are
# monkeypatched into PyFluxProperty and PyEqnProperty.  They're called
# by the C++ routines in pypropertywrapper.C, and call Python methods
# in user-defined PyFluxProperty and PyEqnProperty derived classes.

#=--=##=--=##=--=##=--=##=--=##=--=##=--=##=--=##=--=##=--=##=--=##=--=#

# C++ PyPropertyWrapper objects need access to "self", since they
# store a reference to the Python object.  Instead of passing it in
# twice, we redefine the SWIG-generated __init__ to use the single
# argument in two ways.

def _PyFluxProperty___init__(self, *args, **kwargs):
    realargs = (self,) + args
    _pypropertywrapper.PyFluxProperty_swiginit(
        self, _pypropertywrapper.new_PyFluxProperty(*realargs, **kwargs))

PyFluxProperty.__init__ = _PyFluxProperty___init__

def _PyEqnProperty___init__(self, *args, **kwargs):
    realargs = (self,) + args
    _pypropertywrapper.PyEqnProperty_swiginit(
        self, _pypropertywrapper.new_PyEqnProperty(*realargs, **kwargs))

PyEqnProperty.__init__ = _PyEqnProperty___init__

#=--=##=--=##=--=##=--=##=--=##=--=##=--=##=--=##=--=##=--=##=--=##=--=#

# Utility functions to support storing data in an element.
def _PyPropertyWrapper_data_to_element(self, element, name, data):
    pass

# Sensible display string for element data.
def _PyPropertyElementData___repr__(self):
    return "PyPropertyElementData(%s,%s)" % (self.name(), repr(self.data()))

PyPropertyElementData.__repr__ = _PyPropertyElementData___repr__




