blob: 798542a0335accf631f1a80eaa2f32b8e4cac727 [file] [log] [blame]
Ting Xuce4b6452022-04-24 06:14:25 +00001# Copyright (c) 2022 Intel and/or its affiliates.
2# Licensed under the Apache License, Version 2.0 (the "License");
3# you may not use this file except in compliance with the License.
4# You may obtain a copy of the License at:
5#
6# http://www.apache.org/licenses/LICENSE-2.0
7#
8# Unless required by applicable law or agreed to in writing, software
9# distributed under the License is distributed on an "AS IS" BASIS,
10# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11# See the License for the specific language governing permissions and
12# limitations under the License.
13
14from NodeField import *
15from NodeAttribute import *
16import json
17
18
19class Node:
20 def __init__(self):
21 self.fields = []
22 self.attributes = []
23 self.attrsDict = {}
24 self.fieldDict = {}
25
26 def Create(jsonfile):
27 f = open(jsonfile, "r", encoding="utf-8")
28 token = json.load(f)
29
30 if token == None:
31 return None
32
33 if token["type"] != "node":
34 return None
35
36 node = Node()
37
38 name = token["name"]
39 if name == None:
40 return None
41
42 node.Name = name
43
44 if token["layout"] == None:
45 return None
46
47 for ft in token["layout"]:
48 field = NodeField.Create(ft)
49 if field == None:
50 return None
51 node.fields.append(field)
52 if not field.IsReserved:
53 node.fieldDict[field.Name] = field
54
55 if "attributes" in token and token["attributes"] != None:
56 for ft in token["attributes"]:
57 attr = NodeAttribute.Create(ft)
58 node.attrsDict[attr.Name] = attr
59 node.attributes.append(attr)
60
61 node.JSON = jsonfile
62 return node