Skip to main content

Keywords: Operators

char

char returns the number of cells required to hold the given number of characters in a packed string. I.e. the number of 4-byte cells required to hold a given number of bytes. For example:

4 char

Returns 1.

3 char

Returns 1 (you can't have 3/4 of a variable).

256 char

Returns 64 (256 divided by 4).

This is generally used in variable declarations.

new
someVar[40 char];

Will make an array 10 cells big.

For more information on packed strings read pawn-lang.pdf.

defined

Checks if a symbol exists. Generally used in #if statements:

new
someVar = 5;
#if defined someVar
printf("%d", someVar);
#else
#error The variable 'someVar' isn't defined
#endif

Most commonly it's used to check if a define is defined and generate code accordingly:

#define FILTERSCRIPT

#if defined FILTERSCRIPT

public OnFilterScriptInit()
{
return 1;
}

#else

public OnGameModeInit()
{
return 1;
}

#endif

sizeof

Returns the size in ELEMENTS of an array:

new
someVar[10];
printf("%d", sizeof (someVar));

Output:

10

And:

new
someVar[2][10];
printf("%d %d", sizeof (someVar), sizeof (someVar[]));

Gives:

2 10

state

This again is related to the PAWN autonoma code and thus not covered here.

tagof

This returns a number representing the tag of a variable:

new
someVar,
Float:someFloat;
printf("%d %d", tagof (someVar), tagof (someFloat));

Gives:

-./,),(-*,( -1073741820

Which is a slight bug but basically means:

0x80000000 0xC0000004

To check, for example, if a variable is a float (with the tag 'Float:'):

new Float: fValue = 6.9;

new tag = tagof (fValue);

if (tag == tagof (Float:))
{
print("float");
}
else
{
print("not a float");
}