Condividi tramite


Bytecode di tipo XML WSDAPI

Questi bytecode vengono usati da WSDAPI per analizzare e generare codice XML usando tabelle bytecode che descrivono tipi complessi.

La tabella bytecode per un tipo esprime sia le rappresentazioni binarie (in memoria) che XML (in transito) del tipo. Una tabella bytecode è costituita da un elenco di operazioni terminate da un'operazione speciale, ovvero OpEndOfTable. Un'operazione è costituita da un codice di operazione a un byte seguito da zero o più byte di dati dell'argomento.

Bytecode Descrizione
OpNone Non corrisponde a nulla.
OpEndOfTable Indica la fine di una tabella bytecode.
OpBeginElement (nome) Trova la corrispondenza di un token iniziale di un elemento con il nome indicato. Il nome viene visualizzato nella tabella in formato codificato a 4 byte. OnBeginElement avvia una clausola che termina con un OpEndElement corrispondente. Zero o più clausole complete devono essere visualizzate tra OpBeginElement e opEndElement corrispondente.
OpBeginAnyElement Trova la corrispondenza con un token iniziale di un elemento con qualsiasi nome. OnBeginAnyElement avvia una clausola che termina con un OpEndElement corrispondente. Zero o più clausole complete devono essere visualizzate tra OpBeginAnyElement e opEndElement corrispondente.
OpEndElement Termina una clausola avviata con OpBeginElement o OpBeginAnyElement.
OpElement (nome) Trova la corrispondenza di un intero elemento con il nome indicato. Il nome viene visualizzato nella tabella in formato codificato a 4 byte.
OpAnyElement Trova la corrispondenza di un intero elemento con qualsiasi nome.
OpAnyElements Trova la corrispondenza con qualsiasi numero di elementi con qualsiasi nome.
OpAnyText Corrisponde a un token di testo.
OpAttribute (nome) Trova la corrispondenza con il token di etichetta di un attributo con il nome indicato. OpAttribute avvia una clausola che include la clausola successiva nella tabella. La clausola successiva viene utilizzata per trovare la corrispondenza con la parte del valore dell'attributo. Le clausole OpAttribute vengono sempre visualizzate dopo le operazioni OpBeginElement o OpBeginAnyElement o dopo un'altra clausola OpAttribute.
OpBeginChoice OpBeginChoice avvia una clausola che termina con un OpEndChoice corrispondente. Zero o più clausole complete devono essere visualizzate tra OpBeginChoice e opEndChoice corrispondente. La clausola esterna corrisponde ai token corrispondenti a una delle clausole interne. Tutte le clausole interne devono iniziare con OpBeginElement, ad eccezione del fatto che l'ultimo può essere OpAnything. Questo costrutto corrisponde alla particella di scelta XSD.
OpEndChoice Termina una clausola avviata con OpBeginChoice.
OpBeginSequence OpBeginSequence avvia una clausola che termina con un oggetto OpEndSequence corrispondente. Zero o più clausole complete devono essere visualizzate tra OpBeginSequence e OpEndSequence. La clausola esterna corrisponde ai token corrispondenti a tutte le clausole interne in sequenza. Questo costrutto corrisponde alla particella della sequenza XSD.
OpEndSequence Termina una clausola avviata con OpBeginSequence.
OpBeginAll OpBeginAll avvia una clausola che termina con un oggetto OpEndAll corrispondente. Zero o più clausole complete devono essere visualizzate tra OpBeginAll e OpEndAll. La clausola esterna corrisponde ai token corrispondenti alle clausole interne in qualsiasi sequenza. Gli operatori di occorrenza relativi a ogni clausola interna indicano quante volte possono verificarsi i token per ogni clausola. Il valore predefinito è una sola volta. È possibile combinare più occorrenze di una clausola specificata con occorrenze di altre clausole interne. Tutte le clausole interne devono iniziare con OpBeginElement, ad eccezione del fatto che l'ultimo può essere OpAnything. Questo costrutto corrisponde alla particella XSD.
OpEndAll Termina una clausola avviata con OpBeginAll.
OpAnything Corrisponde a un numero qualsiasi di elementi e token di testo.
OpAnyNumber Indica che la clausola successiva può verificarsi un numero qualsiasi di volte. OpAnyNumber avvia una clausola che termina alla fine della clausola successiva.
OpOneOrMore Indica che la clausola successiva può verificarsi una o più volte. OpOneOrMore avvia una clausola che termina alla fine della clausola successiva.
OpOptional Indica che la clausola successiva può verificarsi zero o una volta. OpOptional avvia una clausola che termina alla fine della clausola successiva.
OpFormatInt8 (tipo,campo) Corrisponde a un intero con segno a 8 bit in un token di testo. Un argomento offset a 4 byte indica l'offset della rappresentazione binaria nel contesto binario corrente. La macro OpFormatInt8 calcola l'offset del campo indicato nel tipo indicato e fornisce tale offset come argomento.
OpFormatInt16 (tipo,campo) Corrisponde a un intero con segno a 16 bit. Un argomento offset a 4 byte indica l'offset della rappresentazione binaria nel contesto binario corrente. La macro OpFormatInt16 calcola l'offset del campo indicato nel tipo indicato e fornisce tale offset come argomento.
OpFormatInt32 (tipo,campo) Corrisponde a un intero con segno a 32 bit in un token di testo. Un argomento offset a 4 byte indica l'offset della rappresentazione binaria nel contesto binario corrente. La macro OpFormatInt32 calcola l'offset del campo indicato nel tipo indicato e fornisce tale offset come argomento.
OpFormatInt64 (tipo,campo) Corrisponde a un intero con segno a 64 bit in un token di testo. Un argomento offset a 4 byte indica l'offset della rappresentazione binaria nel contesto binario corrente. La macro OpFormatInt64 calcola l'offset del campo indicato nel tipo indicato e fornisce tale offset come argomento.
OpFormatUInt8 (tipo,campo) Corrisponde a un intero senza segno a 8 bit in un token di testo. Un argomento offset a 4 byte indica l'offset della rappresentazione binaria nel contesto binario corrente. La macro OpFormatUInt8 calcola l'offset del campo indicato nel tipo indicato e fornisce tale offset come argomento.
OpFormatUInt16 (tipo,campo) Corrisponde a un intero senza segno a 16 bit in un token di testo. Un argomento offset a 4 byte indica l'offset della rappresentazione binaria nel contesto binario corrente. La macro OpFormatUInt16 calcola l'offset del campo indicato nel tipo indicato e fornisce tale offset come argomento.
OpFormatUInt32 (tipo,campo) Corrisponde a un intero senza segno a 32 bit in un token di testo. Un argomento offset a 4 byte indica l'offset della rappresentazione binaria nel contesto binario corrente. La macro OpFormatUInt32 calcola l'offset del campo indicato nel tipo indicato e fornisce tale offset come argomento.
OpFormatUInt64 (tipo,campo) Corrisponde a un intero senza segno a 64 bit in un token di testo. Un argomento offset a 4 byte indica l'offset della rappresentazione binaria nel contesto binario corrente. La macro OpFormatUInt64 calcola l'offset del campo indicato nel tipo indicato e fornisce tale offset come argomento.
OpFormatUnicodeString (tipo,campo) Corrisponde a una stringa costituita dall'intero valore di un token di testo. Un argomento offset a 4 byte indica l'offset in cui un puntatore alla stringa viene visualizzato nel contesto binario corrente. La macro OpFormatUnicodeString calcola l'offset del campo indicato nel tipo indicato e fornisce tale offset come argomento.
OpFormatDom (tipo,campo) Indica che tutti i dati XML corrispondenti alla clausola successiva sono rappresentati in formato binario come DOM (un elenco di strutture WSDXML_NODE). OpFormatDom avvia una clausola che termina alla fine della clausola successiva. Un argomento offset a 4 byte indica l'offset in cui un puntatore al primo WSDXML_NODE viene visualizzato nel contesto binario corrente. La macro OpFormatDom calcola l'offset del campo indicato nel tipo indicato e fornisce tale offset come argomento.
OpFormatStruct (structType,type,field) Indica che il contesto binario per la clausola successiva è una struttura a cui fa riferimento il contesto binario corrente. OpFormatStruct avvia una clausola che termina alla fine della clausola successiva. Il primo di due argomenti a 4 byte indica le dimensioni della struttura. Il secondo argomento indica l'offset in cui viene visualizzato un puntatore alla struttura nel contesto binario corrente. La macro OpFormatStruct calcola le dimensioni del tipo di struttura indicato (structType) e fornisce le dimensioni come primo argomento. La macro calcola l'offset del campo indicato nel tipo indicato e fornisce tale offset come secondo argomento.
OpFormatUri (tipo,campo) Trova la corrispondenza di un URI in un token di testo. Un argomento offset a 4 byte indica l'offset in cui un puntatore alla stringa URI viene visualizzato nel contesto binario corrente. La macro OpFormatUri calcola l'offset del campo indicato nel tipo indicato e fornisce tale offset come argomento.
OpFormatUuidUri (tipo,campo) Corrisponde a un URI del protocollo UUID in un token di testo. Un argomento offset a 4 byte indica l'offset in cui l'URI nel formato struttura GUID viene visualizzato nel contesto binario corrente. La macro OpFormatUuidUri calcola l'offset del campo indicato nel tipo indicato e fornisce tale offset come argomento.
OpFormatName (tipo,campo) Trova la corrispondenza di un nome completo in un token di testo. Un argomento offset a 4 byte indica l'offset in cui un puntatore al nome completo (una struttura WSDXML_NAME) viene visualizzato nel contesto binario corrente. La macro OpFormatName calcola l'offset del campo indicato nel tipo indicato e fornisce tale offset come argomento.
OpFormatListInsertTail (nodeType,type,field) Indica che i contesti binari per tutte le occorrenze della clausola successiva sono strutture in un elenco collegato a singly a cui fa riferimento il contesto binario corrente. OpFormatListInsertTail avvia una clausola che termina alla fine della clausola successiva. Il primo di due argomenti a 4 byte indica le dimensioni delle strutture. Il secondo argomento indica l'offset in cui viene visualizzato un puntatore alla struttura nel contesto binario corrente. Il puntatore "successivo" che collega le strutture in un elenco è sempre il primo campo nelle strutture. La macro OpFormatListInsertTail calcola le dimensioni del tipo di struttura indicato (nodeType) e fornisce le dimensioni come primo argomento. La macro calcola l'offset del campo indicato nel tipo indicato e fornisce tale offset come secondo argomento.
OpFormatType (typetable,type,field) Corrisponde ai token corrispondenti alla tabella dei tipi indicata e indica che il contesto binario per tale tabella è incorporato nel contesto binario corrente in corrispondenza di un offset indicato. Il primo di due argomenti a 4 byte è il riferimento codificato alla tabella dei tipi. Il secondo argomento è l'offset. La macro OpFormatType calcola l'offset del campo indicato nel tipo indicato e fornisce tale offset come argomento.
OpFormatDynamicType (nome, tipo,campo) Corrisponde ai token corrispondenti a una tabella dei tipi ottenuta in modo dinamico usando il nome indicato e indica che il contesto binario per tale tabella è incorporato nel contesto binario corrente in corrispondenza di un offset indicato. Il primo di due argomenti a 4 byte è il nome che identifica la tabella dei tipi. In genere, questo nome viene specificato sotto forma di stringa tra virgolette singole, ad esempio "'body'", che produce un valore a 4 byte. Il secondo argomento è l'offset. La macro OpFormatDynamicType calcola l'offset del campo indicato nel tipo indicato e fornisce tale offset come argomento.
OpFormatLookupType (urifield,type,field) Corrisponde ai token corrispondenti alla tabella dei tipi identificata dall'URI in corrispondenza di un offset indicato nel contesto binario corrente e indica che il contesto binario per tale tabella è incorporato nel contesto binario corrente in corrispondenza di un offset indicato. Il primo di due argomenti a 4 byte è l'offset dell'URI di tipo nel contesto binario corrente. Il secondo argomento è l'offset per il nuovo contesto binario. La macro OpFormatLookupType calcola l'offset del campo indicato nel tipo indicato e fornisce tale offset come argomento.
OpProcess(type,field) Contrassegna il campo a cui si fa riferimento perché richiede un'elaborazione aggiuntiva durante le fasi di generazione e analisi. Viene utilizzato per campi complessi che non possono essere elaborati automaticamente.