/* * TOPPERS ECHONET Lite Communication Middleware * * Copyright (C) 2015 Cores Co., Ltd. Japan * * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー * スコード中に含まれていること. * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 * の無保証規定を掲載すること. * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ * と. * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 * 作権表示,この利用条件および下記の無保証規定を掲載すること. * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに * 報告すること. * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを * 免責すること. * * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ * の責任を負わない. * * @(#) $Id: JsonData.cs 270 2017-02-09 04:03:47Z coas-nagasima $ */ using System; namespace WebMrbc { public class JsonClassGroupInfo { public byte classGroupCode; public string description; public string define; public JsonClassInfo[] classes; public JsonClassGroupInfo(dynamic p) { classGroupCode = p.classGroupCode; description = p.description; define = p.define; } } public class JsonClassInfo { public byte classCode; public string description; public string name; public JsonClassGroupInfo classGroup; public JsonPropertyInfo[] properties; public JsonClassInfo(dynamic p) { classCode = p.classCode; description = p.description; name = p.name; classGroup = p.classGroup; properties = p.properties; } } public class JsonNodeInfo : JsonObjectInfo { public JsonObjectInfo[] objects; public JsonNodeInfo(JsonClassInfo type, string identifier, string attribute) : base(type, identifier) { this.attribute = attribute; this.objects = new JsonObjectInfo[0]; } } public class JsonObjectInfo { public JsonClassInfo type; public JsonNodeInfo parent; public string identifier; public byte instanceCode; public string attribute; public JsonPropertyInfo[] properties; public JsonObjectInfo(JsonClassInfo type, string identifier) { this.type = type; this.identifier = identifier; this.instanceCode = 1; this.attribute = "device"; this.properties = new JsonPropertyInfo[0]; } public JsonPropertyInfo FindProperty(byte epc) { foreach (var item in this.properties) { if (item.propertyCode == epc) return item; } return null; } } public static class JsonObjectInfoExtention { public static JsonObjectInfo Clone(this JsonObjectInfo obj) { return new JsonObjectInfo(obj.type, obj.identifier) { parent = obj.parent, instanceCode = obj.instanceCode, attribute = obj.attribute, properties = (JsonPropertyInfo[])obj.properties.Clone() }; } public static void Copy(this JsonObjectInfo dst, JsonObjectInfo src) { dst.type = src.type; dst.identifier = src.identifier; dst.parent = src.parent; dst.instanceCode = src.instanceCode; dst.attribute = src.attribute; dst.properties = (JsonPropertyInfo[])src.properties.Clone(); } } public class JsonFieldInfo { public string description; public string valueDescription; public string unitDescription; public string initialValue; public string type; public string identifier; public bool primitive; public bool isArray; public int arrayCount; public int size; public JsonFieldInfo[] fields; public JsonFieldInfo() { } public JsonFieldInfo(dynamic f) { description = f.description; valueDescription = f.valueDescription; unitDescription = f.unitDescription; initialValue = f.initialValue; type = f.type; identifier = f.identifier; primitive = f.primitive; isArray = f.isArray; arrayCount = (int)f.arrayCount; size = (int)f.size; var list = new JsonFieldInfo[0]; foreach (var field in f.fields) { list.Push(new JsonFieldInfo(field)); } fields = list; } } public class JsonPropertyInfo : JsonFieldInfo { public JsonObjectInfo classInfo; public byte propertyCode; public string[] access; public string[] required; public JsonPropertyInfo() { } public JsonPropertyInfo(dynamic p) : base((object)p) { classInfo = p.classInfo; propertyCode = p.propertyCode; access = p.access; required = p.required; } } public class JsonSkeltonResult { public string macro; public string declare; public string predefine; public string types; public string funcs; public string instance; public string define; public string config; } }