コード例 #1
0
 /// <summary>
 /// Gets the short name.
 /// </summary>
 public override string GetName()
 {
     if (name == null)
     {
         if (valueType.IsPointer())
         {
             name = valueType.GetName() + " const";
         }
         else
         {
             name = "const " + valueType.GetName();
         }
     }
     return(name);
 }
コード例 #2
0
        /// <summary>
        /// Gets the short name.
        /// </summary>
        public override string GetName()
        {
            if (name == null)
            {
                StringBuilder builder = new StringBuilder();
                builder.Append(returnType.GetName());
                builder.Append("(");

                int numargs = arguments.Length;
                for (int i = 0; i < numargs; i++)
                {
                    if (i > 0)
                    {
                        builder.Append(", ");
                    }

                    if (IsVariable() && i + 1 == numargs)
                    {
                        builder.Append("params ");
                    }

                    IChelaType arg = arguments[i];
                    builder.Append(arg.GetName());
                }
                builder.Append(")");
                name = builder.ToString();
            }

            return(name);
        }
コード例 #3
0
ファイル: PointerType.cs プロジェクト: MilkTool/chela
 /// <summary>
 /// Gets the short name.
 /// </summary>
 public override string GetName()
 {
     if (name == null)
     {
         name = pointedType.GetName() + "*";
     }
     return(name);
 }
コード例 #4
0
ファイル: MatrixType.cs プロジェクト: MilkTool/chela
        /// <summary>
        /// Gets the matrix type short name.
        /// </summary>
        public override string GetName()
        {
            if (name == null)
            {
                name = primitiveType.GetName() + "*" + numrows + "x" + numcolumns;
            }

            return(name);
        }
コード例 #5
0
ファイル: VectorType.cs プロジェクト: MilkTool/chela
        /// <summary>
        /// Gets the short name.
        /// </summary>
        public override string GetName()
        {
            if (name == null)
            {
                name = primitiveType.GetName() + "*" + numcomponents;
            }

            return(name);
        }
コード例 #6
0
        public override AstNode Visit(UsingStatement node)
        {
            // Visit the using member.
            Expression member = node.GetMember();

            member.Accept(this);

            // Cast the pseudo-scope.
            PseudoScope scope = (PseudoScope)node.GetScope();

            // Get the member type.
            IChelaType memberType = member.GetNodeType();

            if (memberType.IsMetaType())
            {
                // Get the actual type.
                MetaType meta = (MetaType)memberType;
                memberType = meta.GetActualType();

                // Only structure relatives.
                if (memberType.IsStructure() || memberType.IsClass() || memberType.IsInterface())
                {
                    scope.AddAlias(memberType.GetName(), (ScopeMember)memberType);
                }
                else
                {
                    Error(node, "unexpected type.");
                }
            }
            else if (memberType.IsReference())
            {
                // Only static members supported.
                ScopeMember theMember     = (ScopeMember)member.GetNodeValue();
                MemberFlags instanceFlags = MemberFlags.InstanceMask & theMember.GetFlags();
                if (instanceFlags != MemberFlags.Static)
                {
                    Error(node, "unexpected member type.");
                }

                // Store the member.
                scope.AddAlias(theMember.GetName(), theMember);
            }
            else if (memberType.IsNamespace())
            {
                // Set the namespace chain.
                Namespace space = (Namespace)member.GetNodeValue();
                scope.SetChainNamespace(space);
            }
            else
            {
                Error(node, "unsupported object to use.");
            }

            base.Visit(node);

            return(node);
        }
コード例 #7
0
 /// <summary>
 /// Array type short name.
 /// </summary>
 public override string GetName()
 {
     if (name == null)
     {
         name = valueType.GetName() + "[" + dimensions + "]";
         if (readOnly)
         {
             name = "readonly " + name;
         }
     }
     return(name);
 }
コード例 #8
0
        /// <summary>
        /// Gets the short name.
        /// </summary>
        public override string GetName()
        {
            if (referencedType == null)
            {
                return("<null>&");
            }

            if (name == null)
            {
                switch (referenceFlow)
                {
                case ReferenceFlow.In:
                    name = "in ";
                    break;

                case ReferenceFlow.Out:
                    name = "out ";
                    break;

                case ReferenceFlow.InOut:
                default:
                    name = "";
                    break;
                }

                name += referencedType.GetName();
                if (streamReference)
                {
                    name += "$&";
                }
                else
                {
                    name += "&";
                }
            }
            return(name);
        }