Make the NSXMLNode ivar a union.

Having the same ivar exposed as different types in different compilation
units is probably a bad idea in general and will break with the new ObjC
ABI, where we have link-time checks for this.  It would also confuse
reflection and any languages that use reflection for bridging in
exciting ways.
This commit is contained in:
David Chisnall 2018-03-20 17:44:16 +00:00
parent 146d823689
commit 9b7e3a8fff
6 changed files with 97 additions and 85 deletions

View file

@ -26,7 +26,6 @@
#if defined(HAVE_LIBXML)
#define GS_XMLNODETYPE xmlDtd
#define GSInternal NSXMLDTDInternal
#import "NSXMLPrivate.h"
@ -57,7 +56,7 @@ GS_PRIVATE_INTERNAL(NSXMLDTD)
- (NSXMLDTDNode*) attributeDeclarationForName: (NSString*)name
elementName: (NSString*)elementName
{
xmlDtdPtr theNode = internal->node;
xmlDtdPtr theNode = internal->node.dtd;
xmlNodePtr children = NULL;
const xmlChar *xmlName = XMLSTRING(name);
const xmlChar *xmlElementName = XMLSTRING(elementName);
@ -87,7 +86,7 @@ GS_PRIVATE_INTERNAL(NSXMLDTD)
- (NSXMLDTDNode*) elementDeclarationForName: (NSString*)name
{
xmlDtdPtr theNode = internal->node;
xmlDtdPtr theNode = internal->node.dtd;
xmlNodePtr children = NULL;
const xmlChar *xmlName = XMLSTRING(name);
@ -116,7 +115,7 @@ GS_PRIVATE_INTERNAL(NSXMLDTD)
- (NSXMLDTDNode*) entityDeclarationForName: (NSString*)name
{
//xmlGetEntityFromDtd
xmlDtdPtr theNode = internal->node;
xmlDtdPtr theNode = internal->node.dtd;
xmlNodePtr children = NULL;
const xmlChar *xmlName = XMLSTRING(name);
@ -241,7 +240,7 @@ GS_PRIVATE_INTERNAL(NSXMLDTD)
- (NSXMLDTDNode*) notationDeclarationForName: (NSString*)name
{
xmlDtdPtr theNode = internal->node;
xmlDtdPtr theNode = internal->node.dtd;
xmlNodePtr children = NULL;
const xmlChar *xmlName = XMLSTRING(name);
@ -267,7 +266,7 @@ GS_PRIVATE_INTERNAL(NSXMLDTD)
- (NSString*) publicID
{
xmlDtd *theNode = internal->node;
xmlDtd *theNode = internal->node.dtd;
return StringFromXMLStringPtr(theNode->ExternalID);
}
@ -306,21 +305,21 @@ GS_PRIVATE_INTERNAL(NSXMLDTD)
- (void) setPublicID: (NSString*)publicID
{
xmlDtd *theNode = internal->node;
xmlDtd *theNode = internal->node.dtd;
theNode->ExternalID = XMLStringCopy(publicID);
}
- (void) setSystemID: (NSString*)systemID
{
xmlDtd *theNode = internal->node;
xmlDtd *theNode = internal->node.dtd;
theNode->SystemID = XMLStringCopy(systemID);
}
- (NSString*) systemID
{
xmlDtd *theNode = internal->node;
xmlDtd *theNode = internal->node.dtd;
return StringFromXMLStringPtr(theNode->SystemID);
}