prexpress.c (4b49587c3dd54aed8eb103d838a89ca79484a9b6) prexpress.c (6f1f1a6395c91c5a845727d7313921a6fe3d297b)
1/******************************************************************************
2 *
3 * Module Name: prexpress - Preprocessor #if expression support
4 *
5 *****************************************************************************/
6
7/******************************************************************************
8 *

--- 209 unchanged lines hidden (view full) ---

218 char *Token;
219 char *ReplaceString;
220 PR_DEFINE_INFO *DefineInfo;
221 ACPI_SIZE TokenOffset;
222 char *Next;
223 int OffsetAdjust;
224
225
1/******************************************************************************
2 *
3 * Module Name: prexpress - Preprocessor #if expression support
4 *
5 *****************************************************************************/
6
7/******************************************************************************
8 *

--- 209 unchanged lines hidden (view full) ---

218 char *Token;
219 char *ReplaceString;
220 PR_DEFINE_INFO *DefineInfo;
221 ACPI_SIZE TokenOffset;
222 char *Next;
223 int OffsetAdjust;
224
225
226 strcpy (Gbl_ExpressionTokenBuffer, Gbl_CurrentLineBuffer);
227 Token = PrGetNextToken (Gbl_ExpressionTokenBuffer, PR_EXPR_SEPARATORS, &Next);
226 strcpy (AslGbl_ExpressionTokenBuffer, AslGbl_CurrentLineBuffer);
227 Token = PrGetNextToken (AslGbl_ExpressionTokenBuffer, PR_EXPR_SEPARATORS, &Next);
228 OffsetAdjust = 0;
229
230 while (Token)
231 {
232 DefineInfo = PrMatchDefine (Token);
233 if (DefineInfo)
234 {
235 if (DefineInfo->Body)
236 {
237 /* This is a macro. TBD: Is this allowed? */
238
239 DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID
240 "Matched Macro: %s->%s\n",
228 OffsetAdjust = 0;
229
230 while (Token)
231 {
232 DefineInfo = PrMatchDefine (Token);
233 if (DefineInfo)
234 {
235 if (DefineInfo->Body)
236 {
237 /* This is a macro. TBD: Is this allowed? */
238
239 DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID
240 "Matched Macro: %s->%s\n",
241 Gbl_CurrentLineNumber, DefineInfo->Identifier,
241 AslGbl_CurrentLineNumber, DefineInfo->Identifier,
242 DefineInfo->Replacement);
243
242 DefineInfo->Replacement);
243
244 PrDoMacroInvocation (Gbl_ExpressionTokenBuffer, Token,
244 PrDoMacroInvocation (AslGbl_ExpressionTokenBuffer, Token,
245 DefineInfo, &Next);
246 }
247 else
248 {
249 ReplaceString = DefineInfo->Replacement;
250
251 /* Replace the name in the original line buffer */
252
245 DefineInfo, &Next);
246 }
247 else
248 {
249 ReplaceString = DefineInfo->Replacement;
250
251 /* Replace the name in the original line buffer */
252
253 TokenOffset = Token - Gbl_ExpressionTokenBuffer + OffsetAdjust;
253 TokenOffset = Token - AslGbl_ExpressionTokenBuffer + OffsetAdjust;
254 PrReplaceData (
254 PrReplaceData (
255 &Gbl_CurrentLineBuffer[TokenOffset], strlen (Token),
255 &AslGbl_CurrentLineBuffer[TokenOffset], strlen (Token),
256 ReplaceString, strlen (ReplaceString));
257
258 /* Adjust for length difference between old and new name length */
259
260 OffsetAdjust += strlen (ReplaceString) - strlen (Token);
261
262 DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID
263 "Matched #define within expression: %s->%s\n",
256 ReplaceString, strlen (ReplaceString));
257
258 /* Adjust for length difference between old and new name length */
259
260 OffsetAdjust += strlen (ReplaceString) - strlen (Token);
261
262 DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID
263 "Matched #define within expression: %s->%s\n",
264 Gbl_CurrentLineNumber, Token,
264 AslGbl_CurrentLineNumber, Token,
265 *ReplaceString ? ReplaceString : "(NULL STRING)");
266 }
267 }
268
269 Token = PrGetNextToken (NULL, PR_EXPR_SEPARATORS, &Next);
270 }
271
272 return (Line);

--- 16 unchanged lines hidden (view full) ---

289PrIsDefined (
290 char *Identifier)
291{
292 UINT64 Value;
293 PR_DEFINE_INFO *DefineInfo;
294
295
296 DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID
265 *ReplaceString ? ReplaceString : "(NULL STRING)");
266 }
267 }
268
269 Token = PrGetNextToken (NULL, PR_EXPR_SEPARATORS, &Next);
270 }
271
272 return (Line);

--- 16 unchanged lines hidden (view full) ---

