private void ParseGetPropertyParameters(string parameters, out List<APIParameter> objectParameters)
{
objectParameters = new List<APIParameter>();
if (parameters.Trim().Length == 0)
return;
if (parameters.Trim().ToLower() == "void")
return;
int parameterPosition = 0;
while (parameterPosition >= 0)
{
string definition = "";
int definitionEnd = parameters.IndexOf("]", parameterPosition) +1;
if (definitionEnd > 0)
{
int definitionLength = definitionEnd - parameterPosition;
definition = parameters.Substring(parameterPosition, definitionLength);
}
if (string.IsNullOrEmpty(definition))
{
definition = "[in]";
definitionEnd = parameterPosition-1;
}
int typeStart = definitionEnd + 1;
int typeEnd = parameters.IndexOf(" ", typeStart+1);
int typeLen = typeEnd - typeStart;
string type = parameters.Substring(typeStart, typeLen).Trim();
int nameStart = typeEnd + 1;
int nameEnd = parameters.IndexOf(",", nameStart);
int nameLength = nameEnd - nameStart;
if (nameLength <= 0)
nameLength = parameters.Length - nameStart;
string name = parameters.Substring(nameStart, nameLength);
type = RemoveIDLTokens(type);
name = RemoveIDLTokens(name);
APIParameter parameter = new APIParameter();
parameter.Type = type;
parameter.Name = name;
if (definition.StartsWith("[in"))
parameter.Input = true;
else if (definition.StartsWith("[out"))
parameter.Input = false;
else
throw new Exception("Unknown type");
objectParameters.Add(parameter);
parameterPosition = parameters.IndexOf("[", typeEnd);
if (parameterPosition < 0)
{
parameterPosition = parameters.IndexOf(",", typeEnd);
if (parameterPosition > 0)
{
parameterPosition++;
}
}
}
}