mirror of
https://github.com/python/cpython.git
synced 2025-08-03 08:34:29 +00:00
Add "varargs" attribute.
This commit is contained in:
parent
3ddee714d1
commit
c06022966f
3 changed files with 26 additions and 9 deletions
|
@ -30,16 +30,18 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|||
|
||||
typedef struct {
|
||||
OB_HEAD
|
||||
char *m_name;
|
||||
method m_meth;
|
||||
object *m_self;
|
||||
char *m_name;
|
||||
method m_meth;
|
||||
object *m_self;
|
||||
int m_varargs;
|
||||
} methodobject;
|
||||
|
||||
object *
|
||||
newmethodobject(name, meth, self)
|
||||
newmethodobject(name, meth, self, varargs)
|
||||
char *name; /* static string */
|
||||
method meth;
|
||||
object *self;
|
||||
int varargs;
|
||||
{
|
||||
methodobject *op = NEWOBJ(methodobject, &Methodtype);
|
||||
if (op != NULL) {
|
||||
|
@ -48,6 +50,7 @@ newmethodobject(name, meth, self)
|
|||
if (self != NULL)
|
||||
INCREF(self);
|
||||
op->m_self = self;
|
||||
op->m_varargs = varargs;
|
||||
}
|
||||
return (object *)op;
|
||||
}
|
||||
|
@ -74,6 +77,17 @@ getself(op)
|
|||
return ((methodobject *)op) -> m_self;
|
||||
}
|
||||
|
||||
int
|
||||
getvarargs(op)
|
||||
object *op;
|
||||
{
|
||||
if (!is_methodobject(op)) {
|
||||
err_badcall();
|
||||
return -1;
|
||||
}
|
||||
return ((methodobject *)op) -> m_varargs;
|
||||
}
|
||||
|
||||
/* Methods (the standard built-in methods, that is) */
|
||||
|
||||
static void
|
||||
|
@ -168,7 +182,8 @@ findmethod(ml, op, name)
|
|||
return listmethods(ml);
|
||||
for (; ml->ml_name != NULL; ml++) {
|
||||
if (strcmp(name, ml->ml_name) == 0)
|
||||
return newmethodobject(ml->ml_name, ml->ml_meth, op);
|
||||
return newmethodobject(ml->ml_name, ml->ml_meth,
|
||||
op, ml->ml_varargs);
|
||||
}
|
||||
err_setstr(AttributeError, name);
|
||||
return NULL;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue