Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            SetArray sa1 = new SetArray(1000001, "Oleg", "NPD", 1, 2, 3);
            SetArray sa2 = new SetArray(1111100, "Kate", "Kolesnik", 3, 4, 5);
            SetArray sa3 = new SetArray();

            sa3 = sa1 + sa2;
            sa3++;
            foreach (int item in sa3.Set)
            {
                Console.WriteLine(item);
            }
            if (sa1 <= sa3)
            {
                Console.WriteLine("Первое множество по мощности больше либо равно объединенному первому множеству со вторым");
            }
            else
            {
                Console.WriteLine("Первое множество по мощности меньше либо равно объединенному первому множеству со вторым");
            }
            Console.WriteLine(sa1 % 2 + " - элемент под индексом 2 в sa1");
            Console.WriteLine(1 * sa1 + " - количество элементов в sa1");
            Console.WriteLine("Информация о sa1: " + sa1.ToString());
            SetArray.Date dt = new SetArray.Date(1999, 12, 5);
            Console.WriteLine("Max in sa1: " + MathOperation.GetMax(sa1));
            Console.WriteLine("Min in sa1: " + MathOperation.GetMin(sa1));
            Console.WriteLine("Count of sa1: " + MathOperation.GetCount(sa1));
            Console.WriteLine("abcs".GetCipher() + " - шифр строки \"abcs\"");
            Console.WriteLine("sa1 отсортирован по возрастанию - " + sa1.IsOrdered());
            Console.ReadKey();
        }
Ejemplo n.º 2
0
 static void PrintArray(List <string> arr, SetArray deleFunc) //리스트의 요소를 출력하는 메서드
 {
     Console.WriteLine("=== 요소 출력 ===");
     for (int i = 0; i < deleFunc(arr).Count; i++)         //delegate를 활용해서 리스트에 요소를 입력
     {
         Console.WriteLine("Array({0}) = {1}", i, arr[i]); //입력된 요소를 출력
     }
 }
Ejemplo n.º 3
0
            public static List <T> operator +(SetArray <T> setarr1, SetArray <T> setarr2)  //перегрузка +, чтобы объёдинял множества
            {
                SetArray <T> setarr3 = new SetArray <T>();

                foreach (var x in setarr1.Set)
                {
                    setarr3.Set.Add(x);
                }
                foreach (var x in setarr2.Set)
                {
                    if (!setarr3.Set.Contains(x))
                    {
                        setarr3.Set.Add(x);
                    }
                }
                return(setarr3.Set);
            }
Ejemplo n.º 4
0
    public override void OnInspectorGUI()
    {
        SetArray SA = (SetArray)target;

        //public int rowCount = 5;
        //public GameObject[] go;

        SA.rowCount = EditorGUILayout.IntField("Row Count", SA.rowCount);

        if (GUILayout.Button("StartSort"))
        {
            SA.StartSort();
        }

        GUILayout.Space(10);

        m_Property = m_Object.FindProperty("go");
        EditorGUILayout.PropertyField(m_Property, new GUIContent("Object"), true);
        m_Object.ApplyModifiedProperties();
    }
Ejemplo n.º 5
0
        static void Main(string[] args)
        {
            try
            {
                SetArray <int>    sa1 = new SetArray <int>(1000001, "Oleg", "NPD", 1, 2, 3);
                SetArray <int>    sa2 = new SetArray <int>(1111100, "Kate", "Kolesnik", 3, 4, 5);
                SetArray <int>    sa3 = new SetArray <int>();
                SetArray <string> sa4 = new SetArray <string>(1000111, "Nick", "Hyper", "abc", "def", "ghi");
                SetArray <string> sa5 = new SetArray <string>(1001011, "Jim", "Kelmi", "cba", "def");
                SetArray <float>  sa6 = new SetArray <float>(1101101, "John", "Klimbing", (float)2.2, 1212, 9, (float)3189.31, 213);
                sa3.Set = sa1 + sa2;
                foreach (var item in sa3.Set)
                {
                    Console.WriteLine(item);
                }
                if (sa1 <= sa3)
                {
                    Console.WriteLine("Первое множество по мощности больше либо равно объединенному первому множеству со вторым");
                }
                else
                {
                    Console.WriteLine("Первое множество по мощности меньше либо равно объединенному первому множеству со вторым");
                }
                Console.WriteLine(sa1 % 2 + " - элемент под индексом 2 в sa1");
                Console.WriteLine(1 * sa1 + " - количество элементов в sa1");
                Console.WriteLine("Информация о sa1: " + sa1.ToString());
                sa5.Set = sa5 + sa4;
                Console.WriteLine("Элементы sa4 + sa5 :");
                foreach (var item in sa5.Set)
                {
                    Console.WriteLine(item);
                }

                sa4.add("eeeeeee");
                sa5.delete("abc");
                Console.WriteLine("Информация о sa5:");
                sa5.show();
                Console.WriteLine("Информация о sa6:");
                sa6.show();

                Question q1 = new Question();
                q1.Text = "Oh, it's question";

                SetArray <Question> sa7 = new SetArray <Question>(1110000, "Katrin", "Zippo", q1);
                Console.WriteLine("Информация о sa7:");
                sa7.show();
            }

            catch (QuestionException e)
            {
                Console.WriteLine(e);
            }

            catch (Exception e)
            {
                Console.WriteLine(e);
            }

            finally
            {
                Console.WriteLine("Программа завершена!");
            }
            Console.ReadKey();
        }
