Exemplo n.º 1
0
        /// <summary>
        /// Immutable multiname object.
        /// </summary>
        /// <param name="kind">The kind of multiname</param>
        /// <param name="name">The multiname name</param>
        /// <param name="ns">Optional namespace, dependant on kind. See AVM2 spec</param>
        /// <param name="set">Optional namespace set, dependant on kind. See AVM2 spec</param>
        internal Multiname(MultinameKind kind, string name, Namespace ns, NamespaceSet set)
        {
            this.Kind = kind;
            this.Name = name;
            this.NS = ns;
            this.Set = set;

            /* Sanity checking... */

            switch (kind)
            {
                case MultinameKind.QName:
                case MultinameKind.QNameA:
                    if (ns == null)
                    {
                        throw new SWFModellerException(
                                SWFModellerError.Internal,
                                "A " + kind.ToString() + " requires a namespace");
                    }

                    break;

                case MultinameKind.RTQName:
                case MultinameKind.RTQNameA:
                    break;

                case MultinameKind.RTQNameL:
                case MultinameKind.RTQNameLA:
                    break;

                case MultinameKind.Multiname:
                case MultinameKind.MultinameA:
                    if (set == null)
                    {
                        throw new SWFModellerException(
                                SWFModellerError.Internal,
                                "A " + kind.ToString() + " requires a namespace set");
                    }

                    break;

                case MultinameKind.MultinameL:
                case MultinameKind.MultinameLA:
                    if (set == null)
                    {
                        throw new SWFModellerException(
                                SWFModellerError.Internal,
                                "A " + kind.ToString() + " requires a namespace set");
                    }

                    break;

                default:
                    break;
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Immutable multiname object.
        /// </summary>
        /// <param name="kind">The kind of multiname</param>
        /// <param name="name">The multiname name</param>
        /// <param name="ns">Optional namespace, dependant on kind. See AVM2 spec</param>
        /// <param name="set">Optional namespace set, dependant on kind. See AVM2 spec</param>
        internal Multiname(MultinameKind kind, string name, Namespace ns, NamespaceSet set)
        {
            this.Kind = kind;
            this.Name = name;
            this.NS   = ns;
            this.Set  = set;

            /* Sanity checking... */

            switch (kind)
            {
            case MultinameKind.QName:
            case MultinameKind.QNameA:
                if (ns == null)
                {
                    throw new SWFModellerException(
                              SWFModellerError.Internal,
                              "A " + kind.ToString() + " requires a namespace");
                }

                break;

            case MultinameKind.RTQName:
            case MultinameKind.RTQNameA:
                break;

            case MultinameKind.RTQNameL:
            case MultinameKind.RTQNameLA:
                break;

            case MultinameKind.Multiname:
            case MultinameKind.MultinameA:
                if (set == null)
                {
                    throw new SWFModellerException(
                              SWFModellerError.Internal,
                              "A " + kind.ToString() + " requires a namespace set");
                }

                break;

            case MultinameKind.MultinameL:
            case MultinameKind.MultinameLA:
                if (set == null)
                {
                    throw new SWFModellerException(
                              SWFModellerError.Internal,
                              "A " + kind.ToString() + " requires a namespace set");
                }

                break;

            default:
                break;
            }
        }