{ GET_PLUGIN_STUFF (GetTimerList ()) } // end of CMUSHclientDoc::GetPluginTimerList // get trigger info for a particular plugin VARIANT CMUSHclientDoc::GetPluginTriggerInfo(LPCTSTR PluginID, LPCTSTR TriggerName, short InfoType) { GET_PLUGIN_STUFF (GetTriggerInfo (TriggerName, InfoType)) } // end of CMUSHclientDoc::GetPluginTriggerInfo // get alias info for a particular plugin VARIANT CMUSHclientDoc::GetPluginAliasInfo(LPCTSTR PluginID, LPCTSTR AliasName, short InfoType) { GET_PLUGIN_STUFF (GetAliasInfo (AliasName, InfoType)) } // end of CMUSHclientDoc::GetPluginAliasInfo // get timer info for a particular plugin VARIANT CMUSHclientDoc::GetPluginTimerInfo(LPCTSTR PluginID, LPCTSTR TimerName, short InfoType) { GET_PLUGIN_STUFF (GetTimerInfo (TimerName, InfoType)) } // end of CMUSHclientDoc::GetPluginTimerInfo // call a routine in a plugin, eg. // world.CallPlugin "982581e59ab42844527eec80", "Log_And_Send", "blah" long CMUSHclientDoc::CallPlugin(LPCTSTR PluginID, LPCTSTR Routine, LPCTSTR Argument) {
static void doPragAux( // #PRAGMA AUX ... void ) { struct { unsigned f_call : 1; unsigned f_loadds : 1; unsigned f_rdosdev: 1; unsigned f_export : 1; unsigned f_parm : 1; unsigned f_value : 1; unsigned f_modify : 1; unsigned f_frame : 1; unsigned uses_auto: 1; } have; if( !GetAliasInfo() ) return; CurrEntry = NULL; if( !PragIdCurToken() ) return; SetCurrInfo(); NextToken(); AuxCopy( CurrInfo, CurrAlias ); PragObjNameInfo(); have.f_call = 0; have.f_loadds = 0; have.f_rdosdev = 0; have.f_export = 0; have.f_parm = 0; have.f_value = 0; have.f_modify = 0; have.f_frame = 0; have.uses_auto = 0; for( ;; ) { if( !have.f_call && CurToken == T_EQUAL ) { have.uses_auto = GetByteSeq(); have.f_call = 1; } else if( !have.f_call && PragRecog( "far" ) ) { CurrInfo->cclass |= FAR; have.f_call = 1; } else if( !have.f_call && PragRecog( "near" ) ) { CurrInfo->cclass &= ~FAR; have.f_call = 1; } else if( !have.f_loadds && PragRecog( "loadds" ) ) { CurrInfo->cclass |= LOAD_DS_ON_ENTRY; have.f_loadds = 1; } else if( !have.f_rdosdev && PragRecog( "rdosdev" ) ) { CurrInfo->cclass |= LOAD_RDOSDEV_ON_ENTRY; have.f_rdosdev = 1; } else if( !have.f_export && PragRecog( "export" ) ) { CurrInfo->cclass |= DLL_EXPORT; have.f_export = 1; } else if( !have.f_parm && PragRecog( "parm" ) ) { GetParmInfo(); have.f_parm = 1; } else if( !have.f_value && PragRecog( "value" ) ) { GetRetInfo(); have.f_value = 1; } else if( !have.f_value && PragRecog( "aborts" ) ) { CurrInfo->cclass |= SUICIDAL; have.f_value = 1; } else if( !have.f_modify && PragRecog( "modify" ) ) { GetSaveInfo(); have.f_modify = 1; } else if( !have.f_frame && PragRecog( "frame" ) ) { CurrInfo->cclass |= GENERATE_STACK_FRAME; have.f_frame = 1; } else { break; } } if( have.uses_auto ) { AsmSysUsesAuto(); } PragEnding( TRUE ); }