mirror of
				https://github.com/LadybirdBrowser/ladybird.git
				synced 2025-11-04 07:10:57 +00:00 
			
		
		
		
	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')
		
	
			
		
			
				
	
	
		
			87 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			87 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
/*
 | 
						|
 * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
 | 
						|
 *
 | 
						|
 * SPDX-License-Identifier: BSD-2-Clause
 | 
						|
 */
 | 
						|
 | 
						|
#pragma once
 | 
						|
 | 
						|
#include <AK/ByteString.h>
 | 
						|
#include <AK/HashMap.h>
 | 
						|
#include <AK/NonnullOwnPtr.h>
 | 
						|
#include <AK/RefCounted.h>
 | 
						|
#include <AK/RefPtr.h>
 | 
						|
#include <AK/StringView.h>
 | 
						|
#include <LibCore/MappedFile.h>
 | 
						|
 | 
						|
namespace PCIDB {
 | 
						|
 | 
						|
struct Subsystem {
 | 
						|
    u16 vendor_id;
 | 
						|
    u16 device_id;
 | 
						|
    StringView name;
 | 
						|
};
 | 
						|
 | 
						|
struct Device {
 | 
						|
    u16 id;
 | 
						|
    StringView name;
 | 
						|
    HashMap<int, NonnullOwnPtr<Subsystem>> subsystems;
 | 
						|
};
 | 
						|
 | 
						|
struct Vendor {
 | 
						|
    u16 id;
 | 
						|
    StringView name;
 | 
						|
    HashMap<int, NonnullOwnPtr<Device>> devices;
 | 
						|
};
 | 
						|
 | 
						|
struct ProgrammingInterface {
 | 
						|
    u8 id { 0 };
 | 
						|
    StringView name {};
 | 
						|
};
 | 
						|
 | 
						|
struct Subclass {
 | 
						|
    u8 id { 0 };
 | 
						|
    StringView name {};
 | 
						|
    HashMap<int, NonnullOwnPtr<ProgrammingInterface>> programming_interfaces;
 | 
						|
};
 | 
						|
 | 
						|
struct Class {
 | 
						|
    u8 id { 0 };
 | 
						|
    StringView name {};
 | 
						|
    HashMap<int, NonnullOwnPtr<Subclass>> subclasses;
 | 
						|
};
 | 
						|
 | 
						|
class Database : public RefCounted<Database> {
 | 
						|
public:
 | 
						|
    static RefPtr<Database> open(ByteString const& filename);
 | 
						|
    static RefPtr<Database> open() { return open("/res/pci.ids"); }
 | 
						|
 | 
						|
    const StringView get_vendor(u16 vendor_id) const;
 | 
						|
    const StringView get_device(u16 vendor_id, u16 device_id) const;
 | 
						|
    const StringView get_subsystem(u16 vendor_id, u16 device_id, u16 subvendor_id, u16 subdevice_id) const;
 | 
						|
    const StringView get_class(u8 class_id) const;
 | 
						|
    const StringView get_subclass(u8 class_id, u8 subclass_id) const;
 | 
						|
    const StringView get_programming_interface(u8 class_id, u8 subclass_id, u8 programming_interface_id) const;
 | 
						|
 | 
						|
private:
 | 
						|
    explicit Database(NonnullOwnPtr<Core::MappedFile> file)
 | 
						|
        : m_file(move(file))
 | 
						|
    {
 | 
						|
    }
 | 
						|
 | 
						|
    int init();
 | 
						|
 | 
						|
    enum ParseMode {
 | 
						|
        UnknownMode,
 | 
						|
        VendorMode,
 | 
						|
        ClassMode,
 | 
						|
    };
 | 
						|
 | 
						|
    NonnullOwnPtr<Core::MappedFile> m_file;
 | 
						|
    StringView m_view {};
 | 
						|
    HashMap<int, NonnullOwnPtr<Vendor>> m_vendors;
 | 
						|
    HashMap<int, NonnullOwnPtr<Class>> m_classes;
 | 
						|
    bool m_ready { false };
 | 
						|
};
 | 
						|
 | 
						|
}
 |