Example #1
0
        protected override IParsedElement TryParseElement(List <string> lines, int index, out int end)
        {
            end = index + 1;
            var text = lines[index];
            var test = NormalizeType.Replace(text, string.Empty);

            if (IsBlockStart(lines, index, out index))
            {
                end = index;
                return(null);
            }

            if (!FieldRules.IsMatch(test))
            {
                return(null);
            }

            var parts = test.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);

            if (parts.Length < 2)
            {
                return(null);
            }

            var cppType = parts[0];

            if (NotTypeChar.IsMatch(cppType))
            {
                return(null);
            }

            var name = parts[1].Trim(' ', ';');

            if (NotNameChar.IsMatch(name))
            {
                return(null);
            }

            var coment = string.Empty;

            if (parts.Length > 2)
            {
                coment = string.Join(" ", parts.Skip(2)).TrimStart(' ', '/', '<');
            }

            var netType = cppType;

            netType = GetKnownTypeOrDefault(netType);

            var field = new ParsedField
            {
                Type    = netType,
                CppType = cppType,
                Name    = ToTitleCase(name),
                CppName = name,
                Comment = coment
            };

            return(field);
        }
Example #2
0
        protected IParsedElement TryParseEnum(List <string> lines, int index, out int end)
        {
            end = index + 1;
            var text  = lines[index].Trim();
            var parts = text.Split(new[] { ' ', ',' }, StringSplitOptions.RemoveEmptyEntries);

            if (parts.Length == 0)
            {
                return(null);
            }

            var name   = parts[0];
            var coment = string.Empty;

            if (parts.Length > 1)
            {
                coment = string.Join(" ", parts.Skip(2)).TrimStart(' ', '/', '<');
            }

            var field = new ParsedField
            {
                Name    = ToTitleCase(name),
                CppName = name,
                Comment = coment
            };

            return(field);
        }