public static int test_0_invoke_pinvoke_through_delegate() { puts_static("A simple Test for PInvoke 1"); MyDelegate d = new MyDelegate(puts_static); d("A simple Test for PInvoke 2"); object [] args = { "A simple Test for PInvoke 3" }; d.DynamicInvoke(args); return(0); }
public static int Main() { puts_static ("A simple Test for PInvoke 1"); MyDelegate d = new MyDelegate (puts_static); d ("A simple Test for PInvoke 2"); object [] args = {"A simple Test for PInvoke 3"}; d.DynamicInvoke (args); int noimpl = 0; try { Test X = new Test (); X.MyClone (); } catch { noimpl = 1; } if (noimpl == 0) return 1; return 0; }
//Le mandamos el nodo a eliminar y su hijo NUEVO= HIJO DERECHO O IZQUIERDO public void Reemplazar(Nodo <T> arbol, Nodo <T> nuevo) //Cuando tenga un solo hijo (ya sea izquierda o derecha)) { if (arbol.Creador != null) //El padre apunta a nuevo padre { if ((int)MyDelegate.DynamicInvoke(arbol.valor, arbol.Creador.Izquierda.valor) == 0) //Si es el hijo izquierdo { arbol.Creador.Izquierda = nuevo; //El padre convierte a su hijo izquierdo el hijo del eliminado } else if ((int)MyDelegate.DynamicInvoke(arbol.valor, arbol.Creador.Derecha.valor) == 0) //Si es el hijo derecho { arbol.Creador.Derecha = nuevo; //El padre convierte a su hijo izquierdo el hijo del eliminado } } if (nuevo != null) //Le asignamos un padre { nuevo.Creador = arbol.Creador; } }
public void BuscarNodoAEliminar(Nodo <T> arbol, Nodo <T> eliminado)//Envio la raiz y el nodo a eliminar { if (arbol == null) { return; } //Si el arbol esta vacio else if ((int)MyDelegate.DynamicInvoke(arbol.valor, eliminado.valor) > 0) //Si el valor es mayor { BuscarNodoAEliminar(arbol.Izquierda, eliminado); } //Recursividad hacia la derecha else if ((int)MyDelegate.DynamicInvoke(arbol.valor, eliminado.valor) < 0) //Si el valor es menor { BuscarNodoAEliminar(arbol.Derecha, eliminado); } //Recursividad hacia la izquierda else if ((int)MyDelegate.DynamicInvoke(arbol.valor, eliminado.valor) == 0) //Cuando lo encuentre { Borrar(arbol); } //Llama al metodo para verificar cuantos hijos tiene }
public void AgregarHojas(Nodo <T> Raiz, Nodo <T> hijo, string hojaV)//La raiz { //int comparar = hijo.valor.CompareTo(Raiz.valor); if ((int)MyDelegate.DynamicInvoke(Raiz, hijo) < 0) //Verifico si va hacia la derecha { if (Raiz.Derecha == null) //Si el lado derecho esta vacio { Raiz.Derecha = hijo; Raiz.Derecha.valor = hojaV; Raiz.Derecha.Creador = Raiz; Raiz.Derecha.posicion = hijo.posicion; //POSICION REPRESENTA EL ID } else //De lo contrario, lo vuelve a llamar hasta encontrarle un espacio { AgregarHojas(Raiz.Derecha, hijo, hojaV); } } else if ((int)MyDelegate.DynamicInvoke(Raiz, hijo) > 0) //Verifico si va hacia la izquierda { if (Raiz.Izquierda == null) //Si el lado izquierdo esta vacio { Raiz.Izquierda = hijo; Raiz.Izquierda.valor = hojaV; Raiz.Izquierda.Creador = Raiz; Raiz.Izquierda.posicion = hijo.posicion; //POSICION REPRESENTA EL ID } else//De lo contrario, lo vuelve a llamar hasta encontrarle un espacio { AgregarHojas(Raiz.Izquierda, hijo, hojaV); } } /*else if ((int)MyDelegate.DynamicInvoke(Raiz, hijo) == 0) * { * //EXISTEN DUPLICADOS. EJEMPLO: LINEAS 7 Y 34 * throw new DuplicateWaitObjectException("DUPLICADOS NO EXISTEN EN ARBOL"); * }*/ }
public int BuscadorNodo(Nodo <T> Raiz, Nodo <T> nodo) { if (Raiz == null) { return(0); } // si el arbol esta vacio o no se encontro else if (Raiz.valor.CompareTo(nodo.valor) == 0) { return(nodo.posicion); } //Si el valor se encuentra en la raiz else if ((int)MyDelegate.DynamicInvoke(Raiz.valor, nodo.valor) > 0) { return(BuscadorNodo(Raiz.Izquierda, nodo)); } //Si es menor el dato, se vuelve a llamar else { return(BuscadorNodo(Raiz.Derecha, nodo)); } //Si es mayor el dato, se vuelve a llamar //ESTE METODO RETORNA 0 OR n... ENTONCES, CUANDO LO LLAMEMOS EN EL CONTROLADOR, DEBEMOS DE PONER ANTES UN CONDICIONAL PARA QUE FUNCIONE }
public static int test_0_invoke_pinvoke_through_delegate() { puts_static ("A simple Test for PInvoke 1"); MyDelegate d = new MyDelegate (puts_static); d ("A simple Test for PInvoke 2"); object [] args = {"A simple Test for PInvoke 3"}; d.DynamicInvoke (args); return 0; }