mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 04:52:45 +00:00 
			
		
		
		
	 5e1499d104
			
		
	
	
		5e1499d104
		
	
	
	
	
		
			
			This commit un-deprecates DeprecatedString, and repurposes it as a byte
string.
As the null state has already been removed, there are no other
particularly hairy blockers in repurposing this type as a byte string
(what it _really_ is).
This commit is auto-generated:
  $ xs=$(ack -l \bDeprecatedString\b\|deprecated_string AK Userland \
    Meta Ports Ladybird Tests Kernel)
  $ perl -pie 's/\bDeprecatedString\b/ByteString/g;
    s/deprecated_string/byte_string/g' $xs
  $ clang-format --style=file -i \
    $(git diff --name-only | grep \.cpp\|\.h)
  $ gn format $(git ls-files '*.gn' '*.gni')
		
	
			
		
			
				
	
	
		
			74 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /*
 | |
|  * Copyright (c) 2023, Andreas Kling <kling@serenityos.org>
 | |
|  *
 | |
|  * SPDX-License-Identifier: BSD-2-Clause
 | |
|  */
 | |
| 
 | |
| #include <LibGUI/Object.h>
 | |
| 
 | |
| namespace GUI {
 | |
| 
 | |
| Object::Object(Core::EventReceiver* parent)
 | |
|     : Core::EventReceiver(parent)
 | |
| {
 | |
| }
 | |
| 
 | |
| Object::~Object() = default;
 | |
| 
 | |
| void Object::register_property(ByteString const& name, Function<JsonValue()> getter, Function<bool(JsonValue const&)> setter)
 | |
| {
 | |
|     m_properties.set(name, make<Property>(name, move(getter), move(setter)));
 | |
| }
 | |
| 
 | |
| JsonValue Object::property(ByteString const& name) const
 | |
| {
 | |
|     auto it = m_properties.find(name);
 | |
|     if (it == m_properties.end())
 | |
|         return JsonValue();
 | |
|     return it->value->get();
 | |
| }
 | |
| 
 | |
| bool Object::set_property(ByteString const& name, JsonValue const& value)
 | |
| {
 | |
|     auto it = m_properties.find(name);
 | |
|     if (it == m_properties.end())
 | |
|         return false;
 | |
|     return it->value->set(value);
 | |
| }
 | |
| 
 | |
| static HashMap<StringView, ObjectClassRegistration*>& object_classes()
 | |
| {
 | |
|     static HashMap<StringView, ObjectClassRegistration*> s_map;
 | |
|     return s_map;
 | |
| }
 | |
| 
 | |
| ObjectClassRegistration::ObjectClassRegistration(StringView class_name, Function<ErrorOr<NonnullRefPtr<Object>>()> factory, ObjectClassRegistration* parent_class)
 | |
|     : m_class_name(class_name)
 | |
|     , m_factory(move(factory))
 | |
|     , m_parent_class(parent_class)
 | |
| {
 | |
|     object_classes().set(class_name, this);
 | |
| }
 | |
| 
 | |
| bool ObjectClassRegistration::is_derived_from(ObjectClassRegistration const& base_class) const
 | |
| {
 | |
|     if (&base_class == this)
 | |
|         return true;
 | |
|     if (!m_parent_class)
 | |
|         return false;
 | |
|     return m_parent_class->is_derived_from(base_class);
 | |
| }
 | |
| 
 | |
| void ObjectClassRegistration::for_each(Function<void(ObjectClassRegistration const&)> callback)
 | |
| {
 | |
|     for (auto& it : object_classes()) {
 | |
|         callback(*it.value);
 | |
|     }
 | |
| }
 | |
| 
 | |
| ObjectClassRegistration const* ObjectClassRegistration::find(StringView class_name)
 | |
| {
 | |
|     return object_classes().get(class_name).value_or(nullptr);
 | |
| }
 | |
| 
 | |
| }
 |