mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 05:48:12 +00:00
Yet another pass of style fixes.
This commit is contained in:
parent
89040cdc99
commit
ec1c487dcd
43 changed files with 183 additions and 185 deletions
|
@ -46,25 +46,25 @@ public:
|
||||||
|
|
||||||
unsigned toUInt(bool& ok) const;
|
unsigned toUInt(bool& ok) const;
|
||||||
|
|
||||||
String toLowercase() const
|
String to_lowercase() const
|
||||||
{
|
{
|
||||||
if (!m_impl)
|
if (!m_impl)
|
||||||
return String();
|
return String();
|
||||||
return m_impl->toLowercase();
|
return m_impl->to_lowercase();
|
||||||
}
|
}
|
||||||
|
|
||||||
String toUppercase() const
|
String to_uppercase() const
|
||||||
{
|
{
|
||||||
if (!m_impl)
|
if (!m_impl)
|
||||||
return String();
|
return String();
|
||||||
return m_impl->toUppercase();
|
return m_impl->to_uppercase();
|
||||||
}
|
}
|
||||||
|
|
||||||
Vector<String> split(char separator) const;
|
Vector<String> split(char separator) const;
|
||||||
String substring(size_t start, size_t length) const;
|
String substring(size_t start, size_t length) const;
|
||||||
|
|
||||||
bool isNull() const { return !m_impl; }
|
bool is_null() const { return !m_impl; }
|
||||||
bool isEmpty() const { return length() == 0; }
|
bool is_empty() const { return length() == 0; }
|
||||||
unsigned length() const { return m_impl ? m_impl->length() : 0; }
|
unsigned length() const { return m_impl ? m_impl->length() : 0; }
|
||||||
const char* characters() const { return m_impl ? m_impl->characters() : nullptr; }
|
const char* characters() const { return m_impl ? m_impl->characters() : nullptr; }
|
||||||
char operator[](unsigned i) const { ASSERT(m_impl); return (*m_impl)[i]; }
|
char operator[](unsigned i) const { ASSERT(m_impl); return (*m_impl)[i]; }
|
||||||
|
@ -72,7 +72,7 @@ public:
|
||||||
bool operator==(const String&) const;
|
bool operator==(const String&) const;
|
||||||
bool operator!=(const String& other) const { return !(*this == other); }
|
bool operator!=(const String& other) const { return !(*this == other); }
|
||||||
|
|
||||||
String isolatedCopy() const;
|
String isolated_copy() const;
|
||||||
|
|
||||||
static String empty();
|
static String empty();
|
||||||
|
|
||||||
|
@ -93,7 +93,7 @@ public:
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
ByteBuffer toByteBuffer() const;
|
ByteBuffer to_byte_buffer() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
RetainPtr<StringImpl> m_impl;
|
RetainPtr<StringImpl> m_impl;
|
||||||
|
|
12
AK/Buffer.h
12
AK/Buffer.h
|
@ -11,7 +11,7 @@ namespace AK {
|
||||||
template<typename T>
|
template<typename T>
|
||||||
class Buffer : public Retainable<Buffer<T>> {
|
class Buffer : public Retainable<Buffer<T>> {
|
||||||
public:
|
public:
|
||||||
static RetainPtr<Buffer> createUninitialized(size_t count);
|
static RetainPtr<Buffer> create_uninitialized(size_t count);
|
||||||
static RetainPtr<Buffer> copy(const T*, size_t count);
|
static RetainPtr<Buffer> copy(const T*, size_t count);
|
||||||
static RetainPtr<Buffer> wrap(T*, size_t count);
|
static RetainPtr<Buffer> wrap(T*, size_t count);
|
||||||
static RetainPtr<Buffer> adopt(T*, size_t count);
|
static RetainPtr<Buffer> adopt(T*, size_t count);
|
||||||
|
@ -29,16 +29,16 @@ public:
|
||||||
|
|
||||||
T& operator[](size_t i) { ASSERT(i < m_size); return m_elements[i]; }
|
T& operator[](size_t i) { ASSERT(i < m_size); return m_elements[i]; }
|
||||||
const T& operator[](size_t i) const { ASSERT(i < m_size); return m_elements[i]; }
|
const T& operator[](size_t i) const { ASSERT(i < m_size); return m_elements[i]; }
|
||||||
bool isEmpty() const { return !m_size; }
|
bool is_empty() const { return !m_size; }
|
||||||
size_t size() const { return m_size; }
|
size_t size() const { return m_size; }
|
||||||
|
|
||||||
T* pointer() { return m_elements; }
|
T* pointer() { return m_elements; }
|
||||||
const T* pointer() const { return m_elements; }
|
const T* pointer() const { return m_elements; }
|
||||||
|
|
||||||
T* offsetPointer(size_t offset) { return m_elements + offset; }
|
T* offset_pointer(size_t offset) { return m_elements + offset; }
|
||||||
const T* offsetPointer(size_t offset) const { return m_elements + offset; }
|
const T* offset_pointer(size_t offset) const { return m_elements + offset; }
|
||||||
|
|
||||||
const void* endPointer() const { return m_elements + m_size; }
|
const void* end_pointer() const { return m_elements + m_size; }
|
||||||
|
|
||||||
// NOTE: trim() does not reallocate.
|
// NOTE: trim() does not reallocate.
|
||||||
void trim(size_t size)
|
void trim(size_t size)
|
||||||
|
@ -91,7 +91,7 @@ inline Buffer<T>::Buffer(T* elements, size_t size, ConstructionMode mode)
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
inline RetainPtr<Buffer<T>> Buffer<T>::createUninitialized(size_t size)
|
inline RetainPtr<Buffer<T>> Buffer<T>::create_uninitialized(size_t size)
|
||||||
{
|
{
|
||||||
return ::adopt(*new Buffer<T>(size));
|
return ::adopt(*new Buffer<T>(size));
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,8 +30,7 @@ public:
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
static ByteBuffer createEmpty() { return ByteBuffer(Buffer<byte>::createUninitialized(0)); }
|
static ByteBuffer create_uninitialized(size_t size) { return ByteBuffer(Buffer<byte>::create_uninitialized(size)); }
|
||||||
static ByteBuffer createUninitialized(size_t size) { return ByteBuffer(Buffer<byte>::createUninitialized(size)); }
|
|
||||||
static ByteBuffer copy(const byte* data, size_t size) { return ByteBuffer(Buffer<byte>::copy(data, size)); }
|
static ByteBuffer copy(const byte* data, size_t size) { return ByteBuffer(Buffer<byte>::copy(data, size)); }
|
||||||
static ByteBuffer wrap(byte* data, size_t size) { return ByteBuffer(Buffer<byte>::wrap(data, size)); }
|
static ByteBuffer wrap(byte* data, size_t size) { return ByteBuffer(Buffer<byte>::wrap(data, size)); }
|
||||||
static ByteBuffer adopt(byte* data, size_t size) { return ByteBuffer(Buffer<byte>::adopt(data, size)); }
|
static ByteBuffer adopt(byte* data, size_t size) { return ByteBuffer(Buffer<byte>::adopt(data, size)); }
|
||||||
|
@ -39,22 +38,22 @@ public:
|
||||||
~ByteBuffer() { clear(); }
|
~ByteBuffer() { clear(); }
|
||||||
void clear() { m_impl = nullptr; }
|
void clear() { m_impl = nullptr; }
|
||||||
|
|
||||||
operator bool() const { return !isNull(); }
|
operator bool() const { return !is_null(); }
|
||||||
bool operator!() const { return isNull(); }
|
bool operator!() const { return is_null(); }
|
||||||
bool isNull() const { return m_impl == nullptr; }
|
bool is_null() const { return m_impl == nullptr; }
|
||||||
|
|
||||||
byte& operator[](size_t i) { ASSERT(m_impl); return (*m_impl)[i]; }
|
byte& operator[](size_t i) { ASSERT(m_impl); return (*m_impl)[i]; }
|
||||||
byte operator[](size_t i) const { ASSERT(m_impl); return (*m_impl)[i]; }
|
byte operator[](size_t i) const { ASSERT(m_impl); return (*m_impl)[i]; }
|
||||||
bool isEmpty() const { return !m_impl || m_impl->isEmpty(); }
|
bool is_empty() const { return !m_impl || m_impl->is_empty(); }
|
||||||
size_t size() const { return m_impl ? m_impl->size() : 0; }
|
size_t size() const { return m_impl ? m_impl->size() : 0; }
|
||||||
|
|
||||||
byte* pointer() { return m_impl ? m_impl->pointer() : nullptr; }
|
byte* pointer() { return m_impl ? m_impl->pointer() : nullptr; }
|
||||||
const byte* pointer() const { return m_impl ? m_impl->pointer() : nullptr; }
|
const byte* pointer() const { return m_impl ? m_impl->pointer() : nullptr; }
|
||||||
|
|
||||||
byte* offsetPointer(size_t offset) { return m_impl ? m_impl->offsetPointer(offset) : nullptr; }
|
byte* offset_pointer(size_t offset) { return m_impl ? m_impl->offset_pointer(offset) : nullptr; }
|
||||||
const byte* offsetPointer(size_t offset) const { return m_impl ? m_impl->offsetPointer(offset) : nullptr; }
|
const byte* offset_pointer(size_t offset) const { return m_impl ? m_impl->offset_pointer(offset) : nullptr; }
|
||||||
|
|
||||||
const void* endPointer() const { return m_impl ? m_impl->endPointer() : nullptr; }
|
const void* end_pointer() const { return m_impl ? m_impl->end_pointer() : nullptr; }
|
||||||
|
|
||||||
// NOTE: trim() does not reallocate.
|
// NOTE: trim() does not reallocate.
|
||||||
void trim(size_t size)
|
void trim(size_t size)
|
||||||
|
@ -65,13 +64,13 @@ public:
|
||||||
|
|
||||||
ByteBuffer slice(size_t offset, size_t size) const
|
ByteBuffer slice(size_t offset, size_t size) const
|
||||||
{
|
{
|
||||||
if (isNull())
|
if (is_null())
|
||||||
return { };
|
return { };
|
||||||
if (offset >= this->size())
|
if (offset >= this->size())
|
||||||
return { };
|
return { };
|
||||||
if (offset + size >= this->size())
|
if (offset + size >= this->size())
|
||||||
size = this->size() - offset;
|
size = this->size() - offset;
|
||||||
return copy(offsetPointer(offset), size);
|
return copy(offset_pointer(offset), size);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
@ -19,7 +19,7 @@ public:
|
||||||
DoublyLinkedList() { }
|
DoublyLinkedList() { }
|
||||||
~DoublyLinkedList() { clear(); }
|
~DoublyLinkedList() { clear(); }
|
||||||
|
|
||||||
bool isEmpty() const { return !head(); }
|
bool is_empty() const { return !head(); }
|
||||||
|
|
||||||
void clear()
|
void clear()
|
||||||
{
|
{
|
||||||
|
|
|
@ -22,14 +22,14 @@ bool FileSystemPath::canonicalize(bool resolve_symbolic_links)
|
||||||
if (part == ".")
|
if (part == ".")
|
||||||
continue;
|
continue;
|
||||||
if (part == "..") {
|
if (part == "..") {
|
||||||
if (!canonical_parts.isEmpty())
|
if (!canonical_parts.is_empty())
|
||||||
canonical_parts.takeLast();
|
canonical_parts.takeLast();
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (!part.isEmpty())
|
if (!part.is_empty())
|
||||||
canonical_parts.append(part);
|
canonical_parts.append(part);
|
||||||
}
|
}
|
||||||
if (canonical_parts.isEmpty()) {
|
if (canonical_parts.is_empty()) {
|
||||||
m_string = m_basename = "/";
|
m_string = m_basename = "/";
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,7 +46,7 @@ public:
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool isEmpty() const { return m_table.isEmpty(); }
|
bool is_empty() const { return m_table.is_empty(); }
|
||||||
unsigned size() const { return m_table.size(); }
|
unsigned size() const { return m_table.size(); }
|
||||||
unsigned capacity() const { return m_table.capacity(); }
|
unsigned capacity() const { return m_table.capacity(); }
|
||||||
void clear() { m_table.clear(); }
|
void clear() { m_table.clear(); }
|
||||||
|
|
|
@ -44,7 +44,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
~HashTable() { clear(); }
|
~HashTable() { clear(); }
|
||||||
bool isEmpty() const { return !m_size; }
|
bool is_empty() const { return !m_size; }
|
||||||
unsigned size() const { return m_size; }
|
unsigned size() const { return m_size; }
|
||||||
unsigned capacity() const { return m_capacity; }
|
unsigned capacity() const { return m_capacity; }
|
||||||
|
|
||||||
|
@ -112,7 +112,7 @@ public:
|
||||||
, m_isEnd(isEnd)
|
, m_isEnd(isEnd)
|
||||||
, m_bucketIterator(bucketIterator)
|
, m_bucketIterator(bucketIterator)
|
||||||
{
|
{
|
||||||
if (!isEnd && !m_table.isEmpty() && !(m_bucketIterator != DoublyLinkedList<T>::Iterator::universalEnd())) {
|
if (!isEnd && !m_table.is_empty() && !(m_bucketIterator != DoublyLinkedList<T>::Iterator::universalEnd())) {
|
||||||
#ifdef HASHTABLE_DEBUG
|
#ifdef HASHTABLE_DEBUG
|
||||||
kprintf("bucket iterator init!\n");
|
kprintf("bucket iterator init!\n");
|
||||||
#endif
|
#endif
|
||||||
|
@ -128,7 +128,7 @@ public:
|
||||||
typename DoublyLinkedList<T>::Iterator m_bucketIterator;
|
typename DoublyLinkedList<T>::Iterator m_bucketIterator;
|
||||||
};
|
};
|
||||||
|
|
||||||
Iterator begin() { return Iterator(*this, isEmpty()); }
|
Iterator begin() { return Iterator(*this, is_empty()); }
|
||||||
Iterator end() { return Iterator(*this, true); }
|
Iterator end() { return Iterator(*this, true); }
|
||||||
|
|
||||||
class ConstIterator {
|
class ConstIterator {
|
||||||
|
@ -189,7 +189,7 @@ public:
|
||||||
, m_isEnd(isEnd)
|
, m_isEnd(isEnd)
|
||||||
, m_bucketIterator(bucketIterator)
|
, m_bucketIterator(bucketIterator)
|
||||||
{
|
{
|
||||||
if (!isEnd && !m_table.isEmpty() && !(m_bucketIterator != DoublyLinkedList<T>::ConstIterator::universalEnd())) {
|
if (!isEnd && !m_table.is_empty() && !(m_bucketIterator != DoublyLinkedList<T>::ConstIterator::universalEnd())) {
|
||||||
#ifdef HASHTABLE_DEBUG
|
#ifdef HASHTABLE_DEBUG
|
||||||
kprintf("const bucket iterator init!\n");
|
kprintf("const bucket iterator init!\n");
|
||||||
#endif
|
#endif
|
||||||
|
@ -206,7 +206,7 @@ public:
|
||||||
typename DoublyLinkedList<T>::ConstIterator m_bucketIterator;
|
typename DoublyLinkedList<T>::ConstIterator m_bucketIterator;
|
||||||
};
|
};
|
||||||
|
|
||||||
ConstIterator begin() const { return ConstIterator(*this, isEmpty()); }
|
ConstIterator begin() const { return ConstIterator(*this, is_empty()); }
|
||||||
ConstIterator end() const { return ConstIterator(*this, true); }
|
ConstIterator end() const { return ConstIterator(*this, true); }
|
||||||
|
|
||||||
Iterator find(const T&);
|
Iterator find(const T&);
|
||||||
|
@ -323,7 +323,7 @@ void HashTable<T, TraitsForT>::insert(const T& value)
|
||||||
template<typename T, typename TraitsForT>
|
template<typename T, typename TraitsForT>
|
||||||
bool HashTable<T, TraitsForT>::contains(const T& value) const
|
bool HashTable<T, TraitsForT>::contains(const T& value) const
|
||||||
{
|
{
|
||||||
if (isEmpty())
|
if (is_empty())
|
||||||
return false;
|
return false;
|
||||||
auto& bucket = lookup(value);
|
auto& bucket = lookup(value);
|
||||||
for (auto& e : bucket.chain) {
|
for (auto& e : bucket.chain) {
|
||||||
|
@ -336,7 +336,7 @@ bool HashTable<T, TraitsForT>::contains(const T& value) const
|
||||||
template<typename T, typename TraitsForT>
|
template<typename T, typename TraitsForT>
|
||||||
auto HashTable<T, TraitsForT>::find(const T& value) -> Iterator
|
auto HashTable<T, TraitsForT>::find(const T& value) -> Iterator
|
||||||
{
|
{
|
||||||
if (isEmpty())
|
if (is_empty())
|
||||||
return end();
|
return end();
|
||||||
unsigned bucketIndex;
|
unsigned bucketIndex;
|
||||||
auto& bucket = lookup(value, &bucketIndex);
|
auto& bucket = lookup(value, &bucketIndex);
|
||||||
|
@ -349,7 +349,7 @@ auto HashTable<T, TraitsForT>::find(const T& value) -> Iterator
|
||||||
template<typename T, typename TraitsForT>
|
template<typename T, typename TraitsForT>
|
||||||
auto HashTable<T, TraitsForT>::find(const T& value) const -> ConstIterator
|
auto HashTable<T, TraitsForT>::find(const T& value) const -> ConstIterator
|
||||||
{
|
{
|
||||||
if (isEmpty())
|
if (is_empty())
|
||||||
return end();
|
return end();
|
||||||
unsigned bucketIndex;
|
unsigned bucketIndex;
|
||||||
auto& bucket = lookup(value, &bucketIndex);
|
auto& bucket = lookup(value, &bucketIndex);
|
||||||
|
@ -362,7 +362,7 @@ auto HashTable<T, TraitsForT>::find(const T& value) const -> ConstIterator
|
||||||
template<typename T, typename TraitsForT>
|
template<typename T, typename TraitsForT>
|
||||||
void HashTable<T, TraitsForT>::remove(Iterator it)
|
void HashTable<T, TraitsForT>::remove(Iterator it)
|
||||||
{
|
{
|
||||||
ASSERT(!isEmpty());
|
ASSERT(!is_empty());
|
||||||
m_buckets[it.m_bucketIndex].chain.remove(it.m_bucketIterator);
|
m_buckets[it.m_bucketIndex].chain.remove(it.m_bucketIterator);
|
||||||
--m_size;
|
--m_size;
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,8 +9,8 @@ template<typename T> class InlineLinkedListNode {
|
||||||
public:
|
public:
|
||||||
InlineLinkedListNode();
|
InlineLinkedListNode();
|
||||||
|
|
||||||
void setPrev(T*);
|
void set_prev(T*);
|
||||||
void setNext(T*);
|
void set_next(T*);
|
||||||
|
|
||||||
T* prev() const;
|
T* prev() const;
|
||||||
T* next() const;
|
T* next() const;
|
||||||
|
@ -18,16 +18,16 @@ public:
|
||||||
|
|
||||||
template<typename T> inline InlineLinkedListNode<T>::InlineLinkedListNode()
|
template<typename T> inline InlineLinkedListNode<T>::InlineLinkedListNode()
|
||||||
{
|
{
|
||||||
setPrev(0);
|
set_prev(0);
|
||||||
setNext(0);
|
set_next(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename T> inline void InlineLinkedListNode<T>::setPrev(T* prev)
|
template<typename T> inline void InlineLinkedListNode<T>::set_prev(T* prev)
|
||||||
{
|
{
|
||||||
static_cast<T*>(this)->m_prev = prev;
|
static_cast<T*>(this)->m_prev = prev;
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename T> inline void InlineLinkedListNode<T>::setNext(T* next)
|
template<typename T> inline void InlineLinkedListNode<T>::set_next(T* next)
|
||||||
{
|
{
|
||||||
static_cast<T*>(this)->m_next = next;
|
static_cast<T*>(this)->m_next = next;
|
||||||
}
|
}
|
||||||
|
@ -46,12 +46,12 @@ template<typename T> class InlineLinkedList {
|
||||||
public:
|
public:
|
||||||
InlineLinkedList() { }
|
InlineLinkedList() { }
|
||||||
|
|
||||||
bool isEmpty() const { return !m_head; }
|
bool is_empty() const { return !m_head; }
|
||||||
size_t sizeSlow() const;
|
size_t size_slow() const;
|
||||||
void clear();
|
void clear();
|
||||||
|
|
||||||
T* head() const { return m_head; }
|
T* head() const { return m_head; }
|
||||||
T* removeHead();
|
T* remove_head();
|
||||||
|
|
||||||
T* tail() const { return m_tail; }
|
T* tail() const { return m_tail; }
|
||||||
|
|
||||||
|
@ -60,7 +60,7 @@ public:
|
||||||
void remove(T*);
|
void remove(T*);
|
||||||
void append(InlineLinkedList<T>&);
|
void append(InlineLinkedList<T>&);
|
||||||
|
|
||||||
bool containsSlow(T* value) const
|
bool contains_slow(T* value) const
|
||||||
{
|
{
|
||||||
for (T* node = m_head; node; node = node->next()) {
|
for (T* node = m_head; node; node = node->next()) {
|
||||||
if (node == value)
|
if (node == value)
|
||||||
|
@ -74,7 +74,7 @@ private:
|
||||||
T* m_tail { nullptr };
|
T* m_tail { nullptr };
|
||||||
};
|
};
|
||||||
|
|
||||||
template<typename T> inline size_t InlineLinkedList<T>::sizeSlow() const
|
template<typename T> inline size_t InlineLinkedList<T>::size_slow() const
|
||||||
{
|
{
|
||||||
size_t size = 0;
|
size_t size = 0;
|
||||||
for (T* node = m_head; node; node = node->next())
|
for (T* node = m_head; node; node = node->next())
|
||||||
|
@ -94,15 +94,15 @@ template<typename T> inline void InlineLinkedList<T>::prepend(T* node)
|
||||||
ASSERT(!m_tail);
|
ASSERT(!m_tail);
|
||||||
m_head = node;
|
m_head = node;
|
||||||
m_tail = node;
|
m_tail = node;
|
||||||
node->setPrev(0);
|
node->set_prev(0);
|
||||||
node->setNext(0);
|
node->set_next(0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ASSERT(m_tail);
|
ASSERT(m_tail);
|
||||||
m_head->setPrev(node);
|
m_head->set_prev(node);
|
||||||
node->setNext(m_head);
|
node->set_next(m_head);
|
||||||
node->setPrev(0);
|
node->set_prev(0);
|
||||||
m_head = node;
|
m_head = node;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -112,15 +112,15 @@ template<typename T> inline void InlineLinkedList<T>::append(T* node)
|
||||||
ASSERT(!m_head);
|
ASSERT(!m_head);
|
||||||
m_head = node;
|
m_head = node;
|
||||||
m_tail = node;
|
m_tail = node;
|
||||||
node->setPrev(0);
|
node->set_prev(0);
|
||||||
node->setNext(0);
|
node->set_next(0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ASSERT(m_head);
|
ASSERT(m_head);
|
||||||
m_tail->setNext(node);
|
m_tail->set_next(node);
|
||||||
node->setPrev(m_tail);
|
node->set_prev(m_tail);
|
||||||
node->setNext(0);
|
node->set_next(0);
|
||||||
m_tail = node;
|
m_tail = node;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -128,7 +128,7 @@ template<typename T> inline void InlineLinkedList<T>::remove(T* node)
|
||||||
{
|
{
|
||||||
if (node->prev()) {
|
if (node->prev()) {
|
||||||
ASSERT(node != m_head);
|
ASSERT(node != m_head);
|
||||||
node->prev()->setNext(node->next());
|
node->prev()->set_next(node->next());
|
||||||
} else {
|
} else {
|
||||||
ASSERT(node == m_head);
|
ASSERT(node == m_head);
|
||||||
m_head = node->next();
|
m_head = node->next();
|
||||||
|
@ -136,14 +136,14 @@ template<typename T> inline void InlineLinkedList<T>::remove(T* node)
|
||||||
|
|
||||||
if (node->next()) {
|
if (node->next()) {
|
||||||
ASSERT(node != m_tail);
|
ASSERT(node != m_tail);
|
||||||
node->next()->setPrev(node->prev());
|
node->next()->set_prev(node->prev());
|
||||||
} else {
|
} else {
|
||||||
ASSERT(node == m_tail);
|
ASSERT(node == m_tail);
|
||||||
m_tail = node->prev();
|
m_tail = node->prev();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename T> inline T* InlineLinkedList<T>::removeHead()
|
template<typename T> inline T* InlineLinkedList<T>::remove_head()
|
||||||
{
|
{
|
||||||
T* node = head();
|
T* node = head();
|
||||||
if (node)
|
if (node)
|
||||||
|
@ -165,19 +165,18 @@ template<typename T> inline void InlineLinkedList<T>::append(InlineLinkedList<T>
|
||||||
|
|
||||||
ASSERT(tail());
|
ASSERT(tail());
|
||||||
ASSERT(other.head());
|
ASSERT(other.head());
|
||||||
T* otherHead = other.head();
|
T* other_head = other.head();
|
||||||
T* otherTail = other.tail();
|
T* other_tail = other.tail();
|
||||||
other.clear();
|
other.clear();
|
||||||
|
|
||||||
ASSERT(!m_tail->next());
|
ASSERT(!m_tail->next());
|
||||||
m_tail->setNext(otherHead);
|
m_tail->set_next(other_head);
|
||||||
ASSERT(!otherHead->prev());
|
ASSERT(!other_head->prev());
|
||||||
otherHead->setPrev(m_tail);
|
other_head->set_prev(m_tail);
|
||||||
m_tail = otherTail;
|
m_tail = other_tail;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
using AK::InlineLinkedList;
|
using AK::InlineLinkedList;
|
||||||
using AK::InlineLinkedListNode;
|
using AK::InlineLinkedListNode;
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,7 @@ public:
|
||||||
SinglyLinkedList() { }
|
SinglyLinkedList() { }
|
||||||
~SinglyLinkedList() { clear(); }
|
~SinglyLinkedList() { clear(); }
|
||||||
|
|
||||||
bool isEmpty() const { return !head(); }
|
bool is_empty() const { return !head(); }
|
||||||
|
|
||||||
void clear()
|
void clear()
|
||||||
{
|
{
|
||||||
|
|
|
@ -19,17 +19,17 @@ bool String::operator==(const String& other) const
|
||||||
|
|
||||||
String String::empty()
|
String String::empty()
|
||||||
{
|
{
|
||||||
return StringImpl::theEmptyStringImpl();
|
return StringImpl::the_empty_stringimpl();
|
||||||
}
|
}
|
||||||
|
|
||||||
String String::isolatedCopy() const
|
String String::isolated_copy() const
|
||||||
{
|
{
|
||||||
if (!m_impl)
|
if (!m_impl)
|
||||||
return { };
|
return { };
|
||||||
if (!m_impl->length())
|
if (!m_impl->length())
|
||||||
return empty();
|
return empty();
|
||||||
char* buffer;
|
char* buffer;
|
||||||
auto impl = StringImpl::createUninitialized(length(), buffer);
|
auto impl = StringImpl::create_uninitialized(length(), buffer);
|
||||||
memcpy(buffer, m_impl->characters(), m_impl->length());
|
memcpy(buffer, m_impl->characters(), m_impl->length());
|
||||||
return String(move(*impl));
|
return String(move(*impl));
|
||||||
}
|
}
|
||||||
|
@ -40,7 +40,7 @@ String String::substring(size_t start, size_t length) const
|
||||||
ASSERT(start + length <= m_impl->length());
|
ASSERT(start + length <= m_impl->length());
|
||||||
// FIXME: This needs some input bounds checking.
|
// FIXME: This needs some input bounds checking.
|
||||||
char* buffer;
|
char* buffer;
|
||||||
auto newImpl = StringImpl::createUninitialized(length, buffer);
|
auto newImpl = StringImpl::create_uninitialized(length, buffer);
|
||||||
memcpy(buffer, characters() + start, length);
|
memcpy(buffer, characters() + start, length);
|
||||||
buffer[length] = '\0';
|
buffer[length] = '\0';
|
||||||
return newImpl;
|
return newImpl;
|
||||||
|
@ -48,7 +48,7 @@ String String::substring(size_t start, size_t length) const
|
||||||
|
|
||||||
Vector<String> String::split(const char separator) const
|
Vector<String> String::split(const char separator) const
|
||||||
{
|
{
|
||||||
if (isEmpty())
|
if (is_empty())
|
||||||
return { };
|
return { };
|
||||||
|
|
||||||
Vector<String> v;
|
Vector<String> v;
|
||||||
|
@ -70,7 +70,7 @@ Vector<String> String::split(const char separator) const
|
||||||
return v;
|
return v;
|
||||||
}
|
}
|
||||||
|
|
||||||
ByteBuffer String::toByteBuffer() const
|
ByteBuffer String::to_byte_buffer() const
|
||||||
{
|
{
|
||||||
if (!m_impl)
|
if (!m_impl)
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
|
@ -20,7 +20,7 @@ void StringBuilder::append(char ch)
|
||||||
String StringBuilder::build()
|
String StringBuilder::build()
|
||||||
{
|
{
|
||||||
auto strings = move(m_strings);
|
auto strings = move(m_strings);
|
||||||
if (strings.isEmpty())
|
if (strings.is_empty())
|
||||||
return String::empty();
|
return String::empty();
|
||||||
|
|
||||||
size_t sizeNeeded = 0;
|
size_t sizeNeeded = 0;
|
||||||
|
@ -28,7 +28,7 @@ String StringBuilder::build()
|
||||||
sizeNeeded += string.length();
|
sizeNeeded += string.length();
|
||||||
|
|
||||||
char* buffer;
|
char* buffer;
|
||||||
auto impl = StringImpl::createUninitialized(sizeNeeded, buffer);
|
auto impl = StringImpl::create_uninitialized(sizeNeeded, buffer);
|
||||||
if (!impl)
|
if (!impl)
|
||||||
return String();
|
return String();
|
||||||
|
|
||||||
|
|
|
@ -4,18 +4,18 @@
|
||||||
|
|
||||||
namespace AK {
|
namespace AK {
|
||||||
|
|
||||||
static StringImpl* s_theEmptyStringImpl = nullptr;
|
static StringImpl* s_the_empty_stringimpl = nullptr;
|
||||||
|
|
||||||
void StringImpl::initializeGlobals()
|
void StringImpl::initialize_globals()
|
||||||
{
|
{
|
||||||
s_theEmptyStringImpl = nullptr;
|
s_the_empty_stringimpl = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
StringImpl& StringImpl::theEmptyStringImpl()
|
StringImpl& StringImpl::the_empty_stringimpl()
|
||||||
{
|
{
|
||||||
if (!s_theEmptyStringImpl)
|
if (!s_the_empty_stringimpl)
|
||||||
s_theEmptyStringImpl = new StringImpl(ConstructTheEmptyStringImpl);;
|
s_the_empty_stringimpl = new StringImpl(ConstructTheEmptyStringImpl);;
|
||||||
return *s_theEmptyStringImpl;
|
return *s_the_empty_stringimpl;
|
||||||
}
|
}
|
||||||
|
|
||||||
StringImpl::~StringImpl()
|
StringImpl::~StringImpl()
|
||||||
|
@ -27,7 +27,7 @@ static inline size_t allocationSizeForStringImpl(size_t length)
|
||||||
return sizeof(StringImpl) + (sizeof(char) * length) + sizeof(char);
|
return sizeof(StringImpl) + (sizeof(char) * length) + sizeof(char);
|
||||||
}
|
}
|
||||||
|
|
||||||
RetainPtr<StringImpl> StringImpl::createUninitialized(size_t length, char*& buffer)
|
RetainPtr<StringImpl> StringImpl::create_uninitialized(size_t length, char*& buffer)
|
||||||
{
|
{
|
||||||
ASSERT(length);
|
ASSERT(length);
|
||||||
void* slot = kmalloc(allocationSizeForStringImpl(length));
|
void* slot = kmalloc(allocationSizeForStringImpl(length));
|
||||||
|
@ -46,10 +46,10 @@ RetainPtr<StringImpl> StringImpl::create(const char* cstring, size_t length, Sho
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
||||||
if (!*cstring)
|
if (!*cstring)
|
||||||
return theEmptyStringImpl();
|
return the_empty_stringimpl();
|
||||||
|
|
||||||
char* buffer;
|
char* buffer;
|
||||||
auto newStringImpl = createUninitialized(length, buffer);
|
auto newStringImpl = create_uninitialized(length, buffer);
|
||||||
if (!newStringImpl)
|
if (!newStringImpl)
|
||||||
return nullptr;
|
return nullptr;
|
||||||
memcpy(buffer, cstring, length * sizeof(char));
|
memcpy(buffer, cstring, length * sizeof(char));
|
||||||
|
@ -94,7 +94,7 @@ static inline char toASCIIUppercase(char c)
|
||||||
return c;
|
return c;
|
||||||
}
|
}
|
||||||
|
|
||||||
RetainPtr<StringImpl> StringImpl::toLowercase() const
|
RetainPtr<StringImpl> StringImpl::to_lowercase() const
|
||||||
{
|
{
|
||||||
if (!m_length)
|
if (!m_length)
|
||||||
return const_cast<StringImpl*>(this);
|
return const_cast<StringImpl*>(this);
|
||||||
|
@ -107,7 +107,7 @@ RetainPtr<StringImpl> StringImpl::toLowercase() const
|
||||||
|
|
||||||
slowPath:
|
slowPath:
|
||||||
char* buffer;
|
char* buffer;
|
||||||
auto lowercased = createUninitialized(m_length, buffer);
|
auto lowercased = create_uninitialized(m_length, buffer);
|
||||||
if (!lowercased)
|
if (!lowercased)
|
||||||
return nullptr;
|
return nullptr;
|
||||||
for (size_t i = 0; i < m_length; ++i)
|
for (size_t i = 0; i < m_length; ++i)
|
||||||
|
@ -116,7 +116,7 @@ slowPath:
|
||||||
return lowercased;
|
return lowercased;
|
||||||
}
|
}
|
||||||
|
|
||||||
RetainPtr<StringImpl> StringImpl::toUppercase() const
|
RetainPtr<StringImpl> StringImpl::to_uppercase() const
|
||||||
{
|
{
|
||||||
if (!m_length)
|
if (!m_length)
|
||||||
return const_cast<StringImpl*>(this);
|
return const_cast<StringImpl*>(this);
|
||||||
|
@ -129,7 +129,7 @@ RetainPtr<StringImpl> StringImpl::toUppercase() const
|
||||||
|
|
||||||
slowPath:
|
slowPath:
|
||||||
char* buffer;
|
char* buffer;
|
||||||
auto uppercased = createUninitialized(m_length, buffer);
|
auto uppercased = create_uninitialized(m_length, buffer);
|
||||||
if (!uppercased)
|
if (!uppercased)
|
||||||
return nullptr;
|
return nullptr;
|
||||||
for (size_t i = 0; i < m_length; ++i)
|
for (size_t i = 0; i < m_length; ++i)
|
||||||
|
@ -138,7 +138,7 @@ slowPath:
|
||||||
return uppercased;
|
return uppercased;
|
||||||
}
|
}
|
||||||
|
|
||||||
void StringImpl::computeHash() const
|
void StringImpl::compute_hash() const
|
||||||
{
|
{
|
||||||
if (!length()) {
|
if (!length()) {
|
||||||
m_hash = 0;
|
m_hash = 0;
|
||||||
|
|
|
@ -10,14 +10,14 @@ enum ShouldChomp { NoChomp, Chomp };
|
||||||
|
|
||||||
class StringImpl : public Retainable<StringImpl> {
|
class StringImpl : public Retainable<StringImpl> {
|
||||||
public:
|
public:
|
||||||
static RetainPtr<StringImpl> createUninitialized(size_t length, char*& buffer);
|
static RetainPtr<StringImpl> create_uninitialized(size_t length, char*& buffer);
|
||||||
static RetainPtr<StringImpl> create(const char* cstring, ShouldChomp = NoChomp);
|
static RetainPtr<StringImpl> create(const char* cstring, ShouldChomp = NoChomp);
|
||||||
static RetainPtr<StringImpl> create(const char* cstring, size_t length, ShouldChomp = NoChomp);
|
static RetainPtr<StringImpl> create(const char* cstring, size_t length, ShouldChomp = NoChomp);
|
||||||
RetainPtr<StringImpl> toLowercase() const;
|
RetainPtr<StringImpl> to_lowercase() const;
|
||||||
RetainPtr<StringImpl> toUppercase() const;
|
RetainPtr<StringImpl> to_uppercase() const;
|
||||||
|
|
||||||
static StringImpl& theEmptyStringImpl();
|
static StringImpl& the_empty_stringimpl();
|
||||||
static void initializeGlobals();
|
static void initialize_globals();
|
||||||
|
|
||||||
~StringImpl();
|
~StringImpl();
|
||||||
|
|
||||||
|
@ -28,7 +28,7 @@ public:
|
||||||
unsigned hash() const
|
unsigned hash() const
|
||||||
{
|
{
|
||||||
if (!m_hasHash)
|
if (!m_hasHash)
|
||||||
computeHash();
|
compute_hash();
|
||||||
return m_hash;
|
return m_hash;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -37,15 +37,15 @@ private:
|
||||||
explicit StringImpl(ConstructTheEmptyStringImplTag) : m_characters("") { }
|
explicit StringImpl(ConstructTheEmptyStringImplTag) : m_characters("") { }
|
||||||
|
|
||||||
enum ConstructWithInlineBufferTag { ConstructWithInlineBuffer };
|
enum ConstructWithInlineBufferTag { ConstructWithInlineBuffer };
|
||||||
explicit StringImpl(ConstructWithInlineBufferTag, size_t length) : m_length(length), m_characters(m_inlineBuffer) { }
|
explicit StringImpl(ConstructWithInlineBufferTag, size_t length) : m_length(length), m_characters(m_inline_buffer) { }
|
||||||
|
|
||||||
void computeHash() const;
|
void compute_hash() const;
|
||||||
|
|
||||||
size_t m_length { 0 };
|
size_t m_length { 0 };
|
||||||
mutable bool m_hasHash { false };
|
mutable bool m_hasHash { false };
|
||||||
const char* m_characters { nullptr };
|
const char* m_characters { nullptr };
|
||||||
mutable unsigned m_hash { 0 };
|
mutable unsigned m_hash { 0 };
|
||||||
char m_inlineBuffer[0];
|
char m_inline_buffer[0];
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -109,7 +109,7 @@ public:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool isEmpty() const { return size() == 0; }
|
bool is_empty() const { return size() == 0; }
|
||||||
size_t size() const { return m_impl ? m_impl->size() : 0; }
|
size_t size() const { return m_impl ? m_impl->size() : 0; }
|
||||||
size_t capacity() const { return m_impl ? m_impl->capacity() : 0; }
|
size_t capacity() const { return m_impl ? m_impl->capacity() : 0; }
|
||||||
|
|
||||||
|
@ -130,7 +130,7 @@ public:
|
||||||
|
|
||||||
T takeLast()
|
T takeLast()
|
||||||
{
|
{
|
||||||
ASSERT(!isEmpty());
|
ASSERT(!is_empty());
|
||||||
T value = move(last());
|
T value = move(last());
|
||||||
last().~T();
|
last().~T();
|
||||||
--m_impl->m_size;
|
--m_impl->m_size;
|
||||||
|
|
|
@ -29,7 +29,7 @@ public:
|
||||||
T& operator*() { return *ptr(); }
|
T& operator*() { return *ptr(); }
|
||||||
const T& operator*() const { return *ptr(); }
|
const T& operator*() const { return *ptr(); }
|
||||||
|
|
||||||
bool isNull() const { return !m_link || !m_link->ptr(); }
|
bool is_null() const { return !m_link || !m_link->ptr(); }
|
||||||
void clear() { m_link = nullptr; }
|
void clear() { m_link = nullptr; }
|
||||||
|
|
||||||
WeakLink<T>* leakLink() { return m_link.leakRef(); }
|
WeakLink<T>* leakLink() { return m_link.leakRef(); }
|
||||||
|
|
14
AK/test.cpp
14
AK/test.cpp
|
@ -20,7 +20,7 @@ void log_unlocked() { }
|
||||||
|
|
||||||
int main(int c, char** v)
|
int main(int c, char** v)
|
||||||
{
|
{
|
||||||
StringImpl::initializeGlobals();
|
StringImpl::initialize_globals();
|
||||||
|
|
||||||
{
|
{
|
||||||
SpinLock lock;
|
SpinLock lock;
|
||||||
|
@ -32,7 +32,7 @@ int main(int c, char** v)
|
||||||
if (c == 2)
|
if (c == 2)
|
||||||
testpath = v[1];
|
testpath = v[1];
|
||||||
FileSystemPath p(testpath);
|
FileSystemPath p(testpath);
|
||||||
if (p.string().isNull())
|
if (p.string().is_null())
|
||||||
printf("canonicalized path is null\n");
|
printf("canonicalized path is null\n");
|
||||||
else
|
else
|
||||||
printf("%s\n", p.string().characters());
|
printf("%s\n", p.string().characters());
|
||||||
|
@ -108,14 +108,14 @@ int main(int c, char** v)
|
||||||
String empty = "";
|
String empty = "";
|
||||||
|
|
||||||
char* buffer;
|
char* buffer;
|
||||||
auto test = StringImpl::createUninitialized(3, buffer);
|
auto test = StringImpl::create_uninitialized(3, buffer);
|
||||||
auto hello = String("hello");
|
auto hello = String("hello");
|
||||||
auto Hello = String("Hello");
|
auto Hello = String("Hello");
|
||||||
|
|
||||||
printf("hello: '%s'\n", hello.characters());
|
printf("hello: '%s'\n", hello.characters());
|
||||||
printf("Hello: '%s'\n", Hello.characters());
|
printf("Hello: '%s'\n", Hello.characters());
|
||||||
printf("'Hello'.lower(): '%s'\n", Hello.toLowercase().characters());
|
printf("'Hello'.lower(): '%s'\n", Hello.to_lowercase().characters());
|
||||||
printf("'hello'.upper(): '%s'\n", Hello.toUppercase().characters());
|
printf("'hello'.upper(): '%s'\n", Hello.to_uppercase().characters());
|
||||||
|
|
||||||
Vector<String> strings;
|
Vector<String> strings;
|
||||||
strings.append("a");
|
strings.append("a");
|
||||||
|
@ -188,7 +188,7 @@ int main(int c, char** v)
|
||||||
list.append(3);
|
list.append(3);
|
||||||
list.append(6);
|
list.append(6);
|
||||||
list.append(9);
|
list.append(9);
|
||||||
ASSERT(!list.isEmpty());
|
ASSERT(!list.is_empty());
|
||||||
ASSERT(list.first() == 3);
|
ASSERT(list.first() == 3);
|
||||||
ASSERT(list.last() == 9);
|
ASSERT(list.last() == 9);
|
||||||
|
|
||||||
|
@ -213,7 +213,7 @@ int main(int c, char** v)
|
||||||
printf("not found\n");
|
printf("not found\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
auto charbuf = Buffer<char>::createUninitialized(1024);
|
auto charbuf = Buffer<char>::create_uninitialized(1024);
|
||||||
printf("charbuf.size() = %zu\n", charbuf->size());
|
printf("charbuf.size() = %zu\n", charbuf->size());
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
|
@ -16,7 +16,7 @@ ssize_t DoubleBuffer::write(const byte* data, size_t size)
|
||||||
|
|
||||||
ssize_t DoubleBuffer::read(byte* data, size_t size)
|
ssize_t DoubleBuffer::read(byte* data, size_t size)
|
||||||
{
|
{
|
||||||
if (m_read_buffer_index >= m_read_buffer->size() && !m_write_buffer->isEmpty())
|
if (m_read_buffer_index >= m_read_buffer->size() && !m_write_buffer->is_empty())
|
||||||
flip();
|
flip();
|
||||||
if (m_read_buffer_index >= m_read_buffer->size())
|
if (m_read_buffer_index >= m_read_buffer->size())
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -14,7 +14,7 @@ public:
|
||||||
ssize_t write(const byte*, size_t);
|
ssize_t write(const byte*, size_t);
|
||||||
ssize_t read(byte*, size_t);
|
ssize_t read(byte*, size_t);
|
||||||
|
|
||||||
bool is_empty() const { return m_read_buffer_index >= m_read_buffer->size() && m_write_buffer->isEmpty(); }
|
bool is_empty() const { return m_read_buffer_index >= m_read_buffer->size() && m_write_buffer->is_empty(); }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void flip();
|
void flip();
|
||||||
|
|
|
@ -132,8 +132,8 @@ void IDEDiskDevice::initialize()
|
||||||
enable_irq();
|
enable_irq();
|
||||||
wait_for_irq();
|
wait_for_irq();
|
||||||
|
|
||||||
ByteBuffer wbuf = ByteBuffer::createUninitialized(512);
|
ByteBuffer wbuf = ByteBuffer::create_uninitialized(512);
|
||||||
ByteBuffer bbuf = ByteBuffer::createUninitialized(512);
|
ByteBuffer bbuf = ByteBuffer::create_uninitialized(512);
|
||||||
byte* b = bbuf.pointer();
|
byte* b = bbuf.pointer();
|
||||||
word* w = (word*)wbuf.pointer();
|
word* w = (word*)wbuf.pointer();
|
||||||
const word* wbufbase = (word*)wbuf.pointer();
|
const word* wbufbase = (word*)wbuf.pointer();
|
||||||
|
|
|
@ -32,7 +32,7 @@ ByteBuffer procfs$pid_fds(Process& process)
|
||||||
{
|
{
|
||||||
ProcessInspectionHandle handle(process);
|
ProcessInspectionHandle handle(process);
|
||||||
char* buffer;
|
char* buffer;
|
||||||
auto stringImpl = StringImpl::createUninitialized(process.number_of_open_file_descriptors() * 80, buffer);
|
auto stringImpl = StringImpl::create_uninitialized(process.number_of_open_file_descriptors() * 80, buffer);
|
||||||
memset(buffer, 0, stringImpl->length());
|
memset(buffer, 0, stringImpl->length());
|
||||||
char* ptr = buffer;
|
char* ptr = buffer;
|
||||||
for (size_t i = 0; i < process.max_open_file_descriptors(); ++i) {
|
for (size_t i = 0; i < process.max_open_file_descriptors(); ++i) {
|
||||||
|
@ -49,7 +49,7 @@ ByteBuffer procfs$pid_vm(Process& process)
|
||||||
{
|
{
|
||||||
ProcessInspectionHandle handle(process);
|
ProcessInspectionHandle handle(process);
|
||||||
char* buffer;
|
char* buffer;
|
||||||
auto stringImpl = StringImpl::createUninitialized(80 + process.regionCount() * 160 + 4096, buffer);
|
auto stringImpl = StringImpl::create_uninitialized(80 + process.regionCount() * 160 + 4096, buffer);
|
||||||
memset(buffer, 0, stringImpl->length());
|
memset(buffer, 0, stringImpl->length());
|
||||||
char* ptr = buffer;
|
char* ptr = buffer;
|
||||||
ptr += ksprintf(ptr, "BEGIN END SIZE COMMIT NAME\n");
|
ptr += ksprintf(ptr, "BEGIN END SIZE COMMIT NAME\n");
|
||||||
|
@ -69,7 +69,7 @@ ByteBuffer procfs$pid_vmo(Process& process)
|
||||||
{
|
{
|
||||||
ProcessInspectionHandle handle(process);
|
ProcessInspectionHandle handle(process);
|
||||||
char* buffer;
|
char* buffer;
|
||||||
auto stringImpl = StringImpl::createUninitialized(80 + process.regionCount() * 160 + 4096, buffer);
|
auto stringImpl = StringImpl::create_uninitialized(80 + process.regionCount() * 160 + 4096, buffer);
|
||||||
memset(buffer, 0, stringImpl->length());
|
memset(buffer, 0, stringImpl->length());
|
||||||
char* ptr = buffer;
|
char* ptr = buffer;
|
||||||
ptr += ksprintf(ptr, "BEGIN END SIZE NAME\n");
|
ptr += ksprintf(ptr, "BEGIN END SIZE NAME\n");
|
||||||
|
@ -118,7 +118,7 @@ ByteBuffer procfs$pid_stack(Process& process)
|
||||||
for (auto& symbol : recognizedSymbols) {
|
for (auto& symbol : recognizedSymbols) {
|
||||||
bytesNeeded += symbol.ksym->name.length() + 8 + 16;
|
bytesNeeded += symbol.ksym->name.length() + 8 + 16;
|
||||||
}
|
}
|
||||||
auto buffer = ByteBuffer::createUninitialized(bytesNeeded);
|
auto buffer = ByteBuffer::create_uninitialized(bytesNeeded);
|
||||||
char* bufptr = (char*)buffer.pointer();
|
char* bufptr = (char*)buffer.pointer();
|
||||||
|
|
||||||
for (auto& symbol : recognizedSymbols) {
|
for (auto& symbol : recognizedSymbols) {
|
||||||
|
@ -134,7 +134,7 @@ ByteBuffer procfs$pid_regs(Process& process)
|
||||||
{
|
{
|
||||||
ProcessInspectionHandle handle(process);
|
ProcessInspectionHandle handle(process);
|
||||||
auto& tss = process.tss();
|
auto& tss = process.tss();
|
||||||
auto buffer = ByteBuffer::createUninitialized(1024);
|
auto buffer = ByteBuffer::create_uninitialized(1024);
|
||||||
char* ptr = (char*)buffer.pointer();
|
char* ptr = (char*)buffer.pointer();
|
||||||
ptr += ksprintf(ptr, "eax: %x\n", tss.eax);
|
ptr += ksprintf(ptr, "eax: %x\n", tss.eax);
|
||||||
ptr += ksprintf(ptr, "ebx: %x\n", tss.ebx);
|
ptr += ksprintf(ptr, "ebx: %x\n", tss.ebx);
|
||||||
|
@ -156,7 +156,7 @@ ByteBuffer procfs$pid_exe(Process& process)
|
||||||
ProcessInspectionHandle handle(process);
|
ProcessInspectionHandle handle(process);
|
||||||
auto inode = process.executable_inode();
|
auto inode = process.executable_inode();
|
||||||
ASSERT(inode);
|
ASSERT(inode);
|
||||||
return VFS::the().absolute_path(*inode).toByteBuffer();
|
return VFS::the().absolute_path(*inode).to_byte_buffer();
|
||||||
}
|
}
|
||||||
|
|
||||||
ByteBuffer procfs$pid_cwd(Process& process)
|
ByteBuffer procfs$pid_cwd(Process& process)
|
||||||
|
@ -164,7 +164,7 @@ ByteBuffer procfs$pid_cwd(Process& process)
|
||||||
ProcessInspectionHandle handle(process);
|
ProcessInspectionHandle handle(process);
|
||||||
auto inode = process.cwd_inode();
|
auto inode = process.cwd_inode();
|
||||||
ASSERT(inode);
|
ASSERT(inode);
|
||||||
return VFS::the().absolute_path(*inode).toByteBuffer();
|
return VFS::the().absolute_path(*inode).to_byte_buffer();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ProcFS::add_process(Process& process)
|
void ProcFS::add_process(Process& process)
|
||||||
|
@ -199,7 +199,7 @@ ByteBuffer procfs$mm()
|
||||||
{
|
{
|
||||||
// FIXME: Implement
|
// FIXME: Implement
|
||||||
InterruptDisabler disabler;
|
InterruptDisabler disabler;
|
||||||
auto buffer = ByteBuffer::createUninitialized(1024 + 80 * MM.m_vmos.size());
|
auto buffer = ByteBuffer::create_uninitialized(1024 + 80 * MM.m_vmos.size());
|
||||||
char* ptr = (char*)buffer.pointer();
|
char* ptr = (char*)buffer.pointer();
|
||||||
for (auto* vmo : MM.m_vmos) {
|
for (auto* vmo : MM.m_vmos) {
|
||||||
ptr += ksprintf(ptr, "VMO: %p %s(%u): p:%4u %s\n",
|
ptr += ksprintf(ptr, "VMO: %p %s(%u): p:%4u %s\n",
|
||||||
|
@ -219,7 +219,7 @@ ByteBuffer procfs$regions()
|
||||||
{
|
{
|
||||||
// FIXME: Implement
|
// FIXME: Implement
|
||||||
InterruptDisabler disabler;
|
InterruptDisabler disabler;
|
||||||
auto buffer = ByteBuffer::createUninitialized(1024 + 80 * MM.m_regions.size());
|
auto buffer = ByteBuffer::create_uninitialized(1024 + 80 * MM.m_regions.size());
|
||||||
char* ptr = (char*)buffer.pointer();
|
char* ptr = (char*)buffer.pointer();
|
||||||
for (auto* region : MM.m_regions) {
|
for (auto* region : MM.m_regions) {
|
||||||
ptr += ksprintf(ptr, "Region: %p VMO=%p %s\n",
|
ptr += ksprintf(ptr, "Region: %p VMO=%p %s\n",
|
||||||
|
@ -235,7 +235,7 @@ ByteBuffer procfs$regions()
|
||||||
ByteBuffer procfs$mounts()
|
ByteBuffer procfs$mounts()
|
||||||
{
|
{
|
||||||
InterruptDisabler disabler;
|
InterruptDisabler disabler;
|
||||||
auto buffer = ByteBuffer::createUninitialized(VFS::the().mount_count() * 80);
|
auto buffer = ByteBuffer::create_uninitialized(VFS::the().mount_count() * 80);
|
||||||
char* ptr = (char*)buffer.pointer();
|
char* ptr = (char*)buffer.pointer();
|
||||||
VFS::the().for_each_mount([&ptr] (auto& mount) {
|
VFS::the().for_each_mount([&ptr] (auto& mount) {
|
||||||
auto& fs = mount.guest_fs();
|
auto& fs = mount.guest_fs();
|
||||||
|
@ -251,7 +251,7 @@ ByteBuffer procfs$mounts()
|
||||||
|
|
||||||
ByteBuffer procfs$cpuinfo()
|
ByteBuffer procfs$cpuinfo()
|
||||||
{
|
{
|
||||||
auto buffer = ByteBuffer::createUninitialized(256);
|
auto buffer = ByteBuffer::create_uninitialized(256);
|
||||||
char* ptr = (char*)buffer.pointer();
|
char* ptr = (char*)buffer.pointer();
|
||||||
{
|
{
|
||||||
CPUID cpuid(0);
|
CPUID cpuid(0);
|
||||||
|
@ -316,7 +316,7 @@ ByteBuffer procfs$cpuinfo()
|
||||||
|
|
||||||
ByteBuffer procfs$kmalloc()
|
ByteBuffer procfs$kmalloc()
|
||||||
{
|
{
|
||||||
auto buffer = ByteBuffer::createUninitialized(256);
|
auto buffer = ByteBuffer::create_uninitialized(256);
|
||||||
char* ptr = (char*)buffer.pointer();
|
char* ptr = (char*)buffer.pointer();
|
||||||
ptr += ksprintf(ptr, "eternal: %u\npage-aligned: %u\nallocated: %u\nfree: %u\n", kmalloc_sum_eternal, sum_alloc, sum_free);
|
ptr += ksprintf(ptr, "eternal: %u\npage-aligned: %u\nallocated: %u\nfree: %u\n", kmalloc_sum_eternal, sum_alloc, sum_free);
|
||||||
buffer.trim(ptr - (char*)buffer.pointer());
|
buffer.trim(ptr - (char*)buffer.pointer());
|
||||||
|
@ -327,7 +327,7 @@ ByteBuffer procfs$summary()
|
||||||
{
|
{
|
||||||
InterruptDisabler disabler;
|
InterruptDisabler disabler;
|
||||||
auto processes = Process::allProcesses();
|
auto processes = Process::allProcesses();
|
||||||
auto buffer = ByteBuffer::createUninitialized(processes.size() * 256);
|
auto buffer = ByteBuffer::create_uninitialized(processes.size() * 256);
|
||||||
char* ptr = (char*)buffer.pointer();
|
char* ptr = (char*)buffer.pointer();
|
||||||
ptr += ksprintf(ptr, "PID TPG PGP SID OWNER STATE PPID NSCHED FDS TTY NAME\n");
|
ptr += ksprintf(ptr, "PID TPG PGP SID OWNER STATE PPID NSCHED FDS TTY NAME\n");
|
||||||
for (auto* process : processes) {
|
for (auto* process : processes) {
|
||||||
|
@ -352,7 +352,7 @@ ByteBuffer procfs$summary()
|
||||||
ByteBuffer procfs$vnodes()
|
ByteBuffer procfs$vnodes()
|
||||||
{
|
{
|
||||||
auto& vfs = VFS::the();
|
auto& vfs = VFS::the();
|
||||||
auto buffer = ByteBuffer::createUninitialized(vfs.m_max_vnode_count * 256);
|
auto buffer = ByteBuffer::create_uninitialized(vfs.m_max_vnode_count * 256);
|
||||||
char* ptr = (char*)buffer.pointer();
|
char* ptr = (char*)buffer.pointer();
|
||||||
for (size_t i = 0; i < vfs.m_max_vnode_count; ++i) {
|
for (size_t i = 0; i < vfs.m_max_vnode_count; ++i) {
|
||||||
auto& vnode = vfs.m_nodes[i];
|
auto& vnode = vfs.m_nodes[i];
|
||||||
|
@ -362,7 +362,7 @@ ByteBuffer procfs$vnodes()
|
||||||
String path;
|
String path;
|
||||||
if (vnode.core_inode())
|
if (vnode.core_inode())
|
||||||
path = vfs.absolute_path(*vnode.core_inode());
|
path = vfs.absolute_path(*vnode.core_inode());
|
||||||
if (path.isEmpty()) {
|
if (path.is_empty()) {
|
||||||
if (auto* dev = vnode.characterDevice()) {
|
if (auto* dev = vnode.characterDevice()) {
|
||||||
if (dev->is_tty())
|
if (dev->is_tty())
|
||||||
path = static_cast<const TTY*>(dev)->tty_name();
|
path = static_cast<const TTY*>(dev)->tty_name();
|
||||||
|
|
|
@ -39,7 +39,7 @@ static String& hostnameStorage(InterruptDisabler&)
|
||||||
static String getHostname()
|
static String getHostname()
|
||||||
{
|
{
|
||||||
InterruptDisabler disabler;
|
InterruptDisabler disabler;
|
||||||
return hostnameStorage(disabler).isolatedCopy();
|
return hostnameStorage(disabler).isolated_copy();
|
||||||
}
|
}
|
||||||
|
|
||||||
CoolGlobals* g_cool_globals;
|
CoolGlobals* g_cool_globals;
|
||||||
|
@ -59,7 +59,7 @@ Vector<Process*> Process::allProcesses()
|
||||||
{
|
{
|
||||||
InterruptDisabler disabler;
|
InterruptDisabler disabler;
|
||||||
Vector<Process*> processes;
|
Vector<Process*> processes;
|
||||||
processes.ensureCapacity(g_processes->sizeSlow());
|
processes.ensureCapacity(g_processes->size_slow());
|
||||||
for (auto* process = g_processes->head(); process; process = process->next())
|
for (auto* process = g_processes->head(); process; process = process->next())
|
||||||
processes.append(process);
|
processes.append(process);
|
||||||
return processes;
|
return processes;
|
||||||
|
@ -278,7 +278,7 @@ pid_t Process::sys$fork(RegisterDump& regs)
|
||||||
int Process::do_exec(const String& path, Vector<String>&& arguments, Vector<String>&& environment)
|
int Process::do_exec(const String& path, Vector<String>&& arguments, Vector<String>&& environment)
|
||||||
{
|
{
|
||||||
auto parts = path.split('/');
|
auto parts = path.split('/');
|
||||||
if (parts.isEmpty())
|
if (parts.is_empty())
|
||||||
return -ENOENT;
|
return -ENOENT;
|
||||||
|
|
||||||
int error;
|
int error;
|
||||||
|
@ -473,7 +473,7 @@ Process* Process::create_user_process(const String& path, uid_t uid, gid_t gid,
|
||||||
{
|
{
|
||||||
// FIXME: Don't split() the path twice (sys$spawn also does it...)
|
// FIXME: Don't split() the path twice (sys$spawn also does it...)
|
||||||
auto parts = path.split('/');
|
auto parts = path.split('/');
|
||||||
if (arguments.isEmpty()) {
|
if (arguments.is_empty()) {
|
||||||
arguments.append(parts.last());
|
arguments.append(parts.last());
|
||||||
}
|
}
|
||||||
RetainPtr<Vnode> cwd;
|
RetainPtr<Vnode> cwd;
|
||||||
|
@ -1239,7 +1239,7 @@ int Process::sys$getcwd(char* buffer, size_t size)
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
ASSERT(cwd_inode());
|
ASSERT(cwd_inode());
|
||||||
auto path = VFS::the().absolute_path(*cwd_inode());
|
auto path = VFS::the().absolute_path(*cwd_inode());
|
||||||
if (path.isNull())
|
if (path.is_null())
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
if (size < path.length() + 1)
|
if (size < path.length() + 1)
|
||||||
return -ERANGE;
|
return -ERANGE;
|
||||||
|
|
|
@ -123,7 +123,7 @@ bool Scheduler::pick_next()
|
||||||
auto* prevHead = g_processes->head();
|
auto* prevHead = g_processes->head();
|
||||||
for (;;) {
|
for (;;) {
|
||||||
// Move head to tail.
|
// Move head to tail.
|
||||||
g_processes->append(g_processes->removeHead());
|
g_processes->append(g_processes->remove_head());
|
||||||
auto* process = g_processes->head();
|
auto* process = g_processes->head();
|
||||||
|
|
||||||
if (process->state() == Process::Runnable || process->state() == Process::Running) {
|
if (process->state() == Process::Runnable || process->state() == Process::Running) {
|
||||||
|
|
|
@ -28,7 +28,7 @@ static word s_gdtLength;
|
||||||
word gdt_alloc_entry()
|
word gdt_alloc_entry()
|
||||||
{
|
{
|
||||||
ASSERT(s_gdt_freelist);
|
ASSERT(s_gdt_freelist);
|
||||||
ASSERT(!s_gdt_freelist->isEmpty());
|
ASSERT(!s_gdt_freelist->is_empty());
|
||||||
return s_gdt_freelist->takeLast();
|
return s_gdt_freelist->takeLast();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -87,7 +87,7 @@ static void loadKsyms(const ByteBuffer& buffer)
|
||||||
|
|
||||||
kprintf("Loading ksyms: \033[s");
|
kprintf("Loading ksyms: \033[s");
|
||||||
|
|
||||||
while (bufptr < buffer.endPointer()) {
|
while (bufptr < buffer.end_pointer()) {
|
||||||
for (unsigned i = 0; i < 8; ++i)
|
for (unsigned i = 0; i < 8; ++i)
|
||||||
address = (address << 4) | parseHexDigit(*(bufptr++));
|
address = (address << 4) | parseHexDigit(*(bufptr++));
|
||||||
bufptr += 3;
|
bufptr += 3;
|
||||||
|
@ -276,7 +276,7 @@ void init()
|
||||||
MemoryManager::initialize();
|
MemoryManager::initialize();
|
||||||
|
|
||||||
VFS::initialize_globals();
|
VFS::initialize_globals();
|
||||||
StringImpl::initializeGlobals();
|
StringImpl::initialize_globals();
|
||||||
|
|
||||||
PIT::initialize();
|
PIT::initialize();
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,7 @@ extern "C" int _start()
|
||||||
__stdio_init();
|
__stdio_init();
|
||||||
__malloc_init();
|
__malloc_init();
|
||||||
|
|
||||||
StringImpl::initializeGlobals();
|
StringImpl::initialize_globals();
|
||||||
|
|
||||||
int status = 254;
|
int status = 254;
|
||||||
int argc;
|
int argc;
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
static unsigned parseUInt(const String& str, bool& ok)
|
static unsigned parseUInt(const String& str, bool& ok)
|
||||||
{
|
{
|
||||||
if (str.isEmpty()) {
|
if (str.is_empty()) {
|
||||||
ok = false;
|
ok = false;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -55,7 +55,7 @@ ByteBuffer DiskBackedFS::readBlock(unsigned index) const
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
auto buffer = ByteBuffer::createUninitialized(blockSize());
|
auto buffer = ByteBuffer::create_uninitialized(blockSize());
|
||||||
//kprintf("created block buffer with size %u\n", blockSize());
|
//kprintf("created block buffer with size %u\n", blockSize());
|
||||||
DiskOffset baseOffset = static_cast<DiskOffset>(index) * static_cast<DiskOffset>(blockSize());
|
DiskOffset baseOffset = static_cast<DiskOffset>(index) * static_cast<DiskOffset>(blockSize());
|
||||||
auto* bufferPointer = buffer.pointer();
|
auto* bufferPointer = buffer.pointer();
|
||||||
|
@ -81,7 +81,7 @@ ByteBuffer DiskBackedFS::readBlocks(unsigned index, unsigned count) const
|
||||||
return nullptr;
|
return nullptr;
|
||||||
if (count == 1)
|
if (count == 1)
|
||||||
return readBlock(index);
|
return readBlock(index);
|
||||||
auto blocks = ByteBuffer::createUninitialized(count * blockSize());
|
auto blocks = ByteBuffer::create_uninitialized(count * blockSize());
|
||||||
byte* out = blocks.pointer();
|
byte* out = blocks.pointer();
|
||||||
|
|
||||||
for (unsigned i = 0; i < count; ++i) {
|
for (unsigned i = 0; i < count; ++i) {
|
||||||
|
|
|
@ -27,9 +27,9 @@ Ext2FS::~Ext2FS()
|
||||||
|
|
||||||
ByteBuffer Ext2FS::read_super_block() const
|
ByteBuffer Ext2FS::read_super_block() const
|
||||||
{
|
{
|
||||||
auto buffer = ByteBuffer::createUninitialized(1024);
|
auto buffer = ByteBuffer::create_uninitialized(1024);
|
||||||
device().read_block(2, buffer.pointer());
|
device().read_block(2, buffer.pointer());
|
||||||
device().read_block(3, buffer.offsetPointer(512));
|
device().read_block(3, buffer.offset_pointer(512));
|
||||||
return buffer;
|
return buffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -172,7 +172,7 @@ OwnPtr<ext2_inode> Ext2FS::lookup_ext2_inode(unsigned inode) const
|
||||||
return { };
|
return { };
|
||||||
|
|
||||||
auto* e2inode = reinterpret_cast<ext2_inode*>(kmalloc(inode_size()));
|
auto* e2inode = reinterpret_cast<ext2_inode*>(kmalloc(inode_size()));
|
||||||
memcpy(e2inode, reinterpret_cast<ext2_inode*>(block.offsetPointer(offset)), inode_size());
|
memcpy(e2inode, reinterpret_cast<ext2_inode*>(block.offset_pointer(offset)), inode_size());
|
||||||
#ifdef EXT2_DEBUG
|
#ifdef EXT2_DEBUG
|
||||||
dumpExt2Inode(*e2inode);
|
dumpExt2Inode(*e2inode);
|
||||||
#endif
|
#endif
|
||||||
|
@ -357,14 +357,14 @@ ssize_t Ext2FSInode::read_bytes(Unix::off_t offset, size_t count, byte* buffer,
|
||||||
return nread;
|
return nread;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_block_list.isEmpty()) {
|
if (m_block_list.is_empty()) {
|
||||||
auto block_list = fs().block_list_for_inode(m_raw_inode);
|
auto block_list = fs().block_list_for_inode(m_raw_inode);
|
||||||
LOCKER(m_lock);
|
LOCKER(m_lock);
|
||||||
if (m_block_list.size() != block_list.size())
|
if (m_block_list.size() != block_list.size())
|
||||||
m_block_list = move(block_list);
|
m_block_list = move(block_list);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_block_list.isEmpty()) {
|
if (m_block_list.is_empty()) {
|
||||||
kprintf("ext2fs: read_bytes: empty block list for inode %u\n", index());
|
kprintf("ext2fs: read_bytes: empty block list for inode %u\n", index());
|
||||||
return -EIO;
|
return -EIO;
|
||||||
}
|
}
|
||||||
|
@ -436,7 +436,7 @@ ssize_t Ext2FS::read_inode_bytes(InodeIdentifier inode, Unix::off_t offset, size
|
||||||
// FIXME: It's grossly inefficient to fetch the blocklist on every call to readInodeBytes().
|
// FIXME: It's grossly inefficient to fetch the blocklist on every call to readInodeBytes().
|
||||||
// It needs to be cached!
|
// It needs to be cached!
|
||||||
auto list = block_list_for_inode(*e2inode);
|
auto list = block_list_for_inode(*e2inode);
|
||||||
if (list.isEmpty()) {
|
if (list.is_empty()) {
|
||||||
kprintf("ext2fs: readInodeBytes: empty block list for inode %u\n", inode.index());
|
kprintf("ext2fs: readInodeBytes: empty block list for inode %u\n", inode.index());
|
||||||
return -EIO;
|
return -EIO;
|
||||||
}
|
}
|
||||||
|
@ -500,7 +500,7 @@ bool Ext2FS::write_inode(InodeIdentifier inode, const ByteBuffer& data)
|
||||||
ASSERT(blocksNeededBefore == blocksNeededAfter);
|
ASSERT(blocksNeededBefore == blocksNeededAfter);
|
||||||
|
|
||||||
auto list = block_list_for_inode(*e2inode);
|
auto list = block_list_for_inode(*e2inode);
|
||||||
if (list.isEmpty()) {
|
if (list.is_empty()) {
|
||||||
kprintf("ext2fs: writeInode: empty block list for inode %u\n", inode.index());
|
kprintf("ext2fs: writeInode: empty block list for inode %u\n", inode.index());
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -527,7 +527,7 @@ bool Ext2FSInode::traverse_as_directory(Function<bool(const FS::DirectoryEntry&)
|
||||||
ASSERT(buffer);
|
ASSERT(buffer);
|
||||||
auto* entry = reinterpret_cast<ext2_dir_entry_2*>(buffer.pointer());
|
auto* entry = reinterpret_cast<ext2_dir_entry_2*>(buffer.pointer());
|
||||||
|
|
||||||
while (entry < buffer.endPointer()) {
|
while (entry < buffer.end_pointer()) {
|
||||||
if (entry->inode != 0) {
|
if (entry->inode != 0) {
|
||||||
#ifdef EXT2_DEBUG
|
#ifdef EXT2_DEBUG
|
||||||
kprintf("Ext2Inode::traverse_as_directory: %u, name_len: %u, rec_len: %u, file_type: %u, name: %s\n", entry->inode, entry->name_len, entry->rec_len, entry->file_type, namebuf);
|
kprintf("Ext2Inode::traverse_as_directory: %u, name_len: %u, rec_len: %u, file_type: %u, name: %s\n", entry->inode, entry->name_len, entry->rec_len, entry->file_type, namebuf);
|
||||||
|
@ -586,7 +586,7 @@ bool Ext2FS::write_directory_inode(unsigned directoryInode, Vector<DirectoryEntr
|
||||||
|
|
||||||
dbgprintf("Ext2FS: directory size: %u (occupied: %u)\n", directorySize, occupiedSize);
|
dbgprintf("Ext2FS: directory size: %u (occupied: %u)\n", directorySize, occupiedSize);
|
||||||
|
|
||||||
auto directoryData = ByteBuffer::createUninitialized(occupiedSize);
|
auto directoryData = ByteBuffer::create_uninitialized(occupiedSize);
|
||||||
|
|
||||||
BufferStream stream(directoryData);
|
BufferStream stream(directoryData);
|
||||||
for (unsigned i = 0; i < entries.size(); ++i) {
|
for (unsigned i = 0; i < entries.size(); ++i) {
|
||||||
|
@ -752,7 +752,7 @@ bool Ext2FS::write_ext2_inode(unsigned inode, const ext2_inode& e2inode)
|
||||||
cached_inode.m_lookup_cache.clear();
|
cached_inode.m_lookup_cache.clear();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
memcpy(reinterpret_cast<ext2_inode*>(block.offsetPointer(offset)), &e2inode, inode_size());
|
memcpy(reinterpret_cast<ext2_inode*>(block.offset_pointer(offset)), &e2inode, inode_size());
|
||||||
writeBlock(blockIndex, block);
|
writeBlock(blockIndex, block);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -1000,7 +1000,7 @@ InodeIdentifier Ext2FS::create_inode(InodeIdentifier parentInode, const String&
|
||||||
}
|
}
|
||||||
|
|
||||||
auto blocks = allocate_blocks(group_index_from_inode(inode), ceilDiv(size, blockSize()));
|
auto blocks = allocate_blocks(group_index_from_inode(inode), ceilDiv(size, blockSize()));
|
||||||
if (blocks.isEmpty()) {
|
if (blocks.is_empty()) {
|
||||||
kprintf("Ext2FS: createInode: allocateBlocks failed\n");
|
kprintf("Ext2FS: createInode: allocateBlocks failed\n");
|
||||||
error = -ENOSPC;
|
error = -ENOSPC;
|
||||||
return { };
|
return { };
|
||||||
|
@ -1091,7 +1091,7 @@ InodeIdentifier Ext2FS::find_parent_of_inode(InodeIdentifier inode_id) const
|
||||||
|
|
||||||
InodeIdentifier foundParent;
|
InodeIdentifier foundParent;
|
||||||
for (auto& directory : directories_in_group) {
|
for (auto& directory : directories_in_group) {
|
||||||
if (!directory->reverse_lookup(inode->identifier()).isNull()) {
|
if (!directory->reverse_lookup(inode->identifier()).is_null()) {
|
||||||
foundParent = directory->identifier();
|
foundParent = directory->identifier();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1104,7 +1104,7 @@ void Ext2FSInode::populate_lookup_cache()
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
LOCKER(m_lock);
|
LOCKER(m_lock);
|
||||||
if (!m_lookup_cache.isEmpty())
|
if (!m_lookup_cache.is_empty())
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
HashMap<String, unsigned> children;
|
HashMap<String, unsigned> children;
|
||||||
|
@ -1115,7 +1115,7 @@ void Ext2FSInode::populate_lookup_cache()
|
||||||
});
|
});
|
||||||
|
|
||||||
LOCKER(m_lock);
|
LOCKER(m_lock);
|
||||||
if (!m_lookup_cache.isEmpty())
|
if (!m_lookup_cache.is_empty())
|
||||||
return;
|
return;
|
||||||
m_lookup_cache = move(children);
|
m_lookup_cache = move(children);
|
||||||
}
|
}
|
||||||
|
|
|
@ -188,7 +188,7 @@ ByteBuffer FileDescriptor::read_entire_file()
|
||||||
ASSERT(!is_fifo());
|
ASSERT(!is_fifo());
|
||||||
|
|
||||||
if (m_vnode->isCharacterDevice()) {
|
if (m_vnode->isCharacterDevice()) {
|
||||||
auto buffer = ByteBuffer::createUninitialized(1024);
|
auto buffer = ByteBuffer::create_uninitialized(1024);
|
||||||
ssize_t nread = m_vnode->characterDevice()->read(buffer.pointer(), buffer.size());
|
ssize_t nread = m_vnode->characterDevice()->read(buffer.pointer(), buffer.size());
|
||||||
buffer.trim(nread);
|
buffer.trim(nread);
|
||||||
return buffer;
|
return buffer;
|
||||||
|
@ -214,7 +214,7 @@ ssize_t FileDescriptor::get_dir_entries(byte* buffer, size_t size)
|
||||||
return -ENOTDIR;
|
return -ENOTDIR;
|
||||||
|
|
||||||
// FIXME: Compute the actual size needed.
|
// FIXME: Compute the actual size needed.
|
||||||
auto tempBuffer = ByteBuffer::createUninitialized(2048);
|
auto tempBuffer = ByteBuffer::create_uninitialized(2048);
|
||||||
BufferStream stream(tempBuffer);
|
BufferStream stream(tempBuffer);
|
||||||
m_vnode->vfs()->traverse_directory_inode(*m_vnode->core_inode(), [&stream] (auto& entry) {
|
m_vnode->vfs()->traverse_directory_inode(*m_vnode->core_inode(), [&stream] (auto& entry) {
|
||||||
stream << (dword)entry.inode.index();
|
stream << (dword)entry.inode.index();
|
||||||
|
|
|
@ -21,7 +21,7 @@ static HashTable<Inode*>& all_inodes()
|
||||||
return *s_inode_set;
|
return *s_inode_set;
|
||||||
}
|
}
|
||||||
|
|
||||||
void FS::initializeGlobals()
|
void FS::initialize_globals()
|
||||||
{
|
{
|
||||||
s_lastFileSystemID = 0;
|
s_lastFileSystemID = 0;
|
||||||
s_fs_map = nullptr;
|
s_fs_map = nullptr;
|
||||||
|
@ -52,7 +52,7 @@ ByteBuffer Inode::read_entire(FileDescriptor* descriptor)
|
||||||
return fs().read_entire_inode(identifier(), descriptor);
|
return fs().read_entire_inode(identifier(), descriptor);
|
||||||
/*
|
/*
|
||||||
size_t initial_size = metadata().size ? metadata().size : 4096;
|
size_t initial_size = metadata().size ? metadata().size : 4096;
|
||||||
auto contents = ByteBuffer::createUninitialized(initial_size);
|
auto contents = ByteBuffer::create_uninitialized(initial_size);
|
||||||
|
|
||||||
ssize_t nread;
|
ssize_t nread;
|
||||||
byte buffer[4096];
|
byte buffer[4096];
|
||||||
|
@ -90,7 +90,7 @@ ByteBuffer FS::read_entire_inode(InodeIdentifier inode, FileDescriptor* handle)
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t initialSize = metadata.size ? metadata.size : 4096;
|
size_t initialSize = metadata.size ? metadata.size : 4096;
|
||||||
auto contents = ByteBuffer::createUninitialized(initialSize);
|
auto contents = ByteBuffer::create_uninitialized(initialSize);
|
||||||
|
|
||||||
ssize_t nread;
|
ssize_t nread;
|
||||||
byte buffer[4096];
|
byte buffer[4096];
|
||||||
|
|
|
@ -21,7 +21,7 @@ class FileDescriptor;
|
||||||
|
|
||||||
class FS : public Retainable<FS> {
|
class FS : public Retainable<FS> {
|
||||||
public:
|
public:
|
||||||
static void initializeGlobals();
|
static void initialize_globals();
|
||||||
virtual ~FS();
|
virtual ~FS();
|
||||||
|
|
||||||
dword id() const { return m_fsid; }
|
dword id() const { return m_fsid; }
|
||||||
|
|
|
@ -22,7 +22,7 @@ VFS& VFS::the()
|
||||||
void VFS::initialize_globals()
|
void VFS::initialize_globals()
|
||||||
{
|
{
|
||||||
s_the = nullptr;
|
s_the = nullptr;
|
||||||
FS::initializeGlobals();
|
FS::initialize_globals();
|
||||||
}
|
}
|
||||||
|
|
||||||
VFS::VFS()
|
VFS::VFS()
|
||||||
|
@ -177,7 +177,7 @@ bool VFS::mount_root(RetainPtr<FS>&& fileSystem)
|
||||||
|
|
||||||
auto VFS::allocateNode() -> RetainPtr<Vnode>
|
auto VFS::allocateNode() -> RetainPtr<Vnode>
|
||||||
{
|
{
|
||||||
if (m_vnode_freelist.isEmpty()) {
|
if (m_vnode_freelist.is_empty()) {
|
||||||
kprintf("VFS: allocateNode has no nodes left\n");
|
kprintf("VFS: allocateNode has no nodes left\n");
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
@ -351,7 +351,7 @@ String VFS::absolute_path(Inode& core_inode)
|
||||||
ASSERT(parent_id.is_valid());
|
ASSERT(parent_id.is_valid());
|
||||||
inode = get_inode(parent_id);
|
inode = get_inode(parent_id);
|
||||||
}
|
}
|
||||||
if (lineage.isEmpty())
|
if (lineage.is_empty())
|
||||||
return "/";
|
return "/";
|
||||||
lineage.append(m_root_vnode->inode);
|
lineage.append(m_root_vnode->inode);
|
||||||
StringBuilder builder;
|
StringBuilder builder;
|
||||||
|
@ -369,7 +369,7 @@ String VFS::absolute_path(Inode& core_inode)
|
||||||
|
|
||||||
InodeIdentifier VFS::resolve_path(const String& path, InodeIdentifier base, int& error, int options, InodeIdentifier* deepest_dir)
|
InodeIdentifier VFS::resolve_path(const String& path, InodeIdentifier base, int& error, int options, InodeIdentifier* deepest_dir)
|
||||||
{
|
{
|
||||||
if (path.isEmpty()) {
|
if (path.is_empty()) {
|
||||||
error = -EINVAL;
|
error = -EINVAL;
|
||||||
return { };
|
return { };
|
||||||
}
|
}
|
||||||
|
@ -388,7 +388,7 @@ InodeIdentifier VFS::resolve_path(const String& path, InodeIdentifier base, int&
|
||||||
for (unsigned i = 0; i < parts.size(); ++i) {
|
for (unsigned i = 0; i < parts.size(); ++i) {
|
||||||
bool inode_was_root_at_head_of_loop = crumb_id.is_root_inode();
|
bool inode_was_root_at_head_of_loop = crumb_id.is_root_inode();
|
||||||
auto& part = parts[i];
|
auto& part = parts[i];
|
||||||
if (part.isEmpty())
|
if (part.is_empty())
|
||||||
break;
|
break;
|
||||||
auto metadata = crumb_id.metadata();
|
auto metadata = crumb_id.metadata();
|
||||||
if (!metadata.isValid()) {
|
if (!metadata.isValid()) {
|
||||||
|
|
|
@ -109,7 +109,7 @@ int main(int c, char** v)
|
||||||
String command = cmdbuf;
|
String command = cmdbuf;
|
||||||
auto parts = command.split(' ');
|
auto parts = command.split(' ');
|
||||||
|
|
||||||
if (parts.isEmpty())
|
if (parts.is_empty())
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
String cmd = parts[0];
|
String cmd = parts[0];
|
||||||
|
|
|
@ -61,7 +61,7 @@ void Button::paintEvent(PaintEvent&)
|
||||||
painter.drawLine({ 2, height() - 3 }, { width() - 2, height() - 3 }, shadowColor);
|
painter.drawLine({ 2, height() - 3 }, { width() - 2, height() - 3 }, shadowColor);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!caption().isEmpty()) {
|
if (!caption().is_empty()) {
|
||||||
auto textRect = rect();
|
auto textRect = rect();
|
||||||
if (m_beingPressed)
|
if (m_beingPressed)
|
||||||
textRect.moveBy(1, 1);
|
textRect.moveBy(1, 1);
|
||||||
|
|
|
@ -89,7 +89,7 @@ void CheckBox::paintEvent(PaintEvent&)
|
||||||
painter.fillRect(rect(), backgroundColor());
|
painter.fillRect(rect(), backgroundColor());
|
||||||
painter.drawBitmap(bitmapPosition, *bitmap, foregroundColor());
|
painter.drawBitmap(bitmapPosition, *bitmap, foregroundColor());
|
||||||
|
|
||||||
if (!caption().isEmpty()) {
|
if (!caption().is_empty()) {
|
||||||
painter.drawText(textRect, caption(), Painter::TextAlignment::TopLeft, foregroundColor());
|
painter.drawText(textRect, caption(), Painter::TextAlignment::TopLeft, foregroundColor());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,7 +23,7 @@ EventLoop& EventLoop::main()
|
||||||
int EventLoop::exec()
|
int EventLoop::exec()
|
||||||
{
|
{
|
||||||
for (;;) {
|
for (;;) {
|
||||||
if (m_queuedEvents.isEmpty())
|
if (m_queuedEvents.is_empty())
|
||||||
waitForEvent();
|
waitForEvent();
|
||||||
auto events = std::move(m_queuedEvents);
|
auto events = std::move(m_queuedEvents);
|
||||||
for (auto& queuedEvent : events) {
|
for (auto& queuedEvent : events) {
|
||||||
|
|
|
@ -23,7 +23,7 @@ void Label::paintEvent(PaintEvent&)
|
||||||
{
|
{
|
||||||
Painter painter(*this);
|
Painter painter(*this);
|
||||||
painter.fillRect({ 0, 0, width(), height() }, backgroundColor());
|
painter.fillRect({ 0, 0, width(), height() }, backgroundColor());
|
||||||
if (!text().isEmpty())
|
if (!text().is_empty())
|
||||||
painter.drawText({ 4, 4, width(), height() }, text(), Painter::TextAlignment::TopLeft, foregroundColor());
|
painter.drawText({ 4, 4, width(), height() }, text(), Painter::TextAlignment::TopLeft, foregroundColor());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,7 @@ public:
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
bool isEmpty() const
|
bool is_empty() const
|
||||||
{
|
{
|
||||||
return width() == 0 || height() == 0;
|
return width() == 0 || height() == 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@ public:
|
||||||
Size() { }
|
Size() { }
|
||||||
Size(int w, int h) : m_width(w), m_height(h) { }
|
Size(int w, int h) : m_width(w), m_height(h) { }
|
||||||
|
|
||||||
bool isEmpty() const { return !m_width || !m_height; }
|
bool is_empty() const { return !m_width || !m_height; }
|
||||||
|
|
||||||
int width() const { return m_width; }
|
int width() const { return m_width; }
|
||||||
int height() const { return m_height; }
|
int height() const { return m_height; }
|
||||||
|
|
|
@ -148,7 +148,7 @@ void TerminalWidget::onReceive(byte ch)
|
||||||
|
|
||||||
void TerminalWidget::keyDownEvent(KeyEvent& event)
|
void TerminalWidget::keyDownEvent(KeyEvent& event)
|
||||||
{
|
{
|
||||||
if (event.text().isEmpty())
|
if (event.text().is_empty())
|
||||||
return;
|
return;
|
||||||
write(g_fd, event.text().characters(), event.text().length());
|
write(g_fd, event.text().characters(), event.text().length());
|
||||||
}
|
}
|
||||||
|
|
|
@ -78,7 +78,7 @@ void TextBox::handleBackspace()
|
||||||
}
|
}
|
||||||
|
|
||||||
char* buffer;
|
char* buffer;
|
||||||
auto newText = StringImpl::createUninitialized(m_text.length() - 1, buffer);
|
auto newText = StringImpl::create_uninitialized(m_text.length() - 1, buffer);
|
||||||
|
|
||||||
memcpy(buffer, m_text.characters(), m_cursorPosition - 1);
|
memcpy(buffer, m_text.characters(), m_cursorPosition - 1);
|
||||||
memcpy(buffer + m_cursorPosition - 1, m_text.characters() + m_cursorPosition, m_text.length() - (m_cursorPosition - 1));
|
memcpy(buffer + m_cursorPosition - 1, m_text.characters() + m_cursorPosition, m_text.length() - (m_cursorPosition - 1));
|
||||||
|
@ -111,11 +111,11 @@ void TextBox::keyDownEvent(KeyEvent& event)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!event.text().isEmpty()) {
|
if (!event.text().is_empty()) {
|
||||||
ASSERT(event.text().length() == 1);
|
ASSERT(event.text().length() == 1);
|
||||||
|
|
||||||
char* buffer;
|
char* buffer;
|
||||||
auto newText = StringImpl::createUninitialized(m_text.length() + 1, buffer);
|
auto newText = StringImpl::create_uninitialized(m_text.length() + 1, buffer);
|
||||||
|
|
||||||
memcpy(buffer, m_text.characters(), m_cursorPosition);
|
memcpy(buffer, m_text.characters(), m_cursorPosition);
|
||||||
buffer[m_cursorPosition] = event.text()[0];
|
buffer[m_cursorPosition] = event.text()[0];
|
||||||
|
|
|
@ -78,7 +78,7 @@ void Window::event(Event& event)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (m_mainWidget) {
|
if (m_mainWidget) {
|
||||||
if (pe.rect().isEmpty())
|
if (pe.rect().is_empty())
|
||||||
return m_mainWidget->event(*make<PaintEvent>(m_mainWidget->rect()));
|
return m_mainWidget->event(*make<PaintEvent>(m_mainWidget->rect()));
|
||||||
else
|
else
|
||||||
return m_mainWidget->event(event);
|
return m_mainWidget->event(event);
|
||||||
|
|
|
@ -94,7 +94,7 @@ void WindowManager::paintWindowFrame(Window& window)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
if (!m_lastDragRect.isEmpty()) {
|
if (!m_lastDragRect.is_empty()) {
|
||||||
p.xorRect(m_lastDragRect, Color::Red);
|
p.xorRect(m_lastDragRect, Color::Red);
|
||||||
m_lastDragRect = Rect();
|
m_lastDragRect = Rect();
|
||||||
}
|
}
|
||||||
|
@ -137,7 +137,7 @@ void WindowManager::removeWindow(Window& window)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
m_windows.remove(&window);
|
m_windows.remove(&window);
|
||||||
if (!activeWindow() && !m_windows.isEmpty())
|
if (!activeWindow() && !m_windows.is_empty())
|
||||||
setActiveWindow(*m_windows.begin());
|
setActiveWindow(*m_windows.begin());
|
||||||
|
|
||||||
repaint();
|
repaint();
|
||||||
|
@ -245,7 +245,7 @@ void WindowManager::processMouseEvent(MouseEvent& event)
|
||||||
void WindowManager::handlePaintEvent(PaintEvent& event)
|
void WindowManager::handlePaintEvent(PaintEvent& event)
|
||||||
{
|
{
|
||||||
//printf("[WM] paint event\n");
|
//printf("[WM] paint event\n");
|
||||||
if (event.rect().isEmpty()) {
|
if (event.rect().is_empty()) {
|
||||||
event.m_rect.setWidth(AbstractScreen::the().width());
|
event.m_rect.setWidth(AbstractScreen::the().width());
|
||||||
event.m_rect.setHeight(AbstractScreen::the().height());
|
event.m_rect.setHeight(AbstractScreen::the().height());
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue