📄 ascase.c
字号:
SubBuffer++; } continue; } }// OBSOLETE CODE, all quoted strings now completely ignored.#if 0 /* Ignore format specification fields */ if (SubBuffer[0] == '%') { SubBuffer++; while ((isalnum (*SubBuffer)) || (*SubBuffer == '.')) { SubBuffer++; } continue; }#endif /* Ignore standard escape sequences (\n, \r, etc.) Not Hex or Octal escapes */ if (SubBuffer[0] == '\\') { SubBuffer += 2; continue; } /* * Ignore identifiers that already contain embedded underscores * These are typically C macros or defines (all upper case) * Note: there are some cases where identifiers have underscores * AcpiGbl_* for example. HasLowerCase flag handles these. */ if ((*SubBuffer == '_') && (!HasLowerCase) && (TokenStart)) { /* Check the rest of the identifier for any lower case letters */ SubString = SubBuffer; while ((isalnum (*SubString)) || (*SubString == '_')) { if (islower (*SubString)) { HasLowerCase = TRUE; } SubString++; } /* If no lower case letters, we can safely ignore the entire token */ if (!HasLowerCase) { SubBuffer = SubString; continue; } } /* A capital letter may indicate the start of a token; save it */ if (isupper (SubBuffer[0])) { TokenStart = SubBuffer; } /* * Convert each pair of letters that matches the form: * * <LowerCase><UpperCase> * to * <LowerCase><Underscore><LowerCase> */ else if ((islower (SubBuffer[0]) || isdigit (SubBuffer[0])) && (isupper (SubBuffer[1]))) { if (isdigit (SubBuffer[0])) { /* Ignore <UpperCase><Digit><UpperCase> */ /* Ignore <Underscore><Digit><UpperCase> */ if (isupper (*(SubBuffer-1)) || *(SubBuffer-1) == '_') { SubBuffer++; continue; } } /* * Matched the pattern. * Find the end of this identifier (token) */ TokenEnd = SubBuffer; while ((isalnum (*TokenEnd)) || (*TokenEnd == '_')) { TokenEnd++; } /* Force the UpperCase letter (#2) to lower case */ Gbl_MadeChanges = TRUE; SubBuffer[1] = (char) tolower (SubBuffer[1]); SubString = TokenEnd; Length = 0; while (*SubString != '\n') { /* * If we have at least two trailing spaces, we can get rid of * one to make up for the newly inserted underscore. This will * help preserve the alignment of the text */ if ((SubString[0] == ' ') && (SubString[1] == ' ')) { Length = SubString - SubBuffer - 2; break; } SubString++; } if (!Length) { Length = strlen (&SubBuffer[1]); } memmove (&SubBuffer[2], &SubBuffer[1], Length + 1); SubBuffer[1] = '_'; SubBuffer +=2; /* Lower case the leading character of the token */ if (TokenStart) { *TokenStart = (char) tolower (*TokenStart); TokenStart = NULL; } } SubBuffer++; }}/****************************************************************************** * * FUNCTION: AsLowerCaseIdentifiers * * DESCRIPTION: Converts mixed case identifiers to lower case. Leaves comments, * quoted strings, and all-upper-case macros alone. * ******************************************************************************/voidAsLowerCaseIdentifiers ( char *Buffer){ char *SubBuffer = Buffer; while (*SubBuffer) { /* * Check for translation escape string -- means to ignore * blocks of code while replacing */ if ((SubBuffer[0] == '/') && (SubBuffer[1] == '*') && (SubBuffer[2] == '!')) { SubBuffer = strstr (SubBuffer, "!*/"); if (!SubBuffer) { return; } } /* Ignore comments */ if ((SubBuffer[0] == '/') && (SubBuffer[1] == '*')) { SubBuffer = strstr (SubBuffer, "*/"); if (!SubBuffer) { return; } SubBuffer += 2; } /* Ignore quoted strings */ if ((SubBuffer[0] == '\"') && (SubBuffer[1] != '\'')) { SubBuffer++; /* Find the closing quote */ while (SubBuffer[0]) { /* Ignore escaped quote characters */ if (SubBuffer[0] == '\\') { SubBuffer++; } else if (SubBuffer[0] == '\"') { SubBuffer++; break; } SubBuffer++; } } if (!SubBuffer[0]) { return; } /* * Only lower case if we have an upper followed by a lower * This leaves the all-uppercase things (macros, etc.) intact */ if ((isupper (SubBuffer[0])) && (islower (SubBuffer[1]))) { Gbl_MadeChanges = TRUE; *SubBuffer = (char) tolower (*SubBuffer); } SubBuffer++; }}/****************************************************************************** * * FUNCTION: AsUppercaseTokens * * DESCRIPTION: Force to uppercase all tokens that begin with the prefix string. * used to convert mixed-case macros and constants to uppercase. * ******************************************************************************/voidAsUppercaseTokens ( char *Buffer, char *PrefixString){ char *SubBuffer; char *TokenEnd; char *SubString; int i; UINT32 Length; SubBuffer = Buffer; while (SubBuffer) { SubBuffer = strstr (SubBuffer, PrefixString); if (SubBuffer) { TokenEnd = SubBuffer; while ((isalnum (*TokenEnd)) || (*TokenEnd == '_')) { TokenEnd++; } for (i = 0; i < (TokenEnd - SubBuffer); i++) { if ((islower (SubBuffer[i])) && (isupper (SubBuffer[i+1]))) { SubString = TokenEnd; Length = 0; while (*SubString != '\n') { if ((SubString[0] == ' ') && (SubString[1] == ' ')) { Length = SubString - &SubBuffer[i] - 2; break; } SubString++; } if (!Length) { Length = strlen (&SubBuffer[i+1]); } memmove (&SubBuffer[i+2], &SubBuffer[i+1], (Length+1)); SubBuffer[i+1] = '_'; i +=2; TokenEnd++; } } for (i = 0; i < (TokenEnd - SubBuffer); i++) { SubBuffer[i] = (char) toupper (SubBuffer[i]); } SubBuffer = TokenEnd; } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -