17db96d56Sopenharmony_ci/*[clinic input]
27db96d56Sopenharmony_cipreserve
37db96d56Sopenharmony_ci[clinic start generated code]*/
47db96d56Sopenharmony_ci
57db96d56Sopenharmony_cistatic PyObject *
67db96d56Sopenharmony_cimappingproxy_new_impl(PyTypeObject *type, PyObject *mapping);
77db96d56Sopenharmony_ci
87db96d56Sopenharmony_cistatic PyObject *
97db96d56Sopenharmony_cimappingproxy_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
107db96d56Sopenharmony_ci{
117db96d56Sopenharmony_ci    PyObject *return_value = NULL;
127db96d56Sopenharmony_ci    static const char * const _keywords[] = {"mapping", NULL};
137db96d56Sopenharmony_ci    static _PyArg_Parser _parser = {NULL, _keywords, "mappingproxy", 0};
147db96d56Sopenharmony_ci    PyObject *argsbuf[1];
157db96d56Sopenharmony_ci    PyObject * const *fastargs;
167db96d56Sopenharmony_ci    Py_ssize_t nargs = PyTuple_GET_SIZE(args);
177db96d56Sopenharmony_ci    PyObject *mapping;
187db96d56Sopenharmony_ci
197db96d56Sopenharmony_ci    fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser, 1, 1, 0, argsbuf);
207db96d56Sopenharmony_ci    if (!fastargs) {
217db96d56Sopenharmony_ci        goto exit;
227db96d56Sopenharmony_ci    }
237db96d56Sopenharmony_ci    mapping = fastargs[0];
247db96d56Sopenharmony_ci    return_value = mappingproxy_new_impl(type, mapping);
257db96d56Sopenharmony_ci
267db96d56Sopenharmony_ciexit:
277db96d56Sopenharmony_ci    return return_value;
287db96d56Sopenharmony_ci}
297db96d56Sopenharmony_ci
307db96d56Sopenharmony_ciPyDoc_STRVAR(property_init__doc__,
317db96d56Sopenharmony_ci"property(fget=None, fset=None, fdel=None, doc=None)\n"
327db96d56Sopenharmony_ci"--\n"
337db96d56Sopenharmony_ci"\n"
347db96d56Sopenharmony_ci"Property attribute.\n"
357db96d56Sopenharmony_ci"\n"
367db96d56Sopenharmony_ci"  fget\n"
377db96d56Sopenharmony_ci"    function to be used for getting an attribute value\n"
387db96d56Sopenharmony_ci"  fset\n"
397db96d56Sopenharmony_ci"    function to be used for setting an attribute value\n"
407db96d56Sopenharmony_ci"  fdel\n"
417db96d56Sopenharmony_ci"    function to be used for del\'ing an attribute\n"
427db96d56Sopenharmony_ci"  doc\n"
437db96d56Sopenharmony_ci"    docstring\n"
447db96d56Sopenharmony_ci"\n"
457db96d56Sopenharmony_ci"Typical use is to define a managed attribute x:\n"
467db96d56Sopenharmony_ci"\n"
477db96d56Sopenharmony_ci"class C(object):\n"
487db96d56Sopenharmony_ci"    def getx(self): return self._x\n"
497db96d56Sopenharmony_ci"    def setx(self, value): self._x = value\n"
507db96d56Sopenharmony_ci"    def delx(self): del self._x\n"
517db96d56Sopenharmony_ci"    x = property(getx, setx, delx, \"I\'m the \'x\' property.\")\n"
527db96d56Sopenharmony_ci"\n"
537db96d56Sopenharmony_ci"Decorators make defining new properties or modifying existing ones easy:\n"
547db96d56Sopenharmony_ci"\n"
557db96d56Sopenharmony_ci"class C(object):\n"
567db96d56Sopenharmony_ci"    @property\n"
577db96d56Sopenharmony_ci"    def x(self):\n"
587db96d56Sopenharmony_ci"        \"I am the \'x\' property.\"\n"
597db96d56Sopenharmony_ci"        return self._x\n"
607db96d56Sopenharmony_ci"    @x.setter\n"
617db96d56Sopenharmony_ci"    def x(self, value):\n"
627db96d56Sopenharmony_ci"        self._x = value\n"
637db96d56Sopenharmony_ci"    @x.deleter\n"
647db96d56Sopenharmony_ci"    def x(self):\n"
657db96d56Sopenharmony_ci"        del self._x");
667db96d56Sopenharmony_ci
677db96d56Sopenharmony_cistatic int
687db96d56Sopenharmony_ciproperty_init_impl(propertyobject *self, PyObject *fget, PyObject *fset,
697db96d56Sopenharmony_ci                   PyObject *fdel, PyObject *doc);
707db96d56Sopenharmony_ci
717db96d56Sopenharmony_cistatic int
727db96d56Sopenharmony_ciproperty_init(PyObject *self, PyObject *args, PyObject *kwargs)
737db96d56Sopenharmony_ci{
747db96d56Sopenharmony_ci    int return_value = -1;
757db96d56Sopenharmony_ci    static const char * const _keywords[] = {"fget", "fset", "fdel", "doc", NULL};
767db96d56Sopenharmony_ci    static _PyArg_Parser _parser = {NULL, _keywords, "property", 0};
777db96d56Sopenharmony_ci    PyObject *argsbuf[4];
787db96d56Sopenharmony_ci    PyObject * const *fastargs;
797db96d56Sopenharmony_ci    Py_ssize_t nargs = PyTuple_GET_SIZE(args);
807db96d56Sopenharmony_ci    Py_ssize_t noptargs = nargs + (kwargs ? PyDict_GET_SIZE(kwargs) : 0) - 0;
817db96d56Sopenharmony_ci    PyObject *fget = NULL;
827db96d56Sopenharmony_ci    PyObject *fset = NULL;
837db96d56Sopenharmony_ci    PyObject *fdel = NULL;
847db96d56Sopenharmony_ci    PyObject *doc = NULL;
857db96d56Sopenharmony_ci
867db96d56Sopenharmony_ci    fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser, 0, 4, 0, argsbuf);
877db96d56Sopenharmony_ci    if (!fastargs) {
887db96d56Sopenharmony_ci        goto exit;
897db96d56Sopenharmony_ci    }
907db96d56Sopenharmony_ci    if (!noptargs) {
917db96d56Sopenharmony_ci        goto skip_optional_pos;
927db96d56Sopenharmony_ci    }
937db96d56Sopenharmony_ci    if (fastargs[0]) {
947db96d56Sopenharmony_ci        fget = fastargs[0];
957db96d56Sopenharmony_ci        if (!--noptargs) {
967db96d56Sopenharmony_ci            goto skip_optional_pos;
977db96d56Sopenharmony_ci        }
987db96d56Sopenharmony_ci    }
997db96d56Sopenharmony_ci    if (fastargs[1]) {
1007db96d56Sopenharmony_ci        fset = fastargs[1];
1017db96d56Sopenharmony_ci        if (!--noptargs) {
1027db96d56Sopenharmony_ci            goto skip_optional_pos;
1037db96d56Sopenharmony_ci        }
1047db96d56Sopenharmony_ci    }
1057db96d56Sopenharmony_ci    if (fastargs[2]) {
1067db96d56Sopenharmony_ci        fdel = fastargs[2];
1077db96d56Sopenharmony_ci        if (!--noptargs) {
1087db96d56Sopenharmony_ci            goto skip_optional_pos;
1097db96d56Sopenharmony_ci        }
1107db96d56Sopenharmony_ci    }
1117db96d56Sopenharmony_ci    doc = fastargs[3];
1127db96d56Sopenharmony_ciskip_optional_pos:
1137db96d56Sopenharmony_ci    return_value = property_init_impl((propertyobject *)self, fget, fset, fdel, doc);
1147db96d56Sopenharmony_ci
1157db96d56Sopenharmony_ciexit:
1167db96d56Sopenharmony_ci    return return_value;
1177db96d56Sopenharmony_ci}
1187db96d56Sopenharmony_ci/*[clinic end generated code: output=916624e717862abc input=a9049054013a1b77]*/
119