]> git.proxmox.com Git - mirror_edk2.git/blame - BaseTools/Source/C/Common/PcdValueCommon.h
BaseTools: add ASSERT checker for array buffer value assignment.
[mirror_edk2.git] / BaseTools / Source / C / Common / PcdValueCommon.h
CommitLineData
309e37a2
LG
1/** @file\r
2Header file for PcdValue structure definition.\r
3\r
4Copyright (c) 2017, Intel Corporation. All rights reserved.<BR>\r
5This program and the accompanying materials\r
6are licensed and made available under the terms and conditions of the BSD License\r
7which accompanies this distribution. The full text of the license may be found at\r
8http://opensource.org/licenses/bsd-license.php\r
9\r
10THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
11WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
12\r
13**/\r
14\r
15#ifndef _PCD_VALUE_COMMON_H\r
16#define _PCD_VALUE_COMMON_H\r
17\r
18#include <Common/UefiBaseTypes.h>\r
19#include <Common/UefiInternalFormRepresentation.h>\r
20\r
21#define __FIELD_SIZE(TYPE, Field) (sizeof((TYPE *)0)->Field)\r
22#define __ARRAY_ELEMENT_SIZE(TYPE, Field) (sizeof((TYPE *)0)->Field[0])\r
23#define __OFFSET_OF(TYPE, Field) ((UINT32) &(((TYPE *)0)->Field))\r
24#define __FLEXIBLE_SIZE(Size, TYPE, Field, MaxIndex) if (__FIELD_SIZE(TYPE, Field) == 0) Size = MAX((__OFFSET_OF(TYPE, Field) + __ARRAY_ELEMENT_SIZE(TYPE, Field) * (MaxIndex)), Size)\r
e451aaa6
Z
25#define __ARRAY_SIZE(Array) (sizeof(Array)/sizeof(Array[0]))\r
26\r
27#if defined(_MSC_EXTENSIONS)\r
28#define __STATIC_ASSERT static_assert\r
29#else\r
30#define __STATIC_ASSERT _Static_assert\r
31#endif\r
309e37a2
LG
32\r
33VOID\r
34PcdEntryPoint (\r
35 VOID\r
36 )\r
37/*++\r
38\r
39Routine Description:\r
40\r
41 Main function updates PCD values. It is auto generated by Build\r
42\r
43Arguments:\r
44\r
45 None\r
46\r
47Returns:\r
48 None\r
49--*/\r
50;\r
51\r
52int\r
53PcdValueMain (\r
54 int argc,\r
55 char *argv[]\r
56 )\r
57/*++\r
58\r
59Routine Description:\r
60\r
61 Main function updates PCD values.\r
62\r
63Arguments:\r
64\r
65 argc Number of command line parameters.\r
66 argv Array of pointers to parameter strings.\r
67\r
68Returns:\r
69 EXIT_SUCCESS\r
70--*/\r
71;\r
72\r
73VOID\r
74__PcdSet (\r
75 CHAR8 *SkuName OPTIONAL,\r
76 CHAR8 *DefaultValueName OPTIONAL,\r
77 CHAR8 *TokenSpaceGuidName,\r
78 CHAR8 *TokenName,\r
79 UINT64 Value\r
80 )\r
81/*++\r
82\r
83Routine Description:\r
84\r
85 Get PCD value\r
86\r
87Arguments:\r
88\r
89 SkuName SkuName String\r
90 DefaultValueName DefaultValueName String\r
91 TokenSpaceGuidName TokenSpaceGuidName String\r
92 TokenName TokenName String\r
93\r
94Returns:\r
95\r
96 PCD value\r
97--*/\r
98;\r
99\r
100VOID\r
101__PcdSet (\r
102 CHAR8 *SkuName OPTIONAL,\r
103 CHAR8 *DefaultValueName OPTIONAL,\r
104 CHAR8 *TokenSpaceGuidName,\r
105 CHAR8 *TokenName,\r
106 UINT64 Value\r
107 )\r
108/*++\r
109\r
110Routine Description:\r
111\r
112 Set PCD value\r
113\r
114Arguments:\r
115\r
116 SkuName SkuName String\r
117 DefaultValueName DefaultValueName String\r
118 TokenSpaceGuidName TokenSpaceGuidName String\r
119 TokenName TokenName String\r
120 Value PCD value to be set\r
121\r
122Returns:\r
123\r
124 None\r
125--*/\r
126;\r
127\r
128VOID *\r
129__PcdGetPtr (\r
130 CHAR8 *SkuName OPTIONAL,\r
131 CHAR8 *DefaultValueName OPTIONAL,\r
132 CHAR8 *TokenSpaceGuidName,\r
133 CHAR8 *TokenName,\r
134 UINT32 *Size\r
135 )\r
136/*++\r
137\r
138Routine Description:\r
139\r
140 Get PCD value buffer\r
141\r
142Arguments:\r
143\r
144 SkuName SkuName String\r
145 DefaultValueName DefaultValueName String\r
146 TokenSpaceGuidName TokenSpaceGuidName String\r
147 TokenName TokenName String\r
148 Size Size of PCD value buffer\r
149\r
150Returns:\r
151\r
152 PCD value buffer\r
153--*/\r
154;\r
155\r
156VOID\r
157__PcdSetPtr (\r
158 CHAR8 *SkuName OPTIONAL,\r
159 CHAR8 *DefaultValueName OPTIONAL,\r
160 CHAR8 *TokenSpaceGuidName,\r
161 CHAR8 *TokenName,\r
162 UINT32 Size,\r
163 UINT8 *Value\r
164 )\r
165/*++\r
166\r
167Routine Description:\r
168\r
169 Set PCD value buffer\r
170\r
171Arguments:\r
172\r
173 SkuName SkuName String\r
174 DefaultValueName DefaultValueName String\r
175 TokenSpaceGuidName TokenSpaceGuidName String\r
176 TokenName TokenName String\r
177 Size Size of PCD value\r
178 Value Pointer to the updated PCD value buffer\r
179\r
180Returns:\r
181\r
182 None\r
183--*/\r
184;\r
185\r
186#define PcdGet(A, B, C, D) __PcdGet(#A, #B, #C, #D)\r
187#define PcdSet(A, B, C, D, Value) __PcdSet(#A, #B, #C, #D, Value)\r
188#define PcdGetPtr(A, B, C, D, Size) __PcdGetPtr(#A, #B, #C, #D, Size)\r
189#define PcdSetPtr(A, B, C, D, Size, Value) __PcdSetPtr(#A, #B, #C, #D, Size, Value)\r
190\r
191#endif\r