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} |