methodobject.h revision f70e43a073b36c6f6e9894c01025243a77a452d4
1f70e43a073b36c6f6e9894c01025243a77a452d4Guido van Rossum/*********************************************************** 2f70e43a073b36c6f6e9894c01025243a77a452d4Guido van RossumCopyright 1991 by Stichting Mathematisch Centrum, Amsterdam, The 3f70e43a073b36c6f6e9894c01025243a77a452d4Guido van RossumNetherlands. 4f70e43a073b36c6f6e9894c01025243a77a452d4Guido van Rossum 5f70e43a073b36c6f6e9894c01025243a77a452d4Guido van Rossum All Rights Reserved 6f70e43a073b36c6f6e9894c01025243a77a452d4Guido van Rossum 7f70e43a073b36c6f6e9894c01025243a77a452d4Guido van RossumPermission to use, copy, modify, and distribute this software and its 8f70e43a073b36c6f6e9894c01025243a77a452d4Guido van Rossumdocumentation for any purpose and without fee is hereby granted, 9f70e43a073b36c6f6e9894c01025243a77a452d4Guido van Rossumprovided that the above copyright notice appear in all copies and that 10f70e43a073b36c6f6e9894c01025243a77a452d4Guido van Rossumboth that copyright notice and this permission notice appear in 11f70e43a073b36c6f6e9894c01025243a77a452d4Guido van Rossumsupporting documentation, and that the names of Stichting Mathematisch 12f70e43a073b36c6f6e9894c01025243a77a452d4Guido van RossumCentrum or CWI not be used in advertising or publicity pertaining to 13f70e43a073b36c6f6e9894c01025243a77a452d4Guido van Rossumdistribution of the software without specific, written prior permission. 14f70e43a073b36c6f6e9894c01025243a77a452d4Guido van Rossum 15f70e43a073b36c6f6e9894c01025243a77a452d4Guido van RossumSTICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO 16f70e43a073b36c6f6e9894c01025243a77a452d4Guido van RossumTHIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND 17f70e43a073b36c6f6e9894c01025243a77a452d4Guido van RossumFITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE 18f70e43a073b36c6f6e9894c01025243a77a452d4Guido van RossumFOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 19f70e43a073b36c6f6e9894c01025243a77a452d4Guido van RossumWHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 20f70e43a073b36c6f6e9894c01025243a77a452d4Guido van RossumACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT 21f70e43a073b36c6f6e9894c01025243a77a452d4Guido van RossumOF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 22f70e43a073b36c6f6e9894c01025243a77a452d4Guido van Rossum 23f70e43a073b36c6f6e9894c01025243a77a452d4Guido van Rossum******************************************************************/ 24f70e43a073b36c6f6e9894c01025243a77a452d4Guido van Rossum 2585a5fbbdfea617f6cc8fae82c9e8c2b5c424436dGuido van Rossum/* Method object interface */ 2685a5fbbdfea617f6cc8fae82c9e8c2b5c424436dGuido van Rossum 2785a5fbbdfea617f6cc8fae82c9e8c2b5c424436dGuido van Rossumextern typeobject Methodtype; 2885a5fbbdfea617f6cc8fae82c9e8c2b5c424436dGuido van Rossum 2985a5fbbdfea617f6cc8fae82c9e8c2b5c424436dGuido van Rossum#define is_methodobject(op) ((op)->ob_type == &Methodtype) 3085a5fbbdfea617f6cc8fae82c9e8c2b5c424436dGuido van Rossum 3185a5fbbdfea617f6cc8fae82c9e8c2b5c424436dGuido van Rossumtypedef object *(*method) FPROTO((object *, object *)); 3285a5fbbdfea617f6cc8fae82c9e8c2b5c424436dGuido van Rossum 3385a5fbbdfea617f6cc8fae82c9e8c2b5c424436dGuido van Rossumextern object *newmethodobject PROTO((char *, method, object *)); 3485a5fbbdfea617f6cc8fae82c9e8c2b5c424436dGuido van Rossumextern method getmethod PROTO((object *)); 3585a5fbbdfea617f6cc8fae82c9e8c2b5c424436dGuido van Rossumextern object *getself PROTO((object *)); 363f5da24ea304e674a9abbdcffc4d671e32aa70f1Guido van Rossum 373f5da24ea304e674a9abbdcffc4d671e32aa70f1Guido van Rossumstruct methodlist { 383f5da24ea304e674a9abbdcffc4d671e32aa70f1Guido van Rossum char *ml_name; 393f5da24ea304e674a9abbdcffc4d671e32aa70f1Guido van Rossum method ml_meth; 403f5da24ea304e674a9abbdcffc4d671e32aa70f1Guido van Rossum}; 413f5da24ea304e674a9abbdcffc4d671e32aa70f1Guido van Rossum 423f5da24ea304e674a9abbdcffc4d671e32aa70f1Guido van Rossumextern object *findmethod PROTO((struct methodlist *, object *, char *)); 43