open-ead / sead Goto Github PK
View Code? Open in Web Editor NEWDecompilation of sead: the standard C++ library for first-party Nintendo games
Decompilation of sead: the standard C++ library for first-party Nintendo games
IDelegateR<T>
(e.g. IDelegateR<bool>
)
AnyDelegateR<bool>::UnbindDummy
(dummy invoke, dummy clone)LambdaDelegateR<bool>
(for lambda functions?)IDelegate
(non templated)
virtual void invoke()
(pure virtual) ?virtual IDelegate* clone(Heap*) const
(returns nullptr)void operator()()
?IDelegate2<A1, A2>
virtual void invoke(A1, A2)
virtual auto clone(Heap*) const
void operator()(A1, A2)
IDelegate1
R variants (e.g. IDelegate2R) take an extra template argument (at the end) for the return type.
DelegateBase<Class, PTMF, BaseClass>
(example: DelegateBase<FaderTaskBase,void (FaderTaskBase::*)(void),IDelegate>
)
Delegate2<Class, A1, A2>
: DelegateBase<Class, void (Class:*)(A1, A2), IDelegate2<A1, A2>
void invoke(A1, A2) override
Delegate2<...> clone() const override
Delegate1R?
AnyDelegate1(Const) is constructible from Delegate1. And possibly more? LambdaDelegate1?
The design for this system is kind of bonkers.
digraph {
IDelegate -> DelegateBase
DelegateBase -> Delegate
DelegateBase -> Delegate1
DelegateBase -> Delegate2RFunc
IDelegate1 -> Delegate1
IDelegate1 -> DelegateBase
IDelegate2 -> Delegate2
IDelegate2 -> DelegateBase
IDelegate1R
IDelegate2R -> DelegateBase
IFunction -> LambdaFunction
AnyFunction
IDelegate -> AnyDelegate
IDelegate1 -> "AnyDelegate1?"
IDelegate2 -> AnyDelegate2
IDelegate1R -> "AnyDelegate1R?"
IDelegate2R -> "AnyDelegate2R?"
IDelegate2R -> LambdaDelegate2R
"IDelegateR<bool>" -> "AnyDelegateR<bool>::UnbindDummy"
"IDelegateR<bool>" -> "LambdaDelegateR<bool>"
}
This appears to be an implementation of a red-black tree.
TreeMap (seadTreeMap.h, seadTreeNode.cpp):
TreeMapImpl<Key>
: TreeMapImpl<SafeString>
, TreeMapImpl<TreeMapKeyImpl<T>>
with T = u32
, Thread*
, etc.TreeMapNode<Key>
TreeMap<Key, Value>
StrTreeMap (seadStrTreeMap.h):
StrTreeMap<N, ValueType>
: a special case of TreeMapImpl<SafeString>
? N seems to be the maximum length of the string keys.Requires RingBuffer (#44)
Note that the name is a guess and based on the fact that several thread
classes (SpinLock, ReadWriteLock) use atomic load and store operations.
For simplicity reasons, I will probably use C++11 <atomic>
to implement the atomic utilities.
Most likely requires #33
Mostly a copy-pasted version of container/TreeMap
shares a lot of code with SafeString + BufferedSafeString
LambdaFunction<LambdaType>
Details
IFunction<PointerToFunction>
(not PTMFs)
virtual ... invoke(...)
(no extra level of indirection)virtual isNoDummy() const
Requires RingBuffer (#44) and framework (InfLoopChecker) stuff
PtrArrayImpl is still missing some implementations of common operations (sorting for example). Might not be worth going for a perfect match; an equivalent version might be good enough
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.