liboaaevents.cs

来自「SRI international 发布的OAA框架软件」· CS 代码 · 共 72 行

CS
72
字号
using System;
using jnb.java.lang;
using jnb.com.sri.oaa2.icl;
using jnb.com.sri.oaa2.lib;
using jnb.com.sri.sedc.javanetbridge;
using System.Runtime.InteropServices;

namespace jnb.com.sri.oaa2.lib
{	
	public delegate void DoOAAEventDelegate(IclTerm eventArg1, IclList eventArg2, IclList eventArg3);
   
	[GuidAttribute("AD8D2901-4771-4802-8B6B-F7CF2DCA7AA2")]
	[InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch)]
	public interface IOAAEventListener
	{
		void DoOAAEvent(IclTerm eventArg1, IclList eventArg2, IclList eventArg3);
	}
	public interface ILibOaaEvents
	{
		void setLibOaa(LibOaa lib);
		void oaaRegisterCallback(String callback);
		event DoOAAEventDelegate DoOAAEvent;
	}

	[ComSourceInterfaces(typeof(IOAAEventListener))]
	public class LibOaaEvents : ILibOaaEvents
	{
		public event DoOAAEventDelegate DoOAAEvent;
		private LibOaa lib;
		private LibOaaEventsCallback eventListenerCB = null;

		public LibOaaEvents()
		{
		}

		public void setLibOaa(LibOaa lib) 
		{
			this.lib = lib;
		}

		public void oaaRegisterCallback(String callback) 
		{
			if (eventListenerCB == null) 
			{
				eventListenerCB = new LibOaaEventsCallback(this);
			}
			lib.oaaRegisterCallback(callback, eventListenerCB);
		}

		public bool fireOAAEvent(IclTerm arg0, IclList arg1, IclList arg2)
		{
			DoOAAEvent(arg0, arg1, arg2);
			return true;
		}
	}
	
	class LibOaaEventsCallback : OAAEventListener_CallbackImpl
	{
		private LibOaaEvents events;

		public LibOaaEventsCallback(LibOaaEvents events)
		{
			this.events = events;
		}

		public override bool doOAAEvent(IclTerm arg0, IclList arg1, IclList arg2)
		{
			return events.fireOAAEvent(arg0, arg1, arg2);
		}
	}
}

⌨️ 快捷键说明

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