# 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 _element
else:
    import _element

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.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 ElementData(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    def name(self):
        return _element.ElementData_name(self)
    __swig_destroy__ = _element.delete_ElementData

# Register ElementData in _element:
_element.ElementData_swigregister(ElementData)
class Element(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")

    def material(self):
        return _element.Element_material(self)

    def masterelement(self):
        return _element.Element_masterelement(self)

    def area(self):
        return _element.Element_area(self)

    def getBndyEdge(self, arg2, arg3):
        return _element.Element_getBndyEdge(self, arg2, arg3)

    def perimeter(self):
        return _element.Element_perimeter(self)

    def integrator(self, arg2):
        return _element.Element_integrator(self, arg2)

    def center(self):
        return _element.Element_center(self)

    def ncorners(self):
        return _element.Element_ncorners(self)

    def node_iterator(self):
        return _element.Element_node_iterator(self)

    def mapnode_iterator(self):
        return _element.Element_mapnode_iterator(self)

    def funcnode_iterator(self):
        return _element.Element_funcnode_iterator(self)

    def cornernode_iterator(self):
        return _element.Element_cornernode_iterator(self)

    def exterior(self, arg2, arg3):
        return _element.Element_exterior(self, arg2, arg3)

    def set_exterior(self, arg2, arg3):
        return _element.Element_set_exterior(self, arg2, arg3)

    def dump_exterior(self):
        return _element.Element_dump_exterior(self)

    def set_index(self, arg2):
        return _element.Element_set_index(self, arg2)

    def get_index(self):
        return _element.Element_get_index(self)

    def shapefun_degree(self):
        return _element.Element_shapefun_degree(self)

    def dshapefun_degree(self):
        return _element.Element_dshapefun_degree(self)

    def mapfun_degree(self):
        return _element.Element_mapfun_degree(self)

    def appendData(self, x):
        return _element.Element_appendData(self, x)

    def setData(self, i, x):
        return _element.Element_setData(self, i, x)

    def setDataByName(self, x):
        return _element.Element_setDataByName(self, x)

    def getData(self, i):
        return _element.Element_getData(self, i)

    def getIndexByName(self, name):
        return _element.Element_getIndexByName(self, name)

    def getDataByName(self, name):
        return _element.Element_getDataByName(self, name)

    def getCornerNode(self, i):
        return _element.Element_getCornerNode(self, i)

    def name(self):
        return _element.Element_name(self)

    def namelist(self):
        return _element.Element_namelist(self)

    def refreshMaterial(self, arg2):
        return _element.Element_refreshMaterial(self, arg2)

    def outputField(self, arg2, arg3, arg4):
        return _element.Element_outputField(self, arg2, arg3, arg4)

    def outputFields(self, arg2, arg3, arg4):
        return _element.Element_outputFields(self, arg2, arg3, arg4)

    def outputFieldDerivs(self, arg2, arg3, arg4, arg5):
        return _element.Element_outputFieldDerivs(self, arg2, arg3, arg4, arg5)

    def outputFluxes(self, arg2, arg3, arg4):
        return _element.Element_outputFluxes(self, arg2, arg3, arg4)

    def from_master(self, Point):
        return _element.Element_from_master(self, Point)

    def to_master(self, Point):
        return _element.Element_to_master(self, Point)

    def __repr__(self):
        return _element.Element___repr__(self)
    __swig_destroy__ = _element.delete_Element

# Register Element in _element:
_element.Element_swigregister(Element)

def _Element__position(self, coords):
  return list(map(self.from_master, coords))

Element.position = _Element__position


