示例#1
0
        //------------------------------------------------------------
        // コンストラクタ。
        public FunctionSymbolNode(
            TypeSymbolNode aParent
            , BCObjectType aBCObjectType
            , MemberFunctionDecl aFunctionDecl
            )
        {
            // メンバ初期化
            mParent       = aParent;
            mBCObjectType = aBCObjectType;
            mFunctionDecl = aFunctionDecl;

            // TypeInfo生成
            {// 戻り値
                FunctionReturnValueDecl retValDecl = aFunctionDecl.ReturnValueDecl;
                mReturnTypeInfo = createTypeInfo(
                    retValDecl.TypePath
                    , retValDecl.IsConst
                    , false // isIn
                    , retValDecl.IsRef
                    );
            }
            {// 引数
                mArgTypeInfos = new List <ArgTypeInfo>();
                foreach (FunctionArgumentDecl argDecl in aFunctionDecl.ArgDeclList)
                {
                    mArgTypeInfos.Add(new ArgTypeInfo(argDecl.Ident, createTypeInfo(
                                                          argDecl.TypePath
                                                          , argDecl.IsConst
                                                          , argDecl.IsIn
                                                          , argDecl.IsRef
                                                          )));
                }
            }
        }
示例#2
0
        //------------------------------------------------------------
        // TypeNode展開。
        private void expandTypeNode()
        {
            // メモ:この時点で子ノードは0なので子ノード展開要求は出さない
            Assert.Check(mNodeList.Count() == 0);

            // バイトコードオブジェクト作成
            mBCObjectType = mBCModule.GenerateObjectType(this);

            // 自分自身
            foreach (SymbolDef symbol in mStaticTypeDef.SymbolDefList)
            {
                if (symbol.StaticTypeDef != null)
                {
                    // 重複チェック
                    checkIdentDuplication(symbol.StaticTypeDef.Ident);

                    // ノード作成
                    var newNode = new TypeSymbolNode(this, mBCModule, symbol.StaticTypeDef);

                    // 更に展開
                    newNode.SymbolExpand(SymbolExpandCmdKind.TypeNode);

                    // 追加
                    addNode(newNode);
                }
            }
        }
示例#3
0
        //------------------------------------------------------------
        // ユーザー定義型を追加する。
        public BCObjectType GenerateObjectType(TypeSymbolNode aTypeSymbolNode)
        {
            // 生成
            var objectType = new BCObjectType(this, aTypeSymbolNode);

            // 追加
            mObjectTypeList.Add(objectType);

            // 返す
            return(objectType);
        }
示例#4
0
 //------------------------------------------------------------
 // 追加。
 public void Add(BCObjectType aEntry)
 {
     mList.Add(aEntry);
 }