Append a string parameter to be passed to \fImain\fR.
.SH BUILTINS
The following builtin functions are available:
-.TP
+.fi
+
.RI "1) " void " print(" string... ") = " "#1" ;
+.in +8
Print the passed strings to stdout. At most 8 strings are allowed.
-.TP
+.in
+
.RI "2) " string " ftos(" float ") = " "#2" ;
+.in +8
Convert a float to a string.
-.TP
+.in
+
.RI "3) " entity " spawn() = " "#3" ;
+.in +8
Spawn an entity.
-.TP
+.in
+
.RI "4) " void " remove(" entity ") = " "#4" ;
+.in +8
Remove an entity.
-.TP
+.in
+
.RI "5) " string " vtos(" vector ") = " "#5" ;
+.in +8
Convert a vector to a string.
-.TP
+.in
+
.RI "6) " void " error(" string... ") = " "#6" ;
+.in +8
Print at most 8 strings to stdout and then exit with an error.
-.TP
+.in
+
.RI "7) " float " vlen(" vector ") = " "#7" ;
+.in +8
Get the length of a vector.
-.TP
+.in
+
.RI "8) " string " etos(" entity ") = " "#8" ;
+.in +8
Get the entity ID as string.
-.TP
+.in
+
.RI "9) " float " stof(" string ") = " "#9" ;
+.in +8
Convert a string to a float.
-.TP
+.in
+
.RI "10) " string " strcat(" string ", " string ") = " "#10" ;
+.in +8
Concatenate two strings, returning a tempstring.
+.in
+
+.RI "11) " float " strcmp (" string ", " string ") = " "#11" ;
+.fi
+.RI " " float " strncmp(" string ", " string ", " float ") = " "#11" ;
+.in +8
+Compare two strings. Returns the same as the corresponding C functions.
+.in
.SH BUGS
Please report bugs on <http://github.com/graphitemaster/gmqcc/issues>,
or see <http://graphitemaster.github.com/gmqcc> on how to contact us.
return 0;
}
+static int qc_strcmp(qc_program *prog)
+{
+ char *cstr1, *cstr2;
+ qcany *str1, *str2;
+ qcany out;
+
+ if (prog->argc != 2 && prog->argc != 3) {
+ printf("ERROR: invalid number of arguments for strcmp/strncmp: %i, expected 2 or 3\n",
+ prog->argc);
+ return -1;
+ }
+
+ str1 = GetArg(0);
+ str2 = GetArg(1);
+ cstr1 = prog_getstring(prog, str1->string);
+ cstr2 = prog_getstring(prog, str2->string);
+ if (prog->argc == 3)
+ out._float = strncmp(cstr1, cstr2, GetArg(2)->_float);
+ else
+ out._float = strcmp(cstr1, cstr2);
+ Return(out);
+ return 0;
+}
+
static prog_builtin qc_builtins[] = {
NULL,
- &qc_print, /* 1 */
- &qc_ftos, /* 2 */
- &qc_spawn, /* 3 */
- &qc_kill, /* 4 */
- &qc_vtos, /* 5 */
- &qc_error, /* 6 */
- &qc_vlen, /* 7 */
- &qc_etos, /* 8 */
- &qc_stof, /* 9 */
- &qc_strcat /* 10 */
+ &qc_print, /* 1 */
+ &qc_ftos, /* 2 */
+ &qc_spawn, /* 3 */
+ &qc_kill, /* 4 */
+ &qc_vtos, /* 5 */
+ &qc_error, /* 6 */
+ &qc_vlen, /* 7 */
+ &qc_etos, /* 8 */
+ &qc_stof, /* 9 */
+ &qc_strcat, /* 10 */
+ &qc_strcmp /* 11 */
};
static size_t qc_builtins_count = sizeof(qc_builtins) / sizeof(qc_builtins[0]);