- private Xex.Variable[] parse_args (Xex.Domain domain, Xex.Symbol[] args)
- {
- int nfixed = 0;
- int noptional = 0;
- int nrest = 0;
-
- if (args.Length > 0)
- {
- int i = 0;
- for (i = 0; i < args.Length; i++, nfixed++)
- if (args[i] == Qoptional || args[i] == Qrest)
- break;
- if (i < args.Length)
- {
- if (args[i] == Qoptional)
- {
- for (i++; i < args.Length; i++, noptional++)
- if (args[i] == Qrest)
- break;
- if (i < args.Length)
- nrest = 1;
- }
- }
- min_args = nfixed;
- max_args = nfixed + noptional + nrest;
- this.args = new Variable[max_args];
- int j;
- for (i = j = 0; j < this.args.Length; i++)
- if (args[i] != Qoptional || args[i] != Qrest)
- this.args[j++] = domain.Defvar (args[i]);
- }
- else
- {
- min_args = max_args = 0;
- }
- with_var = false;
- }
-