Skip to content

Commit

Permalink
AK: Move some of LogStream out of line & add overloads for smart poin…
Browse files Browse the repository at this point in the history
…ters.
  • Loading branch information
awesomekling committed Jul 4, 2019
1 parent 07d11a9 commit 1b013ba
Show file tree
Hide file tree
Showing 9 changed files with 87 additions and 31 deletions.
3 changes: 2 additions & 1 deletion AK/ByteBuffer.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@

#include "StdLibExtras.h"
#include "Types.h"
#include <AK/RefPtr.h>
#include <AK/NonnullRefPtr.h>
#include <AK/RefCounted.h>
#include <AK/RefPtr.h>
#include <AK/kmalloc.h>

namespace AK {
Expand Down
34 changes: 34 additions & 0 deletions AK/LogStream.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
#include <AK/AKString.h>
#include <AK/LogStream.h>
#include <AK/StringView.h>

namespace AK {

inline const LogStream& operator<<(const LogStream& stream, const String& value)
{
stream.write(value.characters(), value.length());
return stream;
}

inline const LogStream& operator<<(const LogStream& stream, const StringView& value)
{
stream.write(value.characters(), value.length());
return stream;
}

const LogStream& operator<<(const LogStream& stream, int value)
{
return stream << String::number(value);
}

const LogStream& operator<<(const LogStream& stream, unsigned value)
{
return stream << String::number(value);
}

const LogStream& operator<<(const LogStream& stream, const void* value)
{
return stream << String::format("%p", value);
}

}
43 changes: 17 additions & 26 deletions AK/LogStream.h
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
#pragma once

#include <AK/AKString.h>
#include <AK/StringView.h>
#include <AK/kstdio.h>

namespace AK {

class String;
class StringView;

class LogStream {
public:
LogStream() {}
Expand Down Expand Up @@ -35,21 +38,19 @@ inline DebugLogStream dbg()

inline const LogStream& operator<<(const LogStream& stream, const char* value)
{
stream.write(value, strlen(value));
int length = 0;
const char* p = value;
while (*(p++))
++length;
stream.write(value, length);
return stream;
}

inline const LogStream& operator<<(const LogStream& stream, const String& value)
{
stream.write(value.characters(), value.length());
return stream;
}

inline const LogStream& operator<<(const LogStream& stream, const StringView& value)
{
stream.write(value.characters(), value.length());
return stream;
}
const LogStream& operator<<(const LogStream&, const String&);
const LogStream& operator<<(const LogStream&, const StringView&);
const LogStream& operator<<(const LogStream&, int);
const LogStream& operator<<(const LogStream&, unsigned);
const LogStream& operator<<(const LogStream&, const void*);

inline const LogStream& operator<<(const LogStream& stream, char value)
{
Expand All @@ -62,17 +63,7 @@ inline const LogStream& operator<<(const LogStream& stream, bool value)
return stream << (value ? "true" : "false");
}

inline const LogStream& operator<<(const LogStream& stream, int value)
{
return stream << String::number(value);
}

inline const LogStream& operator<<(const LogStream& stream, unsigned value)
{
return stream << String::number(value);
}

inline const LogStream& operator<<(const LogStream& stream, const void* value)
{
return stream << String::format("%p", value);
}
using AK::LogStream;
using AK::dbg;
7 changes: 7 additions & 0 deletions AK/NonnullRefPtr.h
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#pragma once

#include <AK/Assertions.h>
#include <AK/LogStream.h>
#include <AK/Types.h>

#ifdef __clang__
Expand Down Expand Up @@ -239,6 +240,12 @@ inline NonnullRefPtr<T> adopt(T& object)
return NonnullRefPtr<T>(NonnullRefPtr<T>::Adopt, object);
}

template<typename T>
inline const LogStream& operator<<(const LogStream& stream, const NonnullRefPtr<T>& value)
{
return stream << value.ptr();
}

}

using AK::adopt;
Expand Down
13 changes: 10 additions & 3 deletions AK/OwnPtr.h
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
#pragma once

#include "StdLibExtras.h"
#include "Traits.h"
#include "Types.h"
#include <AK/LogStream.h>
#include <AK/StdLibExtras.h>
#include <AK/Traits.h>
#include <AK/Types.h>

namespace AK {

Expand Down Expand Up @@ -115,6 +116,12 @@ struct Traits<OwnPtr<T>> : public GenericTraits<OwnPtr<T>> {
static bool equals(const OwnPtr<T>& a, const OwnPtr<T>& b) { return a.ptr() == b.ptr(); }
};

template<typename T>
inline const LogStream& operator<<(const LogStream& stream, const OwnPtr<T>& value)
{
return stream << value.ptr();
}

}

using AK::make;
Expand Down
7 changes: 7 additions & 0 deletions AK/RefPtr.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#pragma once

#include <AK/LogStream.h>
#include <AK/NonnullRefPtr.h>
#include <AK/Types.h>

Expand Down Expand Up @@ -203,6 +204,12 @@ class RefPtr {
T* m_ptr = nullptr;
};

template<typename T>
inline const LogStream& operator<<(const LogStream& stream, const RefPtr<T>& value)
{
return stream << value.ptr();
}

}

using AK::RefPtr;
9 changes: 8 additions & 1 deletion AK/WeakPtr.h
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#pragma once

#include "Weakable.h"
#include <AK/LogStream.h>
#include <AK/Weakable.h>

namespace AK {

Expand Down Expand Up @@ -66,6 +67,12 @@ inline WeakPtr<T> Weakable<T>::make_weak_ptr()
return WeakPtr<T>(m_link.copy_ref());
}

template<typename T>
inline const LogStream& operator<<(const LogStream& stream, const WeakPtr<T>& value)
{
return stream << value.ptr();
}

}

using AK::WeakPtr;
1 change: 1 addition & 0 deletions Kernel/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@ AK_OBJS = \
../AK/JsonValue.o \
../AK/JsonArray.o \
../AK/JsonParser.o \
../AK/LogStream.o \
../AK/ELF/ELFImage.o \
../AK/ELF/ELFLoader.o

Expand Down
1 change: 1 addition & 0 deletions LibC/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ AK_OBJS = \
../AK/JsonArray.o \
../AK/JsonObject.o \
../AK/JsonParser.o \
../AK/LogStream.o \
../AK/MappedFile.o

LIBC_OBJS = \
Expand Down

0 comments on commit 1b013ba

Please sign in to comment.