Beispiel #1
0
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 ) ];
}
Beispiel #2
0
	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;
	}
Beispiel #3
0
std::string NameGenerator::getName(uint32_t searchFlags) {
  std::vector<std::string> theseNames = filteredNames(searchFlags);
  return theseNames[rng(0, theseNames.size()-1)];
}