private ListObject GetListObject(string listname, string ifcowlclass, List<string> values, string XSDType)
{
//Console.Out.WriteLine("started GetListObject run for list with number of elements: " + values.Count);
ListObject obj;
string encodedvalue = "";
for (int i=0; i < values.Count; i++)
{
if (XSDType != "###ENTITY###")
{
#if VERBOSE
Console.Out.WriteLine("GetListObject().GetURIObject()");
#endif
//URIObject uo = GetURIObject(ifcowlclass, values[i], values[i].GetType().Name);
URIObject uo = GetURIObject(ifcowlclass, values[i], XSDType);
values[i] = uo.URI;
encodedvalue += uo.URI;
}
else {
encodedvalue += values[i];
}
encodedvalue += "_";
}
//WARNING: _LIST_ could be in the other strings
//IfcLengthMeasure_List_0_0_0
//IfcRepresentation_List_#121_#145_#137
//encodedvalue = ifcowlclass + "_LIST_" + encodedvalue;
encodedvalue = listname + encodedvalue;
if (m_listObjects.ContainsKey(encodedvalue))
return (ListObject)m_listObjects[encodedvalue];
m_nextID++;
if (XSDType == "###ENTITY###")
{
#if VERBOSE
Console.Out.WriteLine("Creating GetListObject list with XSDType : " + ifcowlclass);
#endif
obj = new ListObject(listname + m_nextID, listname.Substring(0,listname.Length-1), ifcowlclass, values, ifcowlclass);
}
else
{
#if VERBOSE
//create the additional datatype value
Console.Out.WriteLine("Creating GetListObject list with XSDType : " + XSDType);
#endif
obj = new ListObject(listname + m_nextID, listname.Substring(0, listname.Length - 1), ifcowlclass, values, XSDType);
}
m_listObjects.Add(encodedvalue, obj);
//Console.Out.WriteLine("finished GetListObject run for list with number of elements: " + values.Count);
return obj;
}