Exemple #1
0
        private void readMembers(TFileType t)
        {
            string name    = "";
            bool   vStatic = false;
            bool   vFinal  = false;

            while (currentToken != null)
            {
                if (currentToken.token == ECodeToken.brBigBraceEnd)
                {
                    break;
                }
                TMember mem = readMember();
                if (mem != null)
                {
                    if (!mem.name.ToLower().StartsWith("webkit") && !mem.name.ToLower().StartsWith("onwebkit"))
                    {
                        if (mem is TMethod)
                        {
                            var met = mem as TMethod;
                            for (var i = 0; i < met.parameters.Count; i++)
                            {
                                if (met.parameters[i].isOptional())
                                {
                                    var newMem = new TMethod(t)
                                    {
                                        baseMethod = met.baseMethod, isPrivate = met.isPrivate, name = met.name, resultType = met.resultType
                                    };
                                    for (var i2 = 0; i2 < i; i2++)
                                    {
                                        newMem.parameters.Add(met.parameters[i2]);
                                    }
                                    t.members.addWithCheck(newMem);
                                }
                            }
                        }
                        t.members.addWithCheck(mem);
                    }
                }
                getNextToken();
            }
        }
Exemple #2
0
        private TMember readMember()
        {
            bool    vStatic    = false;
            bool    vConst     = false;
            bool    vFinal     = false;
            bool    vReadonly  = false;
            bool    vAttribute = false;
            TType   type       = null;
            string  name       = "";
            TMember mem        = null;
            var     attrList   = new TAttributeList();

            while (true)
            {
                switch (currentToken.token)
                {
                case ECodeToken.brSmallBraceBegin:
                    attrList = readAttributes();
                    break;

                case ECodeToken.kwStatic:
                    vStatic = true;
                    getNextToken();
                    break;

                case ECodeToken.kwConst:
                    vConst = true;
                    getNextToken();
                    break;

                case ECodeToken.kwAttribute:
                    vAttribute = true;
                    getNextToken();
                    break;

                case ECodeToken.kwReadonly:
                    vReadonly = true;
                    getNextToken();
                    break;

                //case ECodeToken.kwFinal:
                //  vFinal = true;
                //  break;
                case ECodeToken.ltString:
                    type = readType();
                    name = currentToken.value;

                    getNextToken();
                    if (currentToken.token == ECodeToken.brBraceBegin)
                    {
                        mem            = new TMethod(currentInterfaceType);
                        mem.name       = name;
                        mem.resultType = type;
                        mem.attributes = attrList;
                        readParameters((TMethod)mem);
                        checkGotoEndOfStatement();
                    }
                    else
                    {
                        if (vAttribute)
                        {
                            mem            = new TProperty(currentInterfaceType);
                            mem.name       = name;
                            mem.resultType = type;
                            mem.attributes = attrList;
                            var prop = (TProperty)mem;
                            prop.canWrite = !vReadonly;
                            checkGotoEndOfStatement();
                            return(mem);
                        }
                        else
                        {
                            mem            = new TField(currentInterfaceType);
                            mem.name       = name;
                            mem.resultType = type;
                            mem.attributes = attrList;
                            if (currentToken.token == ECodeToken.blEquals)
                            {
                                getNextToken();
                                string Value = currentToken.value;
                                getNextToken();
                                if (currentToken.token == ECodeToken.ltString)
                                {
                                    Value += currentToken.value;
                                    if (Value.ToLower() == "0xffffffff")
                                    {
                                        Value = "0xFFFFFFF";
                                    }
                                }
                                ((TField)mem).value = Value;
                            }
                            return(mem);
                        }
                    }
                    break;

                default:
                    getNextToken();
                    break;
                }
                if ((currentToken == null) || (currentToken.token == ECodeToken.syEndOfCommand))
                {
                    break;
                }
            }
            return(mem);
        }