예제 #1
0
        private string GetEventTemplateName(CompoundVariable _variable)
        {
            CompoundType eventType = CompoundUtility.GetEventType(_variable);

            bool multiDelegate = CompoundUtility.IsEventMultiDelegate(eventType);
            bool request       = _variable.Name.ToLowerInvariant().StartsWith("request");

            return(string.Format("{0}{1}{2}.txt", multiDelegate ? "MultiDelegate" : "Delegate", request ? "Request" : "Event", eventType.TemplateTypes.Count));
        }
예제 #2
0
        private void AddClassData(Compound _compound, TemplateInfo _info, ClassInfo _classInfo, FileData _outputFile)
        {
            List <CompoundFunction> funtions = new List <CompoundFunction>();
            List <Pair <CompoundFunction, CompoundFunction> > properties = new List <Pair <CompoundFunction, CompoundFunction> >();
            List <CompoundVariable> variables = new List <CompoundVariable>();

            foreach (Compound child in _compound)
            {
                if (child is CompoundFunction)
                {
                    CompoundFunction func = (CompoundFunction)child;
                    if (GetAviableFunc(func))
                    {
                        if (
                            //func.Const &&
                            func.CompoundParamTypes.Count == 0 &&
                            func.CompoundType.TypeName != "void" &&
                            (func.GetProperty || func.IsProperty))
                        {
                            properties.Add(new Pair <CompoundFunction, CompoundFunction>(func, null));
                        }
                        else
                        {
                            funtions.Add(func);
                        }
                    }
                }
                else if (child is CompoundVariable)
                {
                    CompoundVariable variable = (CompoundVariable)child;
                    if (variable.Public &&
                        !variable.Static &&
                        !variable.Name.StartsWith("_") &&
                        CompoundUtility.IsVariableEvent(variable))
                    {
                        variables.Add(variable);
                    }
                }
            }

            // вытаскиваем сетеры для свойств из списка функций
            foreach (var func in properties)
            {
                func.Second = PopSetterFunc(func.First, funtions);
            }

            foreach (var func in properties)
            {
                AddClassProperty(func, _info, _classInfo, _outputFile);
            }

            foreach (var func in funtions)
            {
                AddClassFunction(func, _info, _classInfo, _outputFile);
            }

            foreach (var variable in variables)
            {
                AddClassEvent(variable, _info, _classInfo, _outputFile);
            }
        }