Ejemplo n.º 6
0
        public static void Attach(int pid, string path, string arguments = "")
        {
            IntPtr vm = IntPtr.Zero, env = IntPtr.Zero;

            JavaVMInitArgs args = new JavaVMInitArgs();

            args.version  = 0x00010008;
            args.nOptions = 0;

            int result = JNI_CreateJavaVM(ref vm, ref env, ref args);

            Console.WriteLine("result " + result);


            IntPtr real      = Marshal.ReadIntPtr(env);
            IntPtr function  = Marshal.ReadIntPtr(real, 668);
            IntPtr functionL = Marshal.ReadIntPtr(real, 656);

            IntPtr realVmStruct = Marshal.ReadIntPtr(vm);


            StringDelegate  newStringUTF   = Marshal.GetDelegateForFunctionPointer <StringDelegate>(function);
            GetStringLength stringLen      = Marshal.GetDelegateForFunctionPointer <GetStringLength>(functionL);
            ExceptionCheck  checkException = Marshal.GetDelegateForFunctionPointer <ExceptionCheck>(Marshal.ReadIntPtr(real, 912));

            ExceptionDescribe printException = Marshal.GetDelegateForFunctionPointer <ExceptionDescribe>(Marshal.ReadIntPtr(real, 64));

            NewObjectArray newObjectArray = Marshal.GetDelegateForFunctionPointer <NewObjectArray>(Marshal.ReadIntPtr(real, 688));
            FindClass      findClass      = Marshal.GetDelegateForFunctionPointer <FindClass>(Marshal.ReadIntPtr(real, 24));

            SetArray setArray = Marshal.GetDelegateForFunctionPointer <SetArray>(Marshal.ReadIntPtr(real, 696));

            DestroyJavaVM destroyVM = Marshal.GetDelegateForFunctionPointer <DestroyJavaVM>(Marshal.ReadIntPtr(realVmStruct, 12));

            //attach api start

            Java_sun_tools_attach_WindowsVirtualMachine_init(env, IntPtr.Zero);
            IntPtr stub = Java_sun_tools_attach_WindowsVirtualMachine_generateStub(env, IntPtr.Zero);

            long process = Java_sun_tools_attach_WindowsVirtualMachine_openProcess(env, IntPtr.Zero, pid);

            Console.WriteLine("exception " + checkException(env));


            IntPtr cmd      = newStringUTF(env, "load");
            IntPtr pipeName = newStringUTF(env, "\\\\.\\pipe\\javatool22");

            IntPtr pathJStr       = newStringUTF(env, path);
            IntPtr unknownBoolean = newStringUTF(env, "true");
            IntPtr argumentsJ     = newStringUTF(env, arguments);

            Console.WriteLine("exception " + checkException(env));


            IntPtr clazz = findClass(env, "java/lang/String");

            IntPtr array = newObjectArray(env, 3, clazz, IntPtr.Zero);

            setArray(env, array, 0, pathJStr);
            setArray(env, array, 1, unknownBoolean);
            setArray(env, array, 2, argumentsJ);



            Java_sun_tools_attach_WindowsVirtualMachine_enqueue(env, IntPtr.Zero,
                                                                process, stub, cmd, pipeName, array);

            Console.WriteLine("exception " + checkException(env));
            printException(env);


            /*
             *
             * var pipe = new NamedPipeServerStream("javatool22");
             * pipe.WaitForConnection();
             * BinaryReader reader = new BinaryReader(pipe);
             * char callback = reader.ReadChar();
             *
             *
             * Console.WriteLine("pipe result " + callback);
             */

            Java_sun_tools_attach_WindowsVirtualMachine_closeProcess(env, IntPtr.Zero, process);


            int rr = destroyVM(vm);

            Console.WriteLine("destroyed vm: " + result);
        }