Example #1
0
        private void Button_Click_2(object sender, RoutedEventArgs e)
        {
            func.ListViewEntry.FuncName = func.Name = FuncName.Text;
            if (ArgUnknown.IsChecked == true)
            {
                func.ArgCount  = -1;
                func.Arguments = null;
            }
            else
            {
                func.ArgCount  = ArgListView.Items.Count;
                func.Arguments = new List <Variable>();

                foreach (ListViewArgument a in _ArgCollection)
                {
                    func.Arguments.Add(new Variable(a.Name, a.TypeClass));
                }
            }

            ComboBoxItem typeItem = RetType.SelectedItem as ComboBoxItem;
            String       type     = typeItem.Content as String;

            CType.TypeKind kind = CType.TypeKind.ValueType;
            if (RetPointer.SelectedIndex == 1)
            {
                kind = CType.TypeKind.Pointer;
            }

            func.Returns = new CType(kind, type);

            Close();
        }
Example #2
0
        private void Button_Click_4(object sender, RoutedEventArgs e)
        {
            if (NewArgName.Text.Length < 1)
            {
                MessageBox.Show("Choose a name for the parameter!");
                return;
            }

            ComboBoxItem typeItem = NewArgType.SelectedItem as ComboBoxItem;
            String       type     = typeItem.Content as String;

            if (type == "void" && NewArgPointer.SelectedIndex != 1)
            {
                MessageBox.Show("A void argument must be a pointer!");
                return;
            }

            CType.TypeKind kind = CType.TypeKind.ValueType;
            if (type == "_unknown_")
            {
                if (NewArgPointer.SelectedIndex == 1)
                {
                    kind = CType.TypeKind.UnknownPointer;
                }
                else
                {
                    kind = CType.TypeKind.Unknown;
                }
            }
            else if (NewArgPointer.SelectedIndex == 1)
            {
                kind = CType.TypeKind.Pointer;
            }

            String name = NewArgName.Text.Trim();

            if (!Regex.IsMatch(name, @"^[a-zA-Z_][a-zA-Z0-9_]*$"))
            {
                MessageBox.Show("A parameter must be made of only letters, digits and underscores!");
                return;
            }

            foreach (ListViewArgument a in _ArgCollection)
            {
                if (a.Name == name)
                {
                    MessageBox.Show("Parameter name collision!");
                    return;
                }
            }

            ListViewArgument arg = new ListViewArgument(NewArgName.Text, new CType(kind, type));

            _ArgCollection.Add(arg);
        }