public override void Process()

in SharpGen/Transform/EnumTransform.cs [82:141]


        public override void Process(CsEnum newEnum)
        {
            var cppEnum = (CppEnum) newEnum.CppElement;

            // Find Root Name of this enum
            // All enum items should start with the same root name and the root name should be at least 4 chars
            string rootName = cppEnum.Name;
            string rootNameFound = null;
            bool isRootNameFound = false;
            for (int i = rootName.Length; i >= 4 && !isRootNameFound; i--)
            {
                rootNameFound = rootName.Substring(0, i);

                isRootNameFound = true;
                foreach (var cppEnumItem in cppEnum.EnumItems)
                {
                    if (!cppEnumItem.Name.StartsWith(rootNameFound))
                    {
                        isRootNameFound = false;
                        break;
                    }
                }
            }
            if (isRootNameFound)
                rootName = rootNameFound;

            // Create enum items for enum
            foreach (var cppEnumItem in cppEnum.EnumItems)
            {
                var enumName = NamingRules.Rename(cppEnumItem, rootName);
                var enumValue = cppEnumItem.Value;

                var csharpEnumItem = new CsEnumItem(cppEnumItem, enumName, enumValue);

                newEnum.Add(csharpEnumItem);
            }

            var rule = cppEnum.Rule;

            // Add None if necessary
            const string noneElementName = "None";

            bool tryToAddNone;
            if (rule.EnumHasNone is { } addNone)
                tryToAddNone = addNone;
            else if (newEnum.IsFlag)
                tryToAddNone = newEnum.EnumItems.All(item => item.Name != noneElementName);
            else
                tryToAddNone = false;

            if (tryToAddNone)
            {
                var csharpEnumItem = new CsEnumItem(null, noneElementName, "0")
                {
                    CppElementName = noneElementName,
                    Description = "Synthetic NONE value"
                };
                newEnum.Add(csharpEnumItem);
            }
        }