当前位置: 首页>>代码示例>>C#>>正文


C# Interp.deleteCommandFromToken方法代码示例

本文整理汇总了C#中tcl.lang.Interp.deleteCommandFromToken方法的典型用法代码示例。如果您正苦于以下问题:C# Interp.deleteCommandFromToken方法的具体用法?C# Interp.deleteCommandFromToken怎么用?C# Interp.deleteCommandFromToken使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在tcl.lang.Interp的用法示例。


在下文中一共展示了Interp.deleteCommandFromToken方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: create

    internal static void create( Interp interp, Interp slaveInterp, Interp masterInterp, TclObject name, TclObject targetName, int objIx, TclObject[] objv )
    {

      string inString = name.ToString();

      InterpAliasCmd alias = new InterpAliasCmd();

      alias.name = name;
      name.preserve();

      alias.slaveInterp = slaveInterp;
      alias.targetInterp = masterInterp;

      alias.prefix = TclList.newInstance();
      alias.prefix.preserve();
      TclList.append( interp, alias.prefix, targetName );
      TclList.insert( interp, alias.prefix, 1, objv, objIx, objv.Length - 1 );

      slaveInterp.createCommand( inString, alias );
      alias.slaveCmd = NamespaceCmd.findCommand( slaveInterp, inString, null, 0 );

      try
      {
        interp.preventAliasLoop( slaveInterp, alias.slaveCmd );
      }
      catch ( TclException e )
      {
        // Found an alias loop!  The last call to Tcl_CreateObjCommand made
        // the alias point to itself.  Delete the command and its alias
        // record.  Be careful to wipe out its client data first, so the
        // command doesn't try to delete itself.

        slaveInterp.deleteCommandFromToken( alias.slaveCmd );
        throw;
      }

      // Make an entry in the alias table. If it already exists delete
      // the alias command. Then retry.

      if ( slaveInterp.aliasTable.ContainsKey( inString ) )
      {
        InterpAliasCmd oldAlias = (InterpAliasCmd)slaveInterp.aliasTable[inString];
        slaveInterp.deleteCommandFromToken( oldAlias.slaveCmd );
      }

      alias.aliasEntry = inString;
      SupportClass.PutElement( slaveInterp.aliasTable, inString, alias );

      // Create the new command. We must do it after deleting any old command,
      // because the alias may be pointing at a renamed alias, as in:
      //
      // interp alias {} foo {} bar		# Create an alias "foo"
      // rename foo zop				# Now rename the alias
      // interp alias {} foo {} zop		# Now recreate "foo"...

      SupportClass.PutElement( masterInterp.targetTable, alias.slaveCmd, slaveInterp );

      interp.setResult( name );
    }
开发者ID:Jaden-J,项目名称:csharp-sqlite,代码行数:59,代码来源:InterpAliasCmd.cs

示例2: delete

    internal static void delete( Interp interp, Interp slaveInterp, TclObject name )
    {
      // If the alias has been renamed in the slave, the master can still use
      // the original name (with which it was created) to find the alias to
      // delete it.


      string inString = name.ToString();
      if ( !slaveInterp.aliasTable.ContainsKey( inString ) )
      {
        throw new TclException( interp, "alias \"" + inString + "\" not found" );
      }

      InterpAliasCmd alias = (InterpAliasCmd)slaveInterp.aliasTable[inString];
      slaveInterp.deleteCommandFromToken( alias.slaveCmd );
    }
开发者ID:Jaden-J,项目名称:csharp-sqlite,代码行数:16,代码来源:InterpAliasCmd.cs

示例3: forgetImport

		/*
		*----------------------------------------------------------------------
		*
		* Tcl_ForgetImport -> forgetImport
		*
		*	Deletes previously imported commands. Given a pattern that may
		*	include the name of an exporting namespace, this procedure first
		*	finds all matching exported commands. It then looks in the namespace
		*	specified by namespace for any corresponding previously imported
		*	commands, which it deletes. If namespace is null, commands are
		*	deleted from the current namespace.
		*
		* Results:
		*  Returns if successful, raises TclException if something goes wrong.
		*
		* Side effects:
		*	May delete commands. 
		*
		*----------------------------------------------------------------------
		*/
		
		internal static void  forgetImport(Interp interp, Namespace namespace_Renamed, string pattern)
		{
			Namespace ns, importNs, actualCtx;
			string simplePattern, cmdName;
			IEnumerator search;
			WrappedCommand cmd;
			
			// If the specified namespace is null, use the current namespace.
			
			if (namespace_Renamed == null)
			{
				ns = getCurrentNamespace(interp);
			}
			else
			{
				ns = namespace_Renamed;
			}
			
			// From the pattern, find the namespace from which we are importing
			// and get the simple pattern (no namespace qualifiers or ::'s) at
			// the end.
			
			// Java does not support passing an address so we pass
			// an array of size 1 and then assign arr[0] to the value
			Namespace[] importNsArr = new Namespace[1];
			Namespace[] dummyArr = new Namespace[1];
			Namespace[] actualCtxArr = new Namespace[1];
			string[] simplePatternArr = new string[1];
			
			getNamespaceForQualName(interp, pattern, ns, TCL.VarFlag.LEAVE_ERR_MSG, importNsArr, dummyArr, actualCtxArr, simplePatternArr);
			
			// get the values out of the arrays
			importNs = importNsArr[0];
			actualCtx = actualCtxArr[0];
			simplePattern = simplePatternArr[0];
			
			// FIXME : the above call passes TCL.VarFlag.LEAVE_ERR_MSG, but
			// it seems like this will be a problem when exception is raised!
			if (importNs == null)
			{
				throw new TclException(interp, "unknown namespace in namespace forget pattern \"" + pattern + "\"");
			}
			
			// Scan through the command table in the source namespace and look for
			// exported commands that match the string pattern. If the current
			// namespace has an imported command that refers to one of those real
			// commands, delete it.
			
			
			for (search = importNs.cmdTable.Keys.GetEnumerator(); search.MoveNext(); )
			{
				
				cmdName = ((string) search.Current);
				if (Util.stringMatch(cmdName, simplePattern))
				{
					cmd = (WrappedCommand) ns.cmdTable[cmdName];
					if (cmd != null)
					{
						// cmd of same name in current namespace
						if (cmd.cmd is ImportedCmdData)
						{
							interp.deleteCommandFromToken(cmd);
						}
					}
				}
			}
			return ;
		}
开发者ID:Belxjander,项目名称:Asuna,代码行数:89,代码来源:NamespaceCmd.cs


注:本文中的tcl.lang.Interp.deleteCommandFromToken方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。