/*
* 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 101 2015-06-02 15:37:23Z coas-nagasima $
*/
using System;
using System.Collections.Generic;
using System.Text;
namespace ctrlui
{
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 string define;
///
/// タイプ
///
public string type;
///
/// クラスグループ
///
public JsonClassGroupInfo classGroup;
///
/// プロパティの配列
///
public JsonPropertyInfo[] properties;
public JsonClassInfo(dynamic p)
{
classCode = p.classCode;
description = p.description;
name = p.name;
define = p.define;
type = p.type;
classGroup = p.classGroup;
properties = p.properties;
}
}
public class JsonNodeInfo : JsonObjectInfo
{
public List objects;
public JsonNodeInfo(JsonClassInfo type, string identifer, string attribute)
: base(type, identifer)
{
this.attribute = attribute;
this.objects = new List();
}
}
public class JsonObjectInfo
{
public JsonClassInfo type;
public JsonNodeInfo parent;
public string identifer;
public byte instatceCode;
public string attribute;
public List properties;
public JsonObjectInfo(JsonClassInfo type, string identifer)
{
this.type = type;
this.identifer = identifer;
this.instatceCode = 1;
this.attribute = "device";
this.properties = new List();
}
public JsonPropertyInfo FindProperty(byte epc)
{
foreach (var item in this.properties) {
if (item.propertyCode == epc)
return item;
}
return null;
}
}
public class JsonFieldInfo
{
public string description;
public string valueDescription;
public string unitDescription;
public string initialValue;
public string type;
public string identifer;
public bool primitive;
public bool isArray;
public int arrayCount;
public int size;
public List fields;
}
public class JsonPropertyInfo : JsonFieldInfo
{
public JsonObjectInfo classInfo;
public byte propertyCode;
public List access;
public List required;
public JsonPropertyInfo()
{
}
public JsonPropertyInfo(dynamic p)
{
classInfo = p.classInfo;
propertyCode = p.propertyCode;
access = p.access;
required = p.required;
description = p.description;
valueDescription = p.valueDescription;
unitDescription = p.unitDescription;
initialValue = p.initialValue;
type = p.type;
identifer = p.identifer;
primitive = p.primitive;
isArray = p.isArray;
arrayCount = p.arrayCount;
size = p.size;
fields = p.fields;
}
}
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;
}
}