OpenersNotesSection(Spacer1)Details

MLTestUTF8HeadWithArgCount() fails if the current expression on the link is not a function with a symbol as a head, if the name of the symbol does not match s, or if the number of arguments for the function is not n.

MLTestUTF8HeadWithArgCount() stores the actual number of arguments to the function in n when the function returns.

MLTestUTF8HeadWithArgCount() returns 0 in the event of an error, and a nonzero value if the function succeeds.

Use (NonWLLink[MLError(), paclet:/ref/c/MLError]) to retrieve the error code if MLTestUTF8HeadWithArgCount() fails.

MLTestUTF8HeadWithArgCount() will reset the stream pointer to the expression on the link just prior to calling MLTestUTF8HeadWithArgCount() if the function fails. This operation behaves as if the programmer has called MLCreateMark(l); MLTestUTF8HeadWithArgCount(...); MLSeekToMark(...).

MLTestUTF8HeadWithArgCount() is declared in the MathLink header file (RefLink[mathlink.h, paclet:/ref/file/mathlink.h]).

OpenersPrimaryExamplesSection(Spacer1)Examples  (1)

OpenersExampleSection0(Spacer1)Basic Examples  (1)

#include "mathlink.h"

/* A function to test whether the next expression on the Link is Plus[a,b] */

void f(MLINK l)
{
	unsigned char symbol[4];
	int args = 2;
	const char *symbol;

	symbol[0] = 'P';
	symbol[1] = 'l';
	symbol[2] = 'u';
	symbol[3] = 's';

	if(! MLTestUTF8HeadWithArgCount(l, (const unsigned char *)symbol, 4, &args))
	{ /* Next expression is not Plus, or does not have two args */ }

	if(! MLGetSymbol(l, &symbol))
	{ /* Unable to read symbol */ }

	/* Check if symbol is 'a' */

	MLReleaseSymbol(l, symbol);

	if(! MLGetSymbol(l, &symbol))
	{ /* Unable to read symbol */ }

	/* Check if the symbol is 'b' */

	MLReleaseSymbol(l, symbol);
}

({{DocumentationFooterIconsRelatedFunction.png, ({{See Also}, {(NonWLLink[MLGetArgCount(), paclet:/ref/c/MLGetArgCount])  ▪  (NonWLLink[MLTestHead(), paclet:/ref/c/MLTestHead])  ▪  (NonWLLink[MLTestHeadWithArgCount(), paclet:/ref/c/MLTestHeadWithArgCount])  ▪  (NonWLLink[MLTestUCS2HeadWithArgCount(), paclet:/ref/c/MLTestUCS2HeadWithArgCount])  ▪  (NonWLLink[MLTestUTF16HeadWithArgCount(), paclet:/ref/c/MLTestUTF16HeadWithArgCount])  ▪  (NonWLLink[MLTestUTF32HeadWithArgCount(), paclet:/ref/c/MLTestUTF32HeadWithArgCount])}})}})