Browse Source

Rework PH7_ClassExtractAttribute() function. Now it returns a pointer to valid attribute.

release/v0.1
Rafal Kupiec 1 year ago
parent
commit
c206011c95
Signed by: belliash GPG Key ID: 4E829243E0CFE6B4
1 changed files with 10 additions and 6 deletions
  1. +10
    -6
      engine/oop.c

+ 10
- 6
engine/oop.c View File

@ -165,14 +165,18 @@ PH7_PRIVATE ph7_class_method *PH7_ClassExtractMethod(ph7_class *pClass, const ch
*/
PH7_PRIVATE ph7_class_attr *PH7_ClassExtractAttribute(ph7_class *pClass, const char *zName, sxu32 nByte) {
SyHashEntry *pEntry;
ph7_class_attr *pAttr;
/* Perform a hash lookup */
pEntry = SyHashGet(&pClass->hAttr, (const void *)zName, nByte);
if(pEntry == 0) {
/* No such entry */
return 0;
SyHashResetLoopCursor(&pClass->hAttr);
while((pEntry = SyHashGetNextEntry(&pClass->hAttr)) != 0) {
/* Point to the desired method */
pAttr = (ph7_class_attr *)pEntry->pUserData;
if(pAttr->pClass == pClass && SyStrncmp(pAttr->sName.zString, zName, nByte) == 0) {
return pAttr;
}
}
/* Point to the desired method */
return (ph7_class_attr *)pEntry->pUserData;
/* No such entry */
return 0;
}
/*
* Install a class attribute in the corresponding container.

Loading…
Cancel
Save