]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/GenBuild/org/tianocore/build/toolchain/ToolChainMap.java
Add boot script dispatch opcode 2
[mirror_edk2.git] / Tools / Source / GenBuild / org / tianocore / build / toolchain / ToolChainMap.java
CommitLineData
a29c47e0 1/*++\r
2\r
3Copyright (c) 2006, Intel Corporation\r
4All rights reserved. This program and the accompanying materials\r
5are licensed and made available under the terms and conditions of the BSD License\r
6which accompanies this distribution. The full text of the license may be found at\r
7http://opensource.org/licenses/bsd-license.php\r
8\r
9THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
10WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
11\r
a29c47e0 12--*/\r
13\r
14package org.tianocore.build.toolchain;\r
15\r
16import java.util.HashMap;\r
17import java.util.Map;\r
18import java.util.Set;\r
19\r
a29c47e0 20public class ToolChainMap {\r
21\r
22 private int matchLevel = ToolChainKey.keyLength - 2;\r
23\r
24 private Map<ToolChainKey, String> map = null;\r
25\r
26 public ToolChainMap() {\r
a29c47e0 27 this.map = new HashMap<ToolChainKey, String>();\r
28 }\r
29\r
c773bec0 30 public String put(String key, String delimiter, String value) {\r
a29c47e0 31 ToolChainKey toolChainKey;\r
32\r
33 try {\r
34 toolChainKey = new ToolChainKey(key, delimiter);\r
35 } catch (Exception e) {\r
c773bec0 36 return null;\r
a29c47e0 37 }\r
38 return (String)map.put(toolChainKey, value);\r
39 }\r
40\r
c773bec0 41 public String put(String key, String value) {\r
a29c47e0 42 ToolChainKey toolChainKey;\r
43\r
44 try {\r
45 toolChainKey = new ToolChainKey(key);\r
46 } catch (Exception e) {\r
c773bec0 47 return null;\r
a29c47e0 48 }\r
49 return (String)map.put(toolChainKey, value);\r
50 }\r
51\r
c773bec0 52 public String put(String[] key, String value) {\r
a29c47e0 53 ToolChainKey toolChainKey;\r
54\r
55 try {\r
56 toolChainKey = new ToolChainKey(key);\r
57 } catch (Exception e) {\r
c773bec0 58 return null;\r
a29c47e0 59 }\r
60 return (String)map.put(toolChainKey, value);\r
61 }\r
62\r
63 public String put(ToolChainKey key, String value) {\r
64 return (String)map.put(key, value);\r
65 }\r
66\r
c773bec0 67 public String get(String key) {\r
a29c47e0 68 ToolChainKey toolChainKey;\r
69\r
70 try {\r
71 toolChainKey = new ToolChainKey(key);\r
72 } catch (Exception e) {\r
c773bec0 73 return null;\r
a29c47e0 74 }\r
75 return get(toolChainKey);\r
76 }\r
77\r
c773bec0 78 public String get(String key, String delimiter) {\r
a29c47e0 79 ToolChainKey toolChainKey;\r
80\r
81 try {\r
82 toolChainKey = new ToolChainKey(key, delimiter);\r
83 } catch (Exception e) {\r
c773bec0 84 return null;\r
a29c47e0 85 }\r
86 return get(toolChainKey);\r
87 }\r
88\r
c773bec0 89 public String get(String[] key) {\r
a29c47e0 90 ToolChainKey toolChainKey;\r
91\r
92 try {\r
93 toolChainKey = new ToolChainKey(key);\r
94 } catch (Exception e) {\r
c773bec0 95 return null;\r
a29c47e0 96 }\r
97 return get(toolChainKey);\r
98 }\r
99\r
c773bec0 100 public String get(ToolChainKey key) {\r
a29c47e0 101 String result = map.get(key);\r
102 if (result != null || map.containsKey(key)) {\r
103 return result;\r
104 }\r
105\r
106 String[] keySet = key.getKeySet();\r
107 ToolChainKey tmpKey;\r
108 try {\r
109 tmpKey = new ToolChainKey(keySet);\r
110 } catch (Exception e) {\r
c773bec0 111 return null;\r
a29c47e0 112 }\r
113\r
114 int level = matchLevel;\r
115 while (level >= 0) {\r
116 int tmpLevel = level;\r
117 while (tmpLevel >= level) {\r
118 String[] tmpKeySet = tmpKey.getKeySet();\r
119 try {\r
120 if (!tmpKeySet[tmpLevel].equals("*")) {\r
121 tmpKey.setKey("*", tmpLevel);\r
122 tmpLevel = matchLevel;\r
123 } else {\r
124 tmpKey.setKey(keySet[tmpLevel], tmpLevel);\r
125 --tmpLevel;\r
126 continue;\r
127 }\r
128 } catch (Exception e) {\r
c773bec0 129 return null;\r
a29c47e0 130 }\r
131\r
132 result = map.get(tmpKey);\r
133 if (result != null) {\r
134 map.put(key, result);\r
135 return result;\r
136 }\r
137 }\r
138 --level;\r
139 }\r
140\r
141 map.put(key, result);\r
142 return result;\r
143 }\r
144\r
145 public int size() {\r
146 return map.size();\r
147 }\r
148\r
149 public Set<ToolChainKey> keySet() {\r
150 return (Set<ToolChainKey>)map.keySet();\r
151 }\r
a29c47e0 152}\r
153\r