예제 #1
0
        internal IProtoEnum InitializeFromEnum(Phx.BDatabaseBase db)
        {
            IProtoEnum penum = null;

            if (Params.kGetProtoEnum != null)
            {
                penum = Params.kGetProtoEnum();
            }
            else if (db != null)
            {
                penum = Params.kGetProtoEnumFromDB(db);
            }

            if (penum != null)
            {
                if (mBits == null)
                {
                    mBits = new Collections.BitSet(penum.MemberCount);
                }
                else
                {
                    mBits.Clear();

                    if (mBits.Length != penum.MemberCount)
                    {
                        mBits.Length = penum.MemberCount;
                    }
                }

                InitializeDefaultValues(penum);
            }

            return(penum);
        }
예제 #2
0
        private void InitializeDefaultValues(IProtoEnum penum)
        {
            if (Params.kGetMemberDefaultValue == null)
            {
                return;
            }

            for (int x = 0; x < penum.MemberCount; x++)
            {
                bool bitDefault = Params.kGetMemberDefaultValue(x);
                if (bitDefault)
                {
                    mBits[x] = true;
                }
            }
        }
예제 #3
0
        internal IProtoEnum InitializeFromEnum(Engine.BDatabaseBase db)
        {
            IProtoEnum penum = null;

            if (Params.kGetProtoEnum != null)
            {
                penum = Params.kGetProtoEnum();
            }
            else if (db != null)
            {
                penum = Params.kGetProtoEnumFromDB(db);
            }

            if (penum != null)
            {
                mBits = new System.Collections.BitArray(penum.MemberCount);
            }

            return(penum);
        }
예제 #4
0
        public BTypeNamesWithCode(IProtoEnum CodeTypes)
        {
            Contract.Requires <ArgumentNullException>(CodeTypes != null);

            mCodeTypes = CodeTypes;
        }
예제 #5
0
        public ProtoEnumWithUndefinedImpl(IProtoEnum root)
        {
            Contract.Requires(root != null);

            mRoot = root;
        }