⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 genrccom.c

📁 clips源代码
💻 C
📖 第 1 页 / 共 5 页
字号:
   DEFGENERIC *gfunc;   long mi;#if MAC_MCW || IBM_MCW || MAC_XCD#pragma unused(theEnv)#endif   gfunc = (DEFGENERIC *) ptr;   mi = FindMethodByIndex(gfunc,theIndex);   PrintMethod(theEnv,buf,buflen,&gfunc->methods[mi]);  }/*********************************************************  NAME         : EnvGetDefgenericWatch  DESCRIPTION  : Determines if trace messages are                 gnerated when executing generic function  INPUTS       : A pointer to the generic  RETURNS      : TRUE if a trace is active,                 FALSE otherwise  SIDE EFFECTS : None  NOTES        : None *********************************************************/#if IBM_TBC#pragma argsused#endifgloble unsigned EnvGetDefgenericWatch(  void *theEnv,  void *theGeneric)  {#if MAC_MCW || IBM_MCW || MAC_XCD#pragma unused(theEnv)#endif   return(((DEFGENERIC *) theGeneric)->trace);  }/*********************************************************  NAME         : EnvSetDefgenericWatch  DESCRIPTION  : Sets the trace to ON/OFF for the                 generic function  INPUTS       : 1) TRUE to set the trace on,                    FALSE to set it off                 2) A pointer to the generic  RETURNS      : Nothing useful  SIDE EFFECTS : Watch flag for the generic set  NOTES        : None *********************************************************/#if IBM_TBC#pragma argsused#endifgloble void EnvSetDefgenericWatch(  void *theEnv,  unsigned newState,  void *theGeneric)  {#if MAC_MCW || IBM_MCW || MAC_XCD#pragma unused(theEnv)#endif   ((DEFGENERIC *) theGeneric)->trace = newState;  }/*********************************************************  NAME         : EnvGetDefmethodWatch  DESCRIPTION  : Determines if trace messages for calls                 to this method will be generated or not  INPUTS       : 1) A pointer to the generic                 2) The index of the method  RETURNS      : TRUE if a trace is active,                 FALSE otherwise  SIDE EFFECTS : None  NOTES        : None *********************************************************/#if IBM_TBC#pragma argsused#endifgloble unsigned EnvGetDefmethodWatch(  void *theEnv,  void *theGeneric,  long theIndex)  {   DEFGENERIC *gfunc;   long mi;#if MAC_MCW || IBM_MCW || MAC_XCD#pragma unused(theEnv)#endif   gfunc = (DEFGENERIC *) theGeneric;   mi = FindMethodByIndex(gfunc,theIndex);   return(gfunc->methods[mi].trace);  }/*********************************************************  NAME         : EnvSetDefmethodWatch  DESCRIPTION  : Sets the trace to ON/OFF for the                 calling of the method  INPUTS       : 1) TRUE to set the trace on,                    FALSE to set it off                 2) A pointer to the generic                 3) The index of the method  RETURNS      : Nothing useful  SIDE EFFECTS : Watch flag for the method set  NOTES        : None *********************************************************/#if IBM_TBC#pragma argsused#endifgloble void EnvSetDefmethodWatch(  void *theEnv,  unsigned newState,  void *theGeneric,  long theIndex)  {   DEFGENERIC *gfunc;   long mi;#if MAC_MCW || IBM_MCW || MAC_XCD#pragma unused(theEnv)#endif   gfunc = (DEFGENERIC *) theGeneric;   mi = FindMethodByIndex(gfunc,theIndex);   gfunc->methods[mi].trace = newState;  }/********************************************************  NAME         : PPDefgenericCommand  DESCRIPTION  : Displays the pretty-print form of                  a generic function header  INPUTS       : None  RETURNS      : Nothing useful  SIDE EFFECTS : None  NOTES        : H/L Syntax: (ppdefgeneric <name>) ********************************************************/globle void PPDefgenericCommand(  void *theEnv)  {   PPConstructCommand(theEnv,"ppdefgeneric",DefgenericData(theEnv)->DefgenericConstruct);  }/**********************************************************  NAME         : PPDefmethodCommand  DESCRIPTION  : Displays the pretty-print form of                  a method  INPUTS       : None  RETURNS      : Nothing useful  SIDE EFFECTS : None  NOTES        : H/L Syntax: (ppdefmethod <name> <index>) **********************************************************/globle void PPDefmethodCommand(  void *theEnv)  {   DATA_OBJECT temp;   char *gname;   DEFGENERIC *gfunc;   int gi;      if (EnvArgTypeCheck(theEnv,"ppdefmethod",1,SYMBOL,&temp) == FALSE)     return;   gname = DOToString(temp);   if (EnvArgTypeCheck(theEnv,"ppdefmethod",2,INTEGER,&temp) == FALSE)     return;   gfunc = CheckGenericExists(theEnv,"ppdefmethod",gname);   if (gfunc == NULL)     return;   gi = CheckMethodExists(theEnv,"ppdefmethod",gfunc,(long) DOToLong(temp));   if (gi == -1)     return;   if (gfunc->methods[gi].ppForm != NULL)     PrintInChunks(theEnv,WDISPLAY,gfunc->methods[gi].ppForm);  }/******************************************************  NAME         : ListDefmethodsCommand  DESCRIPTION  : Lists a brief description of methods                   for a particular generic function  INPUTS       : None  RETURNS      : Nothing useful  SIDE EFFECTS : None  NOTES        : H/L Syntax: (list-defmethods <name>) ******************************************************/globle void ListDefmethodsCommand(  void *theEnv)  {   DATA_OBJECT temp;   DEFGENERIC *gfunc;      if (EnvRtnArgCount(theEnv) == 0)     EnvListDefmethods(theEnv,WDISPLAY,NULL);   else     {      if (EnvArgTypeCheck(theEnv,"list-defmethods",1,SYMBOL,&temp) == FALSE)        return;      gfunc = CheckGenericExists(theEnv,"list-defmethods",DOToString(temp));      if (gfunc != NULL)        EnvListDefmethods(theEnv,WDISPLAY,(void *) gfunc);     }  }/***************************************************************  NAME         : EnvGetDefmethodPPForm  DESCRIPTION  : Getsa generic function method pretty print form  INPUTS       : 1) Address of the generic function                 2) Index of the method  RETURNS      : Method ppform  SIDE EFFECTS : None  NOTES        : None ***************************************************************/#if IBM_TBC#pragma argsused#endifgloble char *EnvGetDefmethodPPForm(  void *theEnv,  void *ptr,  long theIndex)  {   DEFGENERIC *gfunc;   int mi;#if MAC_MCW || IBM_MCW || MAC_XCD#pragma unused(theEnv)#endif   gfunc = (DEFGENERIC *) ptr;   mi = FindMethodByIndex(gfunc,theIndex);   return(gfunc->methods[mi].ppForm);  }/***************************************************  NAME         : ListDefgenericsCommand  DESCRIPTION  : Displays all defgeneric names  INPUTS       : None  RETURNS      : Nothing useful  SIDE EFFECTS : Defgeneric names printed  NOTES        : H/L Interface ***************************************************/globle void ListDefgenericsCommand(  void *theEnv)  {   ListConstructCommand(theEnv,"list-defgenerics",DefgenericData(theEnv)->DefgenericConstruct);  }/***************************************************  NAME         : EnvListDefgenerics  DESCRIPTION  : Displays all defgeneric names  INPUTS       : 1) The logical name of the output                 2) The module  RETURNS      : Nothing useful  SIDE EFFECTS : Defgeneric names printed  NOTES        : C Interface ***************************************************/globle void EnvListDefgenerics(  void *theEnv,  char *logicalName,  struct defmodule *theModule)  {   ListConstruct(theEnv,DefgenericData(theEnv)->DefgenericConstruct,logicalName,theModule);  }/******************************************************  NAME         : EnvListDefmethods  DESCRIPTION  : Lists a brief description of methods                   for a particular generic function  INPUTS       : 1) The logical name of the output                 2) Generic function to list methods for                    (NULL means list all methods)  RETURNS      : Nothing useful  SIDE EFFECTS : None  NOTES        : None ******************************************************/globle void EnvListDefmethods(  void *theEnv,  char *logicalName,  void *vptr)  {   DEFGENERIC *gfunc;   long count;   if (vptr != NULL)     count = ListMethodsForGeneric(theEnv,logicalName,(DEFGENERIC *) vptr);   else     {      count = 0L;      for (gfunc = (DEFGENERIC *) EnvGetNextDefgeneric(theEnv,NULL) ;           gfunc != NULL ;           gfunc = (DEFGENERIC *) EnvGetNextDefgeneric(theEnv,(void *) gfunc))        {         count += ListMethodsForGeneric(theEnv,logicalName,gfunc);         if (EnvGetNextDefgeneric(theEnv,(void *) gfunc) != NULL)           EnvPrintRouter(theEnv,logicalName,"\n");        }     }   PrintTally(theEnv,logicalName,count,"method","methods");  }#endif/***************************************************************  NAME         : GetDefgenericListFunction  DESCRIPTION  : Groups all defgeneric names into                 a multifield list  INPUTS       : A data object buffer to hold                 the multifield result  RETURNS      : Nothing useful  SIDE EFFECTS : Multifield allocated and filled  NOTES        : H/L Syntax: (get-defgeneric-list [<module>]) ***************************************************************/globle void GetDefgenericListFunction(  void *theEnv,  DATA_OBJECT*returnValue)  {   GetConstructListFunction(theEnv,"get-defgeneric-list",returnValue,DefgenericData(theEnv)->DefgenericConstruct);  }/***************************************************************  NAME         : EnvGetDefgenericList  DESCRIPTION  : Groups all defgeneric names into                 a multifield list  INPUTS       : 1) A data object buffer to hold                    the multifield result                 2) The module from which to obtain defgenerics  RETURNS      : Nothing useful  SIDE EFFECTS : Multifield allocated and filled  NOTES        : External C access ***************************************************************/globle void EnvGetDefgenericList(  void *theEnv,  DATA_OBJECT *returnValue,  struct defmodule *theModule)  {   GetConstructList(theEnv,returnValue,DefgenericData(theEnv)->DefgenericConstruct,theModule);  }/***********************************************************  NAME         : GetDefmethodListCommand  DESCRIPTION  : Groups indices of all methdos for a generic                 function into a multifield variable                 (NULL means get methods for all generics)  INPUTS       : A data object buffer  RETURNS      : Nothing useful  SIDE EFFECTS : Multifield set to list of method indices  NOTES        : None ***********************************************************/globle void GetDefmethodListCommand(  void *theEnv,  DATA_OBJECT_PTR returnValue)  {   DATA_OBJECT temp;   DEFGENERIC *gfunc;      if (EnvRtnArgCount(theEnv) == 0)     EnvGetDefmethodList(theEnv,NULL,returnValue);   else     {      if (EnvArgTypeCheck(theEnv,"get-defmethod-list",1,SYMBOL,&temp) == FALSE)        {         EnvSetMultifieldErrorValue(theEnv,returnValue);         return;        }      gfunc = CheckGenericExists(theEnv,"get-defmethod-list",DOToString(temp));      if (gfunc != NULL)        EnvGetDefmethodList(theEnv,(void *) gfunc,returnValue);      else        EnvSetMultifieldErrorValue(theEnv,returnValue);     }  }/***********************************************************  NAME         : EnvGetDefmethodList  DESCRIPTION  : Groups indices of all methdos for a generic                 function into a multifield variable                 (NULL means get methods for all generics)  INPUTS       : 1) A pointer to a generic function                 2) A data object buffer

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -