The libui source tree has a simple layout:
common/
common sources and headers, .c and .h
darwin/
C:/msys64/mingw64/bin/c++.exe -D_UI_STATIC -Dlibui_EXPORTS @CMakeFiles/libui.dir/includes_CXX.rsp --std=c++11 -Wall -Wextra -pedantic -Wno-unused-parameter -Wno-switch -fvisibility=hidden -o CMakeFiles/libui.dir/windows/areadraw.cpp.obj -c E:/github.com/andlabs/libui/windows/areadraw.cpp | |
C:/msys64/mingw64/bin/ar.exe qc out/libui.a CMakeFiles/libui.dir/common/areaevents.c.obj CMakeFiles/libui.dir/common/control.c.obj CMakeFiles/libui.dir/common/debug.c.obj CMakeFiles/libui.dir/common/matrix.c.obj CMakeFiles/libui.dir/common/shouldquit.c.obj CMakeFiles/libui.dir/common/userbugs.c.obj CMakeFiles/libui.dir/windows/alloc.cpp.obj CMakeFiles/libui.dir/windows/area.cpp.obj CMakeFiles/libui.dir/windows/areadraw.cpp.obj CMakeFiles/libui.dir/windows/areaevents.cpp.obj CMakeFiles/libui.dir/windows/areascroll.cpp.obj CMakeFiles/libui.dir/windows/areautil.cpp.obj CMakeFiles/libui.dir/windows/box.cpp.obj CMakeFiles/libui.dir/windows/button.cpp.obj CMakeFiles/libui.dir/windows/checkbox.cpp.obj CMakeFiles/libui.dir/windo |
macro(_add_static _name) | |
add_library(${_name}_uncombined STATIC EXCLUDE_FROM_ALL "${ARGN}") | |
# or alternatively | |
# add_custom_target(${_name}_uncombined SOURCES "${ARGN}") | |
get_target_property(_objs ${_name}_uncombined SOURCES) | |
string(REPLACE ";" " " _objs "${_objs}") | |
add_custom_command( | |
OUTPUT ${_name}_combined.o | |
COMMAND | |
ld -r ${_objs} -o ${_name}_combined.o |
cmake | |
1 kainjow | |
13 | |
1 sekrause | |
5 | |
1 waddlesplash | |
4 | |
1 rotseisermho | |
1 soloe | |
8 |
# 30 may 2016 | |
from waflib import Utils | |
top = '.' | |
out = '_build' | |
def _platform(ctx): | |
plat = Utils.unversioned_sys_platform() | |
if plat == 'win32': |
diff --git a/windows/alloc.c b/windows/alloc.c | |
index 1360e7f..15caf3c 100644 | |
--- a/windows/alloc.c | |
+++ b/windows/alloc.c | |
@@ -1,89 +1,62 @@ | |
// 4 december 2014 | |
-#include "uipriv_windows.h" | |
+#include "uipriv_windows.hpp" | |
-// wrappers for allocator of choice |
# 2 january 2015 | |
# usage: ./e4jexamine summary file | awk -f fulllog.awk file | |
# TODO pass options to e4jexamine | |
# TODO check for errors | |
BEGIN { | |
# TODO make sure this is sufficient to alter ARGC/ARGV | |
file = ARGV[1] | |
ARGC = 1 | |
} | |
{ print } |
# testmain | |
00000000 24 37 00 00 2e 74 65 78 74 2e 75 6e 6c 69 6b 65 | |
00000016 6c 79 00 2e 72 64 61 74 61 24 7a 7a 7a 00 2e 72 | |
00000032 64 61 74 61 24 2e 72 65 66 70 74 72 2e 5f 63 67 | |
00000048 6f 65 78 70 5f 63 30 32 30 65 33 61 37 32 64 36 | |
00000064 62 5f 77 69 6e 64 6f 77 43 6c 6f 73 69 6e 67 00 | |
00000080 2e 72 64 61 74 61 24 2e 72 65 66 70 74 72 2e 5f | |
00000096 63 67 6f 65 78 70 5f 63 30 32 30 65 33 61 37 32 | |
00000112 64 36 62 5f 77 69 6e 64 6f 77 52 65 73 69 7a 65 |
New proposal: rather than have methods do things, have methods create requests to do things.
At the top level, there is a channel ui.Do
which accepts the results of setter methods:
ui.Do <- label.SetText("Hello")
ui.Do <- checkbox.SetChecked(true)
Getters, however, are a bit more work. Not only do we need to send a request, we need to get something back from it. So getters will require three lines: