std::string NameGenerator::getName(uint32_t searchFlags) { std::vector<std::string> theseNames = filteredNames(searchFlags); if( theseNames.size() == 0 ) { return std::string( _("Tom") ); } return theseNames[ rng( 0, theseNames.size() - 1 ) ]; }
SharedStringList KPHPObject::GetPropertyNames() { TSRMLS_FETCH(); SharedStringList filteredNames(new StringList()); // If there is no get_properties handler, return. Why this would // happen, I have no idea -- from zend_builtin_functions.c:2363 if (Z_OBJ_HT_P(object)->get_properties == NULL) return filteredNames; HashTable* properties = Z_OBJ_HT_P(object)->get_properties(object TSRMLS_CC); if (properties == NULL) return filteredNames; SharedStringList names(PHPUtils::GetHashKeys(properties)); // Get the internal zend_object*. zend_object* internal = reinterpret_cast<zend_object*>( zend_object_store_get_object(object TSRMLS_CC)); for (int i = 0; i < names->size(); i++) { std::string& name = *names->at(i); unsigned int nameLength = name.size(); if (!zend_check_property_access(internal, (char*) name.c_str(), nameLength-1 TSRMLS_CC) == SUCCESS) continue; char* unmangledPropertyName; char* className; zend_unmangle_property_name((char*) name.c_str(), nameLength-1, &className, &unmangledPropertyName); filteredNames->push_back(new std::string(unmangledPropertyName)); } SharedStringList methods(PHPUtils::GetClassMethods(Z_OBJCE_P(object) TSRMLS_CC)); for (size_t i = 0; i < methods->size(); i++) { filteredNames->push_back(methods->at(i)); } return filteredNames; }
std::string NameGenerator::getName(uint32_t searchFlags) { std::vector<std::string> theseNames = filteredNames(searchFlags); return theseNames[rng(0, theseNames.size()-1)]; }