Example #1
0
        /// <summary>
        /// Builds a tuple with the items set to the given tuple elements.
        /// The tuple represents a value of user defined type if a name is specified.
        /// Registers the value with the scope manager, unless registerWithScopeManager is set to false.
        /// Increases the reference count for the tuple elements.
        /// </summary>
        /// <param name="typeName">The name of the user defined typed that the tuple represents</param>
        /// <param name="registerWithScopeManager">Whether or not to register the built tuple with the scope manager</param>
        /// <param name="tupleElements">The tuple elements</param>
        private TupleValue CreateTuple(UserDefinedType?typeName, bool registerWithScopeManager, params IValue[] tupleElements)
        {
            var        elementTypes = tupleElements.Select(v => v.QSharpType).ToImmutableArray();
            TupleValue tuple        = new TupleValue(typeName, elementTypes, this.sharedState, registerWithScopeManager);

            PointerValue[] itemPointers = tuple.GetTupleElementPointers();

            for (var i = 0; i < itemPointers.Length; ++i)
            {
                itemPointers[i].StoreValue(tupleElements[i]);
                this.sharedState.ScopeMgr.IncreaseReferenceCount(tupleElements[i]);
            }

            return(tuple);
        }
Example #2
0
        /// <summary>
        /// Builds a tuple with the items set to the given tuple elements.
        /// Registers the value with the scope manager, unless registerWithScopeManager is set to false.
        /// </summary>
        /// <param name="tupleElements">The tuple elements</param>
        internal TupleValue CreateTuple(ImmutableArray <TypedExpression> tupleElements, bool registerWithScopeManager = true)
        {
            var        elementTypes = tupleElements.Select(v => v.ResolvedType).ToImmutableArray();
            TupleValue tuple        = new TupleValue(null, elementTypes, this.sharedState, registerWithScopeManager);

            PointerValue[] itemPointers = tuple.GetTupleElementPointers();

            var elements = tupleElements.Select(this.sharedState.BuildSubitem).ToArray();

            for (var i = 0; i < itemPointers.Length; ++i)
            {
                itemPointers[i].StoreValue(elements[i]);
            }

            return(tuple);
        }