289PrIsDefined (
290 char *Identifier)
291{
292 UINT64 Value;
293 PR_DEFINE_INFO *DefineInfo;
294
295
296 DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID
297 "**** Is defined?: %s\n", Gbl_CurrentLineNumber, Identifier);
297 "**** Is defined?: %s\n", AslGbl_CurrentLineNumber, Identifier);
298
299 Value = 0; /* Default is "Not defined" -- FALSE */
300
301 DefineInfo = PrMatchDefine (Identifier);
302 if (DefineInfo)
303 {
304 Value = ACPI_UINT64_MAX; /* TRUE */
305 }
306
307 DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID
308 "[#if defined %s] resolved to: %8.8X%8.8X\n",
298
299 Value = 0; /* Default is "Not defined" -- FALSE */
300
301 DefineInfo = PrMatchDefine (Identifier);
302 if (DefineInfo)
303 {
304 Value = ACPI_UINT64_MAX; /* TRUE */
305 }
306
307 DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID
308 "[#if defined %s] resolved to: %8.8X%8.8X\n",
309 Gbl_CurrentLineNumber, Identifier, ACPI_FORMAT_UINT64 (Value));
309 AslGbl_CurrentLineNumber, Identifier, ACPI_FORMAT_UINT64 (Value));
310
311 return (Value);
312}
313
314
315/******************************************************************************
316 *
317 * FUNCTION: PrResolveDefine

--- 10 unchanged lines hidden (view full) ---

328PrResolveDefine (
329 char *Identifier)
330{
331 UINT64 Value;
332 PR_DEFINE_INFO *DefineInfo;
333
334
335 DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID
310
311 return (Value);
312}
313
314
315/******************************************************************************
316 *
317 * FUNCTION: PrResolveDefine

--- 10 unchanged lines hidden (view full) ---

328PrResolveDefine (
329 char *Identifier)
330{
331 UINT64 Value;
332 PR_DEFINE_INFO *DefineInfo;
333
334
335 DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID
336 "**** Resolve #define: %s\n", Gbl_CurrentLineNumber, Identifier);
336 "**** Resolve #define: %s\n", AslGbl_CurrentLineNumber, Identifier);
337
338 Value = 0; /* Default is "Not defined" -- FALSE */
339
340 DefineInfo = PrMatchDefine (Identifier);
341 if (DefineInfo)
342 {
343 Value = ACPI_UINT64_MAX; /* TRUE */
344 }
345
346 DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID
347 "[#if defined %s] resolved to: %8.8X%8.8X\n",
337
338 Value = 0; /* Default is "Not defined" -- FALSE */
339
340 DefineInfo = PrMatchDefine (Identifier);
341 if (DefineInfo)
342 {
343 Value = ACPI_UINT64_MAX; /* TRUE */
344 }
345
346 DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID
347 "[#if defined %s] resolved to: %8.8X%8.8X\n",
348 Gbl_CurrentLineNumber, Identifier, ACPI_FORMAT_UINT64 (Value));
348 AslGbl_CurrentLineNumber, Identifier, ACPI_FORMAT_UINT64 (Value));
349
350 return (Value);
351}
352
353
354/******************************************************************************
355 *
356 * FUNCTION: PrResolveIntegerExpression

--- 14 unchanged lines hidden (view full) ---

371 char *Line,
372 UINT64 *ReturnValue)
373{
374 UINT64 Result;
375 char *ExpandedLine;
376
377
378 DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID
349
350 return (Value);
351}
352
353
354/******************************************************************************
355 *
356 * FUNCTION: PrResolveIntegerExpression

--- 14 unchanged lines hidden (view full) ---

371 char *Line,
372 UINT64 *ReturnValue)
373{
374 UINT64 Result;
375 char *ExpandedLine;
376
377
378 DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID
379 "**** Resolve #if: %s\n", Gbl_CurrentLineNumber, Line);
379 "**** Resolve #if: %s\n", AslGbl_CurrentLineNumber, Line);
380
381 /* Expand all macros within the expression first */
382
383 ExpandedLine = PrExpandMacros (Line);
384
385 /* Now we can evaluate the expression */
386
387 Result = PrEvaluateExpression (ExpandedLine);
388 DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID
389 "**** Expression Resolved to: %8.8X%8.8X\n",
380
381 /* Expand all macros within the expression first */
382
383 ExpandedLine = PrExpandMacros (Line);
384
385 /* Now we can evaluate the expression */
386
387 Result = PrEvaluateExpression (ExpandedLine);
388 DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID
389 "**** Expression Resolved to: %8.8X%8.8X\n",
390 Gbl_CurrentLineNumber, ACPI_FORMAT_UINT64 (Result));
390 AslGbl_CurrentLineNumber, ACPI_FORMAT_UINT64 (Result));
391
392 *ReturnValue = Result;
393 return (AE_OK);
394
395#if 0
396InvalidExpression:
397
398 ACPI_FREE (EvalBuffer);
399 PrError (ASL_ERROR, ASL_MSG_INVALID_EXPRESSION, 0);
400 return (AE_ERROR);
401
402
403NormalExit:
404
405 DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID
406 "**** Expression Resolved to: %8.8X%8.8X\n",
391
392 *ReturnValue = Result;
393 return (AE_OK);
394
395#if 0
396InvalidExpression:
397
398 ACPI_FREE (EvalBuffer);
399 PrError (ASL_ERROR, ASL_MSG_INVALID_EXPRESSION, 0);
400 return (AE_ERROR);
401
402
403NormalExit:
404
405 DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID
406 "**** Expression Resolved to: %8.8X%8.8X\n",
407 Gbl_CurrentLineNumber, ACPI_FORMAT_UINT64 (Value1));
407 AslGbl_CurrentLineNumber, ACPI_FORMAT_UINT64 (Value1));
408
409 *ReturnValue = Value1;
410 return (AE_OK);
411#endif
412}
408
409 *ReturnValue = Value1;
410 return (AE_OK);
411#endif
412}