object oFunction; string sFunctionId; string sChannelId; boolean bFirst = true; boolean bFirstSecond = true; Write("{"); Write('"Functions":['); foreach (sFunctionId, dom.GetObject(ID_FUNCTIONS).EnumUsedIDs()) { if (bFirst == false) { WriteLine(','); } else { bFirst = false; } oFunction = dom.GetObject(sFunctionId); Write("{"); Write('"ID":"' # oFunction.ID()); Write('","Name":"' # oFunction.Name()); Write('","TypeName":"' # oFunction.TypeName() # '_FUNCTIONS'); Write('", "EnumInfo": "'); WriteURL(oFunction.EnumInfo()); Write('", "Channels": ['); bFirstSecond = true; foreach(sChannelId, oFunction.EnumUsedIDs()) { if (bFirstSecond == false) { Write(','); } else { bFirstSecond = false; } Write('"'); Write(dom.GetObject(sChannelId).Address()); Write('"'); } Write(']}'); } Write(']}');