| 45 | }; |
| 46 | |
| 47 | inline bool checkname(rdcstr &log, const char *baseType, rdcstr name, NameType nameType, |
| 48 | const rdcstr &mem_doc) |
| 49 | { |
| 50 | // skip __ prefixed names |
| 51 | if(name.beginsWith("__")) |
| 52 | return false; |
| 53 | |
| 54 | // skip any rdctype based types that are converted into equivalent python types |
| 55 | if((baseType && strstr(baseType, "rdcarray")) || name.contains("rdcarray")) |
| 56 | return false; |
| 57 | if((baseType && strstr(baseType, "bytebuf")) || name.contains("bytebuf")) |
| 58 | return false; |
| 59 | if((baseType && strstr(baseType, "rdcstr")) || name.contains("rdcstr")) |
| 60 | return false; |
| 61 | if((baseType && strstr(baseType, "StructuredBufferList")) || |
| 62 | name.contains("StructuredBufferList")) |
| 63 | return false; |
| 64 | if((baseType && strstr(baseType, "StructuredChunkList")) || name.contains("StructuredChunkList")) |
| 65 | return false; |
| 66 | if((baseType && strstr(baseType, "StructuredObjectList")) || |
| 67 | name.contains("StructuredObjectList")) |
| 68 | return false; |
| 69 | |
| 70 | // allow the config to have different names |
| 71 | if((baseType && strstr(baseType, "PersistantConfig")) || name.contains("PersistantConfig")) |
| 72 | return false; |
| 73 | |
| 74 | // skip swig internal type |
| 75 | if((baseType && strstr(baseType, "SwigPyObject")) || name.contains("SwigPyObject")) |
| 76 | return false; |
| 77 | |
| 78 | // remove the module prefix, if this is a type name we're checking |
| 79 | if(name.beginsWith("renderdoc.")) |
| 80 | name.erase(0, 10); |
| 81 | if(name.beginsWith("qrenderdoc.")) |
| 82 | name.erase(0, 11); |
| 83 | |
| 84 | // skip a few well-known members |
| 85 | if(name == "this" || name == "thisown") |
| 86 | return false; |
| 87 | |
| 88 | bool member = (nameType == NameType::Member); |
| 89 | |
| 90 | // look for invalid name |
| 91 | bool badfirstChar = false; |
| 92 | if(member) |
| 93 | badfirstChar = name[0] < 'a' || name[0] > 'z'; |
| 94 | else |
| 95 | badfirstChar = name[0] < 'A' || name[0] > 'Z'; |
| 96 | |
| 97 | if(badfirstChar || (nameType != NameType::EnumValue && name.contains('_'))) |
| 98 | { |
| 99 | const char *nameTypeStr = ""; |
| 100 | |
| 101 | switch(nameType) |
| 102 | { |
| 103 | case NameType::EnumValue: nameTypeStr = "enum value"; break; |
| 104 | case NameType::Member: nameTypeStr = "member variable"; break; |
no test coverage detected