/// <summary> /// Appends property info in the native type info loader function used to get the offsets / addresses of members /// </summary> private void AppendPropertyOffsetNativeTypeLoader(CSharpTextBuilder offsetsBuilder, string propertyName, UProperty property, string functionName) { string ownerAddressName = null; if (!string.IsNullOrEmpty(functionName)) { ownerAddressName = functionName + Settings.VarNames.FunctionAddress; } else { ownerAddressName = Settings.VarNames.ClassAddress; } if (RequiresNativePropertyField(property)) { // XXXX_PropertyAddress (addres of the property) // NativeReflection.GetPropertyRef(ref XXXX_PropertyAddress, classAddress, "propertyName"); offsetsBuilder.AppendLine(Names.NativeReflectionCached_GetPropertyRef + "(ref " + propertyName + Settings.VarNames.PropertyAddress + ", " + ownerAddressName + ", \"" + property.GetName() + "\");"); } // XXXX_Offset (offset of the property) offsetsBuilder.AppendLine(propertyName + Settings.VarNames.MemberOffset + " = " + Names.NativeReflectionCached_GetPropertyOffset + "(" + ownerAddressName + ", \"" + property.GetName() + "\");"); if (Settings.GenerateIsValidSafeguards) { string propertyClassName; if (!NativeReflection.TryGetPropertyClassName(property.PropertyType, out propertyClassName)) { propertyClassName = "UNKNOWN"; } // XXXX_IsValid = NativeReflection.ValidatePropertyClass(classAddress, "propertyName", Classes.UXXXXProperty); offsetsBuilder.AppendLine(propertyName + Settings.VarNames.IsValid + " = " + Names.NativeReflectionCached_ValidatePropertyClass + "(" + ownerAddressName + ", \"" + property.GetName() + "\", " + Names.Classes + "." + propertyClassName + ");"); } }