Esempio n. 1
0
        internal bool TryGetClassTypeNameByIndex(int slot, out string name)
        {
            name = null;

            if (slot >= 0 && m_classNameMap != null)
            {
                name = m_classNameMap.GetString(slot);
                return(true);
            }
            return(false);
        }
Esempio n. 2
0
        internal unsafe bool TryGetCCWRuntimeClassName(int slot, out string ccwRuntimeClassName)
        {
            ccwRuntimeClassName = null;
            if (m_ccwTemplateDataNameMap == null)
            {
                return(false);
            }
            if (slot >= 0)
            {
                ccwRuntimeClassName = m_ccwTemplateDataNameMap.GetString(slot);
                return(true);
            }

            return(false);
        }
Esempio n. 3
0
        /// <summary>
        /// Get Struct WinRT Name to Compute GUID during runtime
        /// TODO: add a hashtable for McgStructData
        /// </summary>
        /// <param name="structTypeHandle">Struct type</param>
        /// <param name="structWinRTName">struct winrt name to compute GUID only</param>
        /// <returns>true, if the struct exists;</returns>
        internal bool TryGetStructWinRTName(RuntimeTypeHandle structTypeHandle, out string structWinRTName)
        {
            structWinRTName = null;
            if (m_unsafeStructDataNameMap == null || m_structMarshalData == null)
            {
                return(false);
            }

            for (int i = 0; i < m_structMarshalData.Length; i++)
            {
                if (structTypeHandle.Equals(m_structMarshalData[i].SafeStructType))
                {
                    structWinRTName = m_unsafeStructDataNameMap.GetString(i);
                    return(true);
                }
            }

            return(false);
        }
Esempio n. 4
0
        /// <summary>
        /// Try to get offset data according to McgStructMarshalData's FieldOffsetStartIndex/NumOfFields
        /// </summary>
        /// <param name="structMarshalData">The Struct Marshal Data</param>
        /// <param name="fieldName">Name of field</param>
        /// <param name="offset">offset in bytes</param>
        /// <returns>if the offset value exists, return true; else return false </returns>
        internal bool TryGetStructFieldOffset(McgStructMarshalData structMarshalData, string fieldName, out uint offset)
        {
            // Try to find its field in map
            if (m_unsafeStructFieldNameMap != null)
            {
                int start = structMarshalData.FieldOffsetStartIndex;
                int count = structMarshalData.NumOfFields;

                for (int i = start; i < start + count; i++)
                {
                    if (fieldName == m_unsafeStructFieldNameMap.GetString(i))
                    {
                        offset = m_unsafeStructOffsetData[i].Offset;
                        return(true);
                    }
                }
            }

            // Couldn't find its field
            offset = 0;
            return(false);
        }