Diese Funktion erstellt ein Standardsyntaxelement, das nicht an eine Syntaxbaumstruktur angehängt ist. Das Element gehört dem angegebenen Parser. Das Element ist insofern unvollständig, als keines seiner Attribute (wie Typ oder Name) festgelegt ist.
CciElement* cpiCreateElement(
int* Rückkkehrcode,
CciParser* Parser);
Falls erfolgreich, wird die Adresse des neuen Elementobjekts zurückgegeben. Andernfalls wird als Wert null (CCI_NULL_ADDR) zurückgegeben, und der Rückkehrcode gibt den Grund für den Fehler an.
Das folgende Beispiel stammt aus der Musterparserdatei BipSampPluginParser.c:
/* Zum Ende des Wertes gehen */
while (pc->iCurrentCharacter != quoteChar) {
advance( (PARSER_CONTEXT_ST *)context, parser );
}
/* Rufen Sie einen Zeiger zum Tagende ab */
endMarker = (char*)pc->iBuffer+(int)pc->iIndex;
/* Berechnen Sie die Größe des Tags */
markedSize = (size_t)endMarker-(int)startMarker;
/* Konvertieren Sie den Attributwert ins Brokerformat */
data = CciNString((char *)startMarker, markedSize, pc->iCcsid);
/* Erstellen Sie ein neues Namenswertelement für das Attribut */
newElement = cpiCreateElement(&rc, parser);
cpiSetElementType(&rc, newElement, CCI_ELEMENT_TYPE_NAME_VALUE);
cpiSetElementName(&rc, newElement, data);
if (pc->trace) {
const char * mbData = mbString(data, pc->iCcsid);
fprintf(pc->tracefile, "PLUGIN: Created new NAMEVALUE element;
object=0x%x type=0x%x name=",
newElement, CCI_ELEMENT_TYPE_NAME_VALUE);
fprintf(pc->tracefile, "%s\n", mbData);
fflush(pc->tracefile);
free((void *)mbData);
}
/* Geben Sie den in CciNString() erstellten Speicherplatz frei */
free((void *)data);