Bytecodes de type XML WSDAPI

Ces bytecodes sont utilisés par WSDAPI pour analyser et générer du code XML à l’aide de tables de bytecode qui décrivent des types complexes.

La table bytecode d’un type exprime à la fois les représentations binaires (en mémoire) et XML (en réseau) du type. Une table de bytecode se compose d’une liste d’opérations terminées par une opération spéciale, à savoir OpEndOfTable . Une opération se compose d’un code d’opération d’un octet suivi de zéro, un ou plusieurs octets de données d’arguments.

Codes Description
OpNone Correspond à Nothing.
OpEndOfTable Indique la fin d’une table de bytecode.
OpBeginElement (nom) Correspond à un jeton de début d’élément avec le nom indiqué. Le nom s’affiche dans la table sous forme codée sur 4 octets. OnBeginElement démarre une clause qui se termine par un OpEndElement correspondant. Zéro ou plusieurs clauses complètes doivent apparaître entre OpBeginElement et son OpEndElement correspondant.
OpBeginAnyElement Correspond à un jeton de début d’élément avec n’importe quel nom. OnBeginAnyElement démarre une clause qui se termine par un OpEndElement correspondant. Zéro ou plusieurs clauses complètes doivent apparaître entre OpBeginAnyElement et son OpEndElement correspondant.
OpEndElement Termine une clause démarrée avec OpBeginElement ou OpBeginAnyElement.
OpElement (nom) Correspond à un élément entier avec le nom indiqué. Le nom s’affiche dans la table sous forme codée sur 4 octets.
OpAnyElement Correspond à un élément entier avec n’importe quel nom.
OpAnyElements Représente n’importe quel nombre d’éléments avec des noms quelconques.
OpAnyText Correspond à un jeton de texte.
OpAttribute (nom) Correspond au jeton d’étiquette d’un attribut avec le nom indiqué. OpAttribute démarre une clause qui comprend la clause suivante dans la table. La clause suivante est utilisée pour faire correspondre la partie valeur de l’attribut. Les clauses OpAttribute apparaissent toujours après les opérations OpBeginElement ou OpBeginAnyElement ou après une autre clause OpAttribute.
OpBeginChoice OpBeginChoice démarre une clause qui se termine par un OpEndChoice correspondant. Zéro ou plusieurs clauses complètes doivent apparaître entre OpBeginChoice et son OpEndChoice correspondant. La clause externe correspond aux jetons correspondants à l’une des clauses internes. Toutes les clauses internes doivent commencer par OpBeginElement, à ceci près que la dernière peut être OpAnything. Cette construction correspond à la particule de choix XSD.
OpEndChoice Termine une clause démarrée avec OpBeginChoice.
OpBeginSequence OpBeginSequence démarre une clause qui se termine par un OpEndSequence correspondant. Zéro ou plusieurs clauses complètes doivent apparaître entre OpBeginSequence et OpEndSequence. La clause externe correspond aux jetons correspondants à toutes les clauses internes dans l’ordre. Cette construction correspond à la particule de séquence XSD.
OpEndSequence Termine une clause démarrée avec OpBeginSequence.
OpBeginAll OpBeginAll démarre une clause qui se termine par un OpEndAll correspondant. Zéro ou plusieurs clauses complètes doivent apparaître entre OpBeginAll et OpEndAll. La clause externe correspond aux jetons correspondant aux clauses internes dans n’importe quelle séquence. Les opérateurs occurrences associés à chaque clause interne indiquent le nombre de fois que les jetons de chaque clause peuvent se produire. La valeur par défaut est une fois. Plusieurs occurrences d’une clause spécifiée peuvent être mélangées avec des occurrences d’autres clauses internes. Toutes les clauses internes doivent commencer par OpBeginElement, à ceci près que la dernière peut être OpAnything. Cette construction correspond à la particule All de XSD.
OpEndAll Termine une clause démarrée avec OpBeginAll.
OpAnything Correspond à n’importe quel nombre d’éléments et de jetons de texte.
OpAnyNumber Indique que la clause suivante peut apparaître un nombre quelconque de fois. OpAnyNumber démarre une clause qui se termine à la fin de la clause suivante.
OpOneOrMore Indique que la clause suivante peut apparaître une ou plusieurs fois. OpOneOrMore démarre une clause qui se termine à la fin de la clause suivante.
OpOptional Indique que la clause suivante peut se produire zéro ou une fois. OpOptional démarre une clause qui se termine à la fin de la clause suivante.
OpFormatInt8 (type, champ) Correspond à un entier signé 8 bits dans un jeton de texte. Un argument de décalage de 4 octets indique le décalage de la représentation binaire dans le contexte binaire actuel. La macro OpFormatInt8 calcule l’offset du champ indiqué dans le type indiqué et fournit cet offset comme argument.
OpFormatInt16 (type, champ) Correspond à un entier signé 16 bits. Un argument de décalage de 4 octets indique le décalage de la représentation binaire dans le contexte binaire actuel. La macro OpFormatInt16 calcule l’offset du champ indiqué dans le type indiqué et fournit cet offset comme argument.
OpFormatInt32 (type, champ) Correspond à un entier signé 32 bits dans un jeton de texte. Un argument de décalage de 4 octets indique le décalage de la représentation binaire dans le contexte binaire actuel. La macro OpFormatInt32 calcule l’offset du champ indiqué dans le type indiqué et fournit cet offset comme argument.
OpFormatInt64 (type, champ) Correspond à un entier signé 64 bits dans un jeton de texte. Un argument de décalage de 4 octets indique le décalage de la représentation binaire dans le contexte binaire actuel. La macro OpFormatInt64 calcule l’offset du champ indiqué dans le type indiqué et fournit cet offset comme argument.
OpFormatUInt8 (type, champ) Correspond à un entier non signé 8 bits dans un jeton de texte. Un argument de décalage de 4 octets indique le décalage de la représentation binaire dans le contexte binaire actuel. La macro OpFormatUInt8 calcule l’offset du champ indiqué dans le type indiqué et fournit cet offset comme argument.
OpFormatUInt16 (type, champ) Correspond à un entier non signé 16 bits dans un jeton de texte. Un argument de décalage de 4 octets indique le décalage de la représentation binaire dans le contexte binaire actuel. La macro OpFormatUInt16 calcule l’offset du champ indiqué dans le type indiqué et fournit cet offset comme argument.
OpFormatUInt32 (type, champ) Correspond à un entier non signé 32 bits dans un jeton de texte. Un argument de décalage de 4 octets indique le décalage de la représentation binaire dans le contexte binaire actuel. La macro OpFormatUInt32 calcule l’offset du champ indiqué dans le type indiqué et fournit cet offset comme argument.
OpFormatUInt64 (type, champ) Correspond à un entier non signé 64 bits dans un jeton de texte. Un argument de décalage de 4 octets indique le décalage de la représentation binaire dans le contexte binaire actuel. La macro OpFormatUInt64 calcule l’offset du champ indiqué dans le type indiqué et fournit cet offset comme argument.
OpFormatUnicodeString (type, champ) Correspond à une chaîne qui se compose de la valeur entière d’un jeton de texte. Un argument de décalage de 4 octets indique le décalage où un pointeur vers la chaîne apparaît dans le contexte binaire actuel. La macro OpFormatUnicodeString calcule l’offset du champ indiqué dans le type indiqué et fournit cet offset comme argument.
OpFormatDom (type, champ) Indique que toutes les données XML correspondant à la clause suivante sont représentées sous forme binaire sous forme de modèle DOM (une liste de _ structures de nœud WSDXML). OpFormatDom démarre une clause qui se termine à la fin de la clause suivante. Un argument de décalage de 4 octets indique le décalage où un pointeur vers le premier _ nœud WSDXML apparaît dans le contexte binaire actuel. La macro OpFormatDom calcule l’offset du champ indiqué dans le type indiqué et fournit cet offset comme argument.
OpFormatStruct (structType, type, champ) Indique que le contexte binaire pour la clause suivante est une structure référencée par le contexte binaire actuel. OpFormatStruct démarre une clause qui se termine à la fin de la clause suivante. Le premier des arguments de 2 4 octets indique la taille de la structure. Le deuxième argument indique l’offset où un pointeur vers la structure apparaît dans le contexte binaire actuel. La macro OpFormatStruct calcule la taille du type de structure indiqué (structType) et fournit la taille comme premier argument. La macro calcule l’offset du champ indiqué dans le type indiqué et fournit cet offset comme deuxième argument.
OpFormatUri (type, champ) Correspond à un URI dans un jeton de texte. Un argument de décalage de 4 octets indique le décalage où un pointeur vers la chaîne d’URI apparaît dans le contexte binaire actuel. La macro OpFormatUri calcule l’offset du champ indiqué dans le type indiqué et fournit cet offset comme argument.
OpFormatUuidUri (type, champ) Correspond à un URI de protocole UUID dans un jeton de texte. Un argument de décalage de 4 octets indique le décalage où l’URI dans le format de la structure GUID s’affiche dans le contexte binaire actuel. La macro OpFormatUuidUri calcule l’offset du champ indiqué dans le type indiqué et fournit cet offset comme argument.
OpFormatName (type, champ) Correspond à un nom qualifié dans un jeton de texte. Un argument de décalage de 4 octets indique le décalage où un pointeur vers le nom qualifié ( _ structure de nom WSDXML) apparaît dans le contexte binaire actuel. La macro OpFormatName calcule l’offset du champ indiqué dans le type indiqué et fournit cet offset comme argument.
OpFormatListInsertTail (nodeType, type, champ) Indique que les contextes binaires pour toutes les occurrences de la clause suivante sont des structures dans une liste à liaison unique référencée par le contexte binaire actuel. OpFormatListInsertTail démarre une clause qui se termine à la fin de la clause suivante. Le premier des arguments de 2 4 octets indique la taille des structures. Le deuxième argument indique l’offset où un pointeur vers la structure apparaît dans le contexte binaire actuel. Le pointeur’Next’qui lie les structures dans une liste est toujours le premier champ dans les structures. La macro OpFormatListInsertTail calcule la taille du type de structure indiqué (nodeType) et fournit la taille comme premier argument. La macro calcule l’offset du champ indiqué dans le type indiqué et fournit cet offset comme deuxième argument.
OpFormatType (typetable, type, champ) Correspond aux jetons correspondant à la table de type indiquée et indique que le contexte binaire pour cette table est incorporé dans le contexte binaire actuel à un offset indiqué. Le premier des arguments de 2 4 octets correspond à la référence encodée à la table de type. Le deuxième argument est l’offset. La macro OpFormatType calcule l’offset du champ indiqué dans le type indiqué et fournit cet offset comme argument.
OpFormatDynamicType (nom, type, champ) Correspond aux jetons correspondant à une table de types obtenue dynamiquement à l’aide du nom indiqué et indique que le contexte binaire pour cette table est incorporé dans le contexte binaire actuel à un offset indiqué. Le premier argument de 2 4 octets est le nom qui identifie la table de type. En règle générale, ce nom est spécifié sous la forme d’une chaîne entre guillemets simple, telle que « corps », qui produit une valeur de 4 octets. Le deuxième argument est l’offset. La macro OpFormatDynamicType calcule l’offset du champ indiqué dans le type indiqué et fournit cet offset comme argument.
OpFormatLookupType (urifield, type, champ) Met en correspondance les jetons correspondant à la table de type identifiée par l’URI à un offset indiqué dans le contexte binaire actuel et indique que le contexte binaire pour cette table est incorporé dans le contexte binaire actuel à un offset indiqué. Le premier des arguments de 2 4 octets est le décalage de l’URI de type dans le contexte binaire actuel. Le deuxième argument est l’offset du nouveau contexte binaire. La macro OpFormatLookupType calcule l’offset du champ indiqué dans le type indiqué et fournit cet offset comme argument.
OpProcess (type, champ) Marque le champ référencé comme nécessitant un traitement supplémentaire pendant les phases de génération et d’analyse. Il est utilisé pour les champs complexes qui ne peuvent pas être traités automatiquement.