Example #1
0
    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");
             * }*/
        }
Example #6
0
        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
        }
Example #7
0
    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;
    }