+ case "${usergroup_phase}" in
+ local run_cmd
+ run_cmd=run_su
+ shift
+ run_su /opt/pkg/bin/bmake all BATCH=1 DEPENDS_TARGET=/nonexistent WRKLOG=/tmp/bulklog/bsnes-115nb30/work.log
+ su pbulk -c '"$@"' make /opt/pkg/bin/bmake all BATCH=1 DEPENDS_TARGET=/nonexistent WRKLOG=/tmp/bulklog/bsnes-115nb30/work.log
===> Building for bsnes-115nb30
Compiling ../hiro/hiro.cpp ...
Compiling ../ruby/ruby.cpp ...
Compiling ../libco/libco.c ...
Compiling emulator/emulator.cpp ...
In file included from ../hiro/core/core.cpp:1,
                 from ../hiro/hiro.cpp:5:
../nall/intrinsics.hpp:109:4: warning: #warning "unable to detect platform" [-Wcpp]
  109 |   #warning "unable to detect platform"
      |    ^~~~~~~
Compiling filter/filter.cpp ...
In file included from ../nall/platform.hpp:3,
                 from ../ruby/ruby.hpp:3,
                 from ../ruby/ruby.cpp:1:
../nall/intrinsics.hpp:109:4: warning: #warning "unable to detect platform" [-Wcpp]
  109 |   #warning "unable to detect platform"
      |    ^~~~~~~
In file included from ../nall/platform.hpp:3,
                 from ./emulator/emulator.hpp:5,
                 from emulator/emulator.cpp:1:
../nall/intrinsics.hpp:109:4: warning: #warning "unable to detect platform" [-Wcpp]
  109 |   #warning "unable to detect platform"
      |    ^~~~~~~
Compiling lzma/lzma.cpp ...
In file included from ../nall/platform.hpp:3,
                 from ./emulator/emulator.hpp:5,
                 from filter/filter.cpp:1:
../nall/intrinsics.hpp:109:4: warning: #warning "unable to detect platform" [-Wcpp]
  109 |   #warning "unable to detect platform"
      |    ^~~~~~~
In file included from ../ruby/video/glx.cpp:1,
                 from ../ruby/video/video.cpp:18,
                 from ../ruby/ruby.cpp:28:
../ruby/video/opengl/opengl.hpp:16:4: error: #error "ruby::OpenGL3: unsupported platform"
   16 |   #error "ruby::OpenGL3: unsupported platform"
      |    ^~~~~
In file included from ../ruby/video/video.cpp:22:
../ruby/video/glx2.cpp:21:4: error: #error "ruby::OpenGL2: unsupported platform"
   21 |   #error "ruby::OpenGL2: unsupported platform"
      |    ^~~~~
In file included from ../nall/arithmetic.hpp:37,
                 from ../nall/hash/hash.hpp:3,
                 from ../nall/hash/sha256.hpp:3,
                 from ../nall/file-buffer.hpp:12,
                 from ../nall/file.hpp:3,
                 from ../nall/file-map.hpp:3,
                 from ../nall/image.hpp:5,
                 from ./emulator/emulator.hpp:11:
../nall/arithmetic/natural.hpp: In function 'void nall::div(const uint256_t&, const uint256_t&, uint256_t&, uint256_t&)':
../nall/arithmetic/natural.hpp:239:23: error: 'runtime_error' is not a member of 'std'
  239 |   if(!rhs) throw std::runtime_error("division by zero");
      |                       ^~~~~~~~~~~~~
../nall/arithmetic/natural.hpp:1:1: note: 'std::runtime_error' is defined in header '<stdexcept>'; did you forget to '#include <stdexcept>'?
  +++ |+#include <stdexcept>
    1 | #define ConcatenateType(Size) uint##Size##_t
In file included from ../nall/arithmetic.hpp:37,
                 from ../nall/hash/hash.hpp:3,
                 from ../nall/hash/sha256.hpp:3,
                 from ../nall/file-buffer.hpp:12,
                 from ../nall/file.hpp:3,
                 from ../nall/directory.hpp:3,
                 from ../hiro/core/core.hpp:4,
                 from ../hiro/core/core.cpp:13:
../nall/arithmetic/natural.hpp: In function 'void nall::div(const uint256_t&, const uint256_t&, uint256_t&, uint256_t&)':
../nall/arithmetic/natural.hpp:239:23: error: 'runtime_error' is not a member of 'std'
  239 |   if(!rhs) throw std::runtime_error("division by zero");
      |                       ^~~~~~~~~~~~~
../nall/arithmetic/natural.hpp:1:1: note: 'std::runtime_error' is defined in header '<stdexcept>'; did you forget to '#include <stdexcept>'?
  +++ |+#include <stdexcept>
    1 | #define ConcatenateType(Size) uint##Size##_t
In file included from ../nall/arithmetic.hpp:45:
../nall/arithmetic/natural.hpp: In function 'void nall::div(const uint512_t&, const uint512_t&, uint512_t&, uint512_t&)':
../nall/arithmetic/natural.hpp:239:23: error: 'runtime_error' is not a member of 'std'
  239 |   if(!rhs) throw std::runtime_error("division by zero");
      |                       ^~~~~~~~~~~~~
../nall/arithmetic/natural.hpp:239:23: note: 'std::runtime_error' is defined in header '<stdexcept>'; did you forget to '#include <stdexcept>'?
In file included from ../nall/arithmetic.hpp:45:
../nall/arithmetic/natural.hpp: In function 'void nall::div(const uint512_t&, const uint512_t&, uint512_t&, uint512_t&)':
../nall/arithmetic/natural.hpp:239:23: error: 'runtime_error' is not a member of 'std'
  239 |   if(!rhs) throw std::runtime_error("division by zero");
      |                       ^~~~~~~~~~~~~
../nall/arithmetic/natural.hpp:239:23: note: 'std::runtime_error' is defined in header '<stdexcept>'; did you forget to '#include <stdexcept>'?
In file included from ../nall/arithmetic.hpp:53:
../nall/arithmetic/natural.hpp: In function 'void nall::div(const uint1024_t&, const uint1024_t&, uint1024_t&, uint1024_t&)':
../nall/arithmetic/natural.hpp:239:23: error: 'runtime_error' is not a member of 'std'
  239 |   if(!rhs) throw std::runtime_error("division by zero");
      |                       ^~~~~~~~~~~~~
../nall/arithmetic/natural.hpp:239:23: note: 'std::runtime_error' is defined in header '<stdexcept>'; did you forget to '#include <stdexcept>'?
In file included from ../nall/arithmetic.hpp:53:
../nall/arithmetic/natural.hpp: In function 'void nall::div(const uint1024_t&, const uint1024_t&, uint1024_t&, uint1024_t&)':
../nall/arithmetic/natural.hpp:239:23: error: 'runtime_error' is not a member of 'std'
  239 |   if(!rhs) throw std::runtime_error("division by zero");
      |                       ^~~~~~~~~~~~~
../nall/arithmetic/natural.hpp:239:23: note: 'std::runtime_error' is defined in header '<stdexcept>'; did you forget to '#include <stdexcept>'?
In file included from ../nall/arithmetic.hpp:61:
../nall/arithmetic/natural.hpp: In function 'void nall::div(const uint2048_t&, const uint2048_t&, uint2048_t&, uint2048_t&)':
../nall/arithmetic/natural.hpp:239:23: error: 'runtime_error' is not a member of 'std'
  239 |   if(!rhs) throw std::runtime_error("division by zero");
      |                       ^~~~~~~~~~~~~
../nall/arithmetic/natural.hpp:239:23: note: 'std::runtime_error' is defined in header '<stdexcept>'; did you forget to '#include <stdexcept>'?
In file included from ../nall/arithmetic.hpp:69:
../nall/arithmetic/natural.hpp: In function 'void nall::div(const uint4096_t&, const uint4096_t&, uint4096_t&, uint4096_t&)':
../nall/arithmetic/natural.hpp:239:23: error: 'runtime_error' is not a member of 'std'
  239 |   if(!rhs) throw std::runtime_error("division by zero");
      |                       ^~~~~~~~~~~~~
../nall/arithmetic/natural.hpp:239:23: note: 'std::runtime_error' is defined in header '<stdexcept>'; did you forget to '#include <stdexcept>'?
In file included from ../nall/arithmetic.hpp:61:
../nall/arithmetic/natural.hpp: In function 'void nall::div(const uint2048_t&, const uint2048_t&, uint2048_t&, uint2048_t&)':
../nall/arithmetic/natural.hpp:239:23: error: 'runtime_error' is not a member of 'std'
  239 |   if(!rhs) throw std::runtime_error("division by zero");
      |                       ^~~~~~~~~~~~~
../nall/arithmetic/natural.hpp:239:23: note: 'std::runtime_error' is defined in header '<stdexcept>'; did you forget to '#include <stdexcept>'?
In file included from ../nall/arithmetic.hpp:37,
                 from ../nall/hash/hash.hpp:3,
                 from ../nall/hash/sha256.hpp:3,
                 from ../nall/file-buffer.hpp:12,
                 from ../nall/file.hpp:3,
                 from ../nall/file-map.hpp:3,
                 from ../nall/image.hpp:5,
                 from ./emulator/emulator.hpp:11:
../nall/arithmetic/natural.hpp: In function 'void nall::div(const uint256_t&, const uint256_t&, uint256_t&, uint256_t&)':
../nall/arithmetic/natural.hpp:239:23: error: 'runtime_error' is not a member of 'std'
  239 |   if(!rhs) throw std::runtime_error("division by zero");
      |                       ^~~~~~~~~~~~~
../nall/arithmetic/natural.hpp:1:1: note: 'std::runtime_error' is defined in header '<stdexcept>'; did you forget to '#include <stdexcept>'?
  +++ |+#include <stdexcept>
    1 | #define ConcatenateType(Size) uint##Size##_t
In file included from ../nall/arithmetic.hpp:77:
../nall/arithmetic/natural.hpp: In function 'void nall::div(const uint8192_t&, const uint8192_t&, uint8192_t&, uint8192_t&)':
../nall/arithmetic/natural.hpp:239:23: error: 'runtime_error' is not a member of 'std'
  239 |   if(!rhs) throw std::runtime_error("division by zero");
      |                       ^~~~~~~~~~~~~
../nall/arithmetic/natural.hpp:239:23: note: 'std::runtime_error' is defined in header '<stdexcept>'; did you forget to '#include <stdexcept>'?
../nall/file.hpp: In static member function 'static bool nall::file::truncate(const nall::string&, uint64_t)':
../nall/file.hpp:49:3: warning: no return statement in function returning non-void [-Wreturn-type]
   49 |   }
      |   ^
In file included from ../nall/arithmetic.hpp:45:
../nall/arithmetic/natural.hpp: In function 'void nall::div(const uint512_t&, const uint512_t&, uint512_t&, uint512_t&)':
../nall/arithmetic/natural.hpp:239:23: error: 'runtime_error' is not a member of 'std'
  239 |   if(!rhs) throw std::runtime_error("division by zero");
      |                       ^~~~~~~~~~~~~
../nall/arithmetic/natural.hpp:239:23: note: 'std::runtime_error' is defined in header '<stdexcept>'; did you forget to '#include <stdexcept>'?
../nall/file.hpp: In static member function 'static bool nall::file::exists(const nall::string&)':
../nall/file.hpp:60:14: error: 'data' was not declared in this scope
   60 |     return !(data.st_mode & S_IFDIR);
      |              ^~~~
In file included from /usr/include/fcntl.h:37,
                 from ../nall/platform.hpp:41,
                 from ../hiro/core/core.hpp:1:
../nall/file.hpp: In static member function 'static uint64_t nall::file::size(const nall::string&)':
../nall/file.hpp:71:20: error: 'data' was not declared in this scope
   71 |     return S_ISREG(data.st_mode) ? data.st_size : 0u;
      |                    ^~~~
../nall/directory.hpp: In function 'bool nall::directoryIsFolder(DIR*, dirent*)':
../nall/directory.hpp:270:12: error: 'struct dirent' has no member named 'd_type'
  270 |     if(ep->d_type == DT_DIR) return true;
      |            ^~~~~~
../nall/directory.hpp:270:22: error: 'DT_DIR' was not declared in this scope
  270 |     if(ep->d_type == DT_DIR) return true;
      |                      ^~~~~~
../nall/directory.hpp:271:12: error: 'struct dirent' has no member named 'd_type'
  271 |     if(ep->d_type == DT_LNK || ep->d_type == DT_UNKNOWN) {
      |            ^~~~~~
../nall/directory.hpp:271:22: error: 'DT_LNK' was not declared in this scope
  271 |     if(ep->d_type == DT_LNK || ep->d_type == DT_UNKNOWN) {
      |                      ^~~~~~
../nall/directory.hpp:271:36: error: 'struct dirent' has no member named 'd_type'
  271 |     if(ep->d_type == DT_LNK || ep->d_type == DT_UNKNOWN) {
      |                                    ^~~~~~
In file included from ../nall/arithmetic.hpp:69:
../nall/arithmetic/natural.hpp: In function 'void nall::div(const uint4096_t&, const uint4096_t&, uint4096_t&, uint4096_t&)':
../nall/arithmetic/natural.hpp:239:23: error: 'runtime_error' is not a member of 'std'
  239 |   if(!rhs) throw std::runtime_error("division by zero");
      |                       ^~~~~~~~~~~~~
../nall/arithmetic/natural.hpp:239:23: note: 'std::runtime_error' is defined in header '<stdexcept>'; did you forget to '#include <stdexcept>'?
In file included from ../nall/arithmetic.hpp:53:
../nall/arithmetic/natural.hpp: In function 'void nall::div(const uint1024_t&, const uint1024_t&, uint1024_t&, uint1024_t&)':
../nall/arithmetic/natural.hpp:239:23: error: 'runtime_error' is not a member of 'std'
  239 |   if(!rhs) throw std::runtime_error("division by zero");
      |                       ^~~~~~~~~~~~~
../nall/arithmetic/natural.hpp:239:23: note: 'std::runtime_error' is defined in header '<stdexcept>'; did you forget to '#include <stdexcept>'?
../nall/directory.hpp:271:46: error: 'DT_UNKNOWN' was not declared in this scope; did you mean 'API_UNKNOWN'?
  271 |     if(ep->d_type == DT_LNK || ep->d_type == DT_UNKNOWN) {
      |                                              ^~~~~~~~~~
      |                                              API_UNKNOWN
In file included from ../nall/arithmetic.hpp:77:
../nall/arithmetic/natural.hpp: In function 'void nall::div(const uint8192_t&, const uint8192_t&, uint8192_t&, uint8192_t&)':
../nall/arithmetic/natural.hpp:239:23: error: 'runtime_error' is not a member of 'std'
  239 |   if(!rhs) throw std::runtime_error("division by zero");
      |                       ^~~~~~~~~~~~~
../nall/arithmetic/natural.hpp:239:23: note: 'std::runtime_error' is defined in header '<stdexcept>'; did you forget to '#include <stdexcept>'?
In file included from ../nall/arithmetic.hpp:61:
../nall/arithmetic/natural.hpp: In function 'void nall::div(const uint2048_t&, const uint2048_t&, uint2048_t&, uint2048_t&)':
../nall/arithmetic/natural.hpp:239:23: error: 'runtime_error' is not a member of 'std'
  239 |   if(!rhs) throw std::runtime_error("division by zero");
      |                       ^~~~~~~~~~~~~
../nall/arithmetic/natural.hpp:239:23: note: 'std::runtime_error' is defined in header '<stdexcept>'; did you forget to '#include <stdexcept>'?
In file included from ../nall/arithmetic.hpp:37,
                 from ../nall/hash/hash.hpp:3,
                 from ../nall/hash/sha256.hpp:3,
                 from ../nall/file-buffer.hpp:12,
                 from ../nall/file.hpp:3,
                 from ../nall/directory.hpp:3,
                 from ../ruby/ruby.hpp:4:
../nall/arithmetic/natural.hpp: In function 'void nall::div(const uint256_t&, const uint256_t&, uint256_t&, uint256_t&)':
../nall/arithmetic/natural.hpp:239:23: error: 'runtime_error' is not a member of 'std'
  239 |   if(!rhs) throw std::runtime_error("division by zero");
      |                       ^~~~~~~~~~~~~
../nall/arithmetic/natural.hpp:1:1: note: 'std::runtime_error' is defined in header '<stdexcept>'; did you forget to '#include <stdexcept>'?
  +++ |+#include <stdexcept>
    1 | #define ConcatenateType(Size) uint##Size##_t
In file included from ../nall/arithmetic.hpp:45:
../nall/arithmetic/natural.hpp: In function 'void nall::div(const uint512_t&, const uint512_t&, uint512_t&, uint512_t&)':
../nall/arithmetic/natural.hpp:239:23: error: 'runtime_error' is not a member of 'std'
  239 |   if(!rhs) throw std::runtime_error("division by zero");
      |                       ^~~~~~~~~~~~~
../nall/arithmetic/natural.hpp:239:23: note: 'std::runtime_error' is defined in header '<stdexcept>'; did you forget to '#include <stdexcept>'?
../nall/file.hpp: In static member function 'static bool nall::file::truncate(const nall::string&, uint64_t)':
../nall/file.hpp:49:3: warning: no return statement in function returning non-void [-Wreturn-type]
   49 |   }
      |   ^
../nall/file.hpp: In static member function 'static bool nall::file::exists(const nall::string&)':
../nall/file.hpp:60:14: error: 'data' was not declared in this scope
   60 |     return !(data.st_mode & S_IFDIR);
      |              ^~~~
In file included from ../nall/arithmetic.hpp:69:
../nall/arithmetic/natural.hpp: In function 'void nall::div(const uint4096_t&, const uint4096_t&, uint4096_t&, uint4096_t&)':
../nall/arithmetic/natural.hpp:239:23: error: 'runtime_error' is not a member of 'std'
  239 |   if(!rhs) throw std::runtime_error("division by zero");
      |                       ^~~~~~~~~~~~~
../nall/arithmetic/natural.hpp:239:23: note: 'std::runtime_error' is defined in header '<stdexcept>'; did you forget to '#include <stdexcept>'?
In file included from /usr/include/fcntl.h:37,
                 from ../nall/platform.hpp:41:
../nall/file.hpp: In static member function 'static uint64_t nall::file::size(const nall::string&)':
../nall/file.hpp:71:20: error: 'data' was not declared in this scope
   71 |     return S_ISREG(data.st_mode) ? data.st_size : 0u;
      |                    ^~~~
In file included from ../nall/arithmetic.hpp:53:
../nall/arithmetic/natural.hpp: In function 'void nall::div(const uint1024_t&, const uint1024_t&, uint1024_t&, uint1024_t&)':
../nall/arithmetic/natural.hpp:239:23: error: 'runtime_error' is not a member of 'std'
  239 |   if(!rhs) throw std::runtime_error("division by zero");
      |                       ^~~~~~~~~~~~~
../nall/arithmetic/natural.hpp:239:23: note: 'std::runtime_error' is defined in header '<stdexcept>'; did you forget to '#include <stdexcept>'?
In file included from ../nall/arithmetic.hpp:61:
../nall/arithmetic/natural.hpp: In function 'void nall::div(const uint2048_t&, const uint2048_t&, uint2048_t&, uint2048_t&)':
../nall/arithmetic/natural.hpp:239:23: error: 'runtime_error' is not a member of 'std'
  239 |   if(!rhs) throw std::runtime_error("division by zero");
      |                       ^~~~~~~~~~~~~
../nall/arithmetic/natural.hpp:239:23: note: 'std::runtime_error' is defined in header '<stdexcept>'; did you forget to '#include <stdexcept>'?
In file included from ../nall/arithmetic.hpp:77:
../nall/arithmetic/natural.hpp: In function 'void nall::div(const uint8192_t&, const uint8192_t&, uint8192_t&, uint8192_t&)':
../nall/arithmetic/natural.hpp:239:23: error: 'runtime_error' is not a member of 'std'
  239 |   if(!rhs) throw std::runtime_error("division by zero");
      |                       ^~~~~~~~~~~~~
../nall/arithmetic/natural.hpp:239:23: note: 'std::runtime_error' is defined in header '<stdexcept>'; did you forget to '#include <stdexcept>'?
In file included from ../nall/arithmetic.hpp:69:
../nall/arithmetic/natural.hpp: In function 'void nall::div(const uint4096_t&, const uint4096_t&, uint4096_t&, uint4096_t&)':
../nall/arithmetic/natural.hpp:239:23: error: 'runtime_error' is not a member of 'std'
  239 |   if(!rhs) throw std::runtime_error("division by zero");
      |                       ^~~~~~~~~~~~~
../nall/arithmetic/natural.hpp:239:23: note: 'std::runtime_error' is defined in header '<stdexcept>'; did you forget to '#include <stdexcept>'?
../nall/file.hpp: In static member function 'static bool nall::file::truncate(const nall::string&, uint64_t)':
../nall/file.hpp:49:3: warning: no return statement in function returning non-void [-Wreturn-type]
   49 |   }
      |   ^
../nall/file.hpp: In static member function 'static bool nall::file::exists(const nall::string&)':
../nall/file.hpp:60:14: error: 'data' was not declared in this scope
   60 |     return !(data.st_mode & S_IFDIR);
      |              ^~~~
In file included from /usr/include/fcntl.h:37,
                 from ../nall/platform.hpp:41:
../nall/file.hpp: In static member function 'static uint64_t nall::file::size(const nall::string&)':
../nall/file.hpp:71:20: error: 'data' was not declared in this scope
   71 |     return S_ISREG(data.st_mode) ? data.st_size : 0u;
      |                    ^~~~
In file included from ../nall/arithmetic.hpp:77:
../nall/arithmetic/natural.hpp: In function 'void nall::div(const uint8192_t&, const uint8192_t&, uint8192_t&, uint8192_t&)':
../nall/arithmetic/natural.hpp:239:23: error: 'runtime_error' is not a member of 'std'
  239 |   if(!rhs) throw std::runtime_error("division by zero");
      |                       ^~~~~~~~~~~~~
../nall/arithmetic/natural.hpp:239:23: note: 'std::runtime_error' is defined in header '<stdexcept>'; did you forget to '#include <stdexcept>'?
../nall/file.hpp: In static member function 'static bool nall::file::truncate(const nall::string&, uint64_t)':
../nall/file.hpp:49:3: warning: no return statement in function returning non-void [-Wreturn-type]
   49 |   }
      |   ^
../nall/file.hpp: In static member function 'static bool nall::file::exists(const nall::string&)':
../nall/file.hpp:60:14: error: 'data' was not declared in this scope
   60 |     return !(data.st_mode & S_IFDIR);
      |              ^~~~
In file included from /usr/include/fcntl.h:37,
                 from ../nall/platform.hpp:41:
../nall/file.hpp: In static member function 'static uint64_t nall::file::size(const nall::string&)':
../nall/file.hpp:71:20: error: 'data' was not declared in this scope
   71 |     return S_ISREG(data.st_mode) ? data.st_size : 0u;
      |                    ^~~~
../nall/directory.hpp: In function 'bool nall::directoryIsFolder(DIR*, dirent*)':
../nall/directory.hpp:270:12: error: 'struct dirent' has no member named 'd_type'
  270 |     if(ep->d_type == DT_DIR) return true;
      |            ^~~~~~
../nall/directory.hpp:270:22: error: 'DT_DIR' was not declared in this scope
  270 |     if(ep->d_type == DT_DIR) return true;
      |                      ^~~~~~
../nall/directory.hpp:271:12: error: 'struct dirent' has no member named 'd_type'
  271 |     if(ep->d_type == DT_LNK || ep->d_type == DT_UNKNOWN) {
      |            ^~~~~~
../nall/directory.hpp:271:22: error: 'DT_LNK' was not declared in this scope
  271 |     if(ep->d_type == DT_LNK || ep->d_type == DT_UNKNOWN) {
      |                      ^~~~~~
../nall/directory.hpp:271:36: error: 'struct dirent' has no member named 'd_type'
  271 |     if(ep->d_type == DT_LNK || ep->d_type == DT_UNKNOWN) {
      |                                    ^~~~~~
../nall/directory.hpp:271:46: error: 'DT_UNKNOWN' was not declared in this scope; did you mean 'IND_UNKNOWN'?
  271 |     if(ep->d_type == DT_LNK || ep->d_type == DT_UNKNOWN) {
      |                                              ^~~~~~~~~~
      |                                              IND_UNKNOWN
In file included from ../ruby/video/opengl/opengl.hpp:21:
../ruby/video/opengl/utility.hpp: At global scope:
../ruby/video/opengl/utility.hpp:6:48: error: 'GLuint' does not name a type; did you mean 'uint'?
    6 | static auto glrFormat(const string& format) -> GLuint {
      |                                                ^~~~~~
      |                                                uint
../ruby/video/opengl/utility.hpp:18:48: error: 'GLuint' does not name a type; did you mean 'uint'?
   18 | static auto glrFilter(const string& filter) -> GLuint {
      |                                                ^~~~~~
      |                                                uint
../ruby/video/opengl/utility.hpp:24:45: error: 'GLuint' does not name a type; did you mean 'uint'?
   24 | static auto glrWrap(const string& wrap)  -> GLuint {
      |                                             ^~~~~~
      |                                             uint
../ruby/video/opengl/utility.hpp:36:29: error: 'GLuint' does not name a type; did you mean 'uint'?
   36 | static auto glrProgram() -> GLuint {
      |                             ^~~~~~
      |                             uint
../ruby/video/opengl/utility.hpp:42:46: error: 'GLint' has not been declared
   42 | static auto glrUniform1i(const string& name, GLint value) -> void {
      |                                              ^~~~~
../ruby/video/opengl/utility.hpp: In function 'void glrUniform1i(const nall::string&, int)':
../ruby/video/opengl/utility.hpp:43:3: error: 'GLint' was not declared in this scope
   43 |   GLint location = glGetUniformLocation(glrProgram(), name);
      |   ^~~~~
../ruby/video/opengl/utility.hpp:44:15: error: 'location' was not declared in this scope; did you mean 'localtime'?
   44 |   glUniform1i(location, value);
      |               ^~~~~~~~
      |               localtime
../ruby/video/opengl/utility.hpp:44:3: error: 'glUniform1i' was not declared in this scope; did you mean 'glrUniform1i'?
   44 |   glUniform1i(location, value);
      |   ^~~~~~~~~~~
      |   glrUniform1i
../ruby/video/opengl/utility.hpp: At global scope:
../ruby/video/opengl/utility.hpp:47:46: error: 'GLfloat' has not been declared
   47 | static auto glrUniform4f(const string& name, GLfloat value0, GLfloat value1, GLfloat value2, GLfloat value3) -> void {
      |                                              ^~~~~~~
../ruby/video/opengl/utility.hpp:47:62: error: 'GLfloat' has not been declared
   47 | static auto glrUniform4f(const string& name, GLfloat value0, GLfloat value1, GLfloat value2, GLfloat value3) -> void {
      |                                                              ^~~~~~~
../ruby/video/opengl/utility.hpp:47:78: error: 'GLfloat' has not been declared
   47 | static auto glrUniform4f(const string& name, GLfloat value0, GLfloat value1, GLfloat value2, GLfloat value3) -> void {
      |                                                                              ^~~~~~~
../ruby/video/opengl/utility.hpp:47:94: error: 'GLfloat' has not been declared
   47 | static auto glrUniform4f(const string& name, GLfloat value0, GLfloat value1, GLfloat value2, GLfloat value3) -> void {
      |                                                                                              ^~~~~~~
../ruby/video/opengl/utility.hpp: In function 'void glrUniform4f(const nall::string&, int, int, int, int)':
../ruby/video/opengl/utility.hpp:48:3: error: 'GLint' was not declared in this scope
   48 |   GLint location = glGetUniformLocation(glrProgram(), name);
      |   ^~~~~
../ruby/video/opengl/utility.hpp:49:15: error: 'location' was not declared in this scope; did you mean 'localtime'?
   49 |   glUniform4f(location, value0, value1, value2, value3);
      |               ^~~~~~~~
      |               localtime
../ruby/video/opengl/utility.hpp:49:3: error: 'glUniform4f' was not declared in this scope; did you mean 'glrUniform4f'?
   49 |   glUniform4f(location, value0, value1, value2, value3);
      |   ^~~~~~~~~~~
      |   glrUniform4f
../ruby/video/opengl/utility.hpp: At global scope:
../ruby/video/opengl/utility.hpp:52:53: error: 'GLfloat' has not been declared
   52 | static auto glrUniformMatrix4fv(const string& name, GLfloat* values) -> void {
      |                                                     ^~~~~~~
../ruby/video/opengl/utility.hpp: In function 'void glrUniformMatrix4fv(const nall::string&, int*)':
../ruby/video/opengl/utility.hpp:53:3: error: 'GLint' was not declared in this scope
   53 |   GLint location = glGetUniformLocation(glrProgram(), name);
      |   ^~~~~
../ruby/video/opengl/utility.hpp:54:22: error: 'location' was not declared in this scope; did you mean 'localtime'?
   54 |   glUniformMatrix4fv(location, 1, GL_FALSE, values);
      |                      ^~~~~~~~
      |                      localtime
../ruby/video/opengl/utility.hpp:54:35: error: 'GL_FALSE' was not declared in this scope; did you mean 'AL_FALSE'?
   54 |   glUniformMatrix4fv(location, 1, GL_FALSE, values);
      |                                   ^~~~~~~~
      |                                   AL_FALSE
../ruby/video/opengl/utility.hpp:54:3: error: 'glUniformMatrix4fv' was not declared in this scope; did you mean 'glrUniformMatrix4fv'?
   54 |   glUniformMatrix4fv(location, 1, GL_FALSE, values);
      |   ^~~~~~~~~~~~~~~~~~
      |   glrUniformMatrix4fv
../ruby/video/opengl/utility.hpp: At global scope:
../ruby/video/opengl/utility.hpp:57:27: error: 'GLuint' was not declared in this scope; did you mean 'uint'?
   57 | static auto glrParameters(GLuint filter, GLuint wrap) -> void {
      |                           ^~~~~~
      |                           uint
../ruby/video/opengl/utility.hpp:57:42: error: 'GLuint' was not declared in this scope; did you mean 'uint'?
   57 | static auto glrParameters(GLuint filter, GLuint wrap) -> void {
      |                                          ^~~~~~
      |                                          uint
../ruby/video/opengl/utility.hpp:57:53: error: expression list treated as compound expression in initializer [-fpermissive]
   57 | static auto glrParameters(GLuint filter, GLuint wrap) -> void {
      |                                                     ^
../ruby/video/opengl/utility.hpp:57:55: error: expected ',' or ';' before '->' token
   57 | static auto glrParameters(GLuint filter, GLuint wrap) -> void {
      |                                                       ^~
../ruby/video/opengl/utility.hpp:64:29: error: 'GLuint' was not declared in this scope; did you mean 'uint'?
   64 | static auto glrCreateShader(GLuint program, GLuint type, const char* source) -> GLuint {
      |                             ^~~~~~
      |                             uint
../ruby/video/opengl/utility.hpp:64:45: error: 'GLuint' was not declared in this scope; did you mean 'uint'?
   64 | static auto glrCreateShader(GLuint program, GLuint type, const char* source) -> GLuint {
      |                                             ^~~~~~
      |                                             uint
../ruby/video/opengl/utility.hpp:64:58: error: expected primary-expression before 'const'
   64 | static auto glrCreateShader(GLuint program, GLuint type, const char* source) -> GLuint {
      |                                                          ^~~~~
../ruby/video/opengl/utility.hpp:64:76: error: expression list treated as compound expression in initializer [-fpermissive]
   64 | static auto glrCreateShader(GLuint program, GLuint type, const char* source) -> GLuint {
      |                                                                            ^
../ruby/video/opengl/utility.hpp:64:78: error: expected ',' or ';' before '->' token
   64 | static auto glrCreateShader(GLuint program, GLuint type, const char* source) -> GLuint {
      |                                                                              ^~
../ruby/video/opengl/utility.hpp:83:28: error: 'GLuint' was not declared in this scope; did you mean 'uint'?
   83 | static auto glrLinkProgram(GLuint program) -> void {
      |                            ^~~~~~
      |                            uint
../ruby/video/opengl/utility.hpp:83:44: error: expected ',' or ';' before '->' token
   83 | static auto glrLinkProgram(GLuint program) -> void {
      |                                            ^~
../ruby/video/opengl/opengl.hpp:26:29: error: 'GLuint' does not name a type; did you mean 'uint'?
   26 |   auto getFormat() const -> GLuint;
      |                             ^~~~~~
      |                             uint
../ruby/video/opengl/opengl.hpp:27:27: error: 'GLuint' does not name a type; did you mean 'uint'?
   27 |   auto getType() const -> GLuint;
      |                           ^~~~~~
      |                           uint
../ruby/video/opengl/opengl.hpp:29:3: error: 'GLuint' does not name a type; did you mean 'uint'?
   29 |   GLuint texture = 0;
      |   ^~~~~~
      |   uint
../ruby/video/opengl/opengl.hpp:32:3: error: 'GLuint' does not name a type; did you mean 'uint'?
   32 |   GLuint format = GL_RGBA8;
      |   ^~~~~~
      |   uint
../ruby/video/opengl/opengl.hpp:33:3: error: 'GLuint' does not name a type; did you mean 'uint'?
   33 |   GLuint filter = GL_LINEAR;
      |   ^~~~~~
      |   uint
../ruby/video/opengl/opengl.hpp:34:3: error: 'GLuint' does not name a type; did you mean 'uint'?
   34 |   GLuint wrap = GL_CLAMP_TO_BORDER;
      |   ^~~~~~
      |   uint
../ruby/video/opengl/opengl.hpp:43:3: error: 'GLuint' does not name a type; did you mean 'uint'?
   43 |   GLuint program = 0;
      |   ^~~~~~
      |   uint
../ruby/video/opengl/opengl.hpp:44:3: error: 'GLuint' does not name a type; did you mean 'uint'?
   44 |   GLuint framebuffer = 0;
      |   ^~~~~~
      |   uint
../ruby/video/opengl/opengl.hpp:45:3: error: 'GLuint' does not name a type; did you mean 'uint'?
   45 |   GLuint vao = 0;
      |   ^~~~~~
      |   uint
../ruby/video/opengl/opengl.hpp:46:3: error: 'GLuint' does not name a type; did you mean 'uint'?
   46 |   GLuint vbo[3] = {0, 0, 0};
      |   ^~~~~~
      |   uint
../ruby/video/opengl/opengl.hpp:47:3: error: 'GLuint' does not name a type; did you mean 'uint'?
   47 |   GLuint vertex = 0;
      |   ^~~~~~
      |   uint
../ruby/video/opengl/opengl.hpp:48:3: error: 'GLuint' does not name a type; did you mean 'uint'?
   48 |   GLuint geometry = 0;
      |   ^~~~~~
      |   uint
../ruby/video/opengl/opengl.hpp:49:3: error: 'GLuint' does not name a type; did you mean 'uint'?
   49 |   GLuint fragment = 0;
      |   ^~~~~~
      |   uint
../ruby/video/opengl/opengl.hpp:78:3: error: 'GLuint' does not name a type; did you mean 'uint'?
   78 |   GLuint inputFormat = GL_RGBA8;
      |   ^~~~~~
      |   uint
In file included from ../ruby/video/opengl/opengl.hpp:96:
../ruby/video/opengl/texture.hpp:1:42: error: 'GLuint' does not name a type; did you mean 'uint'?
    1 | auto OpenGLTexture::getFormat() const -> GLuint {
      |                                          ^~~~~~
      |                                          uint
../ruby/video/opengl/texture.hpp:7:40: error: 'GLuint' does not name a type; did you mean 'uint'?
    7 | auto OpenGLTexture::getType() const -> GLuint {
      |                                        ^~~~~~
      |                                        uint
In file included from ../ruby/video/opengl/opengl.hpp:97:
../ruby/video/opengl/surface.hpp: In member function 'void OpenGLSurface::allocate()':
../ruby/video/opengl/surface.hpp:2:25: error: 'vao' was not declared in this scope
    2 |   glGenVertexArrays(1, &vao);
      |                         ^~~
../ruby/video/opengl/surface.hpp:2:3: error: 'glGenVertexArrays' was not declared in this scope
    2 |   glGenVertexArrays(1, &vao);
      |   ^~~~~~~~~~~~~~~~~
../ruby/video/opengl/surface.hpp:3:3: error: 'glBindVertexArray' was not declared in this scope
    3 |   glBindVertexArray(vao);
      |   ^~~~~~~~~~~~~~~~~
../ruby/video/opengl/surface.hpp:4:20: error: 'vbo' was not declared in this scope
    4 |   glGenBuffers(3, &vbo[0]);
      |                    ^~~
../ruby/video/opengl/surface.hpp:4:3: error: 'glGenBuffers' was not declared in this scope
    4 |   glGenBuffers(3, &vbo[0]);
      |   ^~~~~~~~~~~~
../ruby/video/opengl/surface.hpp: In member function 'void OpenGLSurface::size(uint, uint)':
../ruby/video/opengl/surface.hpp:12:6: error: 'texture' was not declared in this scope
   12 |   if(texture) { glDeleteTextures(1, &texture); texture = 0; }
      |      ^~~~~~~
../ruby/video/opengl/surface.hpp:12:17: error: 'glDeleteTextures' was not declared in this scope
   12 |   if(texture) { glDeleteTextures(1, &texture); texture = 0; }
      |                 ^~~~~~~~~~~~~~~~
../ruby/video/opengl/surface.hpp:16:21: error: 'texture' was not declared in this scope
   16 |   glGenTextures(1, &texture);
      |                     ^~~~~~~
../ruby/video/opengl/surface.hpp:16:3: error: 'glGenTextures' was not declared in this scope
   16 |   glGenTextures(1, &texture);
      |   ^~~~~~~~~~~~~
In file included from ../hiro/core/../gtk/platform.hpp:8,
                 from ../hiro/core/../gtk/platform.cpp:1,
                 from ../hiro/core/core.cpp:21:
../hiro/core/../gtk/font.hpp: At global scope:
../hiro/core/../gtk/font.hpp:7:20: error: 'PangoFontDescription' has not been declared
    7 |   static auto size(PangoFontDescription* font, const string& text) -> Size;
      |                    ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/font.hpp:9:43: error: 'PangoFontDescription' does not name a type
    9 |   static auto create(const Font& font) -> PangoFontDescription*;
      |                                           ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/font.hpp:9:43: error: expected ';' at end of member declaration
    9 |   static auto create(const Font& font) -> PangoFontDescription*;
      |                                           ^~~~~~~~~~~~~~~~~~~~
      |                                                               ;
../hiro/core/../gtk/font.hpp:9:64: error: expected unqualified-id before ';' token
    9 |   static auto create(const Font& font) -> PangoFontDescription*;
      |                                                                ^
../hiro/core/../gtk/font.hpp:10:20: error: 'PangoFontDescription' has not been declared
   10 |   static auto free(PangoFontDescription* font) -> void;
      |                    ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/font.hpp:11:23: error: 'GtkWidget' has not been declared
   11 |   static auto setFont(GtkWidget* widget, const Font& font) -> void;
      |                       ^~~~~~~~~
../hiro/core/../gtk/font.hpp:12:23: error: 'GtkWidget' has not been declared
   12 |   static auto setFont(GtkWidget* widget, gpointer font) -> void;
      |                       ^~~~~~~~~
../hiro/core/../gtk/font.hpp:12:42: error: 'gpointer' has not been declared
   12 |   static auto setFont(GtkWidget* widget, gpointer font) -> void;
      |                                          ^~~~~~~~
In file included from ../hiro/core/../gtk/platform.hpp:20:
../hiro/core/../gtk/window.hpp:52:3: error: 'GtkWidget' does not name a type; did you mean 'wWidget'?
   52 |   GtkWidget* widget = nullptr;
      |   ^~~~~~~~~
      |   wWidget
../ruby/video/opengl/surface.hpp:17:17: error: 'GL_TEXTURE_2D' was not declared in this scope
   17 |   glBindTexture(GL_TEXTURE_2D, texture);
      |                 ^~~~~~~~~~~~~
../hiro/core/../gtk/window.hpp:53:3: error: 'GtkWidget' does not name a type; did you mean 'wWidget'?
   53 |   GtkWidget* menuContainer = nullptr;
      |   ^~~~~~~~~
      |   wWidget
../hiro/core/../gtk/window.hpp:54:3: error: 'GtkWidget' does not name a type; did you mean 'wWidget'?
   54 |   GtkWidget* formContainer = nullptr;
      |   ^~~~~~~~~
      |   wWidget
../hiro/core/../gtk/window.hpp:55:3: error: 'GtkWidget' does not name a type; did you mean 'wWidget'?
   55 |   GtkWidget* statusContainer = nullptr;
      |   ^~~~~~~~~
      |   wWidget
../hiro/core/../gtk/window.hpp:56:3: error: 'GtkWidget' does not name a type; did you mean 'wWidget'?
   56 |   GtkWidget* gtkMenu = nullptr;
      |   ^~~~~~~~~
      |   wWidget
../hiro/core/../gtk/window.hpp:57:3: error: 'GtkWidget' does not name a type; did you mean 'wWidget'?
   57 |   GtkWidget* gtkStatus = nullptr;
      |   ^~~~~~~~~
      |   wWidget
../ruby/video/opengl/surface.hpp:17:3: error: 'glBindTexture' was not declared in this scope
   17 |   glBindTexture(GL_TEXTURE_2D, texture);
      |   ^~~~~~~~~~~~~
../hiro/core/../gtk/window.hpp:58:3: error: 'GtkAllocation' does not name a type
   58 |   GtkAllocation lastMove = {0};
      |   ^~~~~~~~~~~~~
../hiro/core/../gtk/window.hpp:59:3: error: 'GtkAllocation' does not name a type
   59 |   GtkAllocation lastSize = {0};
      |   ^~~~~~~~~~~~~
gmake: *** [../nall/GNUmakefile:165: obj/filter.o] Error 1
gmake: *** Waiting for unfinished jobs....
../ruby/video/opengl/surface.hpp:18:34: error: 'format' was not declared in this scope
   18 |   glTexImage2D(GL_TEXTURE_2D, 0, format, w, h, 0, getFormat(), getType(), buffer);
      |                                  ^~~~~~
../ruby/video/opengl/surface.hpp:18:51: error: 'getFormat' was not declared in this scope
   18 |   glTexImage2D(GL_TEXTURE_2D, 0, format, w, h, 0, getFormat(), getType(), buffer);
      |                                                   ^~~~~~~~~
../ruby/video/opengl/surface.hpp:18:64: error: 'getType' was not declared in this scope
   18 |   glTexImage2D(GL_TEXTURE_2D, 0, format, w, h, 0, getFormat(), getType(), buffer);
      |                                                                ^~~~~~~
In file included from ../hiro/core/../gtk/platform.hpp:23:
../hiro/core/../gtk/popup-menu.hpp:13:3: error: 'GtkWidget' does not name a type; did you mean 'wWidget'?
   13 |   GtkWidget* gtkMenu = nullptr;
      |   ^~~~~~~~~
      |   wWidget
In file included from ../hiro/core/../gtk/platform.hpp:25:
../hiro/core/../gtk/action/action.hpp:14:3: error: 'GtkWidget' does not name a type; did you mean 'wWidget'?
   14 |   GtkWidget* widget = nullptr;
      |   ^~~~~~~~~
      |   wWidget
In file included from ../hiro/core/../gtk/platform.hpp:26:
../hiro/core/../gtk/action/menu.hpp:14:3: error: 'GtkWidget' does not name a type; did you mean 'wWidget'?
   14 |   GtkWidget* gtkMenu = nullptr;
      |   ^~~~~~~~~
      |   wWidget
In file included from ../hiro/core/../gtk/platform.hpp:30:
../hiro/core/../gtk/action/menu-radio-item.hpp:16:3: error: 'GtkCheckMenuItem' does not name a type
   16 |   GtkCheckMenuItem* gtkCheckMenuItem = nullptr;
      |   ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/action/menu-radio-item.hpp:17:3: error: 'GtkRadioMenuItem' does not name a type
   17 |   GtkRadioMenuItem* gtkRadioMenuItem = nullptr;
      |   ^~~~~~~~~~~~~~~~
In file included from ../hiro/core/../gtk/platform.hpp:34:
../hiro/core/../gtk/widget/widget.hpp:8:46: error: 'GtkWidget' does not name a type; did you mean 'pWidget'?
    8 |   virtual auto container(mWidget& widget) -> GtkWidget*;
      |                                              ^~~~~~~~~
      |                                              pWidget
../hiro/core/../gtk/widget/widget.hpp:8:46: error: expected ';' at end of member declaration
    8 |   virtual auto container(mWidget& widget) -> GtkWidget*;
      |                                              ^~~~~~~~~
      |                                                       ;
../hiro/core/../gtk/widget/widget.hpp:8:56: error: expected unqualified-id before ';' token
    8 |   virtual auto container(mWidget& widget) -> GtkWidget*;
      |                                                        ^
../hiro/core/../gtk/widget/widget.hpp:20:3: error: 'GtkWidget' does not name a type; did you mean 'pWidget'?
   20 |   GtkWidget* gtkWidget = nullptr;
      |   ^~~~~~~~~
      |   pWidget
../ruby/video/opengl/surface.hpp:18:3: error: 'glTexImage2D' was not declared in this scope
   18 |   glTexImage2D(GL_TEXTURE_2D, 0, format, w, h, 0, getFormat(), getType(), buffer);
      |   ^~~~~~~~~~~~
../hiro/core/../gtk/widget/widget.hpp:21:3: error: 'GtkWidget' does not name a type; did you mean 'pWidget'?
   21 |   GtkWidget* gtkParent = nullptr;
      |   ^~~~~~~~~
      |   pWidget
../hiro/core/../gtk/widget/widget.hpp:22:3: error: 'GdkCursor' does not name a type
   22 |   GdkCursor* gdkMouseCursor = nullptr;
      |   ^~~~~~~~~
In file included from ../hiro/core/../gtk/platform.hpp:35:
../hiro/core/../gtk/widget/button.hpp:16:3: error: 'GtkButton' does not name a type; did you mean 'pButton'?
   16 |   GtkButton* gtkButton = nullptr;
      |   ^~~~~~~~~
      |   pButton
In file included from ../hiro/core/../gtk/platform.hpp:36:
../hiro/core/../gtk/widget/canvas.hpp:18:16: error: 'cairo_t' has not been declared
   18 |   auto _onDraw(cairo_t* context) -> void;
      |                ^~~~~~~
../hiro/core/../gtk/widget/canvas.hpp:19:18: error: 'GdkEventExpose' has not been declared
   19 |   auto _onExpose(GdkEventExpose* event) -> void;
      |                  ^~~~~~~~~~~~~~
../hiro/core/../gtk/widget/canvas.hpp:24:3: error: 'GdkPixbuf' does not name a type
   24 |   GdkPixbuf* surface = nullptr;
      |   ^~~~~~~~~
../ruby/video/opengl/surface.hpp:20:6: error: 'framebuffer' was not declared in this scope
   20 |   if(framebuffer) {
      |      ^~~~~~~~~~~
In file included from ../hiro/core/../gtk/platform.hpp:39:
../hiro/core/../gtk/widget/combo-button.hpp:17:3: error: 'GtkListStore' does not name a type
   17 |   GtkListStore* gtkListStore = nullptr;
      |   ^~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-button.hpp:18:3: error: 'GtkTreeModel' does not name a type
   18 |   GtkTreeModel* gtkTreeModel = nullptr;
      |   ^~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-button.hpp:19:3: error: 'GtkComboBox' does not name a type
   19 |   GtkComboBox* gtkComboBox = nullptr;
      |   ^~~~~~~~~~~
../hiro/core/../gtk/widget/combo-button.hpp:20:3: error: 'GtkCellRenderer' does not name a type
   20 |   GtkCellRenderer* gtkCellIcon = nullptr;
      |   ^~~~~~~~~~~~~~~
../ruby/video/opengl/surface.hpp:21:23: error: 'GL_DRAW_FRAMEBUFFER' was not declared in this scope
   21 |     glBindFramebuffer(GL_DRAW_FRAMEBUFFER, framebuffer);
      |                       ^~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-button.hpp:21:3: error: 'GtkCellRenderer' does not name a type
   21 |   GtkCellRenderer* gtkCellText = nullptr;
      |   ^~~~~~~~~~~~~~~
In file included from ../hiro/core/../gtk/platform.hpp:40:
../hiro/core/../gtk/widget/combo-button-item.hpp:14:3: error: 'GtkTreeIter' does not name a type
   14 |   GtkTreeIter gtkIter;
      |   ^~~~~~~~~~~
In file included from ../hiro/core/../gtk/platform.hpp:41:
../hiro/core/../gtk/widget/combo-edit.hpp:20:3: error: 'GtkListStore' does not name a type
   20 |   GtkListStore* gtkListStore = nullptr;
      |   ^~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-edit.hpp:21:3: error: 'GtkTreeModel' does not name a type
   21 |   GtkTreeModel* gtkTreeModel = nullptr;
      |   ^~~~~~~~~~~~
../ruby/video/opengl/surface.hpp:21:5: error: 'glBindFramebuffer' was not declared in this scope
   21 |     glBindFramebuffer(GL_DRAW_FRAMEBUFFER, framebuffer);
      |     ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-edit.hpp:22:3: error: 'GtkComboBox' does not name a type
   22 |   GtkComboBox* gtkComboBox = nullptr;
      |   ^~~~~~~~~~~
../hiro/core/../gtk/widget/combo-edit.hpp:23:3: error: 'GtkCellRenderer' does not name a type
   23 |   GtkCellRenderer* gtkCellIcon = nullptr;
      |   ^~~~~~~~~~~~~~~
../ruby/video/opengl/surface.hpp:22:28: error: 'GL_FRAMEBUFFER' was not declared in this scope
   22 |     glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, texture, 0);
      |                            ^~~~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-edit.hpp:24:3: error: 'GtkCellRenderer' does not name a type
   24 |   GtkCellRenderer* gtkCellText = nullptr;
      |   ^~~~~~~~~~~~~~~
In file included from ../hiro/core/../gtk/platform.hpp:42:
../hiro/core/../gtk/widget/combo-edit-item.hpp:13:3: error: 'GtkTreeIter' does not name a type
   13 |   GtkTreeIter gtkIter;
      |   ^~~~~~~~~~~
In file included from ../hiro/core/../gtk/platform.hpp:43:
../hiro/core/../gtk/widget/console.hpp:18:3: error: 'GtkWidget' does not name a type; did you mean 'pWidget'?
   18 |   GtkWidget* subWidget = nullptr;
      |   ^~~~~~~~~
      |   pWidget
../hiro/core/../gtk/widget/console.hpp:19:3: error: 'GtkTextBuffer' does not name a type
   19 |   GtkTextBuffer* textBuffer = nullptr;
      |   ^~~~~~~~~~~~~
In file included from ../hiro/core/../gtk/platform.hpp:44:
../hiro/core/../gtk/widget/frame.hpp:9:38: error: 'GtkWidget' does not name a type; did you mean 'pWidget'?
    9 |   auto container(mWidget& widget) -> GtkWidget* override;
      |                                      ^~~~~~~~~
      |                                      pWidget
../hiro/core/../gtk/widget/frame.hpp:9:38: error: expected ';' at end of member declaration
    9 |   auto container(mWidget& widget) -> GtkWidget* override;
      |                                      ^~~~~~~~~
      |                                               ;
../hiro/core/../gtk/widget/frame.hpp:9:49: error: ISO C++ forbids declaration of 'override' with no type [-fpermissive]
    9 |   auto container(mWidget& widget) -> GtkWidget* override;
      |                                                 ^~~~~~~~
../hiro/core/../gtk/widget/frame.hpp:19:3: error: 'GtkWidget' does not name a type; did you mean 'pWidget'?
   19 |   GtkWidget* gtkLabel = nullptr;
      |   ^~~~~~~~~
      |   pWidget
../hiro/core/../gtk/widget/frame.hpp:20:3: error: 'GtkWidget' does not name a type; did you mean 'pWidget'?
   20 |   GtkWidget* gtkChild = nullptr;
      |   ^~~~~~~~~
      |   pWidget
In file included from ../hiro/core/../gtk/platform.hpp:45:
../hiro/core/../gtk/widget/hex-edit.hpp:26:3: error: 'GtkWidget' does not name a type; did you mean 'pWidget'?
   26 |   GtkWidget* container = nullptr;
      |   ^~~~~~~~~
      |   pWidget
../hiro/core/../gtk/widget/hex-edit.hpp:27:3: error: 'GtkWidget' does not name a type; did you mean 'pWidget'?
   27 |   GtkWidget* subWidget = nullptr;
      |   ^~~~~~~~~
      |   pWidget
../ruby/video/opengl/surface.hpp:22:44: error: 'GL_COLOR_ATTACHMENT0' was not declared in this scope
   22 |     glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, texture, 0);
      |                                            ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/hex-edit.hpp:28:3: error: 'GtkWidget' does not name a type; did you mean 'pWidget'?
   28 |   GtkWidget* scrollBar = nullptr;
      |   ^~~~~~~~~
      |   pWidget
../hiro/core/../gtk/widget/hex-edit.hpp:29:3: error: 'GtkTextBuffer' does not name a type
   29 |   GtkTextBuffer* textBuffer = nullptr;
      |   ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/hex-edit.hpp:30:3: error: 'GtkTextMark' does not name a type
   30 |   GtkTextMark* textCursor = nullptr;
      |   ^~~~~~~~~~~
gmake: *** [../nall/GNUmakefile:165: obj/emulator.o] Error 1
In file included from ../hiro/core/../gtk/platform.hpp:48:
../hiro/core/../gtk/widget/icon-view.hpp:26:3: error: 'GtkWidget' does not name a type; did you mean 'pWidget'?
   26 |   GtkWidget* subWidget = nullptr;
      |   ^~~~~~~~~
      |   pWidget
../ruby/video/opengl/surface.hpp:22:5: error: 'glFramebufferTexture2D' was not declared in this scope
   22 |     glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, texture, 0);
      |     ^~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/icon-view.hpp:27:3: error: 'GtkListStore' does not name a type
   27 |   GtkListStore* store = nullptr;
      |   ^~~~~~~~~~~~
../ruby/video/opengl/surface.hpp: In member function 'void OpenGLSurface::release()':
../ruby/video/opengl/surface.hpp:29:6: error: 'vbo' was not declared in this scope
   29 |   if(vbo[0]) { glDeleteBuffers(3, &vbo[0]); for(auto &o : vbo) o = 0; }
      |      ^~~
In file included from ../hiro/core/../gtk/platform.hpp:50:
../hiro/core/../gtk/widget/label.hpp:15:3: error: 'GtkWidget' does not name a type; did you mean 'pWidget'?
   15 |   GtkWidget* subWidget = nullptr;
      |   ^~~~~~~~~
      |   pWidget
In file included from ../hiro/core/../gtk/platform.hpp:54:
../hiro/core/../gtk/widget/radio-label.hpp:15:3: error: 'GtkToggleButton' does not name a type
   15 |   GtkToggleButton* gtkToggleButton = nullptr;
      |   ^~~~~~~~~~~~~~~
../ruby/video/opengl/surface.hpp:29:16: error: 'glDeleteBuffers' was not declared in this scope
   29 |   if(vbo[0]) { glDeleteBuffers(3, &vbo[0]); for(auto &o : vbo) o = 0; }
      |                ^~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/radio-label.hpp:16:3: error: 'GtkRadioButton' does not name a type; did you mean 'wRadioButton'?
   16 |   GtkRadioButton* gtkRadioButton = nullptr;
      |   ^~~~~~~~~~~~~~
      |   wRadioButton
../ruby/video/opengl/surface.hpp:30:6: error: 'vao' was not declared in this scope
   30 |   if(vao) { glDeleteVertexArrays(1, &vao); vao = 0; }
      |      ^~~
../ruby/video/opengl/surface.hpp:30:13: error: 'glDeleteVertexArrays' was not declared in this scope
   30 |   if(vao) { glDeleteVertexArrays(1, &vao); vao = 0; }
      |             ^~~~~~~~~~~~~~~~~~~~
In file included from ../hiro/core/../gtk/platform.hpp:55:
../hiro/core/../gtk/widget/source-edit.hpp:19:3: error: 'GtkScrolledWindow' does not name a type
   19 |   GtkScrolledWindow* gtkScrolledWindow = nullptr;
      |   ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.hpp:20:3: error: 'GtkContainer' does not name a type
   20 |   GtkContainer* gtkContainer = nullptr;
      |   ^~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.hpp:21:3: error: 'GtkSourceBuffer' does not name a type
   21 |   GtkSourceBuffer* gtkSourceBuffer = nullptr;
      |   ^~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.hpp:22:3: error: 'GtkTextBuffer' does not name a type
   22 |   GtkTextBuffer* gtkTextBuffer = nullptr;
      |   ^~~~~~~~~~~~~
../ruby/video/opengl/surface.hpp:31:6: error: 'vertex' was not declared in this scope
   31 |   if(vertex) { glDetachShader(program, vertex); glDeleteShader(vertex); vertex = 0; }
      |      ^~~~~~
../hiro/core/../gtk/widget/source-edit.hpp:23:3: error: 'GtkSourceLanguageManager' does not name a type
   23 |   GtkSourceLanguageManager* gtkSourceLanguageManager = nullptr;
      |   ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.hpp:24:3: error: 'GtkSourceLanguage' does not name a type
   24 |   GtkSourceLanguage* gtkSourceLanguage = nullptr;
      |   ^~~~~~~~~~~~~~~~~
../ruby/video/opengl/surface.hpp:31:31: error: 'program' was not declared in this scope
   31 |   if(vertex) { glDetachShader(program, vertex); glDeleteShader(vertex); vertex = 0; }
      |                               ^~~~~~~
../hiro/core/../gtk/widget/source-edit.hpp:25:3: error: 'GtkSourceStyleSchemeManager' does not name a type
   25 |   GtkSourceStyleSchemeManager* gtkSourceStyleSchemeManager = nullptr;
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.hpp:26:3: error: 'GtkSourceStyleScheme' does not name a type
   26 |   GtkSourceStyleScheme* gtkSourceStyleScheme = nullptr;
      |   ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.hpp:27:3: error: 'GtkSourceView' does not name a type
   27 |   GtkSourceView* gtkSourceView = nullptr;
      |   ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.hpp:28:3: error: 'GtkTextView' does not name a type
   28 |   GtkTextView* gtkTextView = nullptr;
      |   ^~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.hpp:29:3: error: 'GtkWidget' does not name a type; did you mean 'pWidget'?
   29 |   GtkWidget* gtkWidgetSourceView = nullptr;
      |   ^~~~~~~~~
      |   pWidget
In file included from ../hiro/core/../gtk/platform.hpp:56:
../hiro/core/../gtk/widget/tab-frame.hpp:9:38: error: 'GtkWidget' does not name a type; did you mean 'pWidget'?
    9 |   auto container(mWidget& widget) -> GtkWidget* override;
      |                                      ^~~~~~~~~
      |                                      pWidget
../hiro/core/../gtk/widget/tab-frame.hpp:9:38: error: expected ';' at end of member declaration
    9 |   auto container(mWidget& widget) -> GtkWidget* override;
      |                                      ^~~~~~~~~
      |                                               ;
../hiro/core/../gtk/widget/tab-frame.hpp:9:49: error: ISO C++ forbids declaration of 'override' with no type [-fpermissive]
    9 |   auto container(mWidget& widget) -> GtkWidget* override;
      |                                                 ^~~~~~~~
../hiro/core/../gtk/widget/tab-frame.hpp:28:5: error: 'GtkWidget' does not name a type; did you mean 'pWidget'?
   28 |     GtkWidget* child = nullptr;
      |     ^~~~~~~~~
      |     pWidget
../hiro/core/../gtk/widget/tab-frame.hpp:29:5: error: 'GtkWidget' does not name a type; did you mean 'pWidget'?
   29 |     GtkWidget* container = nullptr;
      |     ^~~~~~~~~
      |     pWidget
../hiro/core/../gtk/widget/tab-frame.hpp:30:5: error: 'GtkWidget' does not name a type; did you mean 'pWidget'?
   30 |     GtkWidget* layout = nullptr;
      |     ^~~~~~~~~
      |     pWidget
../hiro/core/../gtk/widget/tab-frame.hpp:31:5: error: 'GtkWidget' does not name a type; did you mean 'pWidget'?
   31 |     GtkWidget* image = nullptr;
      |     ^~~~~~~~~
      |     pWidget
../hiro/core/../gtk/widget/tab-frame.hpp:32:5: error: 'GtkWidget' does not name a type; did you mean 'pWidget'?
   32 |     GtkWidget* title = nullptr;
      |     ^~~~~~~~~
      |     pWidget
../hiro/core/../gtk/widget/tab-frame.hpp:33:5: error: 'GtkWidget' does not name a type; did you mean 'pWidget'?
   33 |     GtkWidget* close = nullptr;
      |     ^~~~~~~~~
      |     pWidget
In file included from ../hiro/core/../gtk/platform.hpp:58:
../hiro/core/../gtk/widget/table-view.hpp:28:20: error: 'GtkTreePath' has not been declared
   28 |   auto _doActivate(GtkTreePath* = nullptr, GtkTreeViewColumn* = nullptr) -> void;
      |                    ^~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.hpp:28:44: error: 'GtkTreeViewColumn' has not been declared
   28 |   auto _doActivate(GtkTreePath* = nullptr, GtkTreeViewColumn* = nullptr) -> void;
      |                                            ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.hpp:31:20: error: 'GtkTreeViewColumn' has not been declared
   31 |   auto _doDataFunc(GtkTreeViewColumn* column, GtkCellRenderer* renderer, GtkTreeIter* iter) -> void;
      |                    ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.hpp:31:47: error: 'GtkCellRenderer' has not been declared
   31 |   auto _doDataFunc(GtkTreeViewColumn* column, GtkCellRenderer* renderer, GtkTreeIter* iter) -> void;
      |                                               ^~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.hpp:31:74: error: 'GtkTreeIter' has not been declared
   31 |   auto _doDataFunc(GtkTreeViewColumn* column, GtkCellRenderer* renderer, GtkTreeIter* iter) -> void;
      |                                                                          ^~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.hpp:32:16: error: 'GtkCellRendererText' has not been declared
   32 |   auto _doEdit(GtkCellRendererText* gtkCellRendererText, const char* path, const char* text) -> void;
      |                ^~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.hpp:33:17: error: 'GdkEventButton' has not been declared
   33 |   auto _doEvent(GdkEventButton* event) -> int;
      |                 ^~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.hpp:34:26: error: 'GtkTreeViewColumn' has not been declared
   34 |   auto _doHeaderActivate(GtkTreeViewColumn* column) -> void;
      |                          ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.hpp:35:20: error: 'GdkEventKey' has not been declared
   35 |   auto _doKeyPress(GdkEventKey* event) -> bool;
      |                    ^~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.hpp:37:18: error: 'GtkCellRendererToggle' has not been declared
   37 |   auto _doToggle(GtkCellRendererToggle* gtkCellRendererToggle, const char* path) -> void;
      |                  ^~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.hpp:42:3: error: 'GtkScrolledWindow' does not name a type
   42 |   GtkScrolledWindow* gtkScrolledWindow = nullptr;
      |   ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.hpp:43:3: error: 'GtkWidget' does not name a type; did you mean 'pWidget'?
   43 |   GtkWidget* gtkWidgetChild = nullptr;
      |   ^~~~~~~~~
      |   pWidget
../ruby/video/opengl/surface.hpp:31:16: error: 'glDetachShader' was not declared in this scope
   31 |   if(vertex) { glDetachShader(program, vertex); glDeleteShader(vertex); vertex = 0; }
      |                ^~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.hpp:44:3: error: 'GtkTreeView' does not name a type; did you mean 'wTreeView'?
   44 |   GtkTreeView* gtkTreeView = nullptr;
      |   ^~~~~~~~~~~
      |   wTreeView
../hiro/core/../gtk/widget/table-view.hpp:45:3: error: 'GtkTreeSelection' does not name a type
   45 |   GtkTreeSelection* gtkTreeSelection = nullptr;
      |   ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.hpp:46:3: error: 'GtkListStore' does not name a type
   46 |   GtkListStore* gtkListStore = nullptr;
      |   ^~~~~~~~~~~~
../ruby/video/opengl/surface.hpp:31:49: error: 'glDeleteShader' was not declared in this scope; did you mean 'glrCreateShader'?
   31 |   if(vertex) { glDetachShader(program, vertex); glDeleteShader(vertex); vertex = 0; }
      |                                                 ^~~~~~~~~~~~~~
      |                                                 glrCreateShader
../hiro/core/../gtk/widget/table-view.hpp:47:3: error: 'GtkTreeModel' does not name a type
   47 |   GtkTreeModel* gtkTreeModel = nullptr;
      |   ^~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.hpp:48:3: error: 'GtkEntry' does not name a type
   48 |   GtkEntry* gtkEntry = nullptr;
      |   ^~~~~~~~
In file included from ../hiro/core/../gtk/platform.hpp:59:
../hiro/core/../gtk/widget/table-view-column.hpp:26:3: error: 'GtkTreeViewColumn' does not name a type
   26 |   GtkTreeViewColumn* gtkColumn = nullptr;
      |   ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-column.hpp:27:3: error: 'GtkWidget' does not name a type; did you mean 'wWidget'?
   27 |   GtkWidget* gtkHeader = nullptr;
      |   ^~~~~~~~~
      |   wWidget
../hiro/core/../gtk/widget/table-view-column.hpp:28:3: error: 'GtkWidget' does not name a type; did you mean 'wWidget'?
   28 |   GtkWidget* gtkHeaderIcon = nullptr;
      |   ^~~~~~~~~
      |   wWidget
../hiro/core/../gtk/widget/table-view-column.hpp:29:3: error: 'GtkWidget' does not name a type; did you mean 'wWidget'?
   29 |   GtkWidget* gtkHeaderText = nullptr;
      |   ^~~~~~~~~
      |   wWidget
../ruby/video/opengl/surface.hpp:32:6: error: 'geometry' was not declared in this scope
   32 |   if(geometry) { glDetachShader(program, geometry); glDeleteShader(geometry); geometry = 0; }
      |      ^~~~~~~~
../hiro/core/../gtk/widget/table-view-column.hpp:30:3: error: 'GtkWidget' does not name a type; did you mean 'wWidget'?
   30 |   GtkWidget* gtkHeaderSort = nullptr;
      |   ^~~~~~~~~
      |   wWidget
../hiro/core/../gtk/widget/table-view-column.hpp:31:3: error: 'GtkCellRenderer' does not name a type
   31 |   GtkCellRenderer* gtkCellToggle = nullptr;
      |   ^~~~~~~~~~~~~~~
../ruby/video/opengl/surface.hpp:32:33: error: 'program' was not declared in this scope
   32 |   if(geometry) { glDetachShader(program, geometry); glDeleteShader(geometry); geometry = 0; }
      |                                 ^~~~~~~
../hiro/core/../gtk/widget/table-view-column.hpp:32:3: error: 'GtkCellRenderer' does not name a type
   32 |   GtkCellRenderer* gtkCellIcon = nullptr;
      |   ^~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-column.hpp:33:3: error: 'GtkCellRenderer' does not name a type
   33 |   GtkCellRenderer* gtkCellText = nullptr;
      |   ^~~~~~~~~~~~~~~
In file included from ../hiro/core/../gtk/platform.hpp:60:
../hiro/core/../gtk/widget/table-view-item.hpp:19:3: error: 'GtkTreeIter' does not name a type
   19 |   GtkTreeIter gtkIter;
      |   ^~~~~~~~~~~
In file included from ../hiro/core/../gtk/platform.hpp:62:
../hiro/core/../gtk/widget/text-edit.hpp:19:3: error: 'GtkWidget' does not name a type; did you mean 'pWidget'?
   19 |   GtkWidget* subWidget = nullptr;
      |   ^~~~~~~~~
      |   pWidget
../hiro/core/../gtk/widget/text-edit.hpp:20:3: error: 'GtkTextBuffer' does not name a type
   20 |   GtkTextBuffer* textBuffer = nullptr;
      |   ^~~~~~~~~~~~~
In file included from ../hiro/core/../gtk/platform.hpp:63:
../hiro/core/../gtk/widget/tree-view.hpp:16:22: error: 'GtkTreePath' has not been declared
   16 |   auto _activatePath(GtkTreePath* gtkPath) -> void;
      |                      ^~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.hpp:17:21: error: 'GdkEventButton' has not been declared
   17 |   auto _buttonEvent(GdkEventButton* gdkEvent) -> signed;
      |                     ^~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.hpp:18:20: error: 'GtkTreeViewColumn' has not been declared
   18 |   auto _doDataFunc(GtkTreeViewColumn* column, GtkCellRenderer* renderer, GtkTreeIter* iter) -> void;
      |                    ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.hpp:18:47: error: 'GtkCellRenderer' has not been declared
   18 |   auto _doDataFunc(GtkTreeViewColumn* column, GtkCellRenderer* renderer, GtkTreeIter* iter) -> void;
      |                                               ^~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.hpp:18:74: error: 'GtkTreeIter' has not been declared
   18 |   auto _doDataFunc(GtkTreeViewColumn* column, GtkCellRenderer* renderer, GtkTreeIter* iter) -> void;
      |                                                                          ^~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.hpp:25:3: error: 'GtkScrolledWindow' does not name a type
   25 |   GtkScrolledWindow* gtkScrolledWindow = nullptr;
      |   ^~~~~~~~~~~~~~~~~
../ruby/video/opengl/surface.hpp:32:18: error: 'glDetachShader' was not declared in this scope
   32 |   if(geometry) { glDetachShader(program, geometry); glDeleteShader(geometry); geometry = 0; }
      |                  ^~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.hpp:26:3: error: 'GtkWidget' does not name a type; did you mean 'pWidget'?
   26 |   GtkWidget* gtkWidgetChild = nullptr;
      |   ^~~~~~~~~
      |   pWidget
../hiro/core/../gtk/widget/tree-view.hpp:27:3: error: 'GtkTreeStore' does not name a type
   27 |   GtkTreeStore* gtkTreeStore = nullptr;
      |   ^~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.hpp:28:3: error: 'GtkTreeModel' does not name a type
   28 |   GtkTreeModel* gtkTreeModel = nullptr;
      |   ^~~~~~~~~~~~
../ruby/video/opengl/surface.hpp:32:53: error: 'glDeleteShader' was not declared in this scope; did you mean 'glrCreateShader'?
   32 |   if(geometry) { glDetachShader(program, geometry); glDeleteShader(geometry); geometry = 0; }
      |                                                     ^~~~~~~~~~~~~~
      |                                                     glrCreateShader
../hiro/core/../gtk/widget/tree-view.hpp:29:3: error: 'GtkTreeSelection' does not name a type
   29 |   GtkTreeSelection* gtkTreeSelection = nullptr;
      |   ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.hpp:30:3: error: 'GtkTreeView' does not name a type; did you mean 'pTreeView'?
   30 |   GtkTreeView* gtkTreeView = nullptr;
      |   ^~~~~~~~~~~
      |   pTreeView
../ruby/video/opengl/surface.hpp:33:6: error: 'fragment' was not declared in this scope
   33 |   if(fragment) { glDetachShader(program, fragment); glDeleteShader(fragment); fragment = 0; }
      |      ^~~~~~~~
../hiro/core/../gtk/widget/tree-view.hpp:31:3: error: 'GtkTreeViewColumn' does not name a type
   31 |   GtkTreeViewColumn* gtkTreeViewColumn = nullptr;
      |   ^~~~~~~~~~~~~~~~~
../ruby/video/opengl/surface.hpp:33:33: error: 'program' was not declared in this scope
   33 |   if(fragment) { glDetachShader(program, fragment); glDeleteShader(fragment); fragment = 0; }
      |                                 ^~~~~~~
../hiro/core/../gtk/widget/tree-view.hpp:32:3: error: 'GtkCellRenderer' does not name a type
   32 |   GtkCellRenderer* gtkCellToggle = nullptr;
      |   ^~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.hpp:33:3: error: 'GtkCellRenderer' does not name a type
   33 |   GtkCellRenderer* gtkCellPixbuf = nullptr;
      |   ^~~~~~~~~~~~~~~
../ruby/video/opengl/surface.hpp:33:18: error: 'glDetachShader' was not declared in this scope
   33 |   if(fragment) { glDetachShader(program, fragment); glDeleteShader(fragment); fragment = 0; }
      |                  ^~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.hpp:34:3: error: 'GtkCellRenderer' does not name a type
   34 |   GtkCellRenderer* gtkCellText = nullptr;
      |   ^~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.hpp:35:3: error: 'GtkEntry' does not name a type
   35 |   GtkEntry* gtkEntry = nullptr;
      |   ^~~~~~~~
In file included from ../hiro/core/../gtk/platform.hpp:64:
../hiro/core/../gtk/widget/tree-view-item.hpp:25:3: error: 'GtkTreeIter' does not name a type
   25 |   GtkTreeIter gtkIter;
      |   ^~~~~~~~~~~
In file included from ../hiro/core/../gtk/platform.hpp:67:
../hiro/core/../gtk/widget/viewport.hpp:11:16: error: 'cairo_t' has not been declared
   11 |   auto _onDraw(cairo_t* context) -> void;
      |                ^~~~~~~
../hiro/core/../gtk/widget/viewport.hpp:12:18: error: 'GdkEventExpose' has not been declared
   12 |   auto _onExpose(GdkEventExpose* expose) -> void;
      |                  ^~~~~~~~~~~~~~
../ruby/video/opengl/surface.hpp:33:53: error: 'glDeleteShader' was not declared in this scope; did you mean 'glrCreateShader'?
   33 |   if(fragment) { glDetachShader(program, fragment); glDeleteShader(fragment); fragment = 0; }
      |                                                     ^~~~~~~~~~~~~~
      |                                                     glrCreateShader
In file included from ../hiro/core/../gtk/platform.cpp:2:
../hiro/core/../gtk/utility.cpp:4:48: error: 'GdkColor' does not name a type; did you mean 'Color'?
    4 | static auto CreateColor(const Color& color) -> GdkColor {
      |                                                ^~~~~~~~
      |                                                Color
../hiro/core/../gtk/utility.cpp:14:61: error: 'GdkPixbuf' does not name a type
   14 | static auto CreatePixbuf(image icon, bool scale = false) -> GdkPixbuf* {
      |                                                             ^~~~~~~~~
../hiro/core/../gtk/utility.cpp:14:70: error: expected initializer before '*' token
   14 | static auto CreatePixbuf(image icon, bool scale = false) -> GdkPixbuf* {
      |                                                                      ^
../ruby/video/opengl/surface.hpp:34:6: error: 'texture' was not declared in this scope
   34 |   if(texture) { glDeleteTextures(1, &texture); texture = 0; }
      |      ^~~~~~~
../hiro/core/../gtk/utility.cpp:32:67: error: 'GtkImage' does not name a type
   32 | static auto CreateImage(const image& icon, bool scale = false) -> GtkImage* {
      |                                                                   ^~~~~~~~
../hiro/core/../gtk/utility.cpp:32:75: error: expected initializer before '*' token
   32 | static auto CreateImage(const image& icon, bool scale = false) -> GtkImage* {
      |                                                                           ^
../hiro/core/../gtk/utility.cpp:39:23: error: 'GtkSelectionData' was not declared in this scope
   39 | static auto DropPaths(GtkSelectionData* data) -> vector<string> {
      |                       ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/utility.cpp:39:41: error: 'data' was not declared in this scope
   39 | static auto DropPaths(GtkSelectionData* data) -> vector<string> {
      |                                         ^~~~
../hiro/core/../gtk/utility.cpp:39:47: error: expected ',' or ';' before '->' token
   39 | static auto DropPaths(GtkSelectionData* data) -> vector<string> {
      |                                               ^~
../ruby/video/opengl/surface.hpp:34:17: error: 'glDeleteTextures' was not declared in this scope
   34 |   if(texture) { glDeleteTextures(1, &texture); texture = 0; }
      |                 ^~~~~~~~~~~~~~~~
In file included from ../hiro/core/../gtk/platform.cpp:4:
../hiro/core/../gtk/font.cpp: In static member function 'static hiro::Size hiro::pFont::size(const hiro::Font&, const nall::string&)':
../hiro/core/../gtk/font.cpp:6:3: error: 'PangoFontDescription' was not declared in this scope
    6 |   PangoFontDescription* description = create(font);
      |   ^~~~~~~~~~~~~~~~~~~~
../ruby/video/opengl/surface.hpp:35:6: error: 'framebuffer' was not declared in this scope
   35 |   if(framebuffer) { glDeleteFramebuffers(1, &framebuffer); framebuffer = 0; }
      |      ^~~~~~~~~~~
../hiro/core/../gtk/font.cpp:6:25: error: 'description' was not declared in this scope
    6 |   PangoFontDescription* description = create(font);
      |                         ^~~~~~~~~~~
../ruby/video/opengl/surface.hpp:35:21: error: 'glDeleteFramebuffers' was not declared in this scope
   35 |   if(framebuffer) { glDeleteFramebuffers(1, &framebuffer); framebuffer = 0; }
      |                     ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/font.cpp:6:39: error: 'create' was not declared in this scope; did you mean 'creat'?
    6 |   PangoFontDescription* description = create(font);
      |                                       ^~~~~~
      |                                       creat
../hiro/core/../gtk/font.cpp: At global scope:
../hiro/core/../gtk/font.cpp:12:6: error: 'auto hiro::pFont::size' is not a static data member of 'struct hiro::pFont'
   12 | auto pFont::size(PangoFontDescription* font, const string& text) -> Size {
      |      ^~~~~
../hiro/core/../gtk/font.cpp:12:18: error: 'PangoFontDescription' was not declared in this scope
   12 | auto pFont::size(PangoFontDescription* font, const string& text) -> Size {
      |                  ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/font.cpp:12:40: error: 'font' was not declared in this scope; did you mean 'Font'?
   12 | auto pFont::size(PangoFontDescription* font, const string& text) -> Size {
      |                                        ^~~~
      |                                        Font
../ruby/video/opengl/surface.hpp:36:6: error: 'program' was not declared in this scope
   36 |   if(program) { glDeleteProgram(program); program = 0; }
      |      ^~~~~~~
../hiro/core/../gtk/font.cpp:12:46: error: expected primary-expression before 'const'
   12 | auto pFont::size(PangoFontDescription* font, const string& text) -> Size {
      |                                              ^~~~~
../hiro/core/../gtk/font.cpp:12:64: error: expression list treated as compound expression in initializer [-fpermissive]
   12 | auto pFont::size(PangoFontDescription* font, const string& text) -> Size {
      |                                                                ^
../hiro/core/../gtk/font.cpp:12:66: error: expected ',' or ';' before '->' token
   12 | auto pFont::size(PangoFontDescription* font, const string& text) -> Size {
      |                                                                  ^~
../hiro/core/../gtk/font.cpp:40:41: error: 'PangoFontDescription' does not name a type
   40 | auto pFont::create(const Font& font) -> PangoFontDescription* {
      |                                         ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/font.cpp:40:61: error: expected initializer before '*' token
   40 | auto pFont::create(const Font& font) -> PangoFontDescription* {
      |                                                             ^
../hiro/core/../gtk/font.cpp:49:6: error: 'auto hiro::pFont::free' is not a static data member of 'struct hiro::pFont'
   49 | auto pFont::free(PangoFontDescription* font) -> void {
      |      ^~~~~
../ruby/video/opengl/surface.hpp:36:17: error: 'glDeleteProgram' was not declared in this scope
   36 |   if(program) { glDeleteProgram(program); program = 0; }
      |                 ^~~~~~~~~~~~~~~
../hiro/core/../gtk/font.cpp:49:18: error: 'PangoFontDescription' was not declared in this scope
   49 | auto pFont::free(PangoFontDescription* font) -> void {
      |                  ^~~~~~~~~~~~~~~~~~~~
../ruby/video/opengl/surface.hpp: In member function 'void OpenGLSurface::render(uint, uint, uint, uint, uint, uint)':
../ruby/video/opengl/surface.hpp:41:3: error: 'glViewport' was not declared in this scope
   41 |   glViewport(targetX, targetY, targetWidth, targetHeight);
      |   ^~~~~~~~~~
../ruby/video/opengl/surface.hpp:49:3: error: 'GLfloat' was not declared in this scope; did you mean 'float'?
   49 |   GLfloat modelView[] = {
      |   ^~~~~~~
      |   float
../ruby/video/opengl/surface.hpp:56:10: error: expected ';' before 'projection'
   56 |   GLfloat projection[] = {
      |          ^~~~~~~~~~~
      |          ;
../ruby/video/opengl/surface.hpp:63:10: error: expected ';' before 'modelViewProjection'
   63 |   GLfloat modelViewProjection[4 * 4];
      |          ^~~~~~~~~~~~~~~~~~~~
      |          ;
../hiro/core/../gtk/font.cpp:49:40: error: 'font' was not declared in this scope; did you mean 'Font'?
   49 | auto pFont::free(PangoFontDescription* font) -> void {
      |                                        ^~~~
      |                                        Font
../hiro/core/../gtk/font.cpp:49:46: error: expected ',' or ';' before '->' token
   49 | auto pFont::free(PangoFontDescription* font) -> void {
      |                                              ^~
../hiro/core/../gtk/font.cpp:53:6: error: 'auto hiro::pFont::setFont' is not a static data member of 'struct hiro::pFont'
   53 | auto pFont::setFont(GtkWidget* widget, const Font& font) -> void {
      |      ^~~~~
../hiro/core/../gtk/font.cpp:53:21: error: 'GtkWidget' was not declared in this scope; did you mean 'wWidget'?
   53 | auto pFont::setFont(GtkWidget* widget, const Font& font) -> void {
      |                     ^~~~~~~~~
      |                     wWidget
../hiro/core/../gtk/font.cpp:53:32: error: 'widget' was not declared in this scope; did you mean 'Widget'?
   53 | auto pFont::setFont(GtkWidget* widget, const Font& font) -> void {
      |                                ^~~~~~
      |                                Widget
../hiro/core/../gtk/font.cpp:53:40: error: expected primary-expression before 'const'
   53 | auto pFont::setFont(GtkWidget* widget, const Font& font) -> void {
      |                                        ^~~~~
../hiro/core/../gtk/font.cpp:53:56: error: expression list treated as compound expression in initializer [-fpermissive]
   53 | auto pFont::setFont(GtkWidget* widget, const Font& font) -> void {
      |                                                        ^
../hiro/core/../gtk/font.cpp:53:58: error: expected ',' or ';' before '->' token
   53 | auto pFont::setFont(GtkWidget* widget, const Font& font) -> void {
      |                                                          ^~
../hiro/core/../gtk/font.cpp:59:6: error: 'auto hiro::pFont::setFont' is not a static data member of 'struct hiro::pFont'
   59 | auto pFont::setFont(GtkWidget* widget, gpointer font) -> void {
      |      ^~~~~
../hiro/core/../gtk/font.cpp:59:21: error: 'GtkWidget' was not declared in this scope; did you mean 'wWidget'?
   59 | auto pFont::setFont(GtkWidget* widget, gpointer font) -> void {
      |                     ^~~~~~~~~
      |                     wWidget
../hiro/core/../gtk/font.cpp:59:32: error: 'widget' was not declared in this scope; did you mean 'Widget'?
   59 | auto pFont::setFont(GtkWidget* widget, gpointer font) -> void {
      |                                ^~~~~~
      |                                Widget
../hiro/core/../gtk/font.cpp:59:40: error: 'gpointer' was not declared in this scope
   59 | auto pFont::setFont(GtkWidget* widget, gpointer font) -> void {
      |                                        ^~~~~~~~
../hiro/core/../gtk/font.cpp:59:53: error: expression list treated as compound expression in initializer [-fpermissive]
   59 | auto pFont::setFont(GtkWidget* widget, gpointer font) -> void {
      |                                                     ^
../hiro/core/../gtk/font.cpp:59:55: error: expected ',' or ';' before '->' token
   59 | auto pFont::setFont(GtkWidget* widget, gpointer font) -> void {
      |                                                       ^~
In file included from ../hiro/core/../gtk/platform.cpp:5:
../hiro/core/../gtk/desktop.cpp: In static member function 'static hiro::Size hiro::pDesktop::size()':
../hiro/core/../gtk/desktop.cpp:7:26: error: 'gdk_screen_get_default' was not declared in this scope
    7 |     gdk_screen_get_width(gdk_screen_get_default()),
      |                          ^~~~~~~~~~~~~~~~~~~~~~
../ruby/video/opengl/surface.hpp:64:18: error: 'modelViewProjection' was not declared in this scope
   64 |   MatrixMultiply(modelViewProjection, modelView, 4, 4, projection, 4, 4);
      |                  ^~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/desktop.cpp:7:5: error: 'gdk_screen_get_width' was not declared in this scope
    7 |     gdk_screen_get_width(gdk_screen_get_default()),
      |     ^~~~~~~~~~~~~~~~~~~~
../ruby/video/opengl/surface.hpp:64:39: error: 'modelView' was not declared in this scope
   64 |   MatrixMultiply(modelViewProjection, modelView, 4, 4, projection, 4, 4);
      |                                       ^~~~~~~~~
../ruby/video/opengl/surface.hpp:64:56: error: 'projection' was not declared in this scope
   64 |   MatrixMultiply(modelViewProjection, modelView, 4, 4, projection, 4, 4);
      |                                                        ^~~~~~~~~~
../hiro/core/../gtk/desktop.cpp:8:5: error: 'gdk_screen_get_height' was not declared in this scope
    8 |     gdk_screen_get_height(gdk_screen_get_default())
      |     ^~~~~~~~~~~~~~~~~~~~~
../ruby/video/opengl/surface.hpp:66:10: error: expected ';' before 'vertices'
   66 |   GLfloat vertices[] = {
      |          ^~~~~~~~~
      |          ;
../ruby/video/opengl/surface.hpp:73:10: error: expected ';' before 'positions'
   73 |   GLfloat positions[4 * 4];
      |          ^~~~~~~~~~
      |          ;
../hiro/core/../gtk/desktop.cpp:9:3: error: could not convert '{<expression error>, <expression error>}' from '<brace-enclosed initializer list>' to 'hiro::Size'
    9 |   };
      |   ^
      |   |
      |   <brace-enclosed initializer list>
In file included from ../hiro/core/../gtk/platform.cpp:6:
../hiro/core/../gtk/monitor.cpp: In static member function 'static uint hiro::pMonitor::count()':
../hiro/core/../gtk/monitor.cpp:10:36: error: 'gdk_screen_get_default' was not declared in this scope
   10 |   return gdk_screen_get_n_monitors(gdk_screen_get_default());
      |                                    ^~~~~~~~~~~~~~~~~~~~~~
../ruby/video/opengl/surface.hpp:75:21: error: 'positions' was not declared in this scope; did you mean 'PPosition'?
   75 |     MatrixMultiply(&positions[n], &vertices[n], 1, 4, modelViewProjection, 4, 4);
      |                     ^~~~~~~~~
      |                     PPosition
../ruby/video/opengl/surface.hpp:75:36: error: 'vertices' was not declared in this scope
   75 |     MatrixMultiply(&positions[n], &vertices[n], 1, 4, modelViewProjection, 4, 4);
      |                                    ^~~~~~~~
../ruby/video/opengl/surface.hpp:78:10: error: expected ';' before 'texCoords'
   78 |   GLfloat texCoords[] = {
      |          ^~~~~~~~~~
      |          ;
../hiro/core/../gtk/monitor.cpp:10:10: error: 'gdk_screen_get_n_monitors' was not declared in this scope
   10 |   return gdk_screen_get_n_monitors(gdk_screen_get_default());
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/monitor.cpp: In static member function 'static hiro::Position hiro::pMonitor::dpi(uint)':
../hiro/core/../gtk/monitor.cpp:19:47: error: 'gdk_screen_get_default' was not declared in this scope
   19 |   float dpi = round(gdk_screen_get_resolution(gdk_screen_get_default()));
      |                                               ^~~~~~~~~~~~~~~~~~~~~~
../ruby/video/opengl/surface.hpp:89:21: error: 'vao' was not declared in this scope
   89 |   glBindVertexArray(vao);
      |                     ^~~
../hiro/core/../gtk/monitor.cpp:19:21: error: 'gdk_screen_get_resolution' was not declared in this scope
   19 |   float dpi = round(gdk_screen_get_resolution(gdk_screen_get_default()));
      |                     ^~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/monitor.cpp: In static member function 'static hiro::Geometry hiro::pMonitor::geometry(uint)':
../hiro/core/../gtk/monitor.cpp:31:3: error: 'GdkRectangle' was not declared in this scope
   31 |   GdkRectangle rectangle = {};
      |   ^~~~~~~~~~~~
../ruby/video/opengl/surface.hpp:89:3: error: 'glBindVertexArray' was not declared in this scope
   89 |   glBindVertexArray(vao);
      |   ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/monitor.cpp:33:35: error: 'gdk_screen_get_default' was not declared in this scope
   33 |   gdk_screen_get_monitor_geometry(gdk_screen_get_default(), monitor, &rectangle);
      |                                   ^~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/monitor.cpp:33:71: error: 'rectangle' was not declared in this scope
   33 |   gdk_screen_get_monitor_geometry(gdk_screen_get_default(), monitor, &rectangle);
      |                                                                       ^~~~~~~~~
../hiro/core/../gtk/monitor.cpp:33:3: error: 'gdk_screen_get_monitor_geometry' was not declared in this scope
   33 |   gdk_screen_get_monitor_geometry(gdk_screen_get_default(), monitor, &rectangle);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/monitor.cpp:38:70: error: could not convert '{<expression error>, <expression error>, <expression error>, <expression error>}' from '<brace-enclosed initializer list>' to 'hiro::Geometry'
   38 |   return {rectangle.x, rectangle.y, rectangle.width, rectangle.height};
      |                                                                      ^
      |                                                                      |
      |                                                                      <brace-enclosed initializer list>
../hiro/core/../gtk/monitor.cpp: In static member function 'static uint hiro::pMonitor::primary()':
../hiro/core/../gtk/monitor.cpp:43:41: error: 'gdk_screen_get_default' was not declared in this scope
   43 |   return gdk_screen_get_primary_monitor(gdk_screen_get_default());
      |                                         ^~~~~~~~~~~~~~~~~~~~~~
../ruby/video/opengl/surface.hpp:91:16: error: 'GL_ARRAY_BUFFER' was not declared in this scope
   91 |   glBindBuffer(GL_ARRAY_BUFFER, vbo[0]);
      |                ^~~~~~~~~~~~~~~
../hiro/core/../gtk/monitor.cpp:43:10: error: 'gdk_screen_get_primary_monitor' was not declared in this scope
   43 |   return gdk_screen_get_primary_monitor(gdk_screen_get_default());
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../ruby/video/opengl/surface.hpp:91:33: error: 'vbo' was not declared in this scope
   91 |   glBindBuffer(GL_ARRAY_BUFFER, vbo[0]);
      |                                 ^~~
In file included from ../hiro/core/../gtk/platform.cpp:7:
../hiro/core/../gtk/keyboard.cpp: In static member function 'static int hiro::pKeyboard::_translate(unsigned int)':
../hiro/core/../gtk/keyboard.cpp:46:8: error: 'GDK_KEY_Escape' was not declared in this scope
   46 |   case GDK_KEY_Escape: return 0;
      |        ^~~~~~~~~~~~~~
../ruby/video/opengl/surface.hpp:91:3: error: 'glBindBuffer' was not declared in this scope
   91 |   glBindBuffer(GL_ARRAY_BUFFER, vbo[0]);
      |   ^~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:47:8: error: 'GDK_KEY_F1' was not declared in this scope
   47 |   case GDK_KEY_F1: return 0;
      |        ^~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:48:8: error: 'GDK_KEY_F2' was not declared in this scope
   48 |   case GDK_KEY_F2: return 0;
      |        ^~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:49:8: error: 'GDK_KEY_F3' was not declared in this scope
   49 |   case GDK_KEY_F3: return 0;
      |        ^~~~~~~~~~
../ruby/video/opengl/surface.hpp:92:55: error: 'vertices' was not declared in this scope
   92 |   glBufferData(GL_ARRAY_BUFFER, 16 * sizeof(GLfloat), vertices, GL_STATIC_DRAW);
      |                                                       ^~~~~~~~
../hiro/core/../gtk/keyboard.cpp:50:8: error: 'GDK_KEY_F4' was not declared in this scope
   50 |   case GDK_KEY_F4: return 0;
      |        ^~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:51:8: error: 'GDK_KEY_F5' was not declared in this scope
   51 |   case GDK_KEY_F5: return 0;
      |        ^~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:52:8: error: 'GDK_KEY_F6' was not declared in this scope
   52 |   case GDK_KEY_F6: return 0;
      |        ^~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:53:8: error: 'GDK_KEY_F7' was not declared in this scope
   53 |   case GDK_KEY_F7: return 0;
      |        ^~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:54:8: error: 'GDK_KEY_F8' was not declared in this scope
   54 |   case GDK_KEY_F8: return 0;
      |        ^~~~~~~~~~
../ruby/video/opengl/surface.hpp:92:65: error: 'GL_STATIC_DRAW' was not declared in this scope
   92 |   glBufferData(GL_ARRAY_BUFFER, 16 * sizeof(GLfloat), vertices, GL_STATIC_DRAW);
      |                                                                 ^~~~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:55:8: error: 'GDK_KEY_F9' was not declared in this scope
   55 |   case GDK_KEY_F9: return 0;
      |        ^~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:56:8: error: 'GDK_KEY_F10' was not declared in this scope
   56 |   case GDK_KEY_F10: return 0;
      |        ^~~~~~~~~~~
../ruby/video/opengl/surface.hpp:92:3: error: 'glBufferData' was not declared in this scope
   92 |   glBufferData(GL_ARRAY_BUFFER, 16 * sizeof(GLfloat), vertices, GL_STATIC_DRAW);
      |   ^~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:57:8: error: 'GDK_KEY_F11' was not declared in this scope
   57 |   case GDK_KEY_F11: return 0;
      |        ^~~~~~~~~~~
../ruby/video/opengl/surface.hpp:93:3: error: 'GLint' was not declared in this scope
   93 |   GLint locationVertex = glGetAttribLocation(program, "vertex");
      |   ^~~~~
../hiro/core/../gtk/keyboard.cpp:58:8: error: 'GDK_KEY_F12' was not declared in this scope
   58 |   case GDK_KEY_F12: return 0;
      |        ^~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:60:8: error: 'GDK_KEY_Print' was not declared in this scope
   60 |   case GDK_KEY_Print: return 0;
      |        ^~~~~~~~~~~~~
../ruby/video/opengl/surface.hpp:94:29: error: 'locationVertex' was not declared in this scope
   94 |   glEnableVertexAttribArray(locationVertex);
      |                             ^~~~~~~~~~~~~~
../ruby/video/opengl/surface.hpp:94:3: error: 'glEnableVertexAttribArray' was not declared in this scope
   94 |   glEnableVertexAttribArray(locationVertex);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:61:8: error: 'GDK_KEY_Scroll_Lock' was not declared in this scope
   61 |   case GDK_KEY_Scroll_Lock: return 0;
      |        ^~~~~~~~~~~~~~~~~~~
../ruby/video/opengl/surface.hpp:95:44: error: 'GL_FLOAT' was not declared in this scope
   95 |   glVertexAttribPointer(locationVertex, 4, GL_FLOAT, GL_FALSE, 0, 0);
      |                                            ^~~~~~~~
../hiro/core/../gtk/keyboard.cpp:62:8: error: 'GDK_KEY_Pause' was not declared in this scope
   62 |   case GDK_KEY_Pause: return 0;
      |        ^~~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:64:8: error: 'GDK_KEY_Insert' was not declared in this scope
   64 |   case GDK_KEY_Insert: return 0;
      |        ^~~~~~~~~~~~~~
../ruby/video/opengl/surface.hpp:95:54: error: 'GL_FALSE' was not declared in this scope; did you mean 'AL_FALSE'?
   95 |   glVertexAttribPointer(locationVertex, 4, GL_FLOAT, GL_FALSE, 0, 0);
      |                                                      ^~~~~~~~
      |                                                      AL_FALSE
../hiro/core/../gtk/keyboard.cpp:65:8: error: 'GDK_KEY_Delete' was not declared in this scope
   65 |   case GDK_KEY_Delete: return 0;
      |        ^~~~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:66:8: error: 'GDK_KEY_Home' was not declared in this scope
   66 |   case GDK_KEY_Home: return 0;
      |        ^~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:67:8: error: 'GDK_KEY_End' was not declared in this scope
   67 |   case GDK_KEY_End: return 0;
      |        ^~~~~~~~~~~
../ruby/video/opengl/surface.hpp:95:3: error: 'glVertexAttribPointer' was not declared in this scope
   95 |   glVertexAttribPointer(locationVertex, 4, GL_FLOAT, GL_FALSE, 0, 0);
      |   ^~~~~~~~~~~~~~~~~~~~~
../ruby/video/opengl/surface.hpp:98:55: error: 'positions' was not declared in this scope; did you mean 'PPosition'?
   98 |   glBufferData(GL_ARRAY_BUFFER, 16 * sizeof(GLfloat), positions, GL_STATIC_DRAW);
      |                                                       ^~~~~~~~~
      |                                                       PPosition
../ruby/video/opengl/surface.hpp:99:8: error: expected ';' before 'locationPosition'
   99 |   GLint locationPosition = glGetAttribLocation(program, "position");
      |        ^~~~~~~~~~~~~~~~~
      |        ;
../hiro/core/../gtk/keyboard.cpp:68:8: error: 'GDK_KEY_Prior' was not declared in this scope
   68 |   case GDK_KEY_Prior: return 0;
      |        ^~~~~~~~~~~~~
../ruby/video/opengl/surface.hpp:100:29: error: 'locationPosition' was not declared in this scope
  100 |   glEnableVertexAttribArray(locationPosition);
      |                             ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:69:8: error: 'GDK_KEY_Next' was not declared in this scope
   69 |   case GDK_KEY_Next: return 0;
      |        ^~~~~~~~~~~~
../ruby/video/opengl/surface.hpp:104:54: error: 'texCoords' was not declared in this scope
  104 |   glBufferData(GL_ARRAY_BUFFER, 8 * sizeof(GLfloat), texCoords, GL_STATIC_DRAW);
      |                                                      ^~~~~~~~~
../ruby/video/opengl/surface.hpp:105:8: error: expected ';' before 'locationTexCoord'
  105 |   GLint locationTexCoord = glGetAttribLocation(program, "texCoord");
      |        ^~~~~~~~~~~~~~~~~
      |        ;
../hiro/core/../gtk/keyboard.cpp:71:8: error: 'GDK_KEY_Up' was not declared in this scope
   71 |   case GDK_KEY_Up: return 0;
      |        ^~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:72:8: error: 'GDK_KEY_Down' was not declared in this scope
   72 |   case GDK_KEY_Down: return 0;
      |        ^~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:73:8: error: 'GDK_KEY_Left' was not declared in this scope
   73 |   case GDK_KEY_Left: return 0;
      |        ^~~~~~~~~~~~
../ruby/video/opengl/surface.hpp:106:29: error: 'locationTexCoord' was not declared in this scope
  106 |   glEnableVertexAttribArray(locationTexCoord);
      |                             ^~~~~~~~~~~~~~~~
../ruby/video/opengl/surface.hpp:109:26: error: 'program' was not declared in this scope
  109 |   glBindFragDataLocation(program, 0, "fragColor");
      |                          ^~~~~~~
../hiro/core/../gtk/keyboard.cpp:74:8: error: 'GDK_KEY_Right' was not declared in this scope
   74 |   case GDK_KEY_Right: return 0;
      |        ^~~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:76:8: error: 'GDK_KEY_grave' was not declared in this scope
   76 |   case GDK_KEY_grave: return '`';
      |        ^~~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:77:8: error: 'GDK_KEY_1' was not declared in this scope
   77 |   case GDK_KEY_1: return '1';
      |        ^~~~~~~~~
../ruby/video/opengl/surface.hpp:109:3: error: 'glBindFragDataLocation' was not declared in this scope
  109 |   glBindFragDataLocation(program, 0, "fragColor");
      |   ^~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:78:8: error: 'GDK_KEY_2' was not declared in this scope
   78 |   case GDK_KEY_2: return '2';
      |        ^~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:79:8: error: 'GDK_KEY_3' was not declared in this scope
   79 |   case GDK_KEY_3: return '3';
      |        ^~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:80:8: error: 'GDK_KEY_4' was not declared in this scope
   80 |   case GDK_KEY_4: return '4';
      |        ^~~~~~~~~
../ruby/video/opengl/surface.hpp:110:16: error: 'GL_TRIANGLE_STRIP' was not declared in this scope
  110 |   glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
      |                ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:81:8: error: 'GDK_KEY_5' was not declared in this scope
   81 |   case GDK_KEY_5: return '5';
      |        ^~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:82:8: error: 'GDK_KEY_6' was not declared in this scope
   82 |   case GDK_KEY_6: return '6';
      |        ^~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:83:8: error: 'GDK_KEY_7' was not declared in this scope
   83 |   case GDK_KEY_7: return '7';
      |        ^~~~~~~~~
../ruby/video/opengl/surface.hpp:110:3: error: 'glDrawArrays' was not declared in this scope
  110 |   glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
      |   ^~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:84:8: error: 'GDK_KEY_8' was not declared in this scope
   84 |   case GDK_KEY_8: return '8';
      |        ^~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:85:8: error: 'GDK_KEY_9' was not declared in this scope
   85 |   case GDK_KEY_9: return '9';
      |        ^~~~~~~~~
../ruby/video/opengl/surface.hpp:112:3: error: 'glDisableVertexAttribArray' was not declared in this scope
  112 |   glDisableVertexAttribArray(locationVertex);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:86:8: error: 'GDK_KEY_0' was not declared in this scope
   86 |   case GDK_KEY_0: return '0';
      |        ^~~~~~~~~
In file included from ../ruby/video/opengl/opengl.hpp:98:
../ruby/video/opengl/program.hpp: In member function 'void OpenGLProgram::bind(OpenGL*, const nall::Markup::Node&, const nall::string&)':
../ruby/video/opengl/program.hpp:2:3: error: 'filter' was not declared in this scope
    2 |   filter = glrFilter(node["filter"].text());
      |   ^~~~~~
../ruby/video/opengl/program.hpp:2:12: error: 'glrFilter' was not declared in this scope
    2 |   filter = glrFilter(node["filter"].text());
      |            ^~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:87:8: error: 'GDK_KEY_minus' was not declared in this scope
   87 |   case GDK_KEY_minus: return '-';
      |        ^~~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:88:8: error: 'GDK_KEY_equal' was not declared in this scope
   88 |   case GDK_KEY_equal: return '=';
      |        ^~~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:89:8: error: 'GDK_KEY_BackSpace' was not declared in this scope
   89 |   case GDK_KEY_BackSpace: return '\b';
      |        ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:91:8: error: 'GDK_KEY_asciitilde' was not declared in this scope
   91 |   case GDK_KEY_asciitilde: return '~';
      |        ^~~~~~~~~~~~~~~~~~
../ruby/video/opengl/program.hpp:3:3: error: 'wrap' was not declared in this scope
    3 |   wrap = glrWrap(node["wrap"].text());
      |   ^~~~
../hiro/core/../gtk/keyboard.cpp:92:8: error: 'GDK_KEY_exclam' was not declared in this scope
   92 |   case GDK_KEY_exclam: return '!';
      |        ^~~~~~~~~~~~~~
../ruby/video/opengl/program.hpp:3:10: error: 'glrWrap' was not declared in this scope
    3 |   wrap = glrWrap(node["wrap"].text());
      |          ^~~~~~~
../ruby/video/opengl/program.hpp:12:3: error: 'format' was not declared in this scope
   12 |   format = glrFormat(node["format"].text());
      |   ^~~~~~
../hiro/core/../gtk/keyboard.cpp:93:8: error: 'GDK_KEY_at' was not declared in this scope
   93 |   case GDK_KEY_at: return '@';
      |        ^~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:94:8: error: 'GDK_KEY_numbersign' was not declared in this scope
   94 |   case GDK_KEY_numbersign: return '#';
      |        ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:95:8: error: 'GDK_KEY_dollar' was not declared in this scope
   95 |   case GDK_KEY_dollar: return '$';
      |        ^~~~~~~~~~~~~~
../ruby/video/opengl/program.hpp:12:12: error: 'glrFormat' was not declared in this scope
   12 |   format = glrFormat(node["format"].text());
      |            ^~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:96:8: error: 'GDK_KEY_percent' was not declared in this scope
   96 |   case GDK_KEY_percent: return '%';
      |        ^~~~~~~~~~~~~~~
../ruby/video/opengl/program.hpp:14:3: error: 'program' was not declared in this scope
   14 |   program = glCreateProgram();
      |   ^~~~~~~
../ruby/video/opengl/program.hpp:14:13: error: 'glCreateProgram' was not declared in this scope; did you mean 'glrLinkProgram'?
   14 |   program = glCreateProgram();
      |             ^~~~~~~~~~~~~~~
      |             glrLinkProgram
../hiro/core/../gtk/keyboard.cpp:97:8: error: 'GDK_KEY_asciicircum' was not declared in this scope
   97 |   case GDK_KEY_asciicircum: return '^';
      |        ^~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:98:8: error: 'GDK_KEY_ampersand' was not declared in this scope
   98 |   case GDK_KEY_ampersand: return '&';
      |        ^~~~~~~~~~~~~~~~~
../ruby/video/opengl/program.hpp:15:25: error: 'framebuffer' was not declared in this scope
   15 |   glGenFramebuffers(1, &framebuffer);
      |                         ^~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:99:8: error: 'GDK_KEY_asterisk' was not declared in this scope
   99 |   case GDK_KEY_asterisk: return '*';
      |        ^~~~~~~~~~~~~~~~
../ruby/video/opengl/program.hpp:15:3: error: 'glGenFramebuffers' was not declared in this scope
   15 |   glGenFramebuffers(1, &framebuffer);
      |   ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:100:8: error: 'GDK_KEY_parenleft' was not declared in this scope
  100 |   case GDK_KEY_parenleft: return '(';
      |        ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:101:8: error: 'GDK_KEY_parenright' was not declared in this scope
  101 |   case GDK_KEY_parenright: return ')';
      |        ^~~~~~~~~~~~~~~~~~
../ruby/video/opengl/program.hpp:20:5: error: 'vertex' was not declared in this scope
   20 |     vertex = glrCreateShader(program, GL_VERTEX_SHADER, source);
      |     ^~~~~~
../hiro/core/../gtk/keyboard.cpp:102:8: error: 'GDK_KEY_underscore' was not declared in this scope
  102 |   case GDK_KEY_underscore: return '_';
      |        ^~~~~~~~~~~~~~~~~~
../ruby/video/opengl/program.hpp:20:39: error: 'GL_VERTEX_SHADER' was not declared in this scope
   20 |     vertex = glrCreateShader(program, GL_VERTEX_SHADER, source);
      |                                       ^~~~~~~~~~~~~~~~
../ruby/video/opengl/program.hpp:22:5: error: 'vertex' was not declared in this scope
   22 |     vertex = glrCreateShader(program, GL_VERTEX_SHADER, OpenGLVertexShader);
      |     ^~~~~~
../hiro/core/../gtk/keyboard.cpp:103:8: error: 'GDK_KEY_plus' was not declared in this scope
  103 |   case GDK_KEY_plus: return '+';
      |        ^~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:105:8: error: 'GDK_KEY_Tab' was not declared in this scope
  105 |   case GDK_KEY_Tab: return '\t';
      |        ^~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:106:8: error: 'GDK_KEY_Caps_Lock' was not declared in this scope
  106 |   case GDK_KEY_Caps_Lock: return 0;
      |        ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:107:8: error: 'GDK_KEY_Return' was not declared in this scope
  107 |   case GDK_KEY_Return: return '\n';
      |        ^~~~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:108:8: error: 'GDK_KEY_Shift_L' was not declared in this scope
  108 |   case GDK_KEY_Shift_L: return 0;
      |        ^~~~~~~~~~~~~~~
../ruby/video/opengl/program.hpp:22:39: error: 'GL_VERTEX_SHADER' was not declared in this scope
   22 |     vertex = glrCreateShader(program, GL_VERTEX_SHADER, OpenGLVertexShader);
      |                                       ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:109:8: error: 'GDK_KEY_Shift_R' was not declared in this scope
  109 |   case GDK_KEY_Shift_R: return 0;
      |        ^~~~~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:110:8: error: 'GDK_KEY_Control_L' was not declared in this scope
  110 |   case GDK_KEY_Control_L: return 0;
      |        ^~~~~~~~~~~~~~~~~
../ruby/video/opengl/program.hpp:28:5: error: 'geometry' was not declared in this scope
   28 |     geometry = glrCreateShader(program, GL_GEOMETRY_SHADER, source);
      |     ^~~~~~~~
../hiro/core/../gtk/keyboard.cpp:111:8: error: 'GDK_KEY_Control_R' was not declared in this scope
  111 |   case GDK_KEY_Control_R: return 0;
      |        ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:112:8: error: 'GDK_KEY_Alt_L' was not declared in this scope
  112 |   case GDK_KEY_Alt_L: return 0;
      |        ^~~~~~~~~~~~~
../ruby/video/opengl/program.hpp:28:41: error: 'GL_GEOMETRY_SHADER' was not declared in this scope
   28 |     geometry = glrCreateShader(program, GL_GEOMETRY_SHADER, source);
      |                                         ^~~~~~~~~~~~~~~~~~
../ruby/video/opengl/program.hpp:37:5: error: 'fragment' was not declared in this scope
   37 |     fragment = glrCreateShader(program, GL_FRAGMENT_SHADER, source);
      |     ^~~~~~~~
../hiro/core/../gtk/keyboard.cpp:113:8: error: 'GDK_KEY_Alt_R' was not declared in this scope
  113 |   case GDK_KEY_Alt_R: return 0;
      |        ^~~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:114:8: error: 'GDK_KEY_Super_L' was not declared in this scope
  114 |   case GDK_KEY_Super_L: return 0;
      |        ^~~~~~~~~~~~~~~
../ruby/video/opengl/program.hpp:37:41: error: 'GL_FRAGMENT_SHADER' was not declared in this scope
   37 |     fragment = glrCreateShader(program, GL_FRAGMENT_SHADER, source);
      |                                         ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:115:8: error: 'GDK_KEY_Super_R' was not declared in this scope
  115 |   case GDK_KEY_Super_R: return 0;
      |        ^~~~~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:116:8: error: 'GDK_KEY_Menu' was not declared in this scope
  116 |   case GDK_KEY_Menu: return 0;
      |        ^~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:117:8: error: 'GDK_KEY_space' was not declared in this scope
  117 |   case GDK_KEY_space: return ' ';
      |        ^~~~~~~~~~~~~
../ruby/video/opengl/program.hpp:39:5: error: 'fragment' was not declared in this scope
   39 |     fragment = glrCreateShader(program, GL_FRAGMENT_SHADER, OpenGLFragmentShader);
      |     ^~~~~~~~
../hiro/core/../gtk/keyboard.cpp:119:8: error: 'GDK_KEY_bracketleft' was not declared in this scope
  119 |   case GDK_KEY_bracketleft: return '[';
      |        ^~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:120:8: error: 'GDK_KEY_bracketright' was not declared in this scope
  120 |   case GDK_KEY_bracketright: return ']';
      |        ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:121:8: error: 'GDK_KEY_backslash' was not declared in this scope
  121 |   case GDK_KEY_backslash: return '\\';
      |        ^~~~~~~~~~~~~~~~~
../ruby/video/opengl/program.hpp:39:41: error: 'GL_FRAGMENT_SHADER' was not declared in this scope
   39 |     fragment = glrCreateShader(program, GL_FRAGMENT_SHADER, OpenGLFragmentShader);
      |                                         ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:122:8: error: 'GDK_KEY_semicolon' was not declared in this scope
  122 |   case GDK_KEY_semicolon: return ';';
      |        ^~~~~~~~~~~~~~~~~
../ruby/video/opengl/program.hpp:47:5: error: 'GLuint' was not declared in this scope; did you mean 'uint'?
   47 |     GLuint texture;
      |     ^~~~~~
      |     uint
../hiro/core/../gtk/keyboard.cpp:123:8: error: 'GDK_KEY_apostrophe' was not declared in this scope
  123 |   case GDK_KEY_apostrophe: return '\'';
      |        ^~~~~~~~~~~~~~~~~~
../ruby/video/opengl/program.hpp:48:23: error: 'texture' was not declared in this scope
   48 |     glGenTextures(1, &texture);
      |                       ^~~~~~~
../hiro/core/../gtk/keyboard.cpp:124:8: error: 'GDK_KEY_comma' was not declared in this scope
  124 |   case GDK_KEY_comma: return ',';
      |        ^~~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:125:8: error: 'GDK_KEY_period' was not declared in this scope
  125 |   case GDK_KEY_period: return '.';
      |        ^~~~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:126:8: error: 'GDK_KEY_slash' was not declared in this scope
  126 |   case GDK_KEY_slash: return '/';
      |        ^~~~~~~~~~~~~
../ruby/video/opengl/program.hpp:48:5: error: 'glGenTextures' was not declared in this scope
   48 |     glGenTextures(1, &texture);
      |     ^~~~~~~~~~~~~
../ruby/video/opengl/program.hpp:51:16: error: 'struct OpenGLTexture' has no member named 'texture'
   51 |     pixmaps(n).texture = texture;
      |                ^~~~~~~
../ruby/video/opengl/program.hpp:54:16: error: 'struct OpenGLTexture' has no member named 'format'
   54 |     pixmaps(n).format = format;
      |                ^~~~~~
../ruby/video/opengl/program.hpp:55:16: error: 'struct OpenGLTexture' has no member named 'filter'
   55 |     pixmaps(n).filter = filter;
      |                ^~~~~~
../ruby/video/opengl/program.hpp:56:16: error: 'struct OpenGLTexture' has no member named 'wrap'
   56 |     pixmaps(n).wrap = wrap;
      |                ^~~~
../ruby/video/opengl/program.hpp:57:35: error: 'struct OpenGLTexture' has no member named 'format'
   57 |     if(leaf["format"]) pixmaps(n).format = glrFormat(leaf["format"].text());
      |                                   ^~~~~~
../ruby/video/opengl/program.hpp:58:35: error: 'struct OpenGLTexture' has no member named 'filter'
   58 |     if(leaf["filter"]) pixmaps(n).filter = glrFilter(leaf["filter"].text());
      |                                   ^~~~~~
../ruby/video/opengl/program.hpp:59:33: error: 'struct OpenGLTexture' has no member named 'wrap'
   59 |     if(leaf["wrap"]) pixmaps(n).wrap = glrWrap(leaf["wrap"].text());
      |                                 ^~~~
../ruby/video/opengl/program.hpp:63:19: error: 'GL_TEXTURE_2D' was not declared in this scope
   63 |     glBindTexture(GL_TEXTURE_2D, texture);
      |                   ^~~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:128:8: error: 'GDK_KEY_braceleft' was not declared in this scope
  128 |   case GDK_KEY_braceleft: return '{';
      |        ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:129:8: error: 'GDK_KEY_braceright' was not declared in this scope
  129 |   case GDK_KEY_braceright: return '}';
      |        ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:130:8: error: 'GDK_KEY_bar' was not declared in this scope
  130 |   case GDK_KEY_bar: return '|';
      |        ^~~~~~~~~~~
../ruby/video/opengl/program.hpp:63:5: error: 'glBindTexture' was not declared in this scope
   63 |     glBindTexture(GL_TEXTURE_2D, texture);
      |     ^~~~~~~~~~~~~
../ruby/video/opengl/program.hpp:64:47: error: 'struct OpenGLTexture' has no member named 'format'
   64 |     glTexImage2D(GL_TEXTURE_2D, 0, pixmaps(n).format, w, h, 0, pixmaps(n).getFormat(), pixmaps(n).getType(), buffer);
      |                                               ^~~~~~
../ruby/video/opengl/program.hpp:64:75: error: 'struct OpenGLTexture' has no member named 'getFormat'
   64 |     glTexImage2D(GL_TEXTURE_2D, 0, pixmaps(n).format, w, h, 0, pixmaps(n).getFormat(), pixmaps(n).getType(), buffer);
      |                                                                           ^~~~~~~~~
../ruby/video/opengl/program.hpp:64:99: error: 'struct OpenGLTexture' has no member named 'getType'
   64 |     glTexImage2D(GL_TEXTURE_2D, 0, pixmaps(n).format, w, h, 0, pixmaps(n).getFormat(), pixmaps(n).getType(), buffer);
      |                                                                                                   ^~~~~~~
../hiro/core/../gtk/keyboard.cpp:131:8: error: 'GDK_KEY_colon' was not declared in this scope
  131 |   case GDK_KEY_colon: return ':';
      |        ^~~~~~~~~~~~~
../ruby/video/opengl/program.hpp:64:5: error: 'glTexImage2D' was not declared in this scope
   64 |     glTexImage2D(GL_TEXTURE_2D, 0, pixmaps(n).format, w, h, 0, pixmaps(n).getFormat(), pixmaps(n).getType(), buffer);
      |     ^~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:132:8: error: 'GDK_KEY_quotedbl' was not declared in this scope
  132 |   case GDK_KEY_quotedbl: return '\"';
      |        ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:133:8: error: 'GDK_KEY_less' was not declared in this scope
  133 |   case GDK_KEY_less: return '<';
      |        ^~~~~~~~~~~~
../ruby/video/opengl/program.hpp:65:76: error: 'getFormat' was not declared in this scope
   65 |     glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, image.width(), image.height(), getFormat(), getType(), image.data());
      |                                                                            ^~~~~~~~~
../ruby/video/opengl/program.hpp:65:89: error: 'getType' was not declared in this scope
   65 |     glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, image.width(), image.height(), getFormat(), getType(), image.data());
      |                                                                                         ^~~~~~~
../hiro/core/../gtk/keyboard.cpp:134:8: error: 'GDK_KEY_greater' was not declared in this scope
  134 |   case GDK_KEY_greater: return '>';
      |        ^~~~~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:135:8: error: 'GDK_KEY_question' was not declared in this scope
  135 |   case GDK_KEY_question: return '?';
      |        ^~~~~~~~~~~~~~~~
../ruby/video/opengl/program.hpp:65:5: error: 'glTexSubImage2D' was not declared in this scope
   65 |     glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, image.width(), image.height(), getFormat(), getType(), image.data());
      |     ^~~~~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:137:8: error: 'GDK_KEY_A' was not declared in this scope
  137 |   case GDK_KEY_A: return 'A';
      |        ^~~~~~~~~
../ruby/video/opengl/program.hpp: In member function 'void OpenGLProgram::release()':
../ruby/video/opengl/program.hpp:94:59: error: 'struct OpenGLTexture' has no member named 'texture'
   94 |   for(auto& pixmap : pixmaps) glDeleteTextures(1, &pixmap.texture);
      |                                                           ^~~~~~~
../hiro/core/../gtk/keyboard.cpp:138:8: error: 'GDK_KEY_B' was not declared in this scope
  138 |   case GDK_KEY_B: return 'B';
      |        ^~~~~~~~~
../ruby/video/opengl/program.hpp:94:31: error: 'glDeleteTextures' was not declared in this scope
   94 |   for(auto& pixmap : pixmaps) glDeleteTextures(1, &pixmap.texture);
      |                               ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:139:8: error: 'GDK_KEY_C' was not declared in this scope
  139 |   case GDK_KEY_C: return 'C';
      |        ^~~~~~~~~
../ruby/video/opengl/program.hpp:99:3: error: 'format' was not declared in this scope
   99 |   format = GL_RGBA8;
      |   ^~~~~~
../hiro/core/../gtk/keyboard.cpp:140:8: error: 'GDK_KEY_D' was not declared in this scope
  140 |   case GDK_KEY_D: return 'D';
      |        ^~~~~~~~~
../ruby/video/opengl/program.hpp:99:12: error: 'GL_RGBA8' was not declared in this scope
   99 |   format = GL_RGBA8;
      |            ^~~~~~~~
../ruby/video/opengl/program.hpp:100:3: error: 'filter' was not declared in this scope
  100 |   filter = GL_LINEAR;
      |   ^~~~~~
../hiro/core/../gtk/keyboard.cpp:141:8: error: 'GDK_KEY_E' was not declared in this scope
  141 |   case GDK_KEY_E: return 'E';
      |        ^~~~~~~~~
../ruby/video/opengl/program.hpp:100:12: error: 'GL_LINEAR' was not declared in this scope
  100 |   filter = GL_LINEAR;
      |            ^~~~~~~~~
../ruby/video/opengl/program.hpp:101:3: error: 'wrap' was not declared in this scope
  101 |   wrap = GL_CLAMP_TO_BORDER;
      |   ^~~~
../hiro/core/../gtk/keyboard.cpp:142:8: error: 'GDK_KEY_F' was not declared in this scope
  142 |   case GDK_KEY_F: return 'F';
      |        ^~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:143:8: error: 'GDK_KEY_G' was not declared in this scope
  143 |   case GDK_KEY_G: return 'G';
      |        ^~~~~~~~~
../ruby/video/opengl/program.hpp:101:10: error: 'GL_CLAMP_TO_BORDER' was not declared in this scope
  101 |   wrap = GL_CLAMP_TO_BORDER;
      |          ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:144:8: error: 'GDK_KEY_H' was not declared in this scope
  144 |   case GDK_KEY_H: return 'H';
      |        ^~~~~~~~~
In file included from ../ruby/video/opengl/opengl.hpp:99:
../ruby/video/opengl/main.hpp: In member function 'void OpenGL::setShader(const nall::string&)':
../ruby/video/opengl/main.hpp:7:3: error: 'format' was not declared in this scope
    7 |   format = inputFormat;
      |   ^~~~~~
../hiro/core/../gtk/keyboard.cpp:145:8: error: 'GDK_KEY_I' was not declared in this scope
  145 |   case GDK_KEY_I: return 'I';
      |        ^~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:146:8: error: 'GDK_KEY_J' was not declared in this scope
  146 |   case GDK_KEY_J: return 'J';
      |        ^~~~~~~~~
../ruby/video/opengl/main.hpp:7:12: error: 'inputFormat' was not declared in this scope
    7 |   format = inputFormat;
      |            ^~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:147:8: error: 'GDK_KEY_K' was not declared in this scope
  147 |   case GDK_KEY_K: return 'K';
      |        ^~~~~~~~~
../ruby/video/opengl/main.hpp:8:3: error: 'filter' was not declared in this scope
    8 |   filter = GL_LINEAR;
      |   ^~~~~~
../hiro/core/../gtk/keyboard.cpp:148:8: error: 'GDK_KEY_L' was not declared in this scope
  148 |   case GDK_KEY_L: return 'L';
      |        ^~~~~~~~~
../ruby/video/opengl/main.hpp:8:12: error: 'GL_LINEAR' was not declared in this scope
    8 |   filter = GL_LINEAR;
      |            ^~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:149:8: error: 'GDK_KEY_M' was not declared in this scope
  149 |   case GDK_KEY_M: return 'M';
      |        ^~~~~~~~~
../ruby/video/opengl/main.hpp:9:3: error: 'wrap' was not declared in this scope
    9 |   wrap = GL_CLAMP_TO_BORDER;
      |   ^~~~
../hiro/core/../gtk/keyboard.cpp:150:8: error: 'GDK_KEY_N' was not declared in this scope
  150 |   case GDK_KEY_N: return 'N';
      |        ^~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:151:8: error: 'GDK_KEY_O' was not declared in this scope
  151 |   case GDK_KEY_O: return 'O';
      |        ^~~~~~~~~
../ruby/video/opengl/main.hpp:9:10: error: 'GL_CLAMP_TO_BORDER' was not declared in this scope
    9 |   wrap = GL_CLAMP_TO_BORDER;
      |          ^~~~~~~~~~~~~~~~~~
../ruby/video/opengl/main.hpp:15:14: error: 'GL_NEAREST' was not declared in this scope
   15 |     filter = GL_NEAREST;
      |              ^~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:152:8: error: 'GDK_KEY_P' was not declared in this scope
  152 |   case GDK_KEY_P: return 'P';
      |        ^~~~~~~~~
../ruby/video/opengl/main.hpp:27:44: error: 'glrFormat' was not declared in this scope
   27 |       if(node.name() == "format") format = glrFormat(node.text());
      |                                            ^~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:153:8: error: 'GDK_KEY_Q' was not declared in this scope
  153 |   case GDK_KEY_Q: return 'Q';
      |        ^~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:154:8: error: 'GDK_KEY_R' was not declared in this scope
  154 |   case GDK_KEY_R: return 'R';
      |        ^~~~~~~~~
../ruby/video/opengl/main.hpp:28:44: error: 'glrFilter' was not declared in this scope
   28 |       if(node.name() == "filter") filter = glrFilter(node.text());
      |                                            ^~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:155:8: error: 'GDK_KEY_S' was not declared in this scope
  155 |   case GDK_KEY_S: return 'S';
      |        ^~~~~~~~~
../ruby/video/opengl/main.hpp:29:40: error: 'glrWrap' was not declared in this scope
   29 |       if(node.name() == "wrap") wrap = glrWrap(node.text());
      |                                        ^~~~~~~
../hiro/core/../gtk/keyboard.cpp:156:8: error: 'GDK_KEY_T' was not declared in this scope
  156 |   case GDK_KEY_T: return 'T';
      |        ^~~~~~~~~
../ruby/video/opengl/main.hpp:51:6: error: 'texture' was not declared in this scope
   51 |   if(texture) { glDeleteTextures(1, &texture); texture = 0; }
      |      ^~~~~~~
../hiro/core/../gtk/keyboard.cpp:157:8: error: 'GDK_KEY_U' was not declared in this scope
  157 |   case GDK_KEY_U: return 'U';
      |        ^~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:158:8: error: 'GDK_KEY_V' was not declared in this scope
  158 |   case GDK_KEY_V: return 'V';
      |        ^~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:159:8: error: 'GDK_KEY_W' was not declared in this scope
  159 |   case GDK_KEY_W: return 'W';
      |        ^~~~~~~~~
../ruby/video/opengl/main.hpp:51:17: error: 'glDeleteTextures' was not declared in this scope
   51 |   if(texture) { glDeleteTextures(1, &texture); texture = 0; }
      |                 ^~~~~~~~~~~~~~~~
../ruby/video/opengl/main.hpp:52:21: error: 'texture' was not declared in this scope
   52 |   glGenTextures(1, &texture);
      |                     ^~~~~~~
../hiro/core/../gtk/keyboard.cpp:160:8: error: 'GDK_KEY_X' was not declared in this scope
  160 |   case GDK_KEY_X: return 'X';
      |        ^~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:161:8: error: 'GDK_KEY_Y' was not declared in this scope
  161 |   case GDK_KEY_Y: return 'Y';
      |        ^~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:162:8: error: 'GDK_KEY_Z' was not declared in this scope
  162 |   case GDK_KEY_Z: return 'Z';
      |        ^~~~~~~~~
../ruby/video/opengl/main.hpp:52:3: error: 'glGenTextures' was not declared in this scope
   52 |   glGenTextures(1, &texture);
      |   ^~~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:164:8: error: 'GDK_KEY_a' was not declared in this scope
  164 |   case GDK_KEY_a: return 'a';
      |        ^~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:165:8: error: 'GDK_KEY_b' was not declared in this scope
  165 |   case GDK_KEY_b: return 'b';
      |        ^~~~~~~~~
../ruby/video/opengl/main.hpp:53:17: error: 'GL_TEXTURE_2D' was not declared in this scope
   53 |   glBindTexture(GL_TEXTURE_2D, texture);
      |                 ^~~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:166:8: error: 'GDK_KEY_c' was not declared in this scope
  166 |   case GDK_KEY_c: return 'c';
      |        ^~~~~~~~~
../ruby/video/opengl/main.hpp:53:3: error: 'glBindTexture' was not declared in this scope
   53 |   glBindTexture(GL_TEXTURE_2D, texture);
      |   ^~~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:167:8: error: 'GDK_KEY_d' was not declared in this scope
  167 |   case GDK_KEY_d: return 'd';
      |        ^~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:168:8: error: 'GDK_KEY_e' was not declared in this scope
  168 |   case GDK_KEY_e: return 'e';
      |        ^~~~~~~~~
../ruby/video/opengl/main.hpp:54:60: error: 'getFormat' was not declared in this scope
   54 |   glTexImage2D(GL_TEXTURE_2D, 0, format, width, height, 0, getFormat(), getType(), buffer);
      |                                                            ^~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:169:8: error: 'GDK_KEY_f' was not declared in this scope
  169 |   case GDK_KEY_f: return 'f';
      |        ^~~~~~~~~
../ruby/video/opengl/main.hpp:54:73: error: 'getType' was not declared in this scope
   54 |   glTexImage2D(GL_TEXTURE_2D, 0, format, width, height, 0, getFormat(), getType(), buffer);
      |                                                                         ^~~~~~~
../hiro/core/../gtk/keyboard.cpp:170:8: error: 'GDK_KEY_g' was not declared in this scope
  170 |   case GDK_KEY_g: return 'g';
      |        ^~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:171:8: error: 'GDK_KEY_h' was not declared in this scope
  171 |   case GDK_KEY_h: return 'h';
      |        ^~~~~~~~~
../ruby/video/opengl/main.hpp:54:3: error: 'glTexImage2D' was not declared in this scope
   54 |   glTexImage2D(GL_TEXTURE_2D, 0, format, width, height, 0, getFormat(), getType(), buffer);
      |   ^~~~~~~~~~~~
../ruby/video/opengl/main.hpp: In member function 'void OpenGL::allocateHistory(uint)':
../ruby/video/opengl/main.hpp:59:57: error: 'struct OpenGLTexture' has no member named 'texture'
   59 |   for(auto& frame : history) glDeleteTextures(1, &frame.texture);
      |                                                         ^~~~~~~
../ruby/video/opengl/main.hpp:59:30: error: 'glDeleteTextures' was not declared in this scope
   59 |   for(auto& frame : history) glDeleteTextures(1, &frame.texture);
      |                              ^~~~~~~~~~~~~~~~
../ruby/video/opengl/main.hpp:63:11: error: 'struct OpenGLTexture' has no member named 'filter'
   63 |     frame.filter = filter;
      |           ^~~~~~
../hiro/core/../gtk/keyboard.cpp:172:8: error: 'GDK_KEY_i' was not declared in this scope
  172 |   case GDK_KEY_i: return 'i';
      |        ^~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:173:8: error: 'GDK_KEY_j' was not declared in this scope
  173 |   case GDK_KEY_j: return 'j';
      |        ^~~~~~~~~
../ruby/video/opengl/main.hpp:63:20: error: 'filter' was not declared in this scope
   63 |     frame.filter = filter;
      |                    ^~~~~~
../ruby/video/opengl/main.hpp:64:11: error: 'struct OpenGLTexture' has no member named 'wrap'
   64 |     frame.wrap = wrap;
      |           ^~~~
../ruby/video/opengl/main.hpp:64:18: error: 'wrap' was not declared in this scope
   64 |     frame.wrap = wrap;
      |                  ^~~~
../ruby/video/opengl/main.hpp:65:29: error: 'struct OpenGLTexture' has no member named 'texture'
   65 |     glGenTextures(1, &frame.texture);
      |                             ^~~~~~~
../hiro/core/../gtk/keyboard.cpp:174:8: error: 'GDK_KEY_k' was not declared in this scope
  174 |   case GDK_KEY_k: return 'k';
      |        ^~~~~~~~~
../ruby/video/opengl/main.hpp:65:5: error: 'glGenTextures' was not declared in this scope
   65 |     glGenTextures(1, &frame.texture);
      |     ^~~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:175:8: error: 'GDK_KEY_l' was not declared in this scope
  175 |   case GDK_KEY_l: return 'l';
      |        ^~~~~~~~~
../ruby/video/opengl/main.hpp:66:19: error: 'GL_TEXTURE_2D' was not declared in this scope
   66 |     glBindTexture(GL_TEXTURE_2D, frame.texture);
      |                   ^~~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:176:8: error: 'GDK_KEY_m' was not declared in this scope
  176 |   case GDK_KEY_m: return 'm';
      |        ^~~~~~~~~
../ruby/video/opengl/main.hpp:66:40: error: 'struct OpenGLTexture' has no member named 'texture'
   66 |     glBindTexture(GL_TEXTURE_2D, frame.texture);
      |                                        ^~~~~~~
../hiro/core/../gtk/keyboard.cpp:177:8: error: 'GDK_KEY_n' was not declared in this scope
  177 |   case GDK_KEY_n: return 'n';
      |        ^~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:178:8: error: 'GDK_KEY_o' was not declared in this scope
  178 |   case GDK_KEY_o: return 'o';
      |        ^~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:179:8: error: 'GDK_KEY_p' was not declared in this scope
  179 |   case GDK_KEY_p: return 'p';
      |        ^~~~~~~~~
../ruby/video/opengl/main.hpp:66:5: error: 'glBindTexture' was not declared in this scope
   66 |     glBindTexture(GL_TEXTURE_2D, frame.texture);
      |     ^~~~~~~~~~~~~
../ruby/video/opengl/main.hpp:67:36: error: 'format' was not declared in this scope
   67 |     glTexImage2D(GL_TEXTURE_2D, 0, format, frame.width = width, frame.height = height, 0, getFormat(), getType(), buffer);
      |                                    ^~~~~~
../hiro/core/../gtk/keyboard.cpp:180:8: error: 'GDK_KEY_q' was not declared in this scope
  180 |   case GDK_KEY_q: return 'q';
      |        ^~~~~~~~~
../ruby/video/opengl/main.hpp:67:91: error: 'getFormat' was not declared in this scope
   67 |     glTexImage2D(GL_TEXTURE_2D, 0, format, frame.width = width, frame.height = height, 0, getFormat(), getType(), buffer);
      |                                                                                           ^~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:181:8: error: 'GDK_KEY_r' was not declared in this scope
  181 |   case GDK_KEY_r: return 'r';
      |        ^~~~~~~~~
../ruby/video/opengl/main.hpp:67:104: error: 'getType' was not declared in this scope
   67 |     glTexImage2D(GL_TEXTURE_2D, 0, format, frame.width = width, frame.height = height, 0, getFormat(), getType(), buffer);
      |                                                                                                        ^~~~~~~
../ruby/video/opengl/main.hpp:67:5: error: 'glTexImage2D' was not declared in this scope
   67 |     glTexImage2D(GL_TEXTURE_2D, 0, format, frame.width = width, frame.height = height, 0, getFormat(), getType(), buffer);
      |     ^~~~~~~~~~~~
../ruby/video/opengl/main.hpp: In member function 'void OpenGL::clear()':
../ruby/video/opengl/main.hpp:74:20: error: 'struct OpenGLProgram' has no member named 'program'
   74 |     glUseProgram(p.program);
      |                    ^~~~~~~
../hiro/core/../gtk/keyboard.cpp:182:8: error: 'GDK_KEY_s' was not declared in this scope
  182 |   case GDK_KEY_s: return 's';
      |        ^~~~~~~~~
../ruby/video/opengl/main.hpp:74:5: error: 'glUseProgram' was not declared in this scope; did you mean 'glrLinkProgram'?
   74 |     glUseProgram(p.program);
      |     ^~~~~~~~~~~~
      |     glrLinkProgram
../hiro/core/../gtk/keyboard.cpp:183:8: error: 'GDK_KEY_t' was not declared in this scope
  183 |   case GDK_KEY_t: return 't';
      |        ^~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:184:8: error: 'GDK_KEY_u' was not declared in this scope
  184 |   case GDK_KEY_u: return 'u';
      |        ^~~~~~~~~
../ruby/video/opengl/main.hpp:75:23: error: 'GL_DRAW_FRAMEBUFFER' was not declared in this scope
   75 |     glBindFramebuffer(GL_DRAW_FRAMEBUFFER, p.framebuffer);
      |                       ^~~~~~~~~~~~~~~~~~~
../ruby/video/opengl/main.hpp:75:46: error: 'struct OpenGLProgram' has no member named 'framebuffer'
   75 |     glBindFramebuffer(GL_DRAW_FRAMEBUFFER, p.framebuffer);
      |                                              ^~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:185:8: error: 'GDK_KEY_v' was not declared in this scope
  185 |   case GDK_KEY_v: return 'v';
      |        ^~~~~~~~~
../ruby/video/opengl/main.hpp:75:5: error: 'glBindFramebuffer' was not declared in this scope
   75 |     glBindFramebuffer(GL_DRAW_FRAMEBUFFER, p.framebuffer);
      |     ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:186:8: error: 'GDK_KEY_w' was not declared in this scope
  186 |   case GDK_KEY_w: return 'w';
      |        ^~~~~~~~~
../ruby/video/opengl/main.hpp:76:5: error: 'glClearColor' was not declared in this scope
   76 |     glClearColor(0, 0, 0, 1);
      |     ^~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:187:8: error: 'GDK_KEY_x' was not declared in this scope
  187 |   case GDK_KEY_x: return 'x';
      |        ^~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:188:8: error: 'GDK_KEY_y' was not declared in this scope
  188 |   case GDK_KEY_y: return 'y';
      |        ^~~~~~~~~
../ruby/video/opengl/main.hpp:77:13: error: 'GL_COLOR_BUFFER_BIT' was not declared in this scope
   77 |     glClear(GL_COLOR_BUFFER_BIT);
      |             ^~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:189:8: error: 'GDK_KEY_z' was not declared in this scope
  189 |   case GDK_KEY_z: return 'z';
      |        ^~~~~~~~~
../ruby/video/opengl/main.hpp:77:5: error: 'glClear' was not declared in this scope; did you mean 'GXclear'?
   77 |     glClear(GL_COLOR_BUFFER_BIT);
      |     ^~~~~~~
      |     GXclear
../hiro/core/../gtk/keyboard.cpp:191:8: error: 'GDK_KEY_Num_Lock' was not declared in this scope
  191 |   case GDK_KEY_Num_Lock: return 0;
      |        ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:192:8: error: 'GDK_KEY_KP_Divide' was not declared in this scope
  192 |   case GDK_KEY_KP_Divide: return '/';
      |        ^~~~~~~~~~~~~~~~~
../ruby/video/opengl/main.hpp:79:3: error: 'glUseProgram' was not declared in this scope; did you mean 'glrLinkProgram'?
   79 |   glUseProgram(0);
      |   ^~~~~~~~~~~~
      |   glrLinkProgram
../hiro/core/../gtk/keyboard.cpp:193:8: error: 'GDK_KEY_KP_Multiply' was not declared in this scope
  193 |   case GDK_KEY_KP_Multiply: return '*';
      |        ^~~~~~~~~~~~~~~~~~~
../ruby/video/opengl/main.hpp:80:21: error: 'GL_DRAW_FRAMEBUFFER' was not declared in this scope
   80 |   glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
      |                     ^~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:194:8: error: 'GDK_KEY_KP_Subtract' was not declared in this scope
  194 |   case GDK_KEY_KP_Subtract: return '-';
      |        ^~~~~~~~~~~~~~~~~~~
../ruby/video/opengl/main.hpp:80:3: error: 'glBindFramebuffer' was not declared in this scope
   80 |   glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
      |   ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:195:8: error: 'GDK_KEY_KP_Add' was not declared in this scope
  195 |   case GDK_KEY_KP_Add: return '+';
      |        ^~~~~~~~~~~~~~
../ruby/video/opengl/main.hpp:81:3: error: 'glClearColor' was not declared in this scope
   81 |   glClearColor(0, 0, 0, 1);
      |   ^~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:196:8: error: 'GDK_KEY_KP_Enter' was not declared in this scope
  196 |   case GDK_KEY_KP_Enter: return '\n';
      |        ^~~~~~~~~~~~~~~~
../ruby/video/opengl/main.hpp:82:11: error: 'GL_COLOR_BUFFER_BIT' was not declared in this scope
   82 |   glClear(GL_COLOR_BUFFER_BIT);
      |           ^~~~~~~~~~~~~~~~~~~
../ruby/video/opengl/main.hpp:82:3: error: 'glClear' was not declared in this scope; did you mean 'GXclear'?
   82 |   glClear(GL_COLOR_BUFFER_BIT);
      |   ^~~~~~~
      |   GXclear
../ruby/video/opengl/main.hpp: In member function 'void OpenGL::output()':
../ruby/video/opengl/main.hpp:93:19: error: 'GL_TEXTURE0' was not declared in this scope
   93 |   glActiveTexture(GL_TEXTURE0);
      |                   ^~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:197:8: error: 'GDK_KEY_KP_Decimal' was not declared in this scope
  197 |   case GDK_KEY_KP_Decimal: return '.';
      |        ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:199:8: error: 'GDK_KEY_KP_1' was not declared in this scope
  199 |   case GDK_KEY_KP_1: return '1';
      |        ^~~~~~~~~~~~
../ruby/video/opengl/main.hpp:93:3: error: 'glActiveTexture' was not declared in this scope
   93 |   glActiveTexture(GL_TEXTURE0);
      |   ^~~~~~~~~~~~~~~
../ruby/video/opengl/main.hpp:94:17: error: 'GL_TEXTURE_2D' was not declared in this scope
   94 |   glBindTexture(GL_TEXTURE_2D, texture);
      |                 ^~~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:200:8: error: 'GDK_KEY_KP_2' was not declared in this scope
  200 |   case GDK_KEY_KP_2: return '2';
      |        ^~~~~~~~~~~~
../ruby/video/opengl/main.hpp:94:32: error: 'texture' was not declared in this scope
   94 |   glBindTexture(GL_TEXTURE_2D, texture);
      |                                ^~~~~~~
../hiro/core/../gtk/keyboard.cpp:201:8: error: 'GDK_KEY_KP_3' was not declared in this scope
  201 |   case GDK_KEY_KP_3: return '3';
      |        ^~~~~~~~~~~~
../ruby/video/opengl/main.hpp:94:3: error: 'glBindTexture' was not declared in this scope
   94 |   glBindTexture(GL_TEXTURE_2D, texture);
      |   ^~~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:202:8: error: 'GDK_KEY_KP_4' was not declared in this scope
  202 |   case GDK_KEY_KP_4: return '4';
      |        ^~~~~~~~~~~~
../ruby/video/opengl/main.hpp:95:58: error: 'getFormat' was not declared in this scope
   95 |   glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, width, height, getFormat(), getType(), buffer);
      |                                                          ^~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:203:8: error: 'GDK_KEY_KP_5' was not declared in this scope
  203 |   case GDK_KEY_KP_5: return '5';
      |        ^~~~~~~~~~~~
../ruby/video/opengl/main.hpp:95:71: error: 'getType' was not declared in this scope
   95 |   glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, width, height, getFormat(), getType(), buffer);
      |                                                                       ^~~~~~~
../ruby/video/opengl/main.hpp:95:3: error: 'glTexSubImage2D' was not declared in this scope
   95 |   glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, width, height, getFormat(), getType(), buffer);
      |   ^~~~~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:204:8: error: 'GDK_KEY_KP_6' was not declared in this scope
  204 |   case GDK_KEY_KP_6: return '6';
      |        ^~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:205:8: error: 'GDK_KEY_KP_7' was not declared in this scope
  205 |   case GDK_KEY_KP_7: return '7';
      |        ^~~~~~~~~~~~
../ruby/video/opengl/main.hpp:98:5: error: 'GLuint' does not name a type; did you mean 'uint'?
   98 |     GLuint texture;
      |     ^~~~~~
      |     uint
../ruby/video/opengl/main.hpp:100:5: error: 'GLuint' does not name a type; did you mean 'uint'?
  100 |     GLuint filter, wrap;
      |     ^~~~~~
      |     uint
../ruby/video/opengl/main.hpp:103:44: error: 'filter' was not declared in this scope
  103 |   sources.prepend({texture, width, height, filter, wrap});
      |                                            ^~~~~~
../hiro/core/../gtk/keyboard.cpp:206:8: error: 'GDK_KEY_KP_8' was not declared in this scope
  206 |   case GDK_KEY_KP_8: return '8';
      |        ^~~~~~~~~~~~
../ruby/video/opengl/main.hpp:103:52: error: 'wrap' was not declared in this scope
  103 |   sources.prepend({texture, width, height, filter, wrap});
      |                                                    ^~~~
../ruby/video/opengl/main.hpp:103:18: error: no matching function for call to 'nall::vector<OpenGL::output()::Source>::prepend(<brace-enclosed initializer list>)'
  103 |   sources.prepend({texture, width, height, filter, wrap});
      |   ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from ../nall/shared-pointer.hpp:6,
                 from ../nall/string.hpp:19,
                 from ../nall/inode.hpp:7,
                 from ../nall/file-buffer.hpp:6:
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::prepend(const T&) [with T = OpenGL::output()::Source]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:5:27: note: in expansion of macro 'vector'
    5 | template<typename T> auto vector<T>::prepend(const T& value) -> void {
      |                           ^~~~~~
In file included from ../nall/vector.hpp:145:
../nall/vector/modify.hpp:5:55: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const OpenGL::output()::Source&'
    5 | template<typename T> auto vector<T>::prepend(const T& value) -> void {
      |                                              ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::prepend(T&&) [with T = OpenGL::output()::Source]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:12:27: note: in expansion of macro 'vector'
   12 | template<typename T> auto vector<T>::prepend(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:12:50: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'OpenGL::output()::Source&&'
   12 | template<typename T> auto vector<T>::prepend(T&& value) -> void {
      |                                              ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::prepend(const nall::vector_base<T>&) [with T = OpenGL::output()::Source]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:19:27: note: in expansion of macro 'vector'
   19 | template<typename T> auto vector<T>::prepend(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:19:63: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<OpenGL::output()::Source>&'
   19 | template<typename T> auto vector<T>::prepend(const vector<T>& values) -> void {
      |                                              ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::prepend(nall::vector_base<T>&&) [with T = OpenGL::output()::Source]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:27:27: note: in expansion of macro 'vector'
   27 | template<typename T> auto vector<T>::prepend(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:27:58: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<OpenGL::output()::Source>&&'
   27 | template<typename T> auto vector<T>::prepend(vector<T>&& values) -> void {
../ruby/video/opengl/main.hpp:112:20: error: 'struct OpenGLProgram' has no member named 'program'
  112 |     glUseProgram(p.program);
      |                    ^~~~~~~
../hiro/core/../gtk/keyboard.cpp:207:8: error: 'GDK_KEY_KP_9' was not declared in this scope
  207 |   case GDK_KEY_KP_9: return '9';
      |        ^~~~~~~~~~~~
../ruby/video/opengl/main.hpp:112:5: error: 'glUseProgram' was not declared in this scope; did you mean 'glrLinkProgram'?
  112 |     glUseProgram(p.program);
      |     ^~~~~~~~~~~~
      |     glrLinkProgram
../hiro/core/../gtk/keyboard.cpp:208:8: error: 'GDK_KEY_KP_0' was not declared in this scope
  208 |   case GDK_KEY_KP_0: return '0';
      |        ^~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:210:8: error: 'GDK_KEY_KP_Home' was not declared in this scope
  210 |   case GDK_KEY_KP_Home: return 0;
      |        ^~~~~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:211:8: error: 'GDK_KEY_KP_End' was not declared in this scope
  211 |   case GDK_KEY_KP_End: return 0;
      |        ^~~~~~~~~~~~~~
../ruby/video/opengl/main.hpp:113:23: error: 'GL_DRAW_FRAMEBUFFER' was not declared in this scope
  113 |     glBindFramebuffer(GL_DRAW_FRAMEBUFFER, p.framebuffer);
      |                       ^~~~~~~~~~~~~~~~~~~
../ruby/video/opengl/main.hpp:113:46: error: 'struct OpenGLProgram' has no member named 'framebuffer'
  113 |     glBindFramebuffer(GL_DRAW_FRAMEBUFFER, p.framebuffer);
      |                                              ^~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:212:8: error: 'GDK_KEY_KP_Page_Up' was not declared in this scope
  212 |   case GDK_KEY_KP_Page_Up: return 0;
      |        ^~~~~~~~~~~~~~~~~~
../ruby/video/opengl/main.hpp:113:5: error: 'glBindFramebuffer' was not declared in this scope
  113 |     glBindFramebuffer(GL_DRAW_FRAMEBUFFER, p.framebuffer);
      |     ^~~~~~~~~~~~~~~~~
../ruby/video/opengl/main.hpp:127:42: error: 'struct OpenGLTexture' has no member named 'texture'
  127 |       glBindTexture(GL_TEXTURE_2D, frame.texture);
      |                                          ^~~~~~~
../ruby/video/opengl/main.hpp:128:27: error: 'struct OpenGLTexture' has no member named 'filter'
  128 |       glrParameters(frame.filter, frame.wrap);
      |                           ^~~~~~
../ruby/video/opengl/main.hpp:128:41: error: 'struct OpenGLTexture' has no member named 'wrap'
  128 |       glrParameters(frame.filter, frame.wrap);
      |                                         ^~~~
../ruby/video/opengl/main.hpp:136:43: error: 'struct OpenGL::output()::Source' has no member named 'texture'
  136 |       glBindTexture(GL_TEXTURE_2D, source.texture);
      |                                           ^~~~~~~
../ruby/video/opengl/main.hpp:137:28: error: 'struct OpenGL::output()::Source' has no member named 'filter'
  137 |       glrParameters(source.filter, source.wrap);
      |                            ^~~~~~
../ruby/video/opengl/main.hpp:137:43: error: 'struct OpenGL::output()::Source' has no member named 'wrap'
  137 |       glrParameters(source.filter, source.wrap);
      |                                           ^~~~
../ruby/video/opengl/main.hpp:145:43: error: 'struct OpenGLTexture' has no member named 'texture'
  145 |       glBindTexture(GL_TEXTURE_2D, pixmap.texture);
      |                                           ^~~~~~~
../ruby/video/opengl/main.hpp:146:28: error: 'struct OpenGLTexture' has no member named 'filter'
  146 |       glrParameters(pixmap.filter, pixmap.wrap);
      |                            ^~~~~~
../ruby/video/opengl/main.hpp:146:43: error: 'struct OpenGLTexture' has no member named 'wrap'
  146 |       glrParameters(pixmap.filter, pixmap.wrap);
      |                                           ^~~~
../ruby/video/opengl/main.hpp:150:30: error: 'struct OpenGL::output()::Source' has no member named 'filter'
  150 |     glrParameters(sources[0].filter, sources[0].wrap);
      |                              ^~~~~~
../ruby/video/opengl/main.hpp:150:49: error: 'struct OpenGL::output()::Source' has no member named 'wrap'
  150 |     glrParameters(sources[0].filter, sources[0].wrap);
      |                                                 ^~~~
../ruby/video/opengl/main.hpp:152:36: error: 'struct OpenGLProgram' has no member named 'texture'
  152 |     glBindTexture(GL_TEXTURE_2D, p.texture);
      |                                    ^~~~~~~
../ruby/video/opengl/main.hpp:155:24: error: 'struct OpenGLProgram' has no member named 'texture'
  155 |     sources.prepend({p.texture, p.width, p.height, p.filter, p.wrap});
      |                        ^~~~~~~
../ruby/video/opengl/main.hpp:155:54: error: 'struct OpenGLProgram' has no member named 'filter'
  155 |     sources.prepend({p.texture, p.width, p.height, p.filter, p.wrap});
      |                                                      ^~~~~~
../ruby/video/opengl/main.hpp:155:64: error: 'struct OpenGLProgram' has no member named 'wrap'
  155 |     sources.prepend({p.texture, p.width, p.height, p.filter, p.wrap});
      |                                                                ^~~~
../ruby/video/opengl/main.hpp:155:20: error: no matching function for call to 'nall::vector<OpenGL::output()::Source>::prepend(<brace-enclosed initializer list>)'
  155 |     sources.prepend({p.texture, p.width, p.height, p.filter, p.wrap});
      |     ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::prepend(const T&) [with T = OpenGL::output()::Source]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:5:27: note: in expansion of macro 'vector'
    5 | template<typename T> auto vector<T>::prepend(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:5:55: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const OpenGL::output()::Source&'
    5 | template<typename T> auto vector<T>::prepend(const T& value) -> void {
      |                                              ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::prepend(T&&) [with T = OpenGL::output()::Source]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:12:27: note: in expansion of macro 'vector'
   12 | template<typename T> auto vector<T>::prepend(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:12:50: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'OpenGL::output()::Source&&'
   12 | template<typename T> auto vector<T>::prepend(T&& value) -> void {
      |                                              ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::prepend(const nall::vector_base<T>&) [with T = OpenGL::output()::Source]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:19:27: note: in expansion of macro 'vector'
   19 | template<typename T> auto vector<T>::prepend(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:19:63: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<OpenGL::output()::Source>&'
   19 | template<typename T> auto vector<T>::prepend(const vector<T>& values) -> void {
      |                                              ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::prepend(nall::vector_base<T>&&) [with T = OpenGL::output()::Source]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:27:27: note: in expansion of macro 'vector'
   27 | template<typename T> auto vector<T>::prepend(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:27:58: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<OpenGL::output()::Source>&&'
   27 | template<typename T> auto vector<T>::prepend(vector<T>&& values) -> void {
../hiro/core/../gtk/keyboard.cpp:213:8: error: 'GDK_KEY_KP_Page_Down' was not declared in this scope
  213 |   case GDK_KEY_KP_Page_Down: return 0;
      |        ^~~~~~~~~~~~~~~~~~~~
../ruby/video/opengl/main.hpp:163:16: error: 'program' was not declared in this scope; did you mean 'programs'?
  163 |   glUseProgram(program);
      |                ^~~~~~~
      |                programs
../hiro/core/../gtk/keyboard.cpp:214:8: error: 'GDK_KEY_KP_Up' was not declared in this scope
  214 |   case GDK_KEY_KP_Up: return 0;
      |        ^~~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:215:8: error: 'GDK_KEY_KP_Down' was not declared in this scope
  215 |   case GDK_KEY_KP_Down: return 0;
      |        ^~~~~~~~~~~~~~~
../ruby/video/opengl/main.hpp:163:3: error: 'glUseProgram' was not declared in this scope; did you mean 'glrLinkProgram'?
  163 |   glUseProgram(program);
      |   ^~~~~~~~~~~~
      |   glrLinkProgram
../hiro/core/../gtk/keyboard.cpp:216:8: error: 'GDK_KEY_KP_Left' was not declared in this scope
  216 |   case GDK_KEY_KP_Left: return 0;
      |        ^~~~~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:217:8: error: 'GDK_KEY_KP_Right' was not declared in this scope
  217 |   case GDK_KEY_KP_Right: return 0;
      |        ^~~~~~~~~~~~~~~~
../ruby/video/opengl/main.hpp:164:21: error: 'GL_DRAW_FRAMEBUFFER' was not declared in this scope
  164 |   glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
      |                     ^~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:218:8: error: 'GDK_KEY_KP_Begin' was not declared in this scope
  218 |   case GDK_KEY_KP_Begin: return 0;
      |        ^~~~~~~~~~~~~~~~
../ruby/video/opengl/main.hpp:164:3: error: 'glBindFramebuffer' was not declared in this scope
  164 |   glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
      |   ^~~~~~~~~~~~~~~~~
../ruby/video/opengl/main.hpp:170:28: error: 'struct OpenGL::output()::Source' has no member named 'filter'
  170 |   glrParameters(sources[0].filter, sources[0].wrap);
      |                            ^~~~~~
../ruby/video/opengl/main.hpp:170:47: error: 'struct OpenGL::output()::Source' has no member named 'wrap'
  170 |   glrParameters(sources[0].filter, sources[0].wrap);
      |                                               ^~~~
../ruby/video/opengl/main.hpp:176:40: error: 'struct OpenGLTexture' has no member named 'texture'
  176 |     glBindTexture(GL_TEXTURE_2D, frame.texture);
      |                                        ^~~~~~~
../hiro/core/../gtk/keyboard.cpp:219:8: error: 'GDK_KEY_KP_Insert' was not declared in this scope
  219 |   case GDK_KEY_KP_Insert: return 0;
      |        ^~~~~~~~~~~~~~~~~
../ruby/video/opengl/main.hpp:180:38: error: 'format' was not declared in this scope
  180 |       glTexImage2D(GL_TEXTURE_2D, 0, format, frame.width = width, frame.height = height, 0, getFormat(), getType(), buffer);
      |                                      ^~~~~~
../ruby/video/opengl/main.hpp:180:7: error: 'glTexImage2D' was not declared in this scope
  180 |       glTexImage2D(GL_TEXTURE_2D, 0, format, frame.width = width, frame.height = height, 0, getFormat(), getType(), buffer);
      |       ^~~~~~~~~~~~
../hiro/core/../gtk/keyboard.cpp:220:8: error: 'GDK_KEY_KP_Delete' was not declared in this scope
  220 |   case GDK_KEY_KP_Delete: return 0;
      |        ^~~~~~~~~~~~~~~~~
In file included from ../hiro/core/../gtk/platform.cpp:8:
../hiro/core/../gtk/mouse.cpp: In static member function 'static hiro::Position hiro::pMouse::position()':
../hiro/core/../gtk/mouse.cpp:19:1: warning: no return statement in function returning non-void [-Wreturn-type]
   19 | }
      | ^
In file included from ../hiro/core/../gtk/platform.cpp:9:
../hiro/core/../gtk/browser-window.cpp: At global scope:
../hiro/core/../gtk/browser-window.cpp:5:38: error: 'GtkWidget' was not declared in this scope; did you mean 'wWidget'?
    5 | static auto BrowserWindow_addFilters(GtkWidget* dialog, vector<string> filters) -> void {
      |                                      ^~~~~~~~~
      |                                      wWidget
../ruby/video/opengl/main.hpp: In member function 'bool OpenGL::initialize(const nall::string&)':
../ruby/video/opengl/main.hpp:190:13: error: 'GL_BLEND' was not declared in this scope
  190 |   glDisable(GL_BLEND);
      |             ^~~~~~~~
../hiro/core/../gtk/browser-window.cpp:5:49: error: 'dialog' was not declared in this scope
    5 | static auto BrowserWindow_addFilters(GtkWidget* dialog, vector<string> filters) -> void {
      |                                                 ^~~~~~
../hiro/core/../gtk/browser-window.cpp:5:72: error: expected primary-expression before 'filters'
    5 | static auto BrowserWindow_addFilters(GtkWidget* dialog, vector<string> filters) -> void {
      |                                                                        ^~~~~~~
../hiro/core/../gtk/browser-window.cpp:5:79: error: expression list treated as compound expression in initializer [-fpermissive]
    5 | static auto BrowserWindow_addFilters(GtkWidget* dialog, vector<string> filters) -> void {
      |                                                                               ^
../hiro/core/../gtk/browser-window.cpp:5:81: error: expected ',' or ';' before '->' token
    5 | static auto BrowserWindow_addFilters(GtkWidget* dialog, vector<string> filters) -> void {
      |                                                                                 ^~
../ruby/video/opengl/main.hpp:190:3: error: 'glDisable' was not declared in this scope
  190 |   glDisable(GL_BLEND);
      |   ^~~~~~~~~
../hiro/core/../gtk/browser-window.cpp: In static member function 'static nall::string hiro::pBrowserWindow::directory(hiro::BrowserWindow::State&)':
../hiro/core/../gtk/browser-window.cpp:21:3: error: 'GtkWidget' was not declared in this scope; did you mean 'wWidget'?
   21 |   GtkWidget* dialog = gtk_file_chooser_dialog_new(
      |   ^~~~~~~~~
      |   wWidget
../hiro/core/../gtk/browser-window.cpp:21:14: error: 'dialog' was not declared in this scope
   21 |   GtkWidget* dialog = gtk_file_chooser_dialog_new(
      |              ^~~~~~
../hiro/core/../gtk/browser-window.cpp:23:77: error: 'struct hiro::pWindow' has no member named 'widget'
   23 |     state.parent && state.parent->self() ? GTK_WINDOW(state.parent->self()->widget) : (GtkWindow*)nullptr,
      |                                                                             ^~~~~~
../ruby/video/opengl/main.hpp:191:13: error: 'GL_DEPTH_TEST' was not declared in this scope
  191 |   glDisable(GL_DEPTH_TEST);
      |             ^~~~~~~~~~~~~
../hiro/core/../gtk/browser-window.cpp:23:44: error: 'GTK_WINDOW' was not declared in this scope
   23 |     state.parent && state.parent->self() ? GTK_WINDOW(state.parent->self()->widget) : (GtkWindow*)nullptr,
      |                                            ^~~~~~~~~~
../ruby/video/opengl/main.hpp:192:13: error: 'GL_POLYGON_SMOOTH' was not declared in this scope
  192 |   glDisable(GL_POLYGON_SMOOTH);
      |             ^~~~~~~~~~~~~~~~~
../ruby/video/opengl/main.hpp:193:13: error: 'GL_STENCIL_TEST' was not declared in this scope
  193 |   glDisable(GL_STENCIL_TEST);
      |             ^~~~~~~~~~~~~~~
../hiro/core/../gtk/browser-window.cpp:23:88: error: 'GtkWindow' was not declared in this scope; did you mean 'wWindow'?
   23 |     state.parent && state.parent->self() ? GTK_WINDOW(state.parent->self()->widget) : (GtkWindow*)nullptr,
      |                                                                                        ^~~~~~~~~
      |                                                                                        wWindow
../hiro/core/../gtk/browser-window.cpp:23:98: error: expected primary-expression before ')' token
   23 |     state.parent && state.parent->self() ? GTK_WINDOW(state.parent->self()->widget) : (GtkWindow*)nullptr,
      |                                                                                                  ^
../ruby/video/opengl/main.hpp:194:12: error: 'GL_DITHER' was not declared in this scope
  194 |   glEnable(GL_DITHER);
      |            ^~~~~~~~~
../hiro/core/../gtk/browser-window.cpp:24:5: error: 'GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER' was not declared in this scope
   24 |     GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER,
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/browser-window.cpp:25:5: error: 'GTK_STOCK_CANCEL' was not declared in this scope
   25 |     GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
      |     ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/browser-window.cpp:25:23: error: 'GTK_RESPONSE_CANCEL' was not declared in this scope
   25 |     GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
      |                       ^~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/browser-window.cpp:26:5: error: 'GTK_STOCK_OPEN' was not declared in this scope
   26 |     GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
      |     ^~~~~~~~~~~~~~
../ruby/video/opengl/main.hpp:194:3: error: 'glEnable' was not declared in this scope
  194 |   glEnable(GL_DITHER);
      |   ^~~~~~~~
../ruby/video/opengl/main.hpp:196:3: error: 'program' was not declared in this scope; did you mean 'programs'?
  196 |   program = glCreateProgram();
      |   ^~~~~~~
      |   programs
../hiro/core/../gtk/browser-window.cpp:26:21: error: 'GTK_RESPONSE_ACCEPT' was not declared in this scope
   26 |     GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
      |                     ^~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/browser-window.cpp:27:12: error: ISO C++ forbids declaration of 'type name' with no type [-fpermissive]
   27 |     (const gchar*)nullptr
      |            ^~~~~
../hiro/core/../gtk/browser-window.cpp:27:6: error: expected primary-expression before 'const'
   27 |     (const gchar*)nullptr
      |      ^~~~~
../hiro/core/../gtk/browser-window.cpp:27:6: error: expected ')' before 'const'
   27 |     (const gchar*)nullptr
      |     ~^~~~~
      |      )
../hiro/core/../gtk/browser-window.cpp:30:54: error: 'GTK_FILE_CHOOSER' was not declared in this scope
   30 |   if(state.path) gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog), state.path);
      |                                                      ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/browser-window.cpp:30:18: error: 'gtk_file_chooser_set_current_folder' was not declared in this scope
   30 |   if(state.path) gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog), state.path);
      |                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/browser-window.cpp:32:21: error: 'GTK_DIALOG' was not declared in this scope
   32 |   if(gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) {
      |                     ^~~~~~~~~~
../ruby/video/opengl/main.hpp:196:13: error: 'glCreateProgram' was not declared in this scope; did you mean 'glrLinkProgram'?
  196 |   program = glCreateProgram();
      |             ^~~~~~~~~~~~~~~
      |             glrLinkProgram
../ruby/video/opengl/main.hpp:197:3: error: 'vertex' was not declared in this scope
  197 |   vertex = glrCreateShader(program, GL_VERTEX_SHADER, OpenGLOutputVertexShader);
      |   ^~~~~~
../hiro/core/../gtk/browser-window.cpp:32:6: error: 'gtk_dialog_run' was not declared in this scope
   32 |   if(gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) {
      |      ^~~~~~~~~~~~~~
../hiro/core/../gtk/browser-window.cpp:33:48: error: 'GTK_FILE_CHOOSER' was not declared in this scope
   33 |     char* temp = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
      |                                                ^~~~~~~~~~~~~~~~
../ruby/video/opengl/main.hpp:197:37: error: 'GL_VERTEX_SHADER' was not declared in this scope
  197 |   vertex = glrCreateShader(program, GL_VERTEX_SHADER, OpenGLOutputVertexShader);
      |                                     ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/browser-window.cpp:33:18: error: 'gtk_file_chooser_get_filename' was not declared in this scope
   33 |     char* temp = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
      |                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/browser-window.cpp:35:5: error: 'g_free' was not declared in this scope; did you mean 'free'?
   35 |     g_free(temp);
      |     ^~~~~~
      |     free
../hiro/core/../gtk/browser-window.cpp:38:3: error: 'gtk_widget_destroy' was not declared in this scope
   38 |   gtk_widget_destroy(dialog);
      |   ^~~~~~~~~~~~~~~~~~
../ruby/video/opengl/main.hpp:199:3: error: 'fragment' was not declared in this scope
  199 |   fragment = glrCreateShader(program, GL_FRAGMENT_SHADER, OpenGLFragmentShader);
      |   ^~~~~~~~
../hiro/core/../gtk/browser-window.cpp: In static member function 'static nall::string hiro::pBrowserWindow::open(hiro::BrowserWindow::State&)':
../hiro/core/../gtk/browser-window.cpp:46:3: error: 'GtkWidget' was not declared in this scope; did you mean 'wWidget'?
   46 |   GtkWidget* dialog = gtk_file_chooser_dialog_new(
      |   ^~~~~~~~~
      |   wWidget
../hiro/core/../gtk/browser-window.cpp:46:14: error: 'dialog' was not declared in this scope
   46 |   GtkWidget* dialog = gtk_file_chooser_dialog_new(
      |              ^~~~~~
../hiro/core/../gtk/browser-window.cpp:48:77: error: 'struct hiro::pWindow' has no member named 'widget'
   48 |     state.parent && state.parent->self() ? GTK_WINDOW(state.parent->self()->widget) : (GtkWindow*)nullptr,
      |                                                                             ^~~~~~
../hiro/core/../gtk/browser-window.cpp:48:44: error: 'GTK_WINDOW' was not declared in this scope
   48 |     state.parent && state.parent->self() ? GTK_WINDOW(state.parent->self()->widget) : (GtkWindow*)nullptr,
      |                                            ^~~~~~~~~~
../ruby/video/opengl/main.hpp:199:39: error: 'GL_FRAGMENT_SHADER' was not declared in this scope
  199 |   fragment = glrCreateShader(program, GL_FRAGMENT_SHADER, OpenGLFragmentShader);
      |                                       ^~~~~~~~~~~~~~~~~~
../ruby/video/glx.cpp: At global scope:
../ruby/video/glx.cpp:6:31: error: 'Display' was not declared in this scope
    6 | auto VideoGLX_X11ErrorHandler(Display*, XErrorEvent*) -> int {
      |                               ^~~~~~~
../ruby/video/glx.cpp:6:39: error: expected primary-expression before ',' token
    6 | auto VideoGLX_X11ErrorHandler(Display*, XErrorEvent*) -> int {
      |                                       ^
../hiro/core/../gtk/browser-window.cpp:48:88: error: 'GtkWindow' was not declared in this scope; did you mean 'wWindow'?
   48 |     state.parent && state.parent->self() ? GTK_WINDOW(state.parent->self()->widget) : (GtkWindow*)nullptr,
      |                                                                                        ^~~~~~~~~
      |                                                                                        wWindow
../hiro/core/../gtk/browser-window.cpp:48:98: error: expected primary-expression before ')' token
   48 |     state.parent && state.parent->self() ? GTK_WINDOW(state.parent->self()->widget) : (GtkWindow*)nullptr,
      |                                                                                                  ^
../hiro/core/../gtk/browser-window.cpp:49:5: error: 'GTK_FILE_CHOOSER_ACTION_OPEN' was not declared in this scope
   49 |     GTK_FILE_CHOOSER_ACTION_OPEN,
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/browser-window.cpp:50:5: error: 'GTK_STOCK_CANCEL' was not declared in this scope
   50 |     GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
      |     ^~~~~~~~~~~~~~~~
../ruby/video/glx.cpp:6:41: error: 'XErrorEvent' was not declared in this scope
    6 | auto VideoGLX_X11ErrorHandler(Display*, XErrorEvent*) -> int {
      |                                         ^~~~~~~~~~~
../ruby/video/glx.cpp:6:53: error: expected primary-expression before ')' token
    6 | auto VideoGLX_X11ErrorHandler(Display*, XErrorEvent*) -> int {
      |                                                     ^
../ruby/video/glx.cpp:6:53: error: expression list treated as compound expression in initializer [-fpermissive]
../ruby/video/glx.cpp:6:55: error: expected ',' or ';' before '->' token
    6 | auto VideoGLX_X11ErrorHandler(Display*, XErrorEvent*) -> int {
      |                                                       ^~
../ruby/video/glx.cpp:293:3: error: 'Display' does not name a type
  293 |   Display* _display = nullptr;
      |   ^~~~~~~
../ruby/video/glx.cpp:300:3: error: 'Window' does not name a type
  300 |   Window _parent = 0;
      |   ^~~~~~
../ruby/video/glx.cpp:301:3: error: 'Window' does not name a type
  301 |   Window _window = 0;
      |   ^~~~~~
../ruby/video/glx.cpp:302:3: error: 'Colormap' does not name a type; did you mean 'CWColormap'?
  302 |   Colormap _colormap = 0;
      |   ^~~~~~~~
      |   CWColormap
../ruby/video/glx.cpp:303:3: error: 'GLXContext' does not name a type; did you mean 'ucontext'?
  303 |   GLXContext _glXContext = nullptr;
      |   ^~~~~~~~~~
      |   ucontext
../ruby/video/glx.cpp:304:3: error: 'GLXWindow' does not name a type; did you mean 'BadWindow'?
  304 |   GLXWindow _glXWindow = 0;
      |   ^~~~~~~~~
      |   BadWindow
../hiro/core/../gtk/browser-window.cpp:50:23: error: 'GTK_RESPONSE_CANCEL' was not declared in this scope
   50 |     GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
      |                       ^~~~~~~~~~~~~~~~~~~
../ruby/video/glx.cpp: In member function 'virtual bool VideoGLX::setFormat(nall::string)':
../ruby/video/glx.cpp:60:15: error: 'inputFormat' is not a member of 'OpenGL'
   60 |       OpenGL::inputFormat = GL_RGBA8;
      |               ^~~~~~~~~~~
../ruby/video/glx.cpp:60:29: error: 'GL_RGBA8' was not declared in this scope
   60 |       OpenGL::inputFormat = GL_RGBA8;
      |                             ^~~~~~~~
../ruby/video/glx.cpp:65:15: error: 'inputFormat' is not a member of 'OpenGL'
   65 |       OpenGL::inputFormat = GL_RGB10_A2;
      |               ^~~~~~~~~~~
../hiro/core/../gtk/browser-window.cpp:51:5: error: 'GTK_STOCK_OPEN' was not declared in this scope
   51 |     GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
      |     ^~~~~~~~~~~~~~
../hiro/core/../gtk/browser-window.cpp:51:21: error: 'GTK_RESPONSE_ACCEPT' was not declared in this scope
   51 |     GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
      |                     ^~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/browser-window.cpp:52:12: error: ISO C++ forbids declaration of 'type name' with no type [-fpermissive]
   52 |     (const gchar*)nullptr
      |            ^~~~~
../hiro/core/../gtk/browser-window.cpp:52:6: error: expected primary-expression before 'const'
   52 |     (const gchar*)nullptr
      |      ^~~~~
../hiro/core/../gtk/browser-window.cpp:52:6: error: expected ')' before 'const'
   52 |     (const gchar*)nullptr
      |     ~^~~~~
      |      )
../ruby/video/glx.cpp:65:29: error: 'GL_RGB10_A2' was not declared in this scope
   65 |       OpenGL::inputFormat = GL_RGB10_A2;
      |                             ^~~~~~~~~~~
../hiro/core/../gtk/browser-window.cpp:55:54: error: 'GTK_FILE_CHOOSER' was not declared in this scope
   55 |   if(state.path) gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog), state.path);
      |                                                      ^~~~~~~~~~~~~~~~
../ruby/video/glx.cpp: In member function 'virtual void VideoGLX::clear()':
../ruby/video/glx.cpp:83:38: error: '_display' was not declared in this scope
   83 |     if(_doubleBuffer) glXSwapBuffers(_display, _glXWindow);
      |                                      ^~~~~~~~
../hiro/core/../gtk/browser-window.cpp:55:18: error: 'gtk_file_chooser_set_current_folder' was not declared in this scope
   55 |   if(state.path) gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog), state.path);
      |                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../ruby/video/glx.cpp:83:48: error: '_glXWindow' was not declared in this scope
   83 |     if(_doubleBuffer) glXSwapBuffers(_display, _glXWindow);
      |                                                ^~~~~~~~~~
../hiro/core/../gtk/browser-window.cpp:58:21: error: 'GTK_DIALOG' was not declared in this scope
   58 |   if(gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) {
      |                     ^~~~~~~~~~
../hiro/core/../gtk/browser-window.cpp:58:6: error: 'gtk_dialog_run' was not declared in this scope
   58 |   if(gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) {
      |      ^~~~~~~~~~~~~~
../ruby/video/glx.cpp:83:23: error: 'glXSwapBuffers' was not declared in this scope
   83 |     if(_doubleBuffer) glXSwapBuffers(_display, _glXWindow);
      |                       ^~~~~~~~~~~~~~
../hiro/core/../gtk/browser-window.cpp:59:48: error: 'GTK_FILE_CHOOSER' was not declared in this scope
   59 |     char* temp = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
      |                                                ^~~~~~~~~~~~~~~~
../ruby/video/glx.cpp: In member function 'virtual void VideoGLX::size(uint&, uint&)':
../ruby/video/glx.cpp:91:7: error: 'XWindowAttributes' was not declared in this scope
   91 |       XWindowAttributes parent;
      |       ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/browser-window.cpp:59:18: error: 'gtk_file_chooser_get_filename' was not declared in this scope
   59 |     char* temp = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
      |                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../ruby/video/glx.cpp:92:28: error: '_display' was not declared in this scope
   92 |       XGetWindowAttributes(_display, _parent, &parent);
      |                            ^~~~~~~~
../hiro/core/../gtk/browser-window.cpp:61:5: error: 'g_free' was not declared in this scope; did you mean 'free'?
   61 |     g_free(temp);
      |     ^~~~~~
      |     free
../ruby/video/glx.cpp:92:38: error: '_parent' was not declared in this scope
   92 |       XGetWindowAttributes(_display, _parent, &parent);
      |                                      ^~~~~~~
../ruby/video/glx.cpp:92:48: error: 'parent' was not declared in this scope; did you mean 'dirent'?
   92 |       XGetWindowAttributes(_display, _parent, &parent);
      |                                                ^~~~~~
      |                                                dirent
../hiro/core/../gtk/browser-window.cpp:64:3: error: 'gtk_widget_destroy' was not declared in this scope
   64 |   gtk_widget_destroy(dialog);
      |   ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/browser-window.cpp: In static member function 'static nall::string hiro::pBrowserWindow::save(hiro::BrowserWindow::State&)':
../hiro/core/../gtk/browser-window.cpp:71:3: error: 'GtkWidget' was not declared in this scope; did you mean 'wWidget'?
   71 |   GtkWidget* dialog = gtk_file_chooser_dialog_new(
      |   ^~~~~~~~~
      |   wWidget
../ruby/video/glx.cpp:92:7: error: 'XGetWindowAttributes' was not declared in this scope
   92 |       XGetWindowAttributes(_display, _parent, &parent);
      |       ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/browser-window.cpp:71:14: error: 'dialog' was not declared in this scope
   71 |   GtkWidget* dialog = gtk_file_chooser_dialog_new(
      |              ^~~~~~
../hiro/core/../gtk/browser-window.cpp:73:77: error: 'struct hiro::pWindow' has no member named 'widget'
   73 |     state.parent && state.parent->self() ? GTK_WINDOW(state.parent->self()->widget) : (GtkWindow*)nullptr,
      |                                                                             ^~~~~~
../hiro/core/../gtk/browser-window.cpp:73:44: error: 'GTK_WINDOW' was not declared in this scope
   73 |     state.parent && state.parent->self() ? GTK_WINDOW(state.parent->self()->widget) : (GtkWindow*)nullptr,
      |                                            ^~~~~~~~~~
../ruby/video/glx.cpp: In member function 'virtual void VideoGLX::output(uint, uint)':
../ruby/video/glx.cpp:107:5: error: 'XWindowAttributes' was not declared in this scope
  107 |     XWindowAttributes window;
      |     ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/browser-window.cpp:73:88: error: 'GtkWindow' was not declared in this scope; did you mean 'wWindow'?
   73 |     state.parent && state.parent->self() ? GTK_WINDOW(state.parent->self()->widget) : (GtkWindow*)nullptr,
      |                                                                                        ^~~~~~~~~
      |                                                                                        wWindow
../hiro/core/../gtk/browser-window.cpp:73:98: error: expected primary-expression before ')' token
   73 |     state.parent && state.parent->self() ? GTK_WINDOW(state.parent->self()->widget) : (GtkWindow*)nullptr,
      |                                                                                                  ^
../ruby/video/glx.cpp:108:26: error: '_display' was not declared in this scope
  108 |     XGetWindowAttributes(_display, _window, &window);
      |                          ^~~~~~~~
../hiro/core/../gtk/browser-window.cpp:74:5: error: 'GTK_FILE_CHOOSER_ACTION_SAVE' was not declared in this scope
   74 |     GTK_FILE_CHOOSER_ACTION_SAVE,
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../ruby/video/glx.cpp:108:36: error: '_window' was not declared in this scope; did you mean 'BadWindow'?
  108 |     XGetWindowAttributes(_display, _window, &window);
      |                                    ^~~~~~~
      |                                    BadWindow
../ruby/video/glx.cpp:108:46: error: 'window' was not declared in this scope
  108 |     XGetWindowAttributes(_display, _window, &window);
      |                                              ^~~~~~
../hiro/core/../gtk/browser-window.cpp:75:5: error: 'GTK_STOCK_CANCEL' was not declared in this scope
   75 |     GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
      |     ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/browser-window.cpp:75:23: error: 'GTK_RESPONSE_CANCEL' was not declared in this scope
   75 |     GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
      |                       ^~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/browser-window.cpp:76:5: error: 'GTK_STOCK_OPEN' was not declared in this scope
   76 |     GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
      |     ^~~~~~~~~~~~~~
../ruby/video/glx.cpp:108:5: error: 'XGetWindowAttributes' was not declared in this scope
  108 |     XGetWindowAttributes(_display, _window, &window);
      |     ^~~~~~~~~~~~~~~~~~~~
../ruby/video/glx.cpp:110:23: error: expected ';' before 'parent'
  110 |     XWindowAttributes parent;
      |                       ^~~~~~
../hiro/core/../gtk/browser-window.cpp:76:21: error: 'GTK_RESPONSE_ACCEPT' was not declared in this scope
   76 |     GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
      |                     ^~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/browser-window.cpp:77:12: error: ISO C++ forbids declaration of 'type name' with no type [-fpermissive]
   77 |     (const gchar*)nullptr
      |            ^~~~~
../hiro/core/../gtk/browser-window.cpp:77:6: error: expected primary-expression before 'const'
   77 |     (const gchar*)nullptr
      |      ^~~~~
../ruby/video/glx.cpp:111:36: error: '_parent' was not declared in this scope
  111 |     XGetWindowAttributes(_display, _parent, &parent);
      |                                    ^~~~~~~
../hiro/core/../gtk/browser-window.cpp:77:6: error: expected ')' before 'const'
   77 |     (const gchar*)nullptr
      |     ~^~~~~
      |      )
../ruby/video/glx.cpp:111:46: error: 'parent' was not declared in this scope; did you mean 'dirent'?
  111 |     XGetWindowAttributes(_display, _parent, &parent);
      |                                              ^~~~~~
      |                                              dirent
../hiro/core/../gtk/browser-window.cpp:80:54: error: 'GTK_FILE_CHOOSER' was not declared in this scope
   80 |   if(state.path) gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog), state.path);
      |                                                      ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/browser-window.cpp:80:18: error: 'gtk_file_chooser_set_current_folder' was not declared in this scope
   80 |   if(state.path) gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog), state.path);
      |                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../ruby/video/glx.cpp:114:7: error: 'XResizeWindow' was not declared in this scope
  114 |       XResizeWindow(_display, _window, parent.width, parent.height);
      |       ^~~~~~~~~~~~~
../hiro/core/../gtk/browser-window.cpp:83:21: error: 'GTK_DIALOG' was not declared in this scope
   83 |   if(gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) {
      |                     ^~~~~~~~~~
../hiro/core/../gtk/browser-window.cpp:83:6: error: 'gtk_dialog_run' was not declared in this scope
   83 |   if(gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) {
      |      ^~~~~~~~~~~~~~
../ruby/video/glx.cpp:129:48: error: '_glXWindow' was not declared in this scope
  129 |     if(_doubleBuffer) glXSwapBuffers(_display, _glXWindow);
      |                                                ^~~~~~~~~~
../hiro/core/../gtk/browser-window.cpp:84:48: error: 'GTK_FILE_CHOOSER' was not declared in this scope
   84 |     char* temp = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
      |                                                ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/browser-window.cpp:84:18: error: 'gtk_file_chooser_get_filename' was not declared in this scope
   84 |     char* temp = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
      |                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../ruby/video/glx.cpp:129:23: error: 'glXSwapBuffers' was not declared in this scope
  129 |     if(_doubleBuffer) glXSwapBuffers(_display, _glXWindow);
      |                       ^~~~~~~~~~~~~~
../hiro/core/../gtk/browser-window.cpp:86:5: error: 'g_free' was not declared in this scope; did you mean 'free'?
   86 |     g_free(temp);
      |     ^~~~~~
      |     free
../ruby/video/glx.cpp:130:20: error: 'glFinish' was not declared in this scope
  130 |     if(self.flush) glFinish();
      |                    ^~~~~~~~
../hiro/core/../gtk/browser-window.cpp:89:3: error: 'gtk_widget_destroy' was not declared in this scope
   89 |   gtk_widget_destroy(dialog);
      |   ^~~~~~~~~~~~~~~~~~
In file included from ../hiro/core/../gtk/platform.cpp:10:
../hiro/core/../gtk/message-window.cpp: At global scope:
../hiro/core/../gtk/message-window.cpp:5:50: error: 'GtkMessageType' has not been declared
    5 | static auto Message(MessageWindow::State& state, GtkMessageType messageStyle) -> MessageWindow::Response {
      |                                                  ^~~~~~~~~~~~~~
../ruby/video/glx.cpp: In member function 'virtual void VideoGLX::poll()':
../ruby/video/glx.cpp:134:20: error: '_display' was not declared in this scope
  134 |     while(XPending(_display)) {
      |                    ^~~~~~~~
../hiro/core/../gtk/message-window.cpp: In function 'hiro::MessageWindow::Response hiro::Message(MessageWindow::State&, int)':
../hiro/core/../gtk/message-window.cpp:6:3: error: 'GtkWidget' was not declared in this scope; did you mean 'wWidget'?
    6 |   GtkWidget* dialog = gtk_message_dialog_new(
      |   ^~~~~~~~~
      |   wWidget
../hiro/core/../gtk/message-window.cpp:6:14: error: 'dialog' was not declared in this scope
    6 |   GtkWidget* dialog = gtk_message_dialog_new(
      |              ^~~~~~
../hiro/core/../gtk/message-window.cpp:7:77: error: 'struct hiro::pWindow' has no member named 'widget'
    7 |     state.parent && state.parent->self() ? GTK_WINDOW(state.parent->self()->widget) : (GtkWindow*)nullptr,
      |                                                                             ^~~~~~
../hiro/core/../gtk/message-window.cpp:7:44: error: 'GTK_WINDOW' was not declared in this scope
    7 |     state.parent && state.parent->self() ? GTK_WINDOW(state.parent->self()->widget) : (GtkWindow*)nullptr,
      |                                            ^~~~~~~~~~
../ruby/video/glx.cpp:134:11: error: 'XPending' was not declared in this scope; did you mean 'sigpending'?
  134 |     while(XPending(_display)) {
      |           ^~~~~~~~
      |           sigpending
../hiro/core/../gtk/message-window.cpp:7:88: error: 'GtkWindow' was not declared in this scope; did you mean 'wWindow'?
    7 |     state.parent && state.parent->self() ? GTK_WINDOW(state.parent->self()->widget) : (GtkWindow*)nullptr,
      |                                                                                        ^~~~~~~~~
      |                                                                                        wWindow
../hiro/core/../gtk/message-window.cpp:7:98: error: expected primary-expression before ')' token
    7 |     state.parent && state.parent->self() ? GTK_WINDOW(state.parent->self()->widget) : (GtkWindow*)nullptr,
      |                                                                                                  ^
../ruby/video/glx.cpp:135:7: error: 'XEvent' was not declared in this scope
  135 |       XEvent event;
      |       ^~~~~~
../hiro/core/../gtk/message-window.cpp:8:5: error: 'GTK_DIALOG_MODAL' was not declared in this scope
    8 |     GTK_DIALOG_MODAL, messageStyle, GTK_BUTTONS_NONE, "%s", (const char*)state.text
      |     ^~~~~~~~~~~~~~~~
../ruby/video/glx.cpp:136:29: error: 'event' was not declared in this scope; did you mean 'servent'?
  136 |       XNextEvent(_display, &event);
      |                             ^~~~~
      |                             servent
../hiro/core/../gtk/message-window.cpp:8:37: error: 'GTK_BUTTONS_NONE' was not declared in this scope
    8 |     GTK_DIALOG_MODAL, messageStyle, GTK_BUTTONS_NONE, "%s", (const char*)state.text
      |                                     ^~~~~~~~~~~~~~~~
../ruby/video/glx.cpp:136:7: error: 'XNextEvent' was not declared in this scope
  136 |       XNextEvent(_display, &event);
      |       ^~~~~~~~~~
../hiro/core/../gtk/message-window.cpp:6:23: error: 'gtk_message_dialog_new' was not declared in this scope
    6 |   GtkWidget* dialog = gtk_message_dialog_new(
      |                       ^~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/message-window.cpp:11:19: error: 'gtk_window_set_title' was not declared in this scope
   11 |   if(state.title) gtk_window_set_title(GTK_WINDOW(dialog), state.title);
      |                   ^~~~~~~~~~~~~~~~~~~~
../ruby/video/glx.cpp:137:24: error: 'Expose' was not declared in this scope
  137 |       if(event.type == Expose) {
      |                        ^~~~~~
../ruby/video/glx.cpp:137:24: note: the macro 'Expose' had not yet been defined
In file included from /home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xv.h:46,
                 from ../ruby/video/xvideo.cpp:4,
                 from ../ruby/video/video.cpp:34:
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/X.h:191: note: it was later defined here
  191 | #define Expose                  12
      | 
../hiro/core/../gtk/message-window.cpp:12:38: error: 'gtk_window_set_title' was not declared in this scope
   12 |   else if(Application::state().name) gtk_window_set_title(GTK_WINDOW(dialog), Application::state().name);
      |                                      ^~~~~~~~~~~~~~~~~~~~
../ruby/video/glx.cpp:138:9: error: 'XWindowAttributes' was not declared in this scope
  138 |         XWindowAttributes attributes;
      |         ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/message-window.cpp:16:28: error: 'GTK_DIALOG' was not declared in this scope
   16 |     gtk_dialog_add_buttons(GTK_DIALOG(dialog), "Ok", GTK_RESPONSE_OK, nullptr);
      |                            ^~~~~~~~~~
../ruby/video/glx.cpp:139:40: error: '_window' was not declared in this scope; did you mean 'BadWindow'?
  139 |         XGetWindowAttributes(_display, _window, &attributes);
      |                                        ^~~~~~~
      |                                        BadWindow
../hiro/core/../gtk/message-window.cpp:16:54: error: 'GTK_RESPONSE_OK' was not declared in this scope
   16 |     gtk_dialog_add_buttons(GTK_DIALOG(dialog), "Ok", GTK_RESPONSE_OK, nullptr);
      |                                                      ^~~~~~~~~~~~~~~
../hiro/core/../gtk/message-window.cpp:16:5: error: 'gtk_dialog_add_buttons' was not declared in this scope
   16 |     gtk_dialog_add_buttons(GTK_DIALOG(dialog), "Ok", GTK_RESPONSE_OK, nullptr);
      |     ^~~~~~~~~~~~~~~~~~~~~~
../ruby/video/glx.cpp:139:50: error: 'attributes' was not declared in this scope
  139 |         XGetWindowAttributes(_display, _window, &attributes);
      |                                                  ^~~~~~~~~~
../hiro/core/../gtk/message-window.cpp:19:81: error: 'GTK_RESPONSE_CANCEL' was not declared in this scope
   19 |     gtk_dialog_add_buttons(GTK_DIALOG(dialog), "Ok", GTK_RESPONSE_OK, "Cancel", GTK_RESPONSE_CANCEL, nullptr);
      |                                                                                 ^~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/message-window.cpp:22:55: error: 'GTK_RESPONSE_YES' was not declared in this scope
   22 |     gtk_dialog_add_buttons(GTK_DIALOG(dialog), "Yes", GTK_RESPONSE_YES, "No", GTK_RESPONSE_NO, nullptr);
      |                                                       ^~~~~~~~~~~~~~~~
../ruby/video/glx.cpp:139:9: error: 'XGetWindowAttributes' was not declared in this scope
  139 |         XGetWindowAttributes(_display, _window, &attributes);
      |         ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/message-window.cpp:22:79: error: 'GTK_RESPONSE_NO' was not declared in this scope
   22 |     gtk_dialog_add_buttons(GTK_DIALOG(dialog), "Yes", GTK_RESPONSE_YES, "No", GTK_RESPONSE_NO, nullptr);
      |                                                                               ^~~~~~~~~~~~~~~
../hiro/core/../gtk/message-window.cpp:29:34: error: 'GTK_DIALOG' was not declared in this scope
   29 |   auto response = gtk_dialog_run(GTK_DIALOG(dialog));
      |                                  ^~~~~~~~~~
../ruby/video/glx.cpp: In member function 'void VideoGLX::construct()':
../ruby/video/glx.cpp:147:5: error: '_display' was not declared in this scope
  147 |     _display = XOpenDisplay(nullptr);
      |     ^~~~~~~~
../hiro/core/../gtk/message-window.cpp:29:19: error: 'gtk_dialog_run' was not declared in this scope
   29 |   auto response = gtk_dialog_run(GTK_DIALOG(dialog));
      |                   ^~~~~~~~~~~~~~
../ruby/video/glx.cpp:147:16: error: 'XOpenDisplay' was not declared in this scope
  147 |     _display = XOpenDisplay(nullptr);
      |                ^~~~~~~~~~~~
../hiro/core/../gtk/message-window.cpp:30:3: error: 'gtk_widget_destroy' was not declared in this scope
   30 |   gtk_widget_destroy(dialog);
      |   ^~~~~~~~~~~~~~~~~~
../ruby/video/glx.cpp:148:15: error: 'DefaultScreen' was not declared in this scope
  148 |     _screen = DefaultScreen(_display);
      |               ^~~~~~~~~~~~~
../ruby/video/glx.cpp:148:15: note: the macro 'DefaultScreen' had not yet been defined
In file included from ../ruby/input/xlib.cpp:3,
                 from ../ruby/input/input.cpp:22,
                 from ../ruby/ruby.cpp:30:
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/Xlib.h:89: note: it was later defined here
   89 | #define DefaultScreen(dpy)      (((_XPrivDisplay)(dpy))->default_screen)
      | 
../hiro/core/../gtk/message-window.cpp:32:18: error: 'GTK_RESPONSE_OK' was not declared in this scope
   32 |   if(response == GTK_RESPONSE_OK) return MessageWindow::Response::Ok;
      |                  ^~~~~~~~~~~~~~~
../ruby/video/glx.cpp:150:5: error: 'XWindowAttributes' was not declared in this scope
  150 |     XWindowAttributes attributes{};
      |     ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/message-window.cpp:33:18: error: 'GTK_RESPONSE_CANCEL' was not declared in this scope
   33 |   if(response == GTK_RESPONSE_CANCEL) return MessageWindow::Response::Cancel;
      |                  ^~~~~~~~~~~~~~~~~~~
../ruby/video/glx.cpp:151:36: error: 'RootWindow' was not declared in this scope
  151 |     XGetWindowAttributes(_display, RootWindow(_display, _screen), &attributes);
      |                                    ^~~~~~~~~~
../ruby/video/glx.cpp:151:36: note: the macro 'RootWindow' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/Xlib.h:88: note: it was later defined here
   88 | #define RootWindow(dpy, scr)    (ScreenOfDisplay(dpy,scr)->root)
      | 
../hiro/core/../gtk/message-window.cpp:34:18: error: 'GTK_RESPONSE_YES' was not declared in this scope
   34 |   if(response == GTK_RESPONSE_YES) return MessageWindow::Response::Yes;
      |                  ^~~~~~~~~~~~~~~~
../ruby/video/glx.cpp:151:68: error: 'attributes' was not declared in this scope
  151 |     XGetWindowAttributes(_display, RootWindow(_display, _screen), &attributes);
      |                                                                    ^~~~~~~~~~
../hiro/core/../gtk/message-window.cpp:35:18: error: 'GTK_RESPONSE_NO' was not declared in this scope
   35 |   if(response == GTK_RESPONSE_NO) return MessageWindow::Response::No;
      |                  ^~~~~~~~~~~~~~~
../hiro/core/../gtk/message-window.cpp: In static member function 'static hiro::MessageWindow::Response hiro::pMessageWindow::error(hiro::MessageWindow::State&)':
../hiro/core/../gtk/message-window.cpp:47:25: error: 'GTK_MESSAGE_ERROR' was not declared in this scope
   47 |   return Message(state, GTK_MESSAGE_ERROR);
      |                         ^~~~~~~~~~~~~~~~~
../ruby/video/glx.cpp:151:5: error: 'XGetWindowAttributes' was not declared in this scope
  151 |     XGetWindowAttributes(_display, RootWindow(_display, _screen), &attributes);
      |     ^~~~~~~~~~~~~~~~~~~~
../ruby/video/glx.cpp: In member function 'void VideoGLX::destruct()':
../ruby/video/glx.cpp:157:19: error: '_display' was not declared in this scope
  157 |     XCloseDisplay(_display);
      |                   ^~~~~~~~
../ruby/video/glx.cpp:157:5: error: 'XCloseDisplay' was not declared in this scope
  157 |     XCloseDisplay(_display);
      |     ^~~~~~~~~~~~~
../hiro/core/../gtk/message-window.cpp: In static member function 'static hiro::MessageWindow::Response hiro::pMessageWindow::information(hiro::MessageWindow::State&)':
../hiro/core/../gtk/message-window.cpp:51:25: error: 'GTK_MESSAGE_INFO' was not declared in this scope
   51 |   return Message(state, GTK_MESSAGE_INFO);
      |                         ^~~~~~~~~~~~~~~~
../ruby/video/glx.cpp: In member function 'bool VideoGLX::initialize()':
../ruby/video/glx.cpp:165:21: error: '_display' was not declared in this scope
  165 |     glXQueryVersion(_display, &_versionMajor, &_versionMinor);
      |                     ^~~~~~~~
../hiro/core/../gtk/message-window.cpp: In static member function 'static hiro::MessageWindow::Response hiro::pMessageWindow::question(hiro::MessageWindow::State&)':
../hiro/core/../gtk/message-window.cpp:55:25: error: 'GTK_MESSAGE_QUESTION' was not declared in this scope
   55 |   return Message(state, GTK_MESSAGE_QUESTION);
      |                         ^~~~~~~~~~~~~~~~~~~~
../ruby/video/glx.cpp:165:5: error: 'glXQueryVersion' was not declared in this scope
  165 |     glXQueryVersion(_display, &_versionMajor, &_versionMinor);
      |     ^~~~~~~~~~~~~~~
../hiro/core/../gtk/message-window.cpp: In static member function 'static hiro::MessageWindow::Response hiro::pMessageWindow::warning(hiro::MessageWindow::State&)':
../hiro/core/../gtk/message-window.cpp:59:25: error: 'GTK_MESSAGE_WARNING' was not declared in this scope
   59 |   return Message(state, GTK_MESSAGE_WARNING);
      |                         ^~~~~~~~~~~~~~~~~~~
In file included from ../hiro/core/../gtk/platform.cpp:15:
../hiro/core/../gtk/timer.cpp: In function 'int hiro::Timer_trigger(pTimer*)':
../hiro/core/../gtk/timer.cpp:14:41: error: 'GSourceFunc' was not declared in this scope
   14 |     g_timeout_add(p->state().interval, (GSourceFunc)Timer_trigger, (gpointer)p);
      |                                         ^~~~~~~~~~~
../hiro/core/../gtk/timer.cpp:14:69: error: 'gpointer' was not declared in this scope
   14 |     g_timeout_add(p->state().interval, (GSourceFunc)Timer_trigger, (gpointer)p);
      |                                                                     ^~~~~~~~
../hiro/core/../gtk/timer.cpp:14:5: error: 'g_timeout_add' was not declared in this scope
   14 |     g_timeout_add(p->state().interval, (GSourceFunc)Timer_trigger, (gpointer)p);
      |     ^~~~~~~~~~~~~
../ruby/video/glx.cpp:175:7: error: 'GLX_DRAWABLE_TYPE' was not declared in this scope
  175 |       GLX_DRAWABLE_TYPE, GLX_WINDOW_BIT,
      |       ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/timer.cpp: In member function 'virtual void hiro::pTimer::setEnabled(bool)':
../hiro/core/../gtk/timer.cpp:29:38: error: 'GSourceFunc' was not declared in this scope
   29 |     g_timeout_add(state().interval, (GSourceFunc)Timer_trigger, (gpointer)this);
      |                                      ^~~~~~~~~~~
../hiro/core/../gtk/timer.cpp:29:66: error: 'gpointer' was not declared in this scope
   29 |     g_timeout_add(state().interval, (GSourceFunc)Timer_trigger, (gpointer)this);
      |                                                                  ^~~~~~~~
../hiro/core/../gtk/timer.cpp:29:5: error: 'g_timeout_add' was not declared in this scope
   29 |     g_timeout_add(state().interval, (GSourceFunc)Timer_trigger, (gpointer)this);
      |     ^~~~~~~~~~~~~
../ruby/video/glx.cpp:175:26: error: 'GLX_WINDOW_BIT' was not declared in this scope
  175 |       GLX_DRAWABLE_TYPE, GLX_WINDOW_BIT,
      |                          ^~~~~~~~~~~~~~
In file included from ../hiro/core/../gtk/platform.cpp:16:
../hiro/core/../gtk/window.cpp: At global scope:
../hiro/core/../gtk/window.cpp:5:26: error: 'GtkWidget' was not declared in this scope; did you mean 'wWidget'?
    5 | static auto Window_close(GtkWidget* widget, GdkEvent* event, pWindow* p) -> signed {
      |                          ^~~~~~~~~
      |                          wWidget
../hiro/core/../gtk/window.cpp:5:37: error: 'widget' was not declared in this scope; did you mean 'Widget'?
    5 | static auto Window_close(GtkWidget* widget, GdkEvent* event, pWindow* p) -> signed {
      |                                     ^~~~~~
      |                                     Widget
../hiro/core/../gtk/window.cpp:5:45: error: 'GdkEvent' was not declared in this scope
    5 | static auto Window_close(GtkWidget* widget, GdkEvent* event, pWindow* p) -> signed {
      |                                             ^~~~~~~~
../hiro/core/../gtk/window.cpp:5:55: error: 'event' was not declared in this scope; did you mean 'servent'?
    5 | static auto Window_close(GtkWidget* widget, GdkEvent* event, pWindow* p) -> signed {
      |                                                       ^~~~~
      |                                                       servent
../hiro/core/../gtk/window.cpp:5:69: error: expected primary-expression before '*' token
    5 | static auto Window_close(GtkWidget* widget, GdkEvent* event, pWindow* p) -> signed {
      |                                                                     ^
../hiro/core/../gtk/window.cpp:5:71: error: 'p' was not declared in this scope
    5 | static auto Window_close(GtkWidget* widget, GdkEvent* event, pWindow* p) -> signed {
      |                                                                       ^
../hiro/core/../gtk/window.cpp:5:72: error: expression list treated as compound expression in initializer [-fpermissive]
    5 | static auto Window_close(GtkWidget* widget, GdkEvent* event, pWindow* p) -> signed {
      |                                                                        ^
../hiro/core/../gtk/window.cpp:5:74: error: expected ',' or ';' before '->' token
    5 | static auto Window_close(GtkWidget* widget, GdkEvent* event, pWindow* p) -> signed {
      |                                                                          ^~
../ruby/video/glx.cpp:176:7: error: 'GLX_RENDER_TYPE' was not declared in this scope
  176 |       GLX_RENDER_TYPE, GLX_RGBA_BIT,
      |       ^~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:16:25: error: 'GtkWidget' was not declared in this scope; did you mean 'wWidget'?
   16 | static auto Window_draw(GtkWidget* widget, cairo_t* context, pWindow* p) -> signed {
      |                         ^~~~~~~~~
      |                         wWidget
../hiro/core/../gtk/window.cpp:16:36: error: 'widget' was not declared in this scope; did you mean 'Widget'?
   16 | static auto Window_draw(GtkWidget* widget, cairo_t* context, pWindow* p) -> signed {
      |                                    ^~~~~~
      |                                    Widget
../ruby/video/glx.cpp:176:24: error: 'GLX_RGBA_BIT' was not declared in this scope
  176 |       GLX_RENDER_TYPE, GLX_RGBA_BIT,
      |                        ^~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:16:44: error: 'cairo_t' was not declared in this scope
   16 | static auto Window_draw(GtkWidget* widget, cairo_t* context, pWindow* p) -> signed {
      |                                            ^~~~~~~
../hiro/core/../gtk/window.cpp:16:53: error: 'context' was not declared in this scope; did you mean 'ucontext'?
   16 | static auto Window_draw(GtkWidget* widget, cairo_t* context, pWindow* p) -> signed {
      |                                                     ^~~~~~~
      |                                                     ucontext
../hiro/core/../gtk/window.cpp:16:69: error: expected primary-expression before '*' token
   16 | static auto Window_draw(GtkWidget* widget, cairo_t* context, pWindow* p) -> signed {
      |                                                                     ^
../hiro/core/../gtk/window.cpp:16:71: error: 'p' was not declared in this scope
   16 | static auto Window_draw(GtkWidget* widget, cairo_t* context, pWindow* p) -> signed {
      |                                                                       ^
../hiro/core/../gtk/window.cpp:16:72: error: expression list treated as compound expression in initializer [-fpermissive]
   16 | static auto Window_draw(GtkWidget* widget, cairo_t* context, pWindow* p) -> signed {
      |                                                                        ^
../hiro/core/../gtk/window.cpp:16:74: error: expected ',' or ';' before '->' token
   16 | static auto Window_draw(GtkWidget* widget, cairo_t* context, pWindow* p) -> signed {
      |                                                                          ^~
../ruby/video/glx.cpp:177:7: error: 'GLX_DOUBLEBUFFER' was not declared in this scope
  177 |       GLX_DOUBLEBUFFER, True,
      |       ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:46:27: error: 'GtkWidget' was not declared in this scope; did you mean 'wWidget'?
   46 | static auto Window_expose(GtkWidget* widget, GdkEvent* event, pWindow* p) -> signed {
      |                           ^~~~~~~~~
      |                           wWidget
../hiro/core/../gtk/window.cpp:46:38: error: 'widget' was not declared in this scope; did you mean 'Widget'?
   46 | static auto Window_expose(GtkWidget* widget, GdkEvent* event, pWindow* p) -> signed {
      |                                      ^~~~~~
      |                                      Widget
../hiro/core/../gtk/window.cpp:46:46: error: 'GdkEvent' was not declared in this scope
   46 | static auto Window_expose(GtkWidget* widget, GdkEvent* event, pWindow* p) -> signed {
      |                                              ^~~~~~~~
../ruby/video/glx.cpp:177:25: error: 'True' was not declared in this scope
  177 |       GLX_DOUBLEBUFFER, True,
      |                         ^~~~
../ruby/video/glx.cpp:177:25: note: the macro 'True' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/Xlib.h:80: note: it was later defined here
   80 | #define True 1
      | 
../hiro/core/../gtk/window.cpp:46:56: error: 'event' was not declared in this scope; did you mean 'servent'?
   46 | static auto Window_expose(GtkWidget* widget, GdkEvent* event, pWindow* p) -> signed {
      |                                                        ^~~~~
      |                                                        servent
../hiro/core/../gtk/window.cpp:46:70: error: expected primary-expression before '*' token
   46 | static auto Window_expose(GtkWidget* widget, GdkEvent* event, pWindow* p) -> signed {
      |                                                                      ^
../hiro/core/../gtk/window.cpp:46:72: error: 'p' was not declared in this scope
   46 | static auto Window_expose(GtkWidget* widget, GdkEvent* event, pWindow* p) -> signed {
      |                                                                        ^
../hiro/core/../gtk/window.cpp:46:73: error: expression list treated as compound expression in initializer [-fpermissive]
   46 | static auto Window_expose(GtkWidget* widget, GdkEvent* event, pWindow* p) -> signed {
      |                                                                         ^
../hiro/core/../gtk/window.cpp:46:75: error: expected ',' or ';' before '->' token
   46 | static auto Window_expose(GtkWidget* widget, GdkEvent* event, pWindow* p) -> signed {
      |                                                                           ^~
../ruby/video/glx.cpp:178:7: error: 'GLX_RED_SIZE' was not declared in this scope
  178 |       GLX_RED_SIZE, redDepth,
      |       ^~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:53:30: error: 'GtkWidget' was not declared in this scope; did you mean 'wWidget'?
   53 | static auto Window_configure(GtkWidget* widget, GdkEvent* event, pWindow* p) -> signed {
      |                              ^~~~~~~~~
      |                              wWidget
../hiro/core/../gtk/window.cpp:53:41: error: 'widget' was not declared in this scope; did you mean 'Widget'?
   53 | static auto Window_configure(GtkWidget* widget, GdkEvent* event, pWindow* p) -> signed {
      |                                         ^~~~~~
      |                                         Widget
../hiro/core/../gtk/window.cpp:53:49: error: 'GdkEvent' was not declared in this scope
   53 | static auto Window_configure(GtkWidget* widget, GdkEvent* event, pWindow* p) -> signed {
      |                                                 ^~~~~~~~
../ruby/video/glx.cpp:179:7: error: 'GLX_GREEN_SIZE' was not declared in this scope
  179 |       GLX_GREEN_SIZE, greenDepth,
      |       ^~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:53:59: error: 'event' was not declared in this scope; did you mean 'servent'?
   53 | static auto Window_configure(GtkWidget* widget, GdkEvent* event, pWindow* p) -> signed {
      |                                                           ^~~~~
      |                                                           servent
../hiro/core/../gtk/window.cpp:53:73: error: expected primary-expression before '*' token
   53 | static auto Window_configure(GtkWidget* widget, GdkEvent* event, pWindow* p) -> signed {
      |                                                                         ^
../hiro/core/../gtk/window.cpp:53:75: error: 'p' was not declared in this scope
   53 | static auto Window_configure(GtkWidget* widget, GdkEvent* event, pWindow* p) -> signed {
      |                                                                           ^
../hiro/core/../gtk/window.cpp:53:76: error: expression list treated as compound expression in initializer [-fpermissive]
   53 | static auto Window_configure(GtkWidget* widget, GdkEvent* event, pWindow* p) -> signed {
      |                                                                            ^
../hiro/core/../gtk/window.cpp:53:78: error: expected ',' or ';' before '->' token
   53 | static auto Window_configure(GtkWidget* widget, GdkEvent* event, pWindow* p) -> signed {
      |                                                                              ^~
../hiro/core/../gtk/window.cpp:58:25: error: 'GtkWidget' was not declared in this scope; did you mean 'wWidget'?
   58 | static auto Window_drop(GtkWidget* widget, GdkDragContext* context, signed x, signed y,
      |                         ^~~~~~~~~
      |                         wWidget
../hiro/core/../gtk/window.cpp:58:36: error: 'widget' was not declared in this scope; did you mean 'Widget'?
   58 | static auto Window_drop(GtkWidget* widget, GdkDragContext* context, signed x, signed y,
      |                                    ^~~~~~
      |                                    Widget
../hiro/core/../gtk/window.cpp:58:44: error: 'GdkDragContext' was not declared in this scope
   58 | static auto Window_drop(GtkWidget* widget, GdkDragContext* context, signed x, signed y,
      |                                            ^~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:58:60: error: 'context' was not declared in this scope; did you mean 'ucontext'?
   58 | static auto Window_drop(GtkWidget* widget, GdkDragContext* context, signed x, signed y,
      |                                                            ^~~~~~~
      |                                                            ucontext
../hiro/core/../gtk/window.cpp:58:69: error: expected primary-expression before 'signed'
   58 | static auto Window_drop(GtkWidget* widget, GdkDragContext* context, signed x, signed y,
      |                                                                     ^~~~~~
../hiro/core/../gtk/window.cpp:58:79: error: expected primary-expression before 'signed'
   58 | static auto Window_drop(GtkWidget* widget, GdkDragContext* context, signed x, signed y,
      |                                                                               ^~~~~~
../hiro/core/../gtk/window.cpp:59:1: error: 'GtkSelectionData' was not declared in this scope
   59 | GtkSelectionData* data, unsigned type, unsigned timestamp, pWindow* p) -> void {
      | ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:59:19: error: 'data' was not declared in this scope
   59 | GtkSelectionData* data, unsigned type, unsigned timestamp, pWindow* p) -> void {
      |                   ^~~~
../hiro/core/../gtk/window.cpp:59:25: error: expected primary-expression before 'unsigned'
   59 | GtkSelectionData* data, unsigned type, unsigned timestamp, pWindow* p) -> void {
      |                         ^~~~~~~~
../hiro/core/../gtk/window.cpp:59:40: error: expected primary-expression before 'unsigned'
   59 | GtkSelectionData* data, unsigned type, unsigned timestamp, pWindow* p) -> void {
      |                                        ^~~~~~~~
../hiro/core/../gtk/window.cpp:59:67: error: expected primary-expression before '*' token
   59 | GtkSelectionData* data, unsigned type, unsigned timestamp, pWindow* p) -> void {
      |                                                                   ^
../hiro/core/../gtk/window.cpp:59:69: error: 'p' was not declared in this scope
   59 | GtkSelectionData* data, unsigned type, unsigned timestamp, pWindow* p) -> void {
      |                                                                     ^
../hiro/core/../gtk/window.cpp:59:70: error: expression list treated as compound expression in initializer [-fpermissive]
   59 | GtkSelectionData* data, unsigned type, unsigned timestamp, pWindow* p) -> void {
      |                                                                      ^
../hiro/core/../gtk/window.cpp:59:72: error: expected ',' or ';' before '->' token
   59 | GtkSelectionData* data, unsigned type, unsigned timestamp, pWindow* p) -> void {
      |                                                                        ^~
../hiro/core/../gtk/window.cpp:66:38: error: 'GtkWidget' was not declared in this scope; did you mean 'wWidget'?
   66 | static auto Window_getPreferredWidth(GtkWidget* widget, int* minimalWidth, int* naturalWidth) -> void {
      |                                      ^~~~~~~~~
      |                                      wWidget
../hiro/core/../gtk/window.cpp:66:49: error: 'widget' was not declared in this scope; did you mean 'Widget'?
   66 | static auto Window_getPreferredWidth(GtkWidget* widget, int* minimalWidth, int* naturalWidth) -> void {
      |                                                 ^~~~~~
      |                                                 Widget
../hiro/core/../gtk/window.cpp:66:57: error: expected primary-expression before 'int'
   66 | static auto Window_getPreferredWidth(GtkWidget* widget, int* minimalWidth, int* naturalWidth) -> void {
      |                                                         ^~~
../hiro/core/../gtk/window.cpp:66:76: error: expected primary-expression before 'int'
   66 | static auto Window_getPreferredWidth(GtkWidget* widget, int* minimalWidth, int* naturalWidth) -> void {
      |                                                                            ^~~
../hiro/core/../gtk/window.cpp:66:93: error: expression list treated as compound expression in initializer [-fpermissive]
   66 | static auto Window_getPreferredWidth(GtkWidget* widget, int* minimalWidth, int* naturalWidth) -> void {
      |                                                                                             ^
../hiro/core/../gtk/window.cpp:66:95: error: expected ',' or ';' before '->' token
   66 | static auto Window_getPreferredWidth(GtkWidget* widget, int* minimalWidth, int* naturalWidth) -> void {
      |                                                                                               ^~
../ruby/video/glx.cpp:180:7: error: 'GLX_BLUE_SIZE' was not declared in this scope
  180 |       GLX_BLUE_SIZE, blueDepth,
      |       ^~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:73:39: error: 'GtkWidget' was not declared in this scope; did you mean 'wWidget'?
   73 | static auto Window_getPreferredHeight(GtkWidget* widget, int* minimalHeight, int* naturalHeight) -> void {
      |                                       ^~~~~~~~~
      |                                       wWidget
../hiro/core/../gtk/window.cpp:73:50: error: 'widget' was not declared in this scope; did you mean 'Widget'?
   73 | static auto Window_getPreferredHeight(GtkWidget* widget, int* minimalHeight, int* naturalHeight) -> void {
      |                                                  ^~~~~~
      |                                                  Widget
../hiro/core/../gtk/window.cpp:73:58: error: expected primary-expression before 'int'
   73 | static auto Window_getPreferredHeight(GtkWidget* widget, int* minimalHeight, int* naturalHeight) -> void {
      |                                                          ^~~
../hiro/core/../gtk/window.cpp:73:78: error: expected primary-expression before 'int'
   73 | static auto Window_getPreferredHeight(GtkWidget* widget, int* minimalHeight, int* naturalHeight) -> void {
      |                                                                              ^~~
../hiro/core/../gtk/window.cpp:73:96: error: expression list treated as compound expression in initializer [-fpermissive]
   73 | static auto Window_getPreferredHeight(GtkWidget* widget, int* minimalHeight, int* naturalHeight) -> void {
      |                                                                                                ^
../hiro/core/../gtk/window.cpp:73:98: error: expected ',' or ';' before '->' token
   73 | static auto Window_getPreferredHeight(GtkWidget* widget, int* minimalHeight, int* naturalHeight) -> void {
      |                                                                                                  ^~
../hiro/core/../gtk/window.cpp:80:29: error: 'GtkWidget' was not declared in this scope; did you mean 'wWidget'?
   80 | static auto Window_keyPress(GtkWidget* widget, GdkEventKey* event, pWindow* p) -> signed {
      |                             ^~~~~~~~~
      |                             wWidget
../hiro/core/../gtk/window.cpp:80:40: error: 'widget' was not declared in this scope; did you mean 'Widget'?
   80 | static auto Window_keyPress(GtkWidget* widget, GdkEventKey* event, pWindow* p) -> signed {
      |                                        ^~~~~~
      |                                        Widget
../ruby/video/glx.cpp:181:7: error: 'None' was not declared in this scope
  181 |       None
      |       ^~~~
../ruby/video/glx.cpp:181:7: note: the macro 'None' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/X.h:115: note: it was later defined here
  115 | #define None                 0L /* universal null resource or null atom */
      | 
../hiro/core/../gtk/window.cpp:80:48: error: 'GdkEventKey' was not declared in this scope
   80 | static auto Window_keyPress(GtkWidget* widget, GdkEventKey* event, pWindow* p) -> signed {
      |                                                ^~~~~~~~~~~
../hiro/core/../gtk/window.cpp:80:61: error: 'event' was not declared in this scope; did you mean 'servent'?
   80 | static auto Window_keyPress(GtkWidget* widget, GdkEventKey* event, pWindow* p) -> signed {
      |                                                             ^~~~~
      |                                                             servent
../hiro/core/../gtk/window.cpp:80:75: error: expected primary-expression before '*' token
   80 | static auto Window_keyPress(GtkWidget* widget, GdkEventKey* event, pWindow* p) -> signed {
      |                                                                           ^
../hiro/core/../gtk/window.cpp:80:77: error: 'p' was not declared in this scope
   80 | static auto Window_keyPress(GtkWidget* widget, GdkEventKey* event, pWindow* p) -> signed {
      |                                                                             ^
../hiro/core/../gtk/window.cpp:80:78: error: expression list treated as compound expression in initializer [-fpermissive]
   80 | static auto Window_keyPress(GtkWidget* widget, GdkEventKey* event, pWindow* p) -> signed {
      |                                                                              ^
../hiro/core/../gtk/window.cpp:80:80: error: expected ',' or ';' before '->' token
   80 | static auto Window_keyPress(GtkWidget* widget, GdkEventKey* event, pWindow* p) -> signed {
      |                                                                                ^~
../ruby/video/glx.cpp:185:5: error: 'GLXFBConfig' was not declared in this scope
  185 |     GLXFBConfig* fbConfig = glXChooseFBConfig(_display, _screen, attributeList, &fbCount);
      |     ^~~~~~~~~~~
../hiro/core/../gtk/window.cpp:95:31: error: 'GtkWidget' was not declared in this scope; did you mean 'wWidget'?
   95 | static auto Window_keyRelease(GtkWidget* widget, GdkEventKey* event, pWindow* p) -> signed {
      |                               ^~~~~~~~~
      |                               wWidget
../hiro/core/../gtk/window.cpp:95:42: error: 'widget' was not declared in this scope; did you mean 'Widget'?
   95 | static auto Window_keyRelease(GtkWidget* widget, GdkEventKey* event, pWindow* p) -> signed {
      |                                          ^~~~~~
      |                                          Widget
../hiro/core/../gtk/window.cpp:95:50: error: 'GdkEventKey' was not declared in this scope
   95 | static auto Window_keyRelease(GtkWidget* widget, GdkEventKey* event, pWindow* p) -> signed {
      |                                                  ^~~~~~~~~~~
../hiro/core/../gtk/window.cpp:95:63: error: 'event' was not declared in this scope; did you mean 'servent'?
   95 | static auto Window_keyRelease(GtkWidget* widget, GdkEventKey* event, pWindow* p) -> signed {
      |                                                               ^~~~~
      |                                                               servent
../hiro/core/../gtk/window.cpp:95:77: error: expected primary-expression before '*' token
   95 | static auto Window_keyRelease(GtkWidget* widget, GdkEventKey* event, pWindow* p) -> signed {
      |                                                                             ^
../ruby/video/glx.cpp:185:18: error: 'fbConfig' was not declared in this scope
  185 |     GLXFBConfig* fbConfig = glXChooseFBConfig(_display, _screen, attributeList, &fbCount);
      |                  ^~~~~~~~
../hiro/core/../gtk/window.cpp:95:79: error: 'p' was not declared in this scope
   95 | static auto Window_keyRelease(GtkWidget* widget, GdkEventKey* event, pWindow* p) -> signed {
      |                                                                               ^
../hiro/core/../gtk/window.cpp:95:80: error: expression list treated as compound expression in initializer [-fpermissive]
   95 | static auto Window_keyRelease(GtkWidget* widget, GdkEventKey* event, pWindow* p) -> signed {
      |                                                                                ^
../hiro/core/../gtk/window.cpp:95:82: error: expected ',' or ';' before '->' token
   95 | static auto Window_keyRelease(GtkWidget* widget, GdkEventKey* event, pWindow* p) -> signed {
      |                                                                                  ^~
../hiro/core/../gtk/window.cpp:102:28: error: 'GtkWidget' was not declared in this scope; did you mean 'wWidget'?
  102 | static auto Window_realize(GtkWidget* widget, pWindow* p) -> void {
      |                            ^~~~~~~~~
      |                            wWidget
../hiro/core/../gtk/window.cpp:102:39: error: 'widget' was not declared in this scope; did you mean 'Widget'?
  102 | static auto Window_realize(GtkWidget* widget, pWindow* p) -> void {
      |                                       ^~~~~~
      |                                       Widget
../hiro/core/../gtk/window.cpp:102:54: error: expected primary-expression before '*' token
  102 | static auto Window_realize(GtkWidget* widget, pWindow* p) -> void {
      |                                                      ^
../hiro/core/../gtk/window.cpp:102:56: error: 'p' was not declared in this scope
  102 | static auto Window_realize(GtkWidget* widget, pWindow* p) -> void {
      |                                                        ^
../hiro/core/../gtk/window.cpp:102:57: error: expression list treated as compound expression in initializer [-fpermissive]
  102 | static auto Window_realize(GtkWidget* widget, pWindow* p) -> void {
      |                                                         ^
../hiro/core/../gtk/window.cpp:102:59: error: expected ',' or ';' before '->' token
  102 | static auto Window_realize(GtkWidget* widget, pWindow* p) -> void {
      |                                                           ^~
../hiro/core/../gtk/window.cpp:105:33: error: 'GtkWidget' was not declared in this scope; did you mean 'wWidget'?
  105 | static auto Window_sizeAllocate(GtkWidget* widget, GtkAllocation* allocation, pWindow* p) -> void {
      |                                 ^~~~~~~~~
      |                                 wWidget
../hiro/core/../gtk/window.cpp:105:44: error: 'widget' was not declared in this scope; did you mean 'Widget'?
  105 | static auto Window_sizeAllocate(GtkWidget* widget, GtkAllocation* allocation, pWindow* p) -> void {
      |                                            ^~~~~~
      |                                            Widget
../ruby/video/glx.cpp:185:29: error: 'glXChooseFBConfig' was not declared in this scope
  185 |     GLXFBConfig* fbConfig = glXChooseFBConfig(_display, _screen, attributeList, &fbCount);
      |                             ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:105:52: error: 'GtkAllocation' was not declared in this scope
  105 | static auto Window_sizeAllocate(GtkWidget* widget, GtkAllocation* allocation, pWindow* p) -> void {
      |                                                    ^~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:105:67: error: 'allocation' was not declared in this scope
  105 | static auto Window_sizeAllocate(GtkWidget* widget, GtkAllocation* allocation, pWindow* p) -> void {
      |                                                                   ^~~~~~~~~~
../hiro/core/../gtk/window.cpp:105:86: error: expected primary-expression before '*' token
  105 | static auto Window_sizeAllocate(GtkWidget* widget, GtkAllocation* allocation, pWindow* p) -> void {
      |                                                                                      ^
../hiro/core/../gtk/window.cpp:105:88: error: 'p' was not declared in this scope
  105 | static auto Window_sizeAllocate(GtkWidget* widget, GtkAllocation* allocation, pWindow* p) -> void {
      |                                                                                        ^
../hiro/core/../gtk/window.cpp:105:89: error: expression list treated as compound expression in initializer [-fpermissive]
  105 | static auto Window_sizeAllocate(GtkWidget* widget, GtkAllocation* allocation, pWindow* p) -> void {
      |                                                                                         ^
../hiro/core/../gtk/window.cpp:105:91: error: expected ',' or ';' before '->' token
  105 | static auto Window_sizeAllocate(GtkWidget* widget, GtkAllocation* allocation, pWindow* p) -> void {
      |                                                                                           ^~
../hiro/core/../gtk/window.cpp:112:32: error: 'GtkWidget' was not declared in this scope; did you mean 'wWidget'?
  112 | static auto Window_sizeRequest(GtkWidget* widget, GtkRequisition* requisition, pWindow* p) -> void {
      |                                ^~~~~~~~~
      |                                wWidget
../hiro/core/../gtk/window.cpp:112:43: error: 'widget' was not declared in this scope; did you mean 'Widget'?
  112 | static auto Window_sizeRequest(GtkWidget* widget, GtkRequisition* requisition, pWindow* p) -> void {
      |                                           ^~~~~~
      |                                           Widget
../ruby/video/glx.cpp:188:19: error: 'glXGetVisualFromFBConfig' was not declared in this scope
  188 |     auto visual = glXGetVisualFromFBConfig(_display, fbConfig[0]);
      |                   ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:112:51: error: 'GtkRequisition' was not declared in this scope
  112 | static auto Window_sizeRequest(GtkWidget* widget, GtkRequisition* requisition, pWindow* p) -> void {
      |                                                   ^~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:112:67: error: 'requisition' was not declared in this scope
  112 | static auto Window_sizeRequest(GtkWidget* widget, GtkRequisition* requisition, pWindow* p) -> void {
      |                                                                   ^~~~~~~~~~~
../hiro/core/../gtk/window.cpp:112:87: error: expected primary-expression before '*' token
  112 | static auto Window_sizeRequest(GtkWidget* widget, GtkRequisition* requisition, pWindow* p) -> void {
      |                                                                                       ^
../ruby/video/glx.cpp:190:5: error: '_parent' was not declared in this scope
  190 |     _parent = self.fullScreen ? RootWindow(_display, visual->screen) : (Window)self.context;
      |     ^~~~~~~
../hiro/core/../gtk/window.cpp:112:89: error: 'p' was not declared in this scope
  112 | static auto Window_sizeRequest(GtkWidget* widget, GtkRequisition* requisition, pWindow* p) -> void {
      |                                                                                         ^
../hiro/core/../gtk/window.cpp:112:90: error: expression list treated as compound expression in initializer [-fpermissive]
  112 | static auto Window_sizeRequest(GtkWidget* widget, GtkRequisition* requisition, pWindow* p) -> void {
      |                                                                                          ^
../hiro/core/../gtk/window.cpp:112:92: error: expected ',' or ';' before '->' token
  112 | static auto Window_sizeRequest(GtkWidget* widget, GtkRequisition* requisition, pWindow* p) -> void {
      |                                                                                            ^~
../hiro/core/../gtk/window.cpp:117:31: error: 'GtkWidget' was not declared in this scope; did you mean 'wWidget'?
  117 | static auto Window_stateEvent(GtkWidget* widget, GdkEvent* event, pWindow* p) -> void {
      |                               ^~~~~~~~~
      |                               wWidget
../hiro/core/../gtk/window.cpp:117:42: error: 'widget' was not declared in this scope; did you mean 'Widget'?
  117 | static auto Window_stateEvent(GtkWidget* widget, GdkEvent* event, pWindow* p) -> void {
      |                                          ^~~~~~
      |                                          Widget
../ruby/video/glx.cpp:190:33: error: 'RootWindow' was not declared in this scope
  190 |     _parent = self.fullScreen ? RootWindow(_display, visual->screen) : (Window)self.context;
      |                                 ^~~~~~~~~~
../ruby/video/glx.cpp:190:33: note: the macro 'RootWindow' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/Xlib.h:88: note: it was later defined here
   88 | #define RootWindow(dpy, scr)    (ScreenOfDisplay(dpy,scr)->root)
      | 
../hiro/core/../gtk/window.cpp:117:50: error: 'GdkEvent' was not declared in this scope
  117 | static auto Window_stateEvent(GtkWidget* widget, GdkEvent* event, pWindow* p) -> void {
      |                                                  ^~~~~~~~
../hiro/core/../gtk/window.cpp:117:60: error: 'event' was not declared in this scope; did you mean 'servent'?
  117 | static auto Window_stateEvent(GtkWidget* widget, GdkEvent* event, pWindow* p) -> void {
      |                                                            ^~~~~
      |                                                            servent
../hiro/core/../gtk/window.cpp:117:74: error: expected primary-expression before '*' token
  117 | static auto Window_stateEvent(GtkWidget* widget, GdkEvent* event, pWindow* p) -> void {
      |                                                                          ^
../hiro/core/../gtk/window.cpp:117:76: error: 'p' was not declared in this scope
  117 | static auto Window_stateEvent(GtkWidget* widget, GdkEvent* event, pWindow* p) -> void {
      |                                                                            ^
../hiro/core/../gtk/window.cpp:117:77: error: expression list treated as compound expression in initializer [-fpermissive]
  117 | static auto Window_stateEvent(GtkWidget* widget, GdkEvent* event, pWindow* p) -> void {
      |                                                                             ^
../hiro/core/../gtk/window.cpp:117:79: error: expected ',' or ';' before '->' token
  117 | static auto Window_stateEvent(GtkWidget* widget, GdkEvent* event, pWindow* p) -> void {
      |                                                                               ^~
../hiro/core/../gtk/window.cpp:131:30: error: 'GtkWidget' was not declared in this scope; did you mean 'wWidget'?
  131 | static auto Window_unrealize(GtkWidget* widget, pWindow* p) -> void {
      |                              ^~~~~~~~~
      |                              wWidget
../ruby/video/glx.cpp:190:73: error: 'Window' was not declared in this scope
  190 |     _parent = self.fullScreen ? RootWindow(_display, visual->screen) : (Window)self.context;
      |                                                                         ^~~~~~
../hiro/core/../gtk/window.cpp:131:41: error: 'widget' was not declared in this scope; did you mean 'Widget'?
  131 | static auto Window_unrealize(GtkWidget* widget, pWindow* p) -> void {
      |                                         ^~~~~~
      |                                         Widget
../hiro/core/../gtk/window.cpp:131:56: error: expected primary-expression before '*' token
  131 | static auto Window_unrealize(GtkWidget* widget, pWindow* p) -> void {
      |                                                        ^
../hiro/core/../gtk/window.cpp:131:58: error: 'p' was not declared in this scope
  131 | static auto Window_unrealize(GtkWidget* widget, pWindow* p) -> void {
      |                                                          ^
../hiro/core/../gtk/window.cpp:131:59: error: expression list treated as compound expression in initializer [-fpermissive]
  131 | static auto Window_unrealize(GtkWidget* widget, pWindow* p) -> void {
      |                                                           ^
../hiro/core/../gtk/window.cpp:131:61: error: expected ',' or ';' before '->' token
  131 | static auto Window_unrealize(GtkWidget* widget, pWindow* p) -> void {
      |                                                             ^~
../hiro/core/../gtk/window.cpp: In member function 'virtual void hiro::pWindow::construct()':
../hiro/core/../gtk/window.cpp:135:3: error: 'widget' was not declared in this scope; did you mean 'Widget'?
  135 |   widget = gtk_window_new(GTK_WINDOW_TOPLEVEL);
      |   ^~~~~~
      |   Widget
../hiro/core/../gtk/window.cpp:135:27: error: 'GTK_WINDOW_TOPLEVEL' was not declared in this scope
  135 |   widget = gtk_window_new(GTK_WINDOW_TOPLEVEL);
      |                           ^~~~~~~~~~~~~~~~~~~
../ruby/video/glx.cpp:191:5: error: 'XWindowAttributes' was not declared in this scope
  191 |     XWindowAttributes windowAttributes;
      |     ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:135:12: error: 'gtk_window_new' was not declared in this scope
  135 |   widget = gtk_window_new(GTK_WINDOW_TOPLEVEL);
      |            ^~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:136:28: error: 'GTK_WINDOW' was not declared in this scope
  136 |   gtk_window_set_resizable(GTK_WINDOW(widget), true);
      |                            ^~~~~~~~~~
../ruby/video/glx.cpp:192:46: error: 'windowAttributes' was not declared in this scope
  192 |     XGetWindowAttributes(_display, _parent, &windowAttributes);
      |                                              ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:136:3: error: 'gtk_window_set_resizable' was not declared in this scope
  136 |   gtk_window_set_resizable(GTK_WINDOW(widget), true);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~
../ruby/video/glx.cpp:192:5: error: 'XGetWindowAttributes' was not declared in this scope
  192 |     XGetWindowAttributes(_display, _parent, &windowAttributes);
      |     ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:144:44: error: 'gdk_screen_get_default' was not declared in this scope
  144 |   auto visual = gdk_screen_get_rgba_visual(gdk_screen_get_default());
      |                                            ^~~~~~~~~~~~~~~~~~~~~~
../ruby/video/glx.cpp:204:5: error: '_colormap' was not declared in this scope; did you mean 'CWColormap'?
  204 |     _colormap = XCreateColormap(_display, RootWindow(_display, visual->screen), visual->visual, AllocNone);
      |     ^~~~~~~~~
      |     CWColormap
../hiro/core/../gtk/window.cpp:144:17: error: 'gdk_screen_get_rgba_visual' was not declared in this scope
  144 |   auto visual = gdk_screen_get_rgba_visual(gdk_screen_get_default());
      |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~
../ruby/video/glx.cpp:204:97: error: 'AllocNone' was not declared in this scope
  204 |     _colormap = XCreateColormap(_display, RootWindow(_display, visual->screen), visual->visual, AllocNone);
      |                                                                                                 ^~~~~~~~~
../ruby/video/glx.cpp:204:97: note: the macro 'AllocNone' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/X.h:616: note: it was later defined here
  616 | #define AllocNone               0       /* create map with no entries */
      | 
../hiro/core/../gtk/window.cpp:145:24: error: 'gdk_screen_get_system_visual' was not declared in this scope
  145 |   if(!visual) visual = gdk_screen_get_system_visual(gdk_screen_get_default());
      |                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../ruby/video/glx.cpp:204:17: error: 'XCreateColormap' was not declared in this scope; did you mean 'XNStdColormap'?
  204 |     _colormap = XCreateColormap(_display, RootWindow(_display, visual->screen), visual->visual, AllocNone);
      |                 ^~~~~~~~~~~~~~~
      |                 XNStdColormap
../hiro/core/../gtk/window.cpp:146:14: error: 'gtk_widget_set_visual' was not declared in this scope
  146 |   if(visual) gtk_widget_set_visual(widget, visual);
      |              ^~~~~~~~~~~~~~~~~~~~~
../ruby/video/glx.cpp:205:5: error: 'XSetWindowAttributes' was not declared in this scope
  205 |     XSetWindowAttributes attributes{};
      |     ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:148:3: error: 'gtk_widget_set_app_paintable' was not declared in this scope
  148 |   gtk_widget_set_app_paintable(widget, true);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:149:33: error: 'GDK_CONFIGURE' was not declared in this scope
  149 |   gtk_widget_add_events(widget, GDK_CONFIGURE);
      |                                 ^~~~~~~~~~~~~
../ruby/video/glx.cpp:206:5: error: 'attributes' was not declared in this scope; did you mean 'attributeList'?
  206 |     attributes.border_pixel = 0;
      |     ^~~~~~~~~~
      |     attributeList
../ruby/video/glx.cpp:209:5: error: '_window' was not declared in this scope; did you mean 'BadWindow'?
  209 |     _window = XCreateWindow(_display, _parent,
      |     ^~~~~~~
      |     BadWindow
../hiro/core/../gtk/window.cpp:149:3: error: 'gtk_widget_add_events' was not declared in this scope
  149 |   gtk_widget_add_events(widget, GDK_CONFIGURE);
      |   ^~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:154:3: error: 'menuContainer' was not declared in this scope
  154 |   menuContainer = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
      |   ^~~~~~~~~~~~~
../ruby/video/glx.cpp:211:25: error: 'InputOutput' was not declared in this scope
  211 |       0, visual->depth, InputOutput, visual->visual,
      |                         ^~~~~~~~~~~
../ruby/video/glx.cpp:211:25: note: the macro 'InputOutput' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/X.h:387: note: it was later defined here
  387 | #define InputOutput             1
      | 
../ruby/video/glx.cpp:212:7: error: 'CWBorderPixel' was not declared in this scope
  212 |       CWBorderPixel | CWColormap | CWOverrideRedirect, &attributes);
      |       ^~~~~~~~~~~~~
../ruby/video/glx.cpp:212:7: note: the macro 'CWBorderPixel' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/X.h:395: note: it was later defined here
  395 | #define CWBorderPixel           (1L<<3)
      | 
../ruby/video/glx.cpp:212:23: error: 'CWColormap' was not declared in this scope
  212 |       CWBorderPixel | CWColormap | CWOverrideRedirect, &attributes);
      |                       ^~~~~~~~~~
../ruby/video/glx.cpp:212:23: note: the macro 'CWColormap' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/X.h:405: note: it was later defined here
  405 | #define CWColormap              (1L<<13)
      | 
../ruby/video/glx.cpp:212:36: error: 'CWOverrideRedirect' was not declared in this scope
  212 |       CWBorderPixel | CWColormap | CWOverrideRedirect, &attributes);
      |                                    ^~~~~~~~~~~~~~~~~~
../ruby/video/glx.cpp:212:36: note: the macro 'CWOverrideRedirect' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/X.h:401: note: it was later defined here
  401 | #define CWOverrideRedirect      (1L<<9)
      | 
../ruby/video/glx.cpp:209:15: error: 'XCreateWindow' was not declared in this scope
  209 |     _window = XCreateWindow(_display, _parent,
      |               ^~~~~~~~~~~~~
../ruby/video/glx.cpp:213:37: error: 'ExposureMask' was not declared in this scope
  213 |     XSelectInput(_display, _window, ExposureMask);
      |                                     ^~~~~~~~~~~~
../ruby/video/glx.cpp:213:37: note: the macro 'ExposureMask' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/X.h:166: note: it was later defined here
  166 | #define ExposureMask                    (1L<<15)
      | 
../ruby/video/glx.cpp:213:5: error: 'XSelectInput' was not declared in this scope
  213 |     XSelectInput(_display, _window, ExposureMask);
      |     ^~~~~~~~~~~~
../ruby/video/glx.cpp:214:5: error: 'XSetWindowBackground' was not declared in this scope
  214 |     XSetWindowBackground(_display, _window, 0);
      |     ^~~~~~~~~~~~~~~~~~~~
../ruby/video/glx.cpp:215:5: error: 'XMapWindow' was not declared in this scope; did you mean 'BadWindow'?
  215 |     XMapWindow(_display, _window);
      |     ^~~~~~~~~~
      |     BadWindow
../ruby/video/glx.cpp:216:5: error: 'XFlush' was not declared in this scope; did you mean 'flush'?
  216 |     XFlush(_display);
      |     ^~~~~~
      |     flush
../ruby/video/glx.cpp:219:11: error: 'XPending' was not declared in this scope; did you mean 'sigpending'?
  219 |     while(XPending(_display)) {
      |           ^~~~~~~~
      |           sigpending
../ruby/video/glx.cpp:220:7: error: 'XEvent' was not declared in this scope
  220 |       XEvent event;
      |       ^~~~~~
../hiro/core/../gtk/window.cpp:154:31: error: 'GTK_ORIENTATION_VERTICAL' was not declared in this scope
  154 |   menuContainer = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
      |                               ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:154:19: error: 'gtk_box_new' was not declared in this scope
  154 |   menuContainer = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
      |                   ^~~~~~~~~~~
../hiro/core/../gtk/window.cpp:156:21: error: 'GTK_CONTAINER' was not declared in this scope
  156 |   gtk_container_add(GTK_CONTAINER(widget), menuContainer);
      |                     ^~~~~~~~~~~~~
../ruby/video/glx.cpp:221:29: error: 'event' was not declared in this scope; did you mean 'servent'?
  221 |       XNextEvent(_display, &event);
      |                             ^~~~~
      |                             servent
../hiro/core/../gtk/window.cpp:156:3: error: 'gtk_container_add' was not declared in this scope
  156 |   gtk_container_add(GTK_CONTAINER(widget), menuContainer);
      |   ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:157:3: error: 'gtk_widget_show' was not declared in this scope
  157 |   gtk_widget_show(menuContainer);
      |   ^~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:159:3: error: 'gtkMenu' was not declared in this scope; did you mean 'wMenu'?
  159 |   gtkMenu = gtk_menu_bar_new();
      |   ^~~~~~~
      |   wMenu
../ruby/video/glx.cpp:221:7: error: 'XNextEvent' was not declared in this scope
  221 |       XNextEvent(_display, &event);
      |       ^~~~~~~~~~
../hiro/core/../gtk/window.cpp:159:13: error: 'gtk_menu_bar_new' was not declared in this scope
  159 |   gtkMenu = gtk_menu_bar_new();
      |             ^~~~~~~~~~~~~~~~
../ruby/video/glx.cpp:224:5: error: '_glXContext' was not declared in this scope
  224 |     _glXContext = glXCreateContext(_display, visual, 0, GL_TRUE);
      |     ^~~~~~~~~~~
../ruby/video/glx.cpp:224:57: error: 'GL_TRUE' was not declared in this scope; did you mean 'AL_TRUE'?
  224 |     _glXContext = glXCreateContext(_display, visual, 0, GL_TRUE);
      |                                                         ^~~~~~~
      |                                                         AL_TRUE
../hiro/core/../gtk/window.cpp:160:22: error: 'GTK_BOX' was not declared in this scope
  160 |   gtk_box_pack_start(GTK_BOX(menuContainer), gtkMenu, false, false, 0);
      |                      ^~~~~~~
../hiro/core/../gtk/window.cpp:160:3: error: 'gtk_box_pack_start' was not declared in this scope
  160 |   gtk_box_pack_start(GTK_BOX(menuContainer), gtkMenu, false, false, 0);
      |   ^~~~~~~~~~~~~~~~~~
../ruby/video/glx.cpp:224:19: error: 'glXCreateContext' was not declared in this scope
  224 |     _glXContext = glXCreateContext(_display, visual, 0, GL_TRUE);
      |                   ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:162:3: error: 'formContainer' was not declared in this scope
  162 |   formContainer = gtk_fixed_new();
      |   ^~~~~~~~~~~~~
../ruby/video/glx.cpp:225:30: error: '_glXWindow' was not declared in this scope
  225 |     glXMakeCurrent(_display, _glXWindow = _window, _glXContext);
      |                              ^~~~~~~~~~
../hiro/core/../gtk/window.cpp:162:19: error: 'gtk_fixed_new' was not declared in this scope
  162 |   formContainer = gtk_fixed_new();
      |                   ^~~~~~~~~~~~~
../ruby/video/glx.cpp:225:5: error: 'glXMakeCurrent' was not declared in this scope
  225 |     glXMakeCurrent(_display, _glXWindow = _window, _glXContext);
      |     ^~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:166:3: error: 'statusContainer' was not declared in this scope
  166 |   statusContainer = gtk_event_box_new();
      |   ^~~~~~~~~~~~~~~
../ruby/video/glx.cpp:229:58: error: 'glGetProcAddress' was not declared in this scope
  229 |     if(!glXSwapInterval) glXSwapInterval = (int (*)(int))glGetProcAddress("glXSwapIntervalMESA");
      |                                                          ^~~~~~~~~~~~~~~~
../ruby/video/glx.cpp:230:58: error: 'glGetProcAddress' was not declared in this scope
  230 |     if(!glXSwapInterval) glXSwapInterval = (int (*)(int))glGetProcAddress("glXSwapIntervalSGI");
      |                                                          ^~~~~~~~~~~~~~~~
../ruby/video/glx.cpp:232:40: warning: 'auto(x)' only available with '-std=c++2b' or '-std=gnu++2b' [-Wc++23-extensions]
  232 |     if(auto glXCreateContextAttribs = (auto (*)(Display*, GLXFBConfig, GLXContext, int, const int*) -> GLXContext)glGetProcAddress("glXCreateContextAttribsARB")) {
      |                                        ^~~~~~~~
../ruby/video/glx.cpp:232:40: error: expected primary-expression before 'auto'
  232 |     if(auto glXCreateContextAttribs = (auto (*)(Display*, GLXFBConfig, GLXContext, int, const int*) -> GLXContext)glGetProcAddress("glXCreateContextAttribsARB")) {
      |                                        ^~~~
../ruby/video/glx.cpp:232:40: error: expected ')' before 'auto'
../ruby/video/glx.cpp:232:39: note: to match this '('
  232 |     if(auto glXCreateContextAttribs = (auto (*)(Display*, GLXFBConfig, GLXContext, int, const int*) -> GLXContext)glGetProcAddress("glXCreateContextAttribsARB")) {
      |                                       ^
../ruby/video/glx.cpp:253:7: error: expected ')' before 'else'
  253 |     } else {
      |       ^~~~
../ruby/video/glx.cpp:232:7: note: to match this '('
  232 |     if(auto glXCreateContextAttribs = (auto (*)(Display*, GLXFBConfig, GLXContext, int, const int*) -> GLXContext)glGetProcAddress("glXCreateContextAttribsARB")) {
      |       ^
../hiro/core/../gtk/window.cpp:166:21: error: 'gtk_event_box_new' was not declared in this scope
  166 |   statusContainer = gtk_event_box_new();
      |                     ^~~~~~~~~~~~~~~~~
../ruby/video/glx.cpp:262:5: error: 'glXGetConfig' was not declared in this scope; did you mean 'getnetconfig'?
  262 |     glXGetConfig(_display, visual, GLX_DOUBLEBUFFER, &value);
      |     ^~~~~~~~~~~~
      |     getnetconfig
../hiro/core/../gtk/window.cpp:167:3: error: 'gtkStatus' was not declared in this scope
  167 |   gtkStatus = gtk_statusbar_new();
      |   ^~~~~~~~~
../ruby/video/glx.cpp:264:17: error: 'glXIsDirect' was not declared in this scope; did you mean '_isDirect'?
  264 |     _isDirect = glXIsDirect(_display, _glXContext);
      |                 ^~~~~~~~~~~
      |                 _isDirect
../hiro/core/../gtk/window.cpp:167:15: error: 'gtk_statusbar_new' was not declared in this scope
  167 |   gtkStatus = gtk_statusbar_new();
      |               ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:171:3: error: 'gtk_window_set_has_resize_grip' was not declared in this scope
  171 |   gtk_window_set_has_resize_grip(GTK_WINDOW(widget), true);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:185:20: error: 'G_OBJECT' was not declared in this scope
  185 |   g_signal_connect(G_OBJECT(widget), "delete-event", G_CALLBACK(Window_close), (gpointer)this);
      |                    ^~~~~~~~
../ruby/video/glx.cpp: In member function 'void VideoGLX::terminate()':
../ruby/video/glx.cpp:273:8: error: '_glXContext' was not declared in this scope
  273 |     if(_glXContext) {
      |        ^~~~~~~~~~~
../hiro/core/../gtk/window.cpp:185:54: error: 'G_CALLBACK' was not declared in this scope
  185 |   g_signal_connect(G_OBJECT(widget), "delete-event", G_CALLBACK(Window_close), (gpointer)this);
      |                                                      ^~~~~~~~~~
../ruby/video/glx.cpp:274:25: error: '_display' was not declared in this scope
  274 |       glXDestroyContext(_display, _glXContext);
      |                         ^~~~~~~~
../hiro/core/../gtk/window.cpp:185:81: error: 'gpointer' was not declared in this scope
  185 |   g_signal_connect(G_OBJECT(widget), "delete-event", G_CALLBACK(Window_close), (gpointer)this);
      |                                                                                 ^~~~~~~~
../hiro/core/../gtk/window.cpp:185:3: error: 'g_signal_connect' was not declared in this scope
  185 |   g_signal_connect(G_OBJECT(widget), "delete-event", G_CALLBACK(Window_close), (gpointer)this);
      |   ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:189:81: error: expected ')' before 'this'
  189 |   g_signal_connect(G_OBJECT(widget), "draw", G_CALLBACK(Window_draw), (gpointer)this);
      |                   ~                                                             ^~~~
      |                                                                                 )
../hiro/core/../gtk/window.cpp:191:97: error: expected ')' before 'this'
  191 |   g_signal_connect(G_OBJECT(widget), "configure-event", G_CALLBACK(Window_configure), (gpointer)this);
      |                   ~                                                                             ^~~~
      |                                                                                                 )
../hiro/core/../gtk/window.cpp:192:95: error: expected ')' before 'this'
  192 |   g_signal_connect(G_OBJECT(widget), "drag-data-received", G_CALLBACK(Window_drop), (gpointer)this);
      |                   ~                                                                           ^~~~
      |                                                                                               )
../ruby/video/glx.cpp:274:7: error: 'glXDestroyContext' was not declared in this scope
  274 |       glXDestroyContext(_display, _glXContext);
      |       ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:193:96: error: expected ')' before 'this'
  193 |   g_signal_connect(G_OBJECT(widget), "key-press-event", G_CALLBACK(Window_keyPress), (gpointer)this);
      |                   ~                                                                            ^~~~
      |                                                                                                )
../hiro/core/../gtk/window.cpp:194:100: error: expected ')' before 'this'
  194 |   g_signal_connect(G_OBJECT(widget), "key-release-event", G_CALLBACK(Window_keyRelease), (gpointer)this);
      |                   ~                                                                                ^~~~
      |                                                                                                    )
../hiro/core/../gtk/window.cpp:195:87: error: expected ')' before 'this'
  195 |   g_signal_connect(G_OBJECT(widget), "realize", G_CALLBACK(Window_realize), (gpointer)this);
      |                   ~                                                                   ^~~~
      |                                                                                       )
../hiro/core/../gtk/window.cpp:196:105: error: expected ')' before 'this'
  196 |   g_signal_connect(G_OBJECT(formContainer), "size-allocate", G_CALLBACK(Window_sizeAllocate), (gpointer)this);
      |                   ~                                                                                     ^~~~
      |                                                                                                         )
../hiro/core/../gtk/window.cpp:200:22: error: 'GTK_WIDGET_GET_CLASS' was not declared in this scope
  200 |   auto widgetClass = GTK_WIDGET_GET_CLASS(formContainer);
      |                      ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:204:91: error: expected ')' before 'this'
  204 |   g_signal_connect(G_OBJECT(widget), "unrealize", G_CALLBACK(Window_unrealize), (gpointer)this);
      |                   ~                                                                       ^~~~
      |                                                                                           )
../hiro/core/../gtk/window.cpp:205:101: error: expected ')' before 'this'
  205 |   g_signal_connect(G_OBJECT(widget), "window-state-event", G_CALLBACK(Window_stateEvent), (gpointer)this);
      |                   ~                                                                                 ^~~~
      |                                                                                                     )
../hiro/core/../gtk/window.cpp:207:65: error: expected ')' before 'this'
  207 |   g_object_set_data(G_OBJECT(widget), "hiro::window", (gpointer)this);
      |                    ~                                            ^~~~
      |                                                                 )
../ruby/video/glx.cpp:278:8: error: '_window' was not declared in this scope; did you mean 'BadWindow'?
  278 |     if(_window) {
      |        ^~~~~~~
      |        BadWindow
../ruby/video/glx.cpp:279:20: error: '_display' was not declared in this scope
  279 |       XUnmapWindow(_display, _window);
      |                    ^~~~~~~~
../hiro/core/../gtk/window.cpp:207:3: error: 'g_object_set_data' was not declared in this scope
  207 |   g_object_set_data(G_OBJECT(widget), "hiro::window", (gpointer)this);
      |   ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:208:72: error: expected ')' before 'this'
  208 |   g_object_set_data(G_OBJECT(formContainer), "hiro::window", (gpointer)this);
      |                    ~                                                   ^~~~
      |                                                                        )
../hiro/core/../gtk/window.cpp: In member function 'virtual void hiro::pWindow::destruct()':
../hiro/core/../gtk/window.cpp:221:22: error: 'widget' was not declared in this scope; did you mean 'Widget'?
  221 |   gtk_widget_destroy(widget);
      |                      ^~~~~~
      |                      Widget
../ruby/video/glx.cpp:279:7: error: 'XUnmapWindow' was not declared in this scope
  279 |       XUnmapWindow(_display, _window);
      |       ^~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:221:3: error: 'gtk_widget_destroy' was not declared in this scope
  221 |   gtk_widget_destroy(widget);
      |   ^~~~~~~~~~~~~~~~~~
../ruby/video/glx.cpp:283:8: error: '_colormap' was not declared in this scope; did you mean 'CWColormap'?
  283 |     if(_colormap) {
      |        ^~~~~~~~~
      |        CWColormap
../hiro/core/../gtk/window.cpp: In member function 'virtual bool hiro::pWindow::focused() const':
../hiro/core/../gtk/window.cpp:241:42: error: 'widget' was not declared in this scope; did you mean 'Widget'?
  241 |   return gtk_window_is_active(GTK_WINDOW(widget));
      |                                          ^~~~~~
      |                                          Widget
../hiro/core/../gtk/window.cpp:241:31: error: 'GTK_WINDOW' was not declared in this scope
  241 |   return gtk_window_is_active(GTK_WINDOW(widget));
      |                               ^~~~~~~~~~
../ruby/video/glx.cpp:284:21: error: '_display' was not declared in this scope
  284 |       XFreeColormap(_display, _colormap);
      |                     ^~~~~~~~
../hiro/core/../gtk/window.cpp:241:10: error: 'gtk_window_is_active' was not declared in this scope
  241 |   return gtk_window_is_active(GTK_WINDOW(widget));
      |          ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp: In member function 'uint hiro::pWindow::monitor() const':
../hiro/core/../gtk/window.cpp:271:31: error: 'widget' was not declared in this scope; did you mean 'Widget'?
  271 |   if(!gtk_widget_get_realized(widget)) return 0;
      |                               ^~~~~~
      |                               Widget
../ruby/video/glx.cpp:284:7: error: 'XFreeColormap' was not declared in this scope; did you mean 'XNStdColormap'?
  284 |       XFreeColormap(_display, _colormap);
      |       ^~~~~~~~~~~~~
      |       XNStdColormap
../ruby/video/glx2.cpp: At global scope:
../ruby/video/glx2.cpp:360:3: error: 'Display' does not name a type
  360 |   Display* _display = nullptr;
      |   ^~~~~~~
../ruby/video/glx2.cpp:367:3: error: 'Window' does not name a type
  367 |   Window _parent = 0;
      |   ^~~~~~
../hiro/core/../gtk/window.cpp:271:7: error: 'gtk_widget_get_realized' was not declared in this scope
  271 |   if(!gtk_widget_get_realized(widget)) return 0;
      |       ^~~~~~~~~~~~~~~~~~~~~~~
../ruby/video/glx2.cpp:368:3: error: 'Window' does not name a type
  368 |   Window _window = 0;
      |   ^~~~~~
../ruby/video/glx2.cpp:369:3: error: 'Colormap' does not name a type; did you mean 'CWColormap'?
  369 |   Colormap _colormap = 0;
      |   ^~~~~~~~
      |   CWColormap
../hiro/core/../gtk/window.cpp:272:39: error: 'widget' was not declared in this scope; did you mean 'Widget'?
  272 |   auto window = gtk_widget_get_window(widget);
      |                                       ^~~~~~
      |                                       Widget
../ruby/video/glx2.cpp:370:3: error: 'GLXContext' does not name a type; did you mean 'ucontext'?
  370 |   GLXContext _glXContext = nullptr;
      |   ^~~~~~~~~~
      |   ucontext
../ruby/video/glx2.cpp:371:3: error: 'GLXWindow' does not name a type; did you mean 'BadWindow'?
  371 |   GLXWindow _glXWindow = 0;
      |   ^~~~~~~~~
      |   BadWindow
../ruby/video/glx2.cpp:379:3: error: 'GLuint' does not name a type; did you mean 'uint'?
  379 |   GLuint _glTexture = 0;
      |   ^~~~~~
      |   uint
../ruby/video/glx2.cpp:383:20: error: 'GL_UNSIGNED_INT_8_8_8_8_REV' was not declared in this scope
  383 |   uint _glFormat = GL_UNSIGNED_INT_8_8_8_8_REV;
      |                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:272:17: error: 'gtk_widget_get_window' was not declared in this scope
  272 |   auto window = gtk_widget_get_window(widget);
      |                 ^~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:273:43: error: 'gdk_screen_get_default' was not declared in this scope
  273 |   return gdk_screen_get_monitor_at_window(gdk_screen_get_default(), window);
      |                                           ^~~~~~~~~~~~~~~~~~~~~~
../ruby/video/glx2.cpp: In member function 'virtual bool VideoGLX2::setFormat(nall::string)':
../ruby/video/glx2.cpp:70:19: error: 'GL_UNSIGNED_INT_8_8_8_8_REV' was not declared in this scope
   70 |       _glFormat = GL_UNSIGNED_INT_8_8_8_8_REV;
      |                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:273:10: error: 'gdk_screen_get_monitor_at_window' was not declared in this scope
  273 |   return gdk_screen_get_monitor_at_window(gdk_screen_get_default(), window);
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp: In member function 'void hiro::pWindow::setBackgroundColor(hiro::Color)':
../hiro/core/../gtk/window.cpp:288:3: error: 'GdkColor' was not declared in this scope; did you mean 'Color'?
  288 |   GdkColor gdkColor = CreateColor(color);
      |   ^~~~~~~~
      |   Color
../hiro/core/../gtk/window.cpp:289:24: error: 'widget' was not declared in this scope; did you mean 'Widget'?
  289 |   gtk_widget_modify_bg(widget, GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |                        ^~~~~~
      |                        Widget
../ruby/video/glx2.cpp:75:19: error: 'GL_UNSIGNED_INT_2_10_10_10_REV' was not declared in this scope
   75 |       _glFormat = GL_UNSIGNED_INT_2_10_10_10_REV;
      |                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:289:32: error: 'GTK_STATE_NORMAL' was not declared in this scope
  289 |   gtk_widget_modify_bg(widget, GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |                                ^~~~~~~~~~~~~~~~
../ruby/video/glx2.cpp: In member function 'virtual void VideoGLX2::clear()':
../ruby/video/glx2.cpp:92:5: error: 'glClearColor' was not declared in this scope
   92 |     glClearColor(0.0, 0.0, 0.0, 1.0);
      |     ^~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:289:59: error: 'gdkColor' was not declared in this scope; did you mean 'Color'?
  289 |   gtk_widget_modify_bg(widget, GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |                                                           ^~~~~~~~
      |                                                           Color
../hiro/core/../gtk/window.cpp:289:3: error: 'gtk_widget_modify_bg' was not declared in this scope
  289 |   gtk_widget_modify_bg(widget, GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |   ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp: In member function 'void hiro::pWindow::setDroppable(bool)':
../hiro/core/../gtk/window.cpp:296:21: error: 'widget' was not declared in this scope; did you mean 'Widget'?
  296 |   gtk_drag_dest_set(widget, GTK_DEST_DEFAULT_ALL, nullptr, 0, GDK_ACTION_COPY);
      |                     ^~~~~~
      |                     Widget
../ruby/video/glx2.cpp:93:13: error: 'GL_COLOR_BUFFER_BIT' was not declared in this scope
   93 |     glClear(GL_COLOR_BUFFER_BIT);
      |             ^~~~~~~~~~~~~~~~~~~
../ruby/video/glx2.cpp:93:5: error: 'glClear' was not declared in this scope; did you mean 'GXclear'?
   93 |     glClear(GL_COLOR_BUFFER_BIT);
      |     ^~~~~~~
      |     GXclear
../hiro/core/../gtk/window.cpp:296:29: error: 'GTK_DEST_DEFAULT_ALL' was not declared in this scope
  296 |   gtk_drag_dest_set(widget, GTK_DEST_DEFAULT_ALL, nullptr, 0, GDK_ACTION_COPY);
      |                             ^~~~~~~~~~~~~~~~~~~~
../ruby/video/glx2.cpp:94:5: error: 'glFlush' was not declared in this scope; did you mean 'flush'?
   94 |     glFlush();
      |     ^~~~~~~
      |     flush
../ruby/video/glx2.cpp:95:42: error: '_display' was not declared in this scope
   95 |     if(_isDoubleBuffered) glXSwapBuffers(_display, _glXWindow);
      |                                          ^~~~~~~~
../hiro/core/../gtk/window.cpp:296:63: error: 'GDK_ACTION_COPY' was not declared in this scope
  296 |   gtk_drag_dest_set(widget, GTK_DEST_DEFAULT_ALL, nullptr, 0, GDK_ACTION_COPY);
      |                                                               ^~~~~~~~~~~~~~~
../ruby/video/glx2.cpp:95:52: error: '_glXWindow' was not declared in this scope; did you mean '_glWidth'?
   95 |     if(_isDoubleBuffered) glXSwapBuffers(_display, _glXWindow);
      |                                                    ^~~~~~~~~~
      |                                                    _glWidth
../ruby/video/glx2.cpp:95:27: error: 'glXSwapBuffers' was not declared in this scope
   95 |     if(_isDoubleBuffered) glXSwapBuffers(_display, _glXWindow);
      |                           ^~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:296:3: error: 'gtk_drag_dest_set' was not declared in this scope
  296 |   gtk_drag_dest_set(widget, GTK_DEST_DEFAULT_ALL, nullptr, 0, GDK_ACTION_COPY);
      |   ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:297:17: error: 'gtk_drag_dest_add_uri_targets' was not declared in this scope
  297 |   if(droppable) gtk_drag_dest_add_uri_targets(widget);
      |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../ruby/video/glx2.cpp: In member function 'virtual void VideoGLX2::size(uint&, uint&)':
../ruby/video/glx2.cpp:103:7: error: 'XWindowAttributes' was not declared in this scope
  103 |       XWindowAttributes parent;
      |       ^~~~~~~~~~~~~~~~~
../ruby/video/glx2.cpp:104:28: error: '_display' was not declared in this scope
  104 |       XGetWindowAttributes(_display, _parent, &parent);
      |                            ^~~~~~~~
../ruby/video/glx2.cpp:104:38: error: '_parent' was not declared in this scope
  104 |       XGetWindowAttributes(_display, _parent, &parent);
      |                                      ^~~~~~~
../hiro/core/../gtk/window.cpp: In member function 'virtual void hiro::pWindow::setFocused()':
../hiro/core/../gtk/window.cpp:311:33: error: 'widget' was not declared in this scope; did you mean 'Widget'?
  311 |   gtk_window_present(GTK_WINDOW(widget));
      |                                 ^~~~~~
      |                                 Widget
../ruby/video/glx2.cpp:104:48: error: 'parent' was not declared in this scope; did you mean 'dirent'?
  104 |       XGetWindowAttributes(_display, _parent, &parent);
      |                                                ^~~~~~
      |                                                dirent
../hiro/core/../gtk/window.cpp:311:22: error: 'GTK_WINDOW' was not declared in this scope
  311 |   gtk_window_present(GTK_WINDOW(widget));
      |                      ^~~~~~~~~~
../ruby/video/glx2.cpp:104:7: error: 'XGetWindowAttributes' was not declared in this scope
  104 |       XGetWindowAttributes(_display, _parent, &parent);
      |       ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:311:3: error: 'gtk_window_present' was not declared in this scope
  311 |   gtk_window_present(GTK_WINDOW(widget));
      |   ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp: In member function 'void hiro::pWindow::setFullScreen(bool)':
../hiro/core/../gtk/window.cpp:316:38: error: 'widget' was not declared in this scope; did you mean 'Widget'?
  316 |     gtk_window_fullscreen(GTK_WINDOW(widget));
      |                                      ^~~~~~
      |                                      Widget
../hiro/core/../gtk/window.cpp:316:27: error: 'GTK_WINDOW' was not declared in this scope
  316 |     gtk_window_fullscreen(GTK_WINDOW(widget));
      |                           ^~~~~~~~~~
../ruby/video/glx2.cpp: In member function 'virtual void VideoGLX2::output(uint, uint)':
../ruby/video/glx2.cpp:120:5: error: 'XWindowAttributes' was not declared in this scope
  120 |     XWindowAttributes window;
      |     ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:316:5: error: 'gtk_window_fullscreen' was not declared in this scope
  316 |     gtk_window_fullscreen(GTK_WINDOW(widget));
      |     ^~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:318:40: error: 'widget' was not declared in this scope; did you mean 'Widget'?
  318 |     gtk_window_unfullscreen(GTK_WINDOW(widget));
      |                                        ^~~~~~
      |                                        Widget
../ruby/video/glx2.cpp:121:26: error: '_display' was not declared in this scope
  121 |     XGetWindowAttributes(_display, _window, &window);
      |                          ^~~~~~~~
../hiro/core/../gtk/window.cpp:318:29: error: 'GTK_WINDOW' was not declared in this scope
  318 |     gtk_window_unfullscreen(GTK_WINDOW(widget));
      |                             ^~~~~~~~~~
../ruby/video/glx2.cpp:121:36: error: '_window' was not declared in this scope; did you mean 'BadWindow'?
  121 |     XGetWindowAttributes(_display, _window, &window);
      |                                    ^~~~~~~
      |                                    BadWindow
../hiro/core/../gtk/window.cpp:318:5: error: 'gtk_window_unfullscreen' was not declared in this scope
  318 |     gtk_window_unfullscreen(GTK_WINDOW(widget));
      |     ^~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp: In member function 'void hiro::pWindow::setGeometry(hiro::Geometry)':
../hiro/core/../gtk/window.cpp:338:30: error: 'widget' was not declared in this scope; did you mean 'Widget'?
  338 |   gtk_window_move(GTK_WINDOW(widget), geometry.x() - margin.x(), geometry.y() - margin.y());
      |                              ^~~~~~
      |                              Widget
../ruby/video/glx2.cpp:121:46: error: 'window' was not declared in this scope
  121 |     XGetWindowAttributes(_display, _window, &window);
      |                                              ^~~~~~
../hiro/core/../gtk/window.cpp:338:19: error: 'GTK_WINDOW' was not declared in this scope
  338 |   gtk_window_move(GTK_WINDOW(widget), geometry.x() - margin.x(), geometry.y() - margin.y());
      |                   ^~~~~~~~~~
../hiro/core/../gtk/window.cpp:338:3: error: 'gtk_window_move' was not declared in this scope
  338 |   gtk_window_move(GTK_WINDOW(widget), geometry.x() - margin.x(), geometry.y() - margin.y());
      |   ^~~~~~~~~~~~~~~
../ruby/video/glx2.cpp:121:5: error: 'XGetWindowAttributes' was not declared in this scope
  121 |     XGetWindowAttributes(_display, _window, &window);
      |     ^~~~~~~~~~~~~~~~~~~~
../ruby/video/glx2.cpp:123:23: error: expected ';' before 'parent'
  123 |     XWindowAttributes parent;
      |                       ^~~~~~
../ruby/video/glx2.cpp:124:36: error: '_parent' was not declared in this scope
  124 |     XGetWindowAttributes(_display, _parent, &parent);
      |                                    ^~~~~~~
../ruby/video/glx2.cpp:124:46: error: 'parent' was not declared in this scope; did you mean 'dirent'?
  124 |     XGetWindowAttributes(_display, _parent, &parent);
      |                                              ^~~~~~
      |                                              dirent
../hiro/core/../gtk/window.cpp:339:3: error: 'gtk_window_resize' was not declared in this scope
  339 |   gtk_window_resize(GTK_WINDOW(widget), geometry.width(), geometry.height() + _menuHeight() + _statusHeight());
      |   ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp: In member function 'void hiro::pWindow::setMaximized(bool)':
../hiro/core/../gtk/window.cpp:350:36: error: 'widget' was not declared in this scope; did you mean 'Widget'?
  350 |     gtk_window_maximize(GTK_WINDOW(widget));
      |                                    ^~~~~~
      |                                    Widget
../ruby/video/glx2.cpp:127:7: error: 'XResizeWindow' was not declared in this scope
  127 |       XResizeWindow(_display, _window, parent.width, parent.height);
      |       ^~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:350:25: error: 'GTK_WINDOW' was not declared in this scope
  350 |     gtk_window_maximize(GTK_WINDOW(widget));
      |                         ^~~~~~~~~~
../ruby/video/glx2.cpp:145:21: error: 'GL_TEXTURE_2D' was not declared in this scope
  145 |     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER);
      |                     ^~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:350:5: error: 'gtk_window_maximize' was not declared in this scope
  350 |     gtk_window_maximize(GTK_WINDOW(widget));
      |     ^~~~~~~~~~~~~~~~~~~
../ruby/video/glx2.cpp:145:36: error: 'GL_TEXTURE_WRAP_S' was not declared in this scope
  145 |     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER);
      |                                    ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:352:38: error: 'widget' was not declared in this scope; did you mean 'Widget'?
  352 |     gtk_window_unmaximize(GTK_WINDOW(widget));
      |                                      ^~~~~~
      |                                      Widget
../hiro/core/../gtk/window.cpp:352:27: error: 'GTK_WINDOW' was not declared in this scope
  352 |     gtk_window_unmaximize(GTK_WINDOW(widget));
      |                           ^~~~~~~~~~
../ruby/video/glx2.cpp:145:55: error: 'GL_CLAMP_TO_BORDER' was not declared in this scope
  145 |     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER);
      |                                                       ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:352:5: error: 'gtk_window_unmaximize' was not declared in this scope
  352 |     gtk_window_unmaximize(GTK_WINDOW(widget));
      |     ^~~~~~~~~~~~~~~~~~~~~
../ruby/video/glx2.cpp:145:5: error: 'glTexParameteri' was not declared in this scope; did you mean 'glrParameters'?
  145 |     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER);
      |     ^~~~~~~~~~~~~~~
      |     glrParameters
../hiro/core/../gtk/window.cpp: In member function 'void hiro::pWindow::setMaximumSize(hiro::Size)':
../hiro/core/../gtk/window.cpp:360:3: error: 'GdkGeometry' was not declared in this scope; did you mean 'setGeometry'?
  360 |   GdkGeometry geometry;
      |   ^~~~~~~~~~~
      |   setGeometry
../hiro/core/../gtk/window.cpp:362:3: error: 'geometry' was not declared in this scope; did you mean 'Geometry'?
  362 |   geometry.max_width  = !state().resizable ? state().geometry.width()  : size.width()  ? size.width()  : 32767;
      |   ^~~~~~~~
      |   Geometry
../hiro/core/../gtk/window.cpp:364:44: error: 'widget' was not declared in this scope; did you mean 'Widget'?
  364 |   gtk_window_set_geometry_hints(GTK_WINDOW(widget), nullptr, &geometry, GDK_HINT_MAX_SIZE);
      |                                            ^~~~~~
      |                                            Widget
../hiro/core/../gtk/window.cpp:364:33: error: 'GTK_WINDOW' was not declared in this scope
  364 |   gtk_window_set_geometry_hints(GTK_WINDOW(widget), nullptr, &geometry, GDK_HINT_MAX_SIZE);
      |                                 ^~~~~~~~~~
../hiro/core/../gtk/window.cpp:364:73: error: 'GDK_HINT_MAX_SIZE' was not declared in this scope
  364 |   gtk_window_set_geometry_hints(GTK_WINDOW(widget), nullptr, &geometry, GDK_HINT_MAX_SIZE);
      |                                                                         ^~~~~~~~~~~~~~~~~
../ruby/video/glx2.cpp:146:36: error: 'GL_TEXTURE_WRAP_T' was not declared in this scope
  146 |     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER);
      |                                    ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:364:3: error: 'gtk_window_set_geometry_hints' was not declared in this scope
  364 |   gtk_window_set_geometry_hints(GTK_WINDOW(widget), nullptr, &geometry, GDK_HINT_MAX_SIZE);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp: In member function 'void hiro::pWindow::setMinimized(bool)':
../hiro/core/../gtk/window.cpp:370:35: error: 'widget' was not declared in this scope; did you mean 'Widget'?
  370 |     gtk_window_iconify(GTK_WINDOW(widget));
      |                                   ^~~~~~
      |                                   Widget
../ruby/video/glx2.cpp:147:36: error: 'GL_TEXTURE_MAG_FILTER' was not declared in this scope
  147 |     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, self.shader == "Blur" ? GL_LINEAR : GL_NEAREST);
      |                                    ^~~~~~~~~~~~~~~~~~~~~
../ruby/video/glx2.cpp:147:83: error: 'GL_LINEAR' was not declared in this scope
  147 |     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, self.shader == "Blur" ? GL_LINEAR : GL_NEAREST);
      |                                                                                   ^~~~~~~~~
../hiro/core/../gtk/window.cpp:370:24: error: 'GTK_WINDOW' was not declared in this scope
  370 |     gtk_window_iconify(GTK_WINDOW(widget));
      |                        ^~~~~~~~~~
../ruby/video/glx2.cpp:147:95: error: 'GL_NEAREST' was not declared in this scope
  147 |     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, self.shader == "Blur" ? GL_LINEAR : GL_NEAREST);
      |                                                                                               ^~~~~~~~~~
../hiro/core/../gtk/window.cpp:370:5: error: 'gtk_window_iconify' was not declared in this scope
  370 |     gtk_window_iconify(GTK_WINDOW(widget));
      |     ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:372:37: error: 'widget' was not declared in this scope; did you mean 'Widget'?
  372 |     gtk_window_deiconify(GTK_WINDOW(widget));
      |                                     ^~~~~~
      |                                     Widget
../hiro/core/../gtk/window.cpp:372:26: error: 'GTK_WINDOW' was not declared in this scope
  372 |     gtk_window_deiconify(GTK_WINDOW(widget));
      |                          ^~~~~~~~~~
../hiro/core/../gtk/window.cpp:372:5: error: 'gtk_window_deiconify' was not declared in this scope
  372 |     gtk_window_deiconify(GTK_WINDOW(widget));
      |     ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp: In member function 'void hiro::pWindow::setMinimumSize(hiro::Size)':
../hiro/core/../gtk/window.cpp:380:31: error: 'formContainer' was not declared in this scope
  380 |   gtk_widget_set_size_request(formContainer, size.width(), size.height());
      |                               ^~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:380:3: error: 'gtk_widget_set_size_request' was not declared in this scope
  380 |   gtk_widget_set_size_request(formContainer, size.width(), size.height());
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:383:3: error: 'GdkGeometry' was not declared in this scope; did you mean 'setGeometry'?
  383 |   GdkGeometry geometry;
      |   ^~~~~~~~~~~
      |   setGeometry
../hiro/core/../gtk/window.cpp:385:3: error: 'geometry' was not declared in this scope; did you mean 'Geometry'?
  385 |   geometry.min_width  = !state().resizable ? state().geometry.width()  : size.width()  ? size.width()  : 1;
      |   ^~~~~~~~
      |   Geometry
../hiro/core/../gtk/window.cpp:387:44: error: 'widget' was not declared in this scope; did you mean 'Widget'?
  387 |   gtk_window_set_geometry_hints(GTK_WINDOW(widget), nullptr, &geometry, GDK_HINT_MIN_SIZE);  //for GTK2
      |                                            ^~~~~~
      |                                            Widget
../hiro/core/../gtk/window.cpp:387:33: error: 'GTK_WINDOW' was not declared in this scope
  387 |   gtk_window_set_geometry_hints(GTK_WINDOW(widget), nullptr, &geometry, GDK_HINT_MIN_SIZE);  //for GTK2
      |                                 ^~~~~~~~~~
../hiro/core/../gtk/window.cpp:387:73: error: 'GDK_HINT_MIN_SIZE' was not declared in this scope
  387 |   gtk_window_set_geometry_hints(GTK_WINDOW(widget), nullptr, &geometry, GDK_HINT_MIN_SIZE);  //for GTK2
      |                                                                         ^~~~~~~~~~~~~~~~~
../ruby/video/glx2.cpp:148:36: error: 'GL_TEXTURE_MIN_FILTER' was not declared in this scope
  148 |     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, self.shader == "Blur" ? GL_LINEAR : GL_NEAREST);
      |                                    ^~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:387:3: error: 'gtk_window_set_geometry_hints' was not declared in this scope
  387 |   gtk_window_set_geometry_hints(GTK_WINDOW(widget), nullptr, &geometry, GDK_HINT_MIN_SIZE);  //for GTK2
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp: In member function 'void hiro::pWindow::setModal(bool)':
../hiro/core/../gtk/window.cpp:392:37: error: 'widget' was not declared in this scope; did you mean 'Widget'?
  392 |     gtk_window_set_modal(GTK_WINDOW(widget), true);
      |                                     ^~~~~~
      |                                     Widget
../hiro/core/../gtk/window.cpp:392:26: error: 'GTK_WINDOW' was not declared in this scope
  392 |     gtk_window_set_modal(GTK_WINDOW(widget), true);
      |                          ^~~~~~~~~~
../ruby/video/glx2.cpp:150:18: error: 'GL_PROJECTION' was not declared in this scope; did you mean 'AL_POSITION'?
  150 |     glMatrixMode(GL_PROJECTION);
      |                  ^~~~~~~~~~~~~
      |                  AL_POSITION
../hiro/core/../gtk/window.cpp:392:5: error: 'gtk_window_set_modal' was not declared in this scope
  392 |     gtk_window_set_modal(GTK_WINDOW(widget), true);
      |     ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp: In member function 'void hiro::pWindow::setResizable(bool)':
../hiro/core/../gtk/window.cpp:406:39: error: 'widget' was not declared in this scope; did you mean 'Widget'?
  406 |   gtk_window_set_resizable(GTK_WINDOW(widget), resizable);
      |                                       ^~~~~~
      |                                       Widget
../ruby/video/glx2.cpp:150:5: error: 'glMatrixMode' was not declared in this scope
  150 |     glMatrixMode(GL_PROJECTION);
      |     ^~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:406:28: error: 'GTK_WINDOW' was not declared in this scope
  406 |   gtk_window_set_resizable(GTK_WINDOW(widget), resizable);
      |                            ^~~~~~~~~~
../ruby/video/glx2.cpp:151:5: error: 'glLoadIdentity' was not declared in this scope
  151 |     glLoadIdentity();
      |     ^~~~~~~~~~~~~~
../ruby/video/glx2.cpp:153:5: error: 'glOrtho' was not declared in this scope
  153 |     glOrtho(0, 1, 0, 1, -1.0, 1.0);
      |     ^~~~~~~
../hiro/core/../gtk/window.cpp:406:3: error: 'gtk_window_set_resizable' was not declared in this scope
  406 |   gtk_window_set_resizable(GTK_WINDOW(widget), resizable);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~
../ruby/video/glx2.cpp:155:5: error: 'glViewport' was not declared in this scope
  155 |     glViewport(0, 0, parent.width, parent.height);
      |     ^~~~~~~~~~
../hiro/core/../gtk/window.cpp:412:3: error: 'gtk_window_set_has_resize_grip' was not declared in this scope
  412 |   gtk_window_set_has_resize_grip(GTK_WINDOW(widget), resizable && statusBarVisible);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../ruby/video/glx2.cpp:157:18: error: 'GL_MODELVIEW' was not declared in this scope
  157 |     glMatrixMode(GL_MODELVIEW);
      |                  ^~~~~~~~~~~~
../hiro/core/../gtk/window.cpp: In member function 'void hiro::pWindow::setTitle(const nall::string&)':
../hiro/core/../gtk/window.cpp:420:35: error: 'widget' was not declared in this scope; did you mean 'Widget'?
  420 |   gtk_window_set_title(GTK_WINDOW(widget), title ? title : " ");
      |                                   ^~~~~~
      |                                   Widget
../hiro/core/../gtk/window.cpp:420:24: error: 'GTK_WINDOW' was not declared in this scope
  420 |   gtk_window_set_title(GTK_WINDOW(widget), title ? title : " ");
      |                        ^~~~~~~~~~
../ruby/video/glx2.cpp:159:19: error: 'GL_UNPACK_ROW_LENGTH' was not declared in this scope
  159 |     glPixelStorei(GL_UNPACK_ROW_LENGTH, _glWidth);
      |                   ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:420:3: error: 'gtk_window_set_title' was not declared in this scope
  420 |   gtk_window_set_title(GTK_WINDOW(widget), title ? title : " ");
      |   ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp: In member function 'virtual void hiro::pWindow::setVisible(bool)':
../hiro/core/../gtk/window.cpp:424:26: error: 'widget' was not declared in this scope; did you mean 'Widget'?
  424 |   gtk_widget_set_visible(widget, visible);
      |                          ^~~~~~
      |                          Widget
../ruby/video/glx2.cpp:159:5: error: 'glPixelStorei' was not declared in this scope
  159 |     glPixelStorei(GL_UNPACK_ROW_LENGTH, _glWidth);
      |     ^~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:424:3: error: 'gtk_widget_set_visible' was not declared in this scope
  424 |   gtk_widget_set_visible(widget, visible);
      |   ^~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp: In member function 'void hiro::pWindow::_append(hiro::mWidget&)':
../hiro/core/../gtk/window.cpp:433:18: error: 'struct hiro::pWidget' has no member named 'gtkParent'
  433 |         pWidget->gtkParent = instance->container(widget);
      |                  ^~~~~~~~~
../hiro/core/../gtk/window.cpp:433:40: error: 'struct hiro::pWidget' has no member named 'container'
  433 |         pWidget->gtkParent = instance->container(widget);
      |                                        ^~~~~~~~~
../hiro/core/../gtk/window.cpp:436:16: error: 'struct hiro::pWidget' has no member named 'gtkParent'
  436 |       pWidget->gtkParent = formContainer;
      |                ^~~~~~~~~
../ruby/video/glx2.cpp:160:62: error: 'GL_BGRA' was not declared in this scope
  160 |     glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, _width, _height, GL_BGRA, _glFormat, _glBuffer);
      |                                                              ^~~~~~~
../ruby/video/glx2.cpp:160:5: error: 'glTexSubImage2D' was not declared in this scope
  160 |     glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, _width, _height, GL_BGRA, _glFormat, _glBuffer);
      |     ^~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:436:28: error: 'formContainer' was not declared in this scope
  436 |       pWidget->gtkParent = formContainer;
      |                            ^~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:438:17: error: 'struct hiro::pWidget' has no member named 'gtkParent'
  438 |     if(pWidget->gtkParent) {
      |                 ^~~~~~~~~
../hiro/core/../gtk/window.cpp:439:40: error: 'struct hiro::pWidget' has no member named 'gtkParent'
  439 |       gtk_fixed_put(GTK_FIXED(pWidget->gtkParent), pWidget->gtkWidget, 0, 0);
      |                                        ^~~~~~~~~
../hiro/core/../gtk/window.cpp:439:21: error: 'GTK_FIXED' was not declared in this scope; did you mean 'MAP_FIXED'?
  439 |       gtk_fixed_put(GTK_FIXED(pWidget->gtkParent), pWidget->gtkWidget, 0, 0);
      |                     ^~~~~~~~~
      |                     MAP_FIXED
../hiro/core/../gtk/window.cpp:439:61: error: 'struct hiro::pWidget' has no member named 'gtkWidget'; did you mean 'pWidget'?
  439 |       gtk_fixed_put(GTK_FIXED(pWidget->gtkParent), pWidget->gtkWidget, 0, 0);
      |                                                             ^~~~~~~~~
      |                                                             pWidget
../ruby/video/glx2.cpp:188:13: error: 'GL_TRIANGLE_STRIP' was not declared in this scope
  188 |     glBegin(GL_TRIANGLE_STRIP);
      |             ^~~~~~~~~~~~~~~~~
../ruby/video/glx2.cpp:188:5: error: 'glBegin' was not declared in this scope
  188 |     glBegin(GL_TRIANGLE_STRIP);
      |     ^~~~~~~
../hiro/core/../gtk/window.cpp:439:7: error: 'gtk_fixed_put' was not declared in this scope
  439 |       gtk_fixed_put(GTK_FIXED(pWidget->gtkParent), pWidget->gtkWidget, 0, 0);
      |       ^~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp: In member function 'void hiro::pWindow::_append(hiro::mMenu&)':
../hiro/core/../gtk/window.cpp:446:42: error: 'gtkMenu' was not declared in this scope; did you mean 'wMenu'?
  446 |     gtk_menu_shell_append(GTK_MENU_SHELL(gtkMenu), pMenu->widget);
      |                                          ^~~~~~~
      |                                          wMenu
../ruby/video/glx2.cpp:189:5: error: 'glTexCoord2f' was not declared in this scope
  189 |     glTexCoord2f(0, 0); glVertex3f(vl, vt, 0);
      |     ^~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:446:27: error: 'GTK_MENU_SHELL' was not declared in this scope
  446 |     gtk_menu_shell_append(GTK_MENU_SHELL(gtkMenu), pMenu->widget);
      |                           ^~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:446:59: error: 'struct hiro::pMenu' has no member named 'widget'
  446 |     gtk_menu_shell_append(GTK_MENU_SHELL(gtkMenu), pMenu->widget);
      |                                                           ^~~~~~
../hiro/core/../gtk/window.cpp:446:5: error: 'gtk_menu_shell_append' was not declared in this scope
  446 |     gtk_menu_shell_append(GTK_MENU_SHELL(gtkMenu), pMenu->widget);
      |     ^~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp: In member function 'bool hiro::pWindow::_setIcon(const nall::string&)':
../hiro/core/../gtk/window.cpp:474:46: error: 'widget' was not declared in this scope; did you mean 'Widget'?
  474 |     gtk_window_set_icon_from_file(GTK_WINDOW(widget), filename, nullptr);
      |                                              ^~~~~~
      |                                              Widget
../hiro/core/../gtk/window.cpp:474:35: error: 'GTK_WINDOW' was not declared in this scope
  474 |     gtk_window_set_icon_from_file(GTK_WINDOW(widget), filename, nullptr);
      |                                   ^~~~~~~~~~
../hiro/core/../gtk/window.cpp:474:5: error: 'gtk_window_set_icon_from_file' was not declared in this scope
  474 |     gtk_window_set_icon_from_file(GTK_WINDOW(widget), filename, nullptr);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:483:19: error: 'CreatePixbuf' was not declared in this scope
  483 |     auto pixbuf = CreatePixbuf(icon);
      |                   ^~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:484:36: error: 'widget' was not declared in this scope; did you mean 'Widget'?
  484 |     gtk_window_set_icon(GTK_WINDOW(widget), pixbuf);
      |                                    ^~~~~~
      |                                    Widget
../hiro/core/../gtk/window.cpp:484:25: error: 'GTK_WINDOW' was not declared in this scope
  484 |     gtk_window_set_icon(GTK_WINDOW(widget), pixbuf);
      |                         ^~~~~~~~~~
../hiro/core/../gtk/window.cpp:484:5: error: 'gtk_window_set_icon' was not declared in this scope
  484 |     gtk_window_set_icon(GTK_WINDOW(widget), pixbuf);
      |     ^~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:485:20: error: 'G_OBJECT' was not declared in this scope
  485 |     g_object_unref(G_OBJECT(pixbuf));
      |                    ^~~~~~~~
../hiro/core/../gtk/window.cpp:485:5: error: 'g_object_unref' was not declared in this scope
  485 |     g_object_unref(G_OBJECT(pixbuf));
      |     ^~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp: In member function 'void hiro::pWindow::_setMenuEnabled(bool)':
../hiro/core/../gtk/window.cpp:493:28: error: 'gtkMenu' was not declared in this scope; did you mean 'wMenu'?
  493 |   gtk_widget_set_sensitive(gtkMenu, enabled);
      |                            ^~~~~~~
      |                            wMenu
../hiro/core/../gtk/window.cpp:493:3: error: 'gtk_widget_set_sensitive' was not declared in this scope
  493 |   gtk_widget_set_sensitive(gtkMenu, enabled);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp: In member function 'void hiro::pWindow::_setMenuFont(const hiro::Font&)':
../hiro/core/../gtk/window.cpp:497:18: error: 'gtkMenu' was not declared in this scope; did you mean 'wMenu'?
  497 |   pFont::setFont(gtkMenu, font);
      |                  ^~~~~~~
      |                  wMenu
../hiro/core/../gtk/window.cpp: In member function 'void hiro::pWindow::_setMenuVisible(bool)':
../hiro/core/../gtk/window.cpp:501:26: error: 'gtkMenu' was not declared in this scope; did you mean 'wMenu'?
  501 |   gtk_widget_set_visible(gtkMenu, visible);
      |                          ^~~~~~~
      |                          wMenu
../ruby/video/glx2.cpp:189:25: error: 'glVertex3f' was not declared in this scope
  189 |     glTexCoord2f(0, 0); glVertex3f(vl, vt, 0);
      |                         ^~~~~~~~~~
../hiro/core/../gtk/window.cpp:501:3: error: 'gtk_widget_set_visible' was not declared in this scope
  501 |   gtk_widget_set_visible(gtkMenu, visible);
      |   ^~~~~~~~~~~~~~~~~~~~~~
../ruby/video/glx2.cpp:193:5: error: 'glEnd' was not declared in this scope
  193 |     glEnd();
      |     ^~~~~
../hiro/core/../gtk/window.cpp: In member function 'void hiro::pWindow::_setStatusEnabled(bool)':
../hiro/core/../gtk/window.cpp:505:28: error: 'gtkStatus' was not declared in this scope
  505 |   gtk_widget_set_sensitive(gtkStatus, enabled);
      |                            ^~~~~~~~~
../hiro/core/../gtk/window.cpp:505:3: error: 'gtk_widget_set_sensitive' was not declared in this scope
  505 |   gtk_widget_set_sensitive(gtkStatus, enabled);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp: In member function 'void hiro::pWindow::_setStatusFont(const hiro::Font&)':
../hiro/core/../gtk/window.cpp:509:18: error: 'gtkStatus' was not declared in this scope
  509 |   pFont::setFont(gtkStatus, font);
      |                  ^~~~~~~~~
../ruby/video/glx2.cpp:194:5: error: 'glFlush' was not declared in this scope; did you mean 'flush'?
  194 |     glFlush();
      |     ^~~~~~~
      |     flush
../hiro/core/../gtk/window.cpp: In member function 'void hiro::pWindow::_setStatusText(const nall::string&)':
../hiro/core/../gtk/window.cpp:513:35: error: 'gtkStatus' was not declared in this scope
  513 |   gtk_statusbar_pop(GTK_STATUSBAR(gtkStatus), 1);
      |                                   ^~~~~~~~~
../ruby/video/glx2.cpp:196:52: error: '_glXWindow' was not declared in this scope; did you mean '_glWidth'?
  196 |     if(_isDoubleBuffered) glXSwapBuffers(_display, _glXWindow);
      |                                                    ^~~~~~~~~~
      |                                                    _glWidth
../hiro/core/../gtk/window.cpp:513:21: error: 'GTK_STATUSBAR' was not declared in this scope
  513 |   gtk_statusbar_pop(GTK_STATUSBAR(gtkStatus), 1);
      |                     ^~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:513:3: error: 'gtk_statusbar_pop' was not declared in this scope
  513 |   gtk_statusbar_pop(GTK_STATUSBAR(gtkStatus), 1);
      |   ^~~~~~~~~~~~~~~~~
../ruby/video/glx2.cpp:196:27: error: 'glXSwapBuffers' was not declared in this scope
  196 |     if(_isDoubleBuffered) glXSwapBuffers(_display, _glXWindow);
      |                           ^~~~~~~~~~~~~~
../ruby/video/glx2.cpp:197:20: error: 'glFinish' was not declared in this scope
  197 |     if(self.flush) glFinish();
      |                    ^~~~~~~~
../ruby/video/glx2.cpp: In member function 'virtual void VideoGLX2::poll()':
../ruby/video/glx2.cpp:201:20: error: '_display' was not declared in this scope
  201 |     while(XPending(_display)) {
      |                    ^~~~~~~~
../hiro/core/../gtk/window.cpp:514:3: error: 'gtk_statusbar_push' was not declared in this scope
  514 |   gtk_statusbar_push(GTK_STATUSBAR(gtkStatus), 1, text);
      |   ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp: In member function 'void hiro::pWindow::_setStatusVisible(bool)':
../hiro/core/../gtk/window.cpp:518:26: error: 'gtkStatus' was not declared in this scope
  518 |   gtk_widget_set_visible(gtkStatus, visible);
      |                          ^~~~~~~~~
../hiro/core/../gtk/window.cpp:518:3: error: 'gtk_widget_set_visible' was not declared in this scope
  518 |   gtk_widget_set_visible(gtkStatus, visible);
      |   ^~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp: In member function 'void hiro::pWindow::_synchronizeGeometry()':
../hiro/core/../gtk/window.cpp:546:31: error: 'widget' was not declared in this scope; did you mean 'Widget'?
  546 |   if(!gtk_widget_get_realized(widget)) return;
      |                               ^~~~~~
      |                               Widget
../ruby/video/glx2.cpp:201:11: error: 'XPending' was not declared in this scope; did you mean 'sigpending'?
  201 |     while(XPending(_display)) {
      |           ^~~~~~~~
      |           sigpending
../hiro/core/../gtk/window.cpp:546:7: error: 'gtk_widget_get_realized' was not declared in this scope
  546 |   if(!gtk_widget_get_realized(widget)) return;
      |       ^~~~~~~~~~~~~~~~~~~~~~~
../ruby/video/glx2.cpp:202:7: error: 'XEvent' was not declared in this scope
  202 |       XEvent event;
      |       ^~~~~~
../hiro/core/../gtk/window.cpp:547:30: error: 'widget' was not declared in this scope; did you mean 'Widget'?
  547 |   if(!gtk_widget_get_visible(widget)) return;
      |                              ^~~~~~
      |                              Widget
../ruby/video/glx2.cpp:203:29: error: 'event' was not declared in this scope; did you mean 'servent'?
  203 |       XNextEvent(_display, &event);
      |                             ^~~~~
      |                             servent
../ruby/video/glx2.cpp:203:7: error: 'XNextEvent' was not declared in this scope
  203 |       XNextEvent(_display, &event);
      |       ^~~~~~~~~~
../ruby/video/glx2.cpp:204:24: error: 'Expose' was not declared in this scope
  204 |       if(event.type == Expose) {
      |                        ^~~~~~
../ruby/video/glx2.cpp:204:24: note: the macro 'Expose' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/X.h:191: note: it was later defined here
  191 | #define Expose                  12
      | 
../hiro/core/../gtk/window.cpp:547:7: error: 'gtk_widget_get_visible' was not declared in this scope
  547 |   if(!gtk_widget_get_visible(widget)) return;
      |       ^~~~~~~~~~~~~~~~~~~~~~
../ruby/video/glx2.cpp:205:9: error: 'XWindowAttributes' was not declared in this scope
  205 |         XWindowAttributes attributes;
      |         ^~~~~~~~~~~~~~~~~
../ruby/video/glx2.cpp:206:40: error: '_window' was not declared in this scope; did you mean 'BadWindow'?
  206 |         XGetWindowAttributes(_display, _window, &attributes);
      |                                        ^~~~~~~
      |                                        BadWindow
../hiro/core/../gtk/window.cpp:551:3: error: 'GtkAllocation' was not declared in this scope
  551 |   GtkAllocation allocation;
      |   ^~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:552:29: error: 'widget' was not declared in this scope; did you mean 'Widget'?
  552 |   gtk_widget_get_allocation(widget, &allocation);
      |                             ^~~~~~
      |                             Widget
../ruby/video/glx2.cpp:206:50: error: 'attributes' was not declared in this scope
  206 |         XGetWindowAttributes(_display, _window, &attributes);
      |                                                  ^~~~~~~~~~
../hiro/core/../gtk/window.cpp:552:38: error: 'allocation' was not declared in this scope
  552 |   gtk_widget_get_allocation(widget, &allocation);
      |                                      ^~~~~~~~~~
../ruby/video/glx2.cpp:206:9: error: 'XGetWindowAttributes' was not declared in this scope
  206 |         XGetWindowAttributes(_display, _window, &attributes);
      |         ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:552:3: error: 'gtk_widget_get_allocation' was not declared in this scope
  552 |   gtk_widget_get_allocation(widget, &allocation);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:555:26: error: 'lastSize' was not declared in this scope
  555 |   if(allocation.width != lastSize.width || allocation.height != lastSize.height) {
      |                          ^~~~~~~~
../hiro/core/../gtk/window.cpp:557:29: error: no matching function for call to 'hiro::Geometry::setSize(<brace-enclosed initializer list>)'
  557 |     state().geometry.setSize({allocation.width, allocation.height});
      |     ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/core.hpp:271:8: note: candidate: 'hiro::Geometry::type& hiro::Geometry::setSize(hiro::Size)'
  271 |   auto setSize(Size size = {}) -> type&;
      |        ^~~~~~~
../hiro/core/core.hpp:271:21: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'hiro::Size'
  271 |   auto setSize(Size size = {}) -> type&;
      |                ~~~~~^~~~~~~~~
../hiro/core/core.hpp:272:8: note: candidate: 'hiro::Geometry::type& hiro::Geometry::setSize(float, float)'
  272 |   auto setSize(float width, float height) -> type&;
      |        ^~~~~~~
../hiro/core/core.hpp:272:8: note:   candidate expects 2 arguments, 1 provided
../hiro/core/../gtk/window.cpp:566:18: error: expected ';' before 'rectangle'
  566 |     GtkAllocation rectangle;
      |                  ^~~~~~~~~~
      |                  ;
../ruby/video/glx2.cpp: In member function 'void VideoGLX2::construct()':
../ruby/video/glx2.cpp:214:5: error: '_display' was not declared in this scope
  214 |     _display = XOpenDisplay(nullptr);
      |     ^~~~~~~~
../hiro/core/../gtk/window.cpp:567:40: error: 'rectangle' was not declared in this scope
  567 |     gtk_widget_get_allocation(widget, &rectangle);
      |                                        ^~~~~~~~~
../hiro/core/../gtk/window.cpp:568:27: error: 'G_OBJECT' was not declared in this scope
  568 |     g_signal_emit_by_name(G_OBJECT(widget), "size-allocate", &rectangle, (gpointer)this, nullptr);
      |                           ^~~~~~~~
../hiro/core/../gtk/window.cpp:568:75: error: 'gpointer' was not declared in this scope
  568 |     g_signal_emit_by_name(G_OBJECT(widget), "size-allocate", &rectangle, (gpointer)this, nullptr);
      |                                                                           ^~~~~~~~
../ruby/video/glx2.cpp:214:16: error: 'XOpenDisplay' was not declared in this scope
  214 |     _display = XOpenDisplay(nullptr);
      |                ^~~~~~~~~~~~
../ruby/video/glx2.cpp:215:15: error: 'DefaultScreen' was not declared in this scope
  215 |     _screen = DefaultScreen(_display);
      |               ^~~~~~~~~~~~~
../ruby/video/glx2.cpp:215:15: note: the macro 'DefaultScreen' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/Xlib.h:89: note: it was later defined here
   89 | #define DefaultScreen(dpy)      (((_XPrivDisplay)(dpy))->default_screen)
      | 
../hiro/core/../gtk/window.cpp:568:5: error: 'g_signal_emit_by_name' was not declared in this scope
  568 |     g_signal_emit_by_name(G_OBJECT(widget), "size-allocate", &rectangle, (gpointer)this, nullptr);
      |     ^~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:570:3: error: 'lastSize' was not declared in this scope
  570 |   lastSize = allocation;
      |   ^~~~~~~~
../hiro/core/../gtk/window.cpp:572:20: error: 'gtk_widget_get_window' was not declared in this scope
  572 |   auto gdkWindow = gtk_widget_get_window(widget);
      |                    ^~~~~~~~~~~~~~~~~~~~~
../ruby/video/glx2.cpp:217:5: error: 'XWindowAttributes' was not declared in this scope
  217 |     XWindowAttributes attributes{};
      |     ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:573:3: error: 'gdk_window_get_origin' was not declared in this scope
  573 |   gdk_window_get_origin(gdkWindow, &allocation.x, &allocation.y);
      |   ^~~~~~~~~~~~~~~~~~~~~
../ruby/video/glx2.cpp:218:36: error: 'RootWindow' was not declared in this scope
  218 |     XGetWindowAttributes(_display, RootWindow(_display, _screen), &attributes);
      |                                    ^~~~~~~~~~
../ruby/video/glx2.cpp:218:36: note: the macro 'RootWindow' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/Xlib.h:88: note: it was later defined here
   88 | #define RootWindow(dpy, scr)    (ScreenOfDisplay(dpy,scr)->root)
      | 
../hiro/core/../gtk/window.cpp:575:22: error: 'lastMove' was not declared in this scope
  575 |   if(allocation.x != lastMove.x || allocation.y != lastMove.y) {
      |                      ^~~~~~~~
../hiro/core/../gtk/window.cpp:576:33: error: no matching function for call to 'hiro::Geometry::setPosition(<brace-enclosed initializer list>)'
  576 |     state().geometry.setPosition({allocation.x, allocation.y});
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/core.hpp:269:8: note: candidate: 'hiro::Geometry::type& hiro::Geometry::setPosition(hiro::Position)'
  269 |   auto setPosition(Position position = {}) -> type&;
      |        ^~~~~~~~~~~
../hiro/core/core.hpp:269:29: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'hiro::Position'
  269 |   auto setPosition(Position position = {}) -> type&;
      |                    ~~~~~~~~~^~~~~~~~~~~~~
../hiro/core/core.hpp:270:8: note: candidate: 'hiro::Geometry::type& hiro::Geometry::setPosition(float, float)'
  270 |   auto setPosition(float x, float y) -> type&;
      |        ^~~~~~~~~~~
../hiro/core/core.hpp:270:8: note:   candidate expects 2 arguments, 1 provided
../ruby/video/glx2.cpp:218:68: error: 'attributes' was not declared in this scope
  218 |     XGetWindowAttributes(_display, RootWindow(_display, _screen), &attributes);
      |                                                                    ^~~~~~~~~~
../hiro/core/../gtk/window.cpp:579:3: error: 'lastMove' was not declared in this scope
  579 |   lastMove = allocation;
      |   ^~~~~~~~
../hiro/core/../gtk/window.cpp: In member function 'void hiro::pWindow::_synchronizeMargin()':
../hiro/core/../gtk/window.cpp:586:31: error: 'widget' was not declared in this scope; did you mean 'Widget'?
  586 |   if(!gtk_widget_get_realized(widget)) return;
      |                               ^~~~~~
      |                               Widget
../hiro/core/../gtk/window.cpp:586:7: error: 'gtk_widget_get_realized' was not declared in this scope
  586 |   if(!gtk_widget_get_realized(widget)) return;
      |       ^~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:587:30: error: 'widget' was not declared in this scope; did you mean 'Widget'?
  587 |   if(!gtk_widget_get_visible(widget)) return;
      |                              ^~~~~~
      |                              Widget
../ruby/video/glx2.cpp:218:5: error: 'XGetWindowAttributes' was not declared in this scope
  218 |     XGetWindowAttributes(_display, RootWindow(_display, _screen), &attributes);
      |     ^~~~~~~~~~~~~~~~~~~~
../ruby/video/glx2.cpp: In member function 'void VideoGLX2::destruct()':
../ruby/video/glx2.cpp:224:19: error: '_display' was not declared in this scope
  224 |     XCloseDisplay(_display);
      |                   ^~~~~~~~
../hiro/core/../gtk/window.cpp:587:7: error: 'gtk_widget_get_visible' was not declared in this scope
  587 |   if(!gtk_widget_get_visible(widget)) return;
      |       ^~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:590:39: error: 'widget' was not declared in this scope; did you mean 'Widget'?
  590 |   auto window = gtk_widget_get_window(widget);
      |                                       ^~~~~~
      |                                       Widget
../ruby/video/glx2.cpp:224:5: error: 'XCloseDisplay' was not declared in this scope
  224 |     XCloseDisplay(_display);
      |     ^~~~~~~~~~~~~
../ruby/video/glx2.cpp: In member function 'bool VideoGLX2::initialize()':
../ruby/video/glx2.cpp:232:21: error: '_display' was not declared in this scope
  232 |     glXQueryVersion(_display, &versionMajor, &versionMinor);
      |                     ^~~~~~~~
../hiro/core/../gtk/window.cpp:590:17: error: 'gtk_widget_get_window' was not declared in this scope
  590 |   auto window = gtk_widget_get_window(widget);
      |                 ^~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:591:3: error: 'GdkRectangle' was not declared in this scope
  591 |   GdkRectangle border, client;
      |   ^~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:592:41: error: 'border' was not declared in this scope
  592 |   gdk_window_get_frame_extents(window, &border);
      |                                         ^~~~~~
../ruby/video/glx2.cpp:232:5: error: 'glXQueryVersion' was not declared in this scope
  232 |     glXQueryVersion(_display, &versionMajor, &versionMinor);
      |     ^~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:592:3: error: 'gdk_window_get_frame_extents' was not declared in this scope
  592 |   gdk_window_get_frame_extents(window, &border);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../ruby/video/glx2.cpp:240:7: error: 'GLX_DRAWABLE_TYPE' was not declared in this scope
  240 |       GLX_DRAWABLE_TYPE, GLX_WINDOW_BIT,
      |       ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:593:34: error: 'client' was not declared in this scope
  593 |   gdk_window_get_origin(window, &client.x, &client.y);
      |                                  ^~~~~~
../ruby/video/glx2.cpp:240:26: error: 'GLX_WINDOW_BIT' was not declared in this scope
  240 |       GLX_DRAWABLE_TYPE, GLX_WINDOW_BIT,
      |                          ^~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:593:3: error: 'gdk_window_get_origin' was not declared in this scope
  593 |   gdk_window_get_origin(window, &client.x, &client.y);
      |   ^~~~~~~~~~~~~~~~~~~~~
../ruby/video/glx2.cpp:241:7: error: 'GLX_RENDER_TYPE' was not declared in this scope
  241 |       GLX_RENDER_TYPE, GLX_RGBA_BIT,
      |       ^~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:597:3: error: 'gdk_window_get_geometry' was not declared in this scope
  597 |   gdk_window_get_geometry(window, nullptr, nullptr, &client.width, &client.height);
      |   ^~~~~~~~~~~~~~~~~~~~~~~
../ruby/video/glx2.cpp:241:24: error: 'GLX_RGBA_BIT' was not declared in this scope
  241 |       GLX_RENDER_TYPE, GLX_RGBA_BIT,
      |                        ^~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:605:29: error: 'gtkMenu' was not declared in this scope; did you mean 'wMenu'?
  605 |   if(gtk_widget_get_visible(gtkMenu)) {
      |                             ^~~~~~~
      |                             wMenu
../ruby/video/glx2.cpp:242:7: error: 'GLX_DOUBLEBUFFER' was not declared in this scope
  242 |       GLX_DOUBLEBUFFER, True,
      |       ^~~~~~~~~~~~~~~~
../ruby/video/glx2.cpp:242:25: error: 'True' was not declared in this scope
  242 |       GLX_DOUBLEBUFFER, True,
      |                         ^~~~
../ruby/video/glx2.cpp:242:25: note: the macro 'True' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/Xlib.h:80: note: it was later defined here
   80 | #define True 1
      | 
../ruby/video/glx2.cpp:243:7: error: 'GLX_RED_SIZE' was not declared in this scope
  243 |       GLX_RED_SIZE, redDepth,
      |       ^~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:605:6: error: 'gtk_widget_get_visible' was not declared in this scope
  605 |   if(gtk_widget_get_visible(gtkMenu)) {
      |      ^~~~~~~~~~~~~~~~~~~~~~
../ruby/video/glx2.cpp:244:7: error: 'GLX_GREEN_SIZE' was not declared in this scope
  244 |       GLX_GREEN_SIZE, greenDepth,
      |       ^~~~~~~~~~~~~~
../ruby/video/glx2.cpp:245:7: error: 'GLX_BLUE_SIZE' was not declared in this scope
  245 |       GLX_BLUE_SIZE, blueDepth,
      |       ^~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:606:5: error: 'GtkAllocation' was not declared in this scope
  606 |     GtkAllocation allocation;
      |     ^~~~~~~~~~~~~
../ruby/video/glx2.cpp:246:7: error: 'None' was not declared in this scope
  246 |       None
      |       ^~~~
../ruby/video/glx2.cpp:246:7: note: the macro 'None' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/X.h:115: note: it was later defined here
  115 | #define None                 0L /* universal null resource or null atom */
      | 
../hiro/core/../gtk/window.cpp:609:43: error: 'allocation' was not declared in this scope
  609 |       gtk_widget_get_allocation(gtkMenu, &allocation);
      |                                           ^~~~~~~~~~
../ruby/video/glx2.cpp:250:21: error: 'glXChooseFBConfig' was not declared in this scope
  250 |     auto fbConfig = glXChooseFBConfig(_display, _screen, attributeList, &fbCount);
      |                     ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:609:7: error: 'gtk_widget_get_allocation' was not declared in this scope
  609 |       gtk_widget_get_allocation(gtkMenu, &allocation);
      |       ^~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:617:29: error: 'gtkStatus' was not declared in this scope
  617 |   if(gtk_widget_get_visible(gtkStatus)) {
      |                             ^~~~~~~~~
../ruby/video/glx2.cpp:253:19: error: 'glXGetVisualFromFBConfig' was not declared in this scope
  253 |     auto visual = glXGetVisualFromFBConfig(_display, fbConfig[0]);
      |                   ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:617:6: error: 'gtk_widget_get_visible' was not declared in this scope
  617 |   if(gtk_widget_get_visible(gtkStatus)) {
      |      ^~~~~~~~~~~~~~~~~~~~~~
../ruby/video/glx2.cpp:255:5: error: '_parent' was not declared in this scope
  255 |     _parent = self.fullScreen ? RootWindow(_display, visual->screen) : (Window)self.context;
      |     ^~~~~~~
../hiro/core/../gtk/window.cpp:618:5: error: 'GtkAllocation' was not declared in this scope
  618 |     GtkAllocation allocation;
      |     ^~~~~~~~~~~~~
../ruby/video/glx2.cpp:255:33: error: 'RootWindow' was not declared in this scope
  255 |     _parent = self.fullScreen ? RootWindow(_display, visual->screen) : (Window)self.context;
      |                                 ^~~~~~~~~~
../ruby/video/glx2.cpp:255:33: note: the macro 'RootWindow' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/Xlib.h:88: note: it was later defined here
   88 | #define RootWindow(dpy, scr)    (ScreenOfDisplay(dpy,scr)->root)
      | 
../hiro/core/../gtk/window.cpp:621:45: error: 'allocation' was not declared in this scope
  621 |       gtk_widget_get_allocation(gtkStatus, &allocation);
      |                                             ^~~~~~~~~~
../ruby/video/glx2.cpp:255:73: error: 'Window' was not declared in this scope
  255 |     _parent = self.fullScreen ? RootWindow(_display, visual->screen) : (Window)self.context;
      |                                                                         ^~~~~~
../hiro/core/../gtk/window.cpp:621:7: error: 'gtk_widget_get_allocation' was not declared in this scope
  621 |       gtk_widget_get_allocation(gtkStatus, &allocation);
      |       ^~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp: In member function 'void hiro::pWindow::_synchronizeState()':
../hiro/core/../gtk/window.cpp:637:31: error: 'widget' was not declared in this scope; did you mean 'Widget'?
  637 |   if(!gtk_widget_get_realized(widget)) return;
      |                               ^~~~~~
      |                               Widget
../ruby/video/glx2.cpp:256:5: error: 'XWindowAttributes' was not declared in this scope
  256 |     XWindowAttributes windowAttributes;
      |     ^~~~~~~~~~~~~~~~~
../ruby/video/glx2.cpp:257:46: error: 'windowAttributes' was not declared in this scope
  257 |     XGetWindowAttributes(_display, _parent, &windowAttributes);
      |                                              ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/window.cpp:637:7: error: 'gtk_widget_get_realized' was not declared in this scope
  637 |   if(!gtk_widget_get_realized(widget)) return;
      |       ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../hiro/core/../gtk/platform.cpp:19:
../hiro/core/../gtk/popup-menu.cpp: In member function 'virtual void hiro::pPopupMenu::construct()':
../hiro/core/../gtk/popup-menu.cpp:6:3: error: 'gtkMenu' was not declared in this scope; did you mean 'wMenu'?
    6 |   gtkMenu = gtk_menu_new();
      |   ^~~~~~~
      |   wMenu
../ruby/video/glx2.cpp:257:5: error: 'XGetWindowAttributes' was not declared in this scope
  257 |     XGetWindowAttributes(_display, _parent, &windowAttributes);
      |     ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/popup-menu.cpp:6:13: error: 'gtk_menu_new' was not declared in this scope
    6 |   gtkMenu = gtk_menu_new();
      |             ^~~~~~~~~~~~
../hiro/core/../gtk/popup-menu.cpp: In member function 'virtual void hiro::pPopupMenu::destruct()':
../hiro/core/../gtk/popup-menu.cpp:10:22: error: 'gtkMenu' was not declared in this scope; did you mean 'wMenu'?
   10 |   gtk_widget_destroy(gtkMenu);
      |                      ^~~~~~~
      |                      wMenu
../ruby/video/glx2.cpp:265:5: error: '_colormap' was not declared in this scope; did you mean 'CWColormap'?
  265 |     _colormap = XCreateColormap(_display, RootWindow(_display, visual->screen), visual->visual, AllocNone);
      |     ^~~~~~~~~
      |     CWColormap
../ruby/video/glx2.cpp:265:97: error: 'AllocNone' was not declared in this scope
  265 |     _colormap = XCreateColormap(_display, RootWindow(_display, visual->screen), visual->visual, AllocNone);
      |                                                                                                 ^~~~~~~~~
../ruby/video/glx2.cpp:265:97: note: the macro 'AllocNone' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/X.h:616: note: it was later defined here
  616 | #define AllocNone               0       /* create map with no entries */
      | 
../hiro/core/../gtk/popup-menu.cpp:10:3: error: 'gtk_widget_destroy' was not declared in this scope
   10 |   gtk_widget_destroy(gtkMenu);
      |   ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/popup-menu.cpp: In member function 'void hiro::pPopupMenu::append(hiro::sAction)':
../hiro/core/../gtk/popup-menu.cpp:15:42: error: 'gtkMenu' was not declared in this scope; did you mean 'wMenu'?
   15 |     gtk_menu_shell_append(GTK_MENU_SHELL(gtkMenu), action->self()->widget);
      |                                          ^~~~~~~
      |                                          wMenu
../ruby/video/glx2.cpp:265:17: error: 'XCreateColormap' was not declared in this scope; did you mean 'XNStdColormap'?
  265 |     _colormap = XCreateColormap(_display, RootWindow(_display, visual->screen), visual->visual, AllocNone);
      |                 ^~~~~~~~~~~~~~~
      |                 XNStdColormap
../hiro/core/../gtk/popup-menu.cpp:15:27: error: 'GTK_MENU_SHELL' was not declared in this scope
   15 |     gtk_menu_shell_append(GTK_MENU_SHELL(gtkMenu), action->self()->widget);
      |                           ^~~~~~~~~~~~~~
../hiro/core/../gtk/popup-menu.cpp:15:68: error: 'struct hiro::pAction' has no member named 'widget'
   15 |     gtk_menu_shell_append(GTK_MENU_SHELL(gtkMenu), action->self()->widget);
      |                                                                    ^~~~~~
../ruby/video/glx2.cpp:266:5: error: 'XSetWindowAttributes' was not declared in this scope
  266 |     XSetWindowAttributes attributes{};
      |     ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/popup-menu.cpp:15:5: error: 'gtk_menu_shell_append' was not declared in this scope
   15 |     gtk_menu_shell_append(GTK_MENU_SHELL(gtkMenu), action->self()->widget);
      |     ^~~~~~~~~~~~~~~~~~~~~
../ruby/video/glx2.cpp:267:5: error: 'attributes' was not declared in this scope; did you mean 'attributeList'?
  267 |     attributes.border_pixel = 0;
      |     ^~~~~~~~~~
      |     attributeList
../hiro/core/../gtk/popup-menu.cpp: In member function 'virtual void hiro::pPopupMenu::setVisible(bool)':
../hiro/core/../gtk/popup-menu.cpp:31:39: error: 'gtkMenu' was not declared in this scope; did you mean 'wMenu'?
   31 |   if(visible) gtk_menu_popup(GTK_MENU(gtkMenu), nullptr, nullptr, nullptr, nullptr, 0, gtk_get_current_event_time());
      |                                       ^~~~~~~
      |                                       wMenu
../ruby/video/glx2.cpp:270:5: error: '_window' was not declared in this scope; did you mean 'BadWindow'?
  270 |     _window = XCreateWindow(_display, _parent,
      |     ^~~~~~~
      |     BadWindow
../hiro/core/../gtk/popup-menu.cpp:31:30: error: 'GTK_MENU' was not declared in this scope
   31 |   if(visible) gtk_menu_popup(GTK_MENU(gtkMenu), nullptr, nullptr, nullptr, nullptr, 0, gtk_get_current_event_time());
      |                              ^~~~~~~~
../ruby/video/glx2.cpp:272:25: error: 'InputOutput' was not declared in this scope
  272 |       0, visual->depth, InputOutput, visual->visual,
      |                         ^~~~~~~~~~~
../ruby/video/glx2.cpp:272:25: note: the macro 'InputOutput' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/X.h:387: note: it was later defined here
  387 | #define InputOutput             1
      | 
../ruby/video/glx2.cpp:273:7: error: 'CWBorderPixel' was not declared in this scope
  273 |       CWBorderPixel | CWColormap | CWOverrideRedirect, &attributes);
      |       ^~~~~~~~~~~~~
../ruby/video/glx2.cpp:273:7: note: the macro 'CWBorderPixel' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/X.h:395: note: it was later defined here
  395 | #define CWBorderPixel           (1L<<3)
      | 
../ruby/video/glx2.cpp:273:23: error: 'CWColormap' was not declared in this scope
  273 |       CWBorderPixel | CWColormap | CWOverrideRedirect, &attributes);
      |                       ^~~~~~~~~~
../ruby/video/glx2.cpp:273:23: note: the macro 'CWColormap' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/X.h:405: note: it was later defined here
  405 | #define CWColormap              (1L<<13)
      | 
../hiro/core/../gtk/popup-menu.cpp:31:88: error: 'gtk_get_current_event_time' was not declared in this scope
   31 |   if(visible) gtk_menu_popup(GTK_MENU(gtkMenu), nullptr, nullptr, nullptr, nullptr, 0, gtk_get_current_event_time());
      |                                                                                        ^~~~~~~~~~~~~~~~~~~~~~~~~~
../ruby/video/glx2.cpp:273:36: error: 'CWOverrideRedirect' was not declared in this scope
  273 |       CWBorderPixel | CWColormap | CWOverrideRedirect, &attributes);
      |                                    ^~~~~~~~~~~~~~~~~~
../ruby/video/glx2.cpp:273:36: note: the macro 'CWOverrideRedirect' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/X.h:401: note: it was later defined here
  401 | #define CWOverrideRedirect      (1L<<9)
      | 
../ruby/video/glx2.cpp:270:15: error: 'XCreateWindow' was not declared in this scope
  270 |     _window = XCreateWindow(_display, _parent,
      |               ^~~~~~~~~~~~~
../ruby/video/glx2.cpp:274:37: error: 'ExposureMask' was not declared in this scope
  274 |     XSelectInput(_display, _window, ExposureMask);
      |                                     ^~~~~~~~~~~~
../ruby/video/glx2.cpp:274:37: note: the macro 'ExposureMask' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/X.h:166: note: it was later defined here
  166 | #define ExposureMask                    (1L<<15)
      | 
../hiro/core/../gtk/popup-menu.cpp:31:15: error: 'gtk_menu_popup' was not declared in this scope
   31 |   if(visible) gtk_menu_popup(GTK_MENU(gtkMenu), nullptr, nullptr, nullptr, nullptr, 0, gtk_get_current_event_time());
      |               ^~~~~~~~~~~~~~
In file included from ../hiro/core/../gtk/platform.cpp:21:
../hiro/core/../gtk/action/action.cpp: In member function 'virtual void hiro::pAction::setEnabled(bool)':
../hiro/core/../gtk/action/action.cpp:12:28: error: 'widget' was not declared in this scope; did you mean 'Widget'?
   12 |   gtk_widget_set_sensitive(widget, enabled);
      |                            ^~~~~~
      |                            Widget
../ruby/video/glx2.cpp:274:5: error: 'XSelectInput' was not declared in this scope
  274 |     XSelectInput(_display, _window, ExposureMask);
      |     ^~~~~~~~~~~~
../ruby/video/glx2.cpp:275:5: error: 'XSetWindowBackground' was not declared in this scope
  275 |     XSetWindowBackground(_display, _window, 0);
      |     ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/action/action.cpp:12:3: error: 'gtk_widget_set_sensitive' was not declared in this scope
   12 |   gtk_widget_set_sensitive(widget, enabled);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/action/action.cpp: In member function 'virtual void hiro::pAction::setFont(const hiro::Font&)':
../hiro/core/../gtk/action/action.cpp:16:18: error: 'widget' was not declared in this scope; did you mean 'Widget'?
   16 |   pFont::setFont(widget, font);
      |                  ^~~~~~
      |                  Widget
../hiro/core/../gtk/action/action.cpp: In member function 'virtual void hiro::pAction::setVisible(bool)':
../hiro/core/../gtk/action/action.cpp:20:26: error: 'widget' was not declared in this scope; did you mean 'Widget'?
   20 |   gtk_widget_set_visible(widget, visible);
      |                          ^~~~~~
      |                          Widget
../hiro/core/../gtk/action/action.cpp:20:3: error: 'gtk_widget_set_visible' was not declared in this scope
   20 |   gtk_widget_set_visible(widget, visible);
      |   ^~~~~~~~~~~~~~~~~~~~~~
In file included from ../hiro/core/../gtk/platform.cpp:22:
../hiro/core/../gtk/action/menu.cpp: In member function 'virtual void hiro::pMenu::construct()':
../hiro/core/../gtk/action/menu.cpp:6:3: error: 'gtkMenu' was not declared in this scope; did you mean 'pMenu'?
    6 |   gtkMenu = gtk_menu_new();
      |   ^~~~~~~
      |   pMenu
../ruby/video/glx2.cpp:276:5: error: 'XMapWindow' was not declared in this scope; did you mean 'BadWindow'?
  276 |     XMapWindow(_display, _window);
      |     ^~~~~~~~~~
      |     BadWindow
../ruby/video/glx2.cpp:277:5: error: 'XFlush' was not declared in this scope; did you mean 'flush'?
  277 |     XFlush(_display);
      |     ^~~~~~
      |     flush
../hiro/core/../gtk/action/menu.cpp:6:13: error: 'gtk_menu_new' was not declared in this scope
    6 |   gtkMenu = gtk_menu_new();
      |             ^~~~~~~~~~~~
../ruby/video/glx2.cpp:279:11: error: 'XPending' was not declared in this scope; did you mean 'sigpending'?
  279 |     while(XPending(_display)) {
      |           ^~~~~~~~
      |           sigpending
../hiro/core/../gtk/action/menu.cpp:7:3: error: 'widget' was not declared in this scope; did you mean 'Widget'?
    7 |   widget = gtk_image_menu_item_new_with_mnemonic("");
      |   ^~~~~~
      |   Widget
../hiro/core/../gtk/action/menu.cpp:7:12: error: 'gtk_image_menu_item_new_with_mnemonic' was not declared in this scope
    7 |   widget = gtk_image_menu_item_new_with_mnemonic("");
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../ruby/video/glx2.cpp:280:7: error: 'XEvent' was not declared in this scope
  280 |       XEvent event;
      |       ^~~~~~
../hiro/core/../gtk/action/menu.cpp:8:29: error: 'GTK_MENU_ITEM' was not declared in this scope
    8 |   gtk_menu_item_set_submenu(GTK_MENU_ITEM(widget), gtkMenu);
      |                             ^~~~~~~~~~~~~
../ruby/video/glx2.cpp:281:29: error: 'event' was not declared in this scope; did you mean 'servent'?
  281 |       XNextEvent(_display, &event);
      |                             ^~~~~
      |                             servent
../hiro/core/../gtk/action/menu.cpp:8:3: error: 'gtk_menu_item_set_submenu' was not declared in this scope
    8 |   gtk_menu_item_set_submenu(GTK_MENU_ITEM(widget), gtkMenu);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~
../ruby/video/glx2.cpp:281:7: error: 'XNextEvent' was not declared in this scope
  281 |       XNextEvent(_display, &event);
      |       ^~~~~~~~~~
../hiro/core/../gtk/action/menu.cpp: In member function 'virtual void hiro::pMenu::destruct()':
../hiro/core/../gtk/action/menu.cpp:16:22: error: 'gtkMenu' was not declared in this scope; did you mean 'pMenu'?
   16 |   gtk_widget_destroy(gtkMenu);
      |                      ^~~~~~~
      |                      pMenu
../hiro/core/../gtk/action/menu.cpp:16:3: error: 'gtk_widget_destroy' was not declared in this scope
   16 |   gtk_widget_destroy(gtkMenu);
      |   ^~~~~~~~~~~~~~~~~~
../ruby/video/glx2.cpp:284:5: error: '_glXContext' was not declared in this scope
  284 |     _glXContext = glXCreateContext(_display, visual, 0, GL_TRUE);
      |     ^~~~~~~~~~~
../ruby/video/glx2.cpp:284:57: error: 'GL_TRUE' was not declared in this scope; did you mean 'AL_TRUE'?
  284 |     _glXContext = glXCreateContext(_display, visual, 0, GL_TRUE);
      |                                                         ^~~~~~~
      |                                                         AL_TRUE
../hiro/core/../gtk/action/menu.cpp:17:22: error: 'widget' was not declared in this scope; did you mean 'Widget'?
   17 |   gtk_widget_destroy(widget);
      |                      ^~~~~~
      |                      Widget
../hiro/core/../gtk/action/menu.cpp: In member function 'void hiro::pMenu::append(hiro::sAction)':
../hiro/core/../gtk/action/menu.cpp:22:42: error: 'gtkMenu' was not declared in this scope; did you mean 'pMenu'?
   22 |     gtk_menu_shell_append(GTK_MENU_SHELL(gtkMenu), action->self()->widget);
      |                                          ^~~~~~~
      |                                          pMenu
../hiro/core/../gtk/action/menu.cpp:22:27: error: 'GTK_MENU_SHELL' was not declared in this scope
   22 |     gtk_menu_shell_append(GTK_MENU_SHELL(gtkMenu), action->self()->widget);
      |                           ^~~~~~~~~~~~~~
../hiro/core/../gtk/action/menu.cpp:22:68: error: 'struct hiro::pAction' has no member named 'widget'
   22 |     gtk_menu_shell_append(GTK_MENU_SHELL(gtkMenu), action->self()->widget);
      |                                                                    ^~~~~~
../hiro/core/../gtk/action/menu.cpp:22:5: error: 'gtk_menu_shell_append' was not declared in this scope
   22 |     gtk_menu_shell_append(GTK_MENU_SHELL(gtkMenu), action->self()->widget);
      |     ^~~~~~~~~~~~~~~~~~~~~
../ruby/video/glx2.cpp:284:19: error: 'glXCreateContext' was not declared in this scope
  284 |     _glXContext = glXCreateContext(_display, visual, 0, GL_TRUE);
      |                   ^~~~~~~~~~~~~~~~
../ruby/video/glx2.cpp:285:30: error: '_glXWindow' was not declared in this scope; did you mean '_glWidth'?
  285 |     glXMakeCurrent(_display, _glXWindow = _window, _glXContext);
      |                              ^~~~~~~~~~
      |                              _glWidth
../hiro/core/../gtk/action/menu.cpp: In member function 'void hiro::pMenu::setIcon(const nall::image&)':
../hiro/core/../gtk/action/menu.cpp:41:5: error: 'GtkImage' was not declared in this scope
   41 |     GtkImage* gtkImage = CreateImage(icon, true);
      |     ^~~~~~~~
../ruby/video/glx2.cpp:285:5: error: 'glXMakeCurrent' was not declared in this scope
  285 |     glXMakeCurrent(_display, _glXWindow = _window, _glXContext);
      |     ^~~~~~~~~~~~~~
../hiro/core/../gtk/action/menu.cpp:41:15: error: 'gtkImage' was not declared in this scope
   41 |     GtkImage* gtkImage = CreateImage(icon, true);
      |               ^~~~~~~~
../ruby/video/glx2.cpp:287:58: error: 'glGetProcAddress' was not declared in this scope
  287 |     if(!glXSwapInterval) glXSwapInterval = (int (*)(int))glGetProcAddress("glXSwapIntervalMESA");
      |                                                          ^~~~~~~~~~~~~~~~
../ruby/video/glx2.cpp:288:58: error: 'glGetProcAddress' was not declared in this scope
  288 |     if(!glXSwapInterval) glXSwapInterval = (int (*)(int))glGetProcAddress("glXSwapIntervalSGI");
      |                                                          ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/action/menu.cpp:41:26: error: 'CreateImage' was not declared in this scope
   41 |     GtkImage* gtkImage = CreateImage(icon, true);
      |                          ^~~~~~~~~~~
../hiro/core/../gtk/action/menu.cpp:42:55: error: 'widget' was not declared in this scope; did you mean 'Widget'?
   42 |     gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(widget), (GtkWidget*)gtkImage);
      |                                                       ^~~~~~
      |                                                       Widget
../hiro/core/../gtk/action/menu.cpp:42:35: error: 'GTK_IMAGE_MENU_ITEM' was not declared in this scope
   42 |     gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(widget), (GtkWidget*)gtkImage);
      |                                   ^~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/action/menu.cpp:42:65: error: 'GtkWidget' was not declared in this scope; did you mean 'wWidget'?
   42 |     gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(widget), (GtkWidget*)gtkImage);
      |                                                                 ^~~~~~~~~
      |                                                                 wWidget
../hiro/core/../gtk/action/menu.cpp:42:75: error: expected primary-expression before ')' token
   42 |     gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(widget), (GtkWidget*)gtkImage);
      |                                                                           ^
../hiro/core/../gtk/action/menu.cpp:42:5: error: 'gtk_image_menu_item_set_image' was not declared in this scope
   42 |     gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(widget), (GtkWidget*)gtkImage);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/action/menu.cpp:44:55: error: 'widget' was not declared in this scope; did you mean 'Widget'?
   44 |     gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(widget), nullptr);
      |                                                       ^~~~~~
      |                                                       Widget
../ruby/video/glx2.cpp:293:5: error: 'glXGetConfig' was not declared in this scope; did you mean 'getnetconfig'?
  293 |     glXGetConfig(_display, visual, GLX_DOUBLEBUFFER, &value);
      |     ^~~~~~~~~~~~
      |     getnetconfig
../hiro/core/../gtk/action/menu.cpp:44:35: error: 'GTK_IMAGE_MENU_ITEM' was not declared in this scope
   44 |     gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(widget), nullptr);
      |                                   ^~~~~~~~~~~~~~~~~~~
../ruby/video/glx2.cpp:295:17: error: 'glXIsDirect' was not declared in this scope; did you mean '_isDirect'?
  295 |     _isDirect = glXIsDirect(_display, _glXContext);
      |                 ^~~~~~~~~~~
      |                 _isDirect
../hiro/core/../gtk/action/menu.cpp:44:5: error: 'gtk_image_menu_item_set_image' was not declared in this scope
   44 |     gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(widget), nullptr);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../ruby/video/glx2.cpp:297:15: error: 'GL_ALPHA_TEST' was not declared in this scope
  297 |     glDisable(GL_ALPHA_TEST);
      |               ^~~~~~~~~~~~~
../hiro/core/../gtk/action/menu.cpp: In member function 'void hiro::pMenu::setText(const nall::string&)':
../hiro/core/../gtk/action/menu.cpp:49:41: error: 'widget' was not declared in this scope; did you mean 'Widget'?
   49 |   gtk_menu_item_set_label(GTK_MENU_ITEM(widget), _mnemonic(text));
      |                                         ^~~~~~
      |                                         Widget
../ruby/video/glx2.cpp:297:5: error: 'glDisable' was not declared in this scope
  297 |     glDisable(GL_ALPHA_TEST);
      |     ^~~~~~~~~
../hiro/core/../gtk/action/menu.cpp:49:27: error: 'GTK_MENU_ITEM' was not declared in this scope
   49 |   gtk_menu_item_set_label(GTK_MENU_ITEM(widget), _mnemonic(text));
      |                           ^~~~~~~~~~~~~
../hiro/core/../gtk/action/menu.cpp:49:3: error: 'gtk_menu_item_set_label' was not declared in this scope
   49 |   gtk_menu_item_set_label(GTK_MENU_ITEM(widget), _mnemonic(text));
      |   ^~~~~~~~~~~~~~~~~~~~~~~
../ruby/video/glx2.cpp:298:15: error: 'GL_BLEND' was not declared in this scope
  298 |     glDisable(GL_BLEND);
      |               ^~~~~~~~
In file included from ../hiro/core/../gtk/platform.cpp:23:
../hiro/core/../gtk/action/menu-separator.cpp: In member function 'virtual void hiro::pMenuSeparator::construct()':
../hiro/core/../gtk/action/menu-separator.cpp:6:3: error: 'widget' was not declared in this scope; did you mean 'Widget'?
    6 |   widget = gtk_separator_menu_item_new();
      |   ^~~~~~
      |   Widget
../hiro/core/../gtk/action/menu-separator.cpp:6:12: error: 'gtk_separator_menu_item_new' was not declared in this scope
    6 |   widget = gtk_separator_menu_item_new();
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/action/menu-separator.cpp: In member function 'virtual void hiro::pMenuSeparator::destruct()':
../hiro/core/../gtk/action/menu-separator.cpp:10:6: error: 'widget' was not declared in this scope; did you mean 'Widget'?
   10 |   if(widget) gtk_widget_destroy(widget), widget = nullptr;
      |      ^~~~~~
      |      Widget
../ruby/video/glx2.cpp:299:15: error: 'GL_DEPTH_TEST' was not declared in this scope
  299 |     glDisable(GL_DEPTH_TEST);
      |               ^~~~~~~~~~~~~
../hiro/core/../gtk/action/menu-separator.cpp:10:14: error: 'gtk_widget_destroy' was not declared in this scope
   10 |   if(widget) gtk_widget_destroy(widget), widget = nullptr;
      |              ^~~~~~~~~~~~~~~~~~
In file included from ../hiro/core/../gtk/platform.cpp:24:
../hiro/core/../gtk/action/menu-item.cpp: At global scope:
../hiro/core/../gtk/action/menu-item.cpp:5:31: error: 'GtkMenuItem' was not declared in this scope; did you mean 'wMenuItem'?
    5 | static auto MenuItem_activate(GtkMenuItem*, pMenuItem* p) -> void {
      |                               ^~~~~~~~~~~
      |                               wMenuItem
../hiro/core/../gtk/action/menu-item.cpp:5:43: error: expected primary-expression before ',' token
    5 | static auto MenuItem_activate(GtkMenuItem*, pMenuItem* p) -> void {
      |                                           ^
../hiro/core/../gtk/action/menu-item.cpp:5:54: error: expected primary-expression before '*' token
    5 | static auto MenuItem_activate(GtkMenuItem*, pMenuItem* p) -> void {
      |                                                      ^
../hiro/core/../gtk/action/menu-item.cpp:5:56: error: 'p' was not declared in this scope
    5 | static auto MenuItem_activate(GtkMenuItem*, pMenuItem* p) -> void {
      |                                                        ^
../hiro/core/../gtk/action/menu-item.cpp:5:57: error: expression list treated as compound expression in initializer [-fpermissive]
    5 | static auto MenuItem_activate(GtkMenuItem*, pMenuItem* p) -> void {
      |                                                         ^
../hiro/core/../gtk/action/menu-item.cpp:5:59: error: expected ',' or ';' before '->' token
    5 | static auto MenuItem_activate(GtkMenuItem*, pMenuItem* p) -> void {
      |                                                           ^~
../hiro/core/../gtk/action/menu-item.cpp: In member function 'virtual void hiro::pMenuItem::construct()':
../hiro/core/../gtk/action/menu-item.cpp:10:3: error: 'widget' was not declared in this scope; did you mean 'Widget'?
   10 |   widget = gtk_image_menu_item_new_with_mnemonic("");
      |   ^~~~~~
      |   Widget
../ruby/video/glx2.cpp:300:15: error: 'GL_POLYGON_SMOOTH' was not declared in this scope
  300 |     glDisable(GL_POLYGON_SMOOTH);
      |               ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/action/menu-item.cpp:10:12: error: 'gtk_image_menu_item_new_with_mnemonic' was not declared in this scope
   10 |   widget = gtk_image_menu_item_new_with_mnemonic("");
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../ruby/video/glx2.cpp:301:15: error: 'GL_STENCIL_TEST' was not declared in this scope
  301 |     glDisable(GL_STENCIL_TEST);
      |               ^~~~~~~~~~~~~~~
../hiro/core/../gtk/action/menu-item.cpp:11:20: error: 'G_OBJECT' was not declared in this scope
   11 |   g_signal_connect(G_OBJECT(widget), "activate", G_CALLBACK(MenuItem_activate), (gpointer)this);
      |                    ^~~~~~~~
../ruby/video/glx2.cpp:303:14: error: 'GL_DITHER' was not declared in this scope
  303 |     glEnable(GL_DITHER);
      |              ^~~~~~~~~
../ruby/video/glx2.cpp:303:5: error: 'glEnable' was not declared in this scope
  303 |     glEnable(GL_DITHER);
      |     ^~~~~~~~
../hiro/core/../gtk/action/menu-item.cpp:11:50: error: 'G_CALLBACK' was not declared in this scope
   11 |   g_signal_connect(G_OBJECT(widget), "activate", G_CALLBACK(MenuItem_activate), (gpointer)this);
      |                                                  ^~~~~~~~~~
../hiro/core/../gtk/action/menu-item.cpp:11:82: error: 'gpointer' was not declared in this scope
   11 |   g_signal_connect(G_OBJECT(widget), "activate", G_CALLBACK(MenuItem_activate), (gpointer)this);
      |                                                                                  ^~~~~~~~
../ruby/video/glx2.cpp:304:14: error: 'GL_TEXTURE_2D' was not declared in this scope
  304 |     glEnable(GL_TEXTURE_2D);
      |              ^~~~~~~~~~~~~
../hiro/core/../gtk/action/menu-item.cpp:11:3: error: 'g_signal_connect' was not declared in this scope
   11 |   g_signal_connect(G_OBJECT(widget), "activate", G_CALLBACK(MenuItem_activate), (gpointer)this);
      |   ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/action/menu-item.cpp: In member function 'virtual void hiro::pMenuItem::destruct()':
../hiro/core/../gtk/action/menu-item.cpp:17:6: error: 'widget' was not declared in this scope; did you mean 'Widget'?
   17 |   if(widget) gtk_widget_destroy(widget), widget = nullptr;
      |      ^~~~~~
      |      Widget
../ruby/video/glx2.cpp: In member function 'void VideoGLX2::terminate()':
../ruby/video/glx2.cpp:313:8: error: '_glTexture' was not declared in this scope; did you mean 'OpenGLTexture'?
  313 |     if(_glTexture) {
      |        ^~~~~~~~~~
      |        OpenGLTexture
../hiro/core/../gtk/action/menu-item.cpp:17:14: error: 'gtk_widget_destroy' was not declared in this scope
   17 |   if(widget) gtk_widget_destroy(widget), widget = nullptr;
      |              ^~~~~~~~~~~~~~~~~~
../ruby/video/glx2.cpp:314:7: error: 'glDeleteTextures' was not declared in this scope
  314 |       glDeleteTextures(1, &_glTexture);
      |       ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/action/menu-item.cpp: In member function 'void hiro::pMenuItem::setIcon(const nall::image&)':
../hiro/core/../gtk/action/menu-item.cpp:22:5: error: 'GtkImage' was not declared in this scope
   22 |     GtkImage* gtkImage = CreateImage(icon, true);
      |     ^~~~~~~~
../ruby/video/glx2.cpp:326:8: error: '_glXContext' was not declared in this scope
  326 |     if(_glXContext) {
      |        ^~~~~~~~~~~
../hiro/core/../gtk/action/menu-item.cpp:22:15: error: 'gtkImage' was not declared in this scope
   22 |     GtkImage* gtkImage = CreateImage(icon, true);
      |               ^~~~~~~~
../ruby/video/glx2.cpp:327:25: error: '_display' was not declared in this scope
  327 |       glXDestroyContext(_display, _glXContext);
      |                         ^~~~~~~~
../hiro/core/../gtk/action/menu-item.cpp:22:26: error: 'CreateImage' was not declared in this scope
   22 |     GtkImage* gtkImage = CreateImage(icon, true);
      |                          ^~~~~~~~~~~
../hiro/core/../gtk/action/menu-item.cpp:23:55: error: 'widget' was not declared in this scope; did you mean 'Widget'?
   23 |     gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(widget), (GtkWidget*)gtkImage);
      |                                                       ^~~~~~
      |                                                       Widget
../hiro/core/../gtk/action/menu-item.cpp:23:35: error: 'GTK_IMAGE_MENU_ITEM' was not declared in this scope
   23 |     gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(widget), (GtkWidget*)gtkImage);
      |                                   ^~~~~~~~~~~~~~~~~~~
../ruby/video/glx2.cpp:327:7: error: 'glXDestroyContext' was not declared in this scope
  327 |       glXDestroyContext(_display, _glXContext);
      |       ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/action/menu-item.cpp:23:65: error: 'GtkWidget' was not declared in this scope; did you mean 'wWidget'?
   23 |     gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(widget), (GtkWidget*)gtkImage);
      |                                                                 ^~~~~~~~~
      |                                                                 wWidget
../hiro/core/../gtk/action/menu-item.cpp:23:75: error: expected primary-expression before ')' token
   23 |     gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(widget), (GtkWidget*)gtkImage);
      |                                                                           ^
../ruby/video/glx2.cpp:331:8: error: '_window' was not declared in this scope; did you mean 'BadWindow'?
  331 |     if(_window) {
      |        ^~~~~~~
      |        BadWindow
../hiro/core/../gtk/action/menu-item.cpp:23:5: error: 'gtk_image_menu_item_set_image' was not declared in this scope
   23 |     gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(widget), (GtkWidget*)gtkImage);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/action/menu-item.cpp:25:55: error: 'widget' was not declared in this scope; did you mean 'Widget'?
   25 |     gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(widget), nullptr);
      |                                                       ^~~~~~
      |                                                       Widget
../ruby/video/glx2.cpp:332:20: error: '_display' was not declared in this scope
  332 |       XUnmapWindow(_display, _window);
      |                    ^~~~~~~~
../hiro/core/../gtk/action/menu-item.cpp:25:35: error: 'GTK_IMAGE_MENU_ITEM' was not declared in this scope
   25 |     gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(widget), nullptr);
      |                                   ^~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/action/menu-item.cpp:25:5: error: 'gtk_image_menu_item_set_image' was not declared in this scope
   25 |     gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(widget), nullptr);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/action/menu-item.cpp: In member function 'void hiro::pMenuItem::setText(const nall::string&)':
../hiro/core/../gtk/action/menu-item.cpp:30:41: error: 'widget' was not declared in this scope; did you mean 'Widget'?
   30 |   gtk_menu_item_set_label(GTK_MENU_ITEM(widget), _mnemonic(text));
      |                                         ^~~~~~
      |                                         Widget
../ruby/video/glx2.cpp:332:7: error: 'XUnmapWindow' was not declared in this scope
  332 |       XUnmapWindow(_display, _window);
      |       ^~~~~~~~~~~~
../ruby/video/glx2.cpp:336:8: error: '_colormap' was not declared in this scope; did you mean 'CWColormap'?
  336 |     if(_colormap) {
      |        ^~~~~~~~~
      |        CWColormap
../hiro/core/../gtk/action/menu-item.cpp:30:27: error: 'GTK_MENU_ITEM' was not declared in this scope
   30 |   gtk_menu_item_set_label(GTK_MENU_ITEM(widget), _mnemonic(text));
      |                           ^~~~~~~~~~~~~
../hiro/core/../gtk/action/menu-item.cpp:30:3: error: 'gtk_menu_item_set_label' was not declared in this scope
   30 |   gtk_menu_item_set_label(GTK_MENU_ITEM(widget), _mnemonic(text));
      |   ^~~~~~~~~~~~~~~~~~~~~~~
../ruby/video/glx2.cpp:337:21: error: '_display' was not declared in this scope
  337 |       XFreeColormap(_display, _colormap);
      |                     ^~~~~~~~
In file included from ../hiro/core/../gtk/platform.cpp:25:
../hiro/core/../gtk/action/menu-check-item.cpp: At global scope:
../hiro/core/../gtk/action/menu-check-item.cpp:5:34: error: 'GtkCheckMenuItem' was not declared in this scope
    5 | static auto MenuCheckItem_toggle(GtkCheckMenuItem* gtkCheckMenuItem, pMenuCheckItem* p) -> void {
      |                                  ^~~~~~~~~~~~~~~~
../ruby/video/glx2.cpp:337:7: error: 'XFreeColormap' was not declared in this scope; did you mean 'XNStdColormap'?
  337 |       XFreeColormap(_display, _colormap);
      |       ^~~~~~~~~~~~~
      |       XNStdColormap
../hiro/core/../gtk/action/menu-check-item.cpp:5:52: error: 'gtkCheckMenuItem' was not declared in this scope
    5 | static auto MenuCheckItem_toggle(GtkCheckMenuItem* gtkCheckMenuItem, pMenuCheckItem* p) -> void {
      |                                                    ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/action/menu-check-item.cpp:5:84: error: expected primary-expression before '*' token
    5 | static auto MenuCheckItem_toggle(GtkCheckMenuItem* gtkCheckMenuItem, pMenuCheckItem* p) -> void {
      |                                                                                    ^
../hiro/core/../gtk/action/menu-check-item.cpp:5:86: error: 'p' was not declared in this scope
    5 | static auto MenuCheckItem_toggle(GtkCheckMenuItem* gtkCheckMenuItem, pMenuCheckItem* p) -> void {
      |                                                                                      ^
../hiro/core/../gtk/action/menu-check-item.cpp:5:87: error: expression list treated as compound expression in initializer [-fpermissive]
    5 | static auto MenuCheckItem_toggle(GtkCheckMenuItem* gtkCheckMenuItem, pMenuCheckItem* p) -> void {
      |                                                                                       ^
../hiro/core/../gtk/action/menu-check-item.cpp:5:89: error: expected ',' or ';' before '->' token
    5 | static auto MenuCheckItem_toggle(GtkCheckMenuItem* gtkCheckMenuItem, pMenuCheckItem* p) -> void {
      |                                                                                         ^~
../hiro/core/../gtk/action/menu-check-item.cpp: In member function 'virtual void hiro::pMenuCheckItem::construct()':
../hiro/core/../gtk/action/menu-check-item.cpp:11:3: error: 'widget' was not declared in this scope; did you mean 'Widget'?
   11 |   widget = gtk_check_menu_item_new_with_mnemonic("");
      |   ^~~~~~
      |   Widget
../ruby/video/glx2.cpp: In member function 'void VideoGLX2::resize(uint, uint)':
../ruby/video/glx2.cpp:346:8: error: '_glTexture' was not declared in this scope; did you mean 'OpenGLTexture'?
  346 |     if(_glTexture == 0) glGenTextures(1, &_glTexture);
      |        ^~~~~~~~~~
      |        OpenGLTexture
../hiro/core/../gtk/action/menu-check-item.cpp:11:12: error: 'gtk_check_menu_item_new_with_mnemonic' was not declared in this scope
   11 |   widget = gtk_check_menu_item_new_with_mnemonic("");
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/action/menu-check-item.cpp:14:20: error: 'G_OBJECT' was not declared in this scope
   14 |   g_signal_connect(G_OBJECT(widget), "toggled", G_CALLBACK(MenuCheckItem_toggle), (gpointer)this);
      |                    ^~~~~~~~
../hiro/core/../gtk/action/menu-check-item.cpp:14:49: error: 'G_CALLBACK' was not declared in this scope
   14 |   g_signal_connect(G_OBJECT(widget), "toggled", G_CALLBACK(MenuCheckItem_toggle), (gpointer)this);
      |                                                 ^~~~~~~~~~
../hiro/core/../gtk/action/menu-check-item.cpp:14:84: error: 'gpointer' was not declared in this scope
   14 |   g_signal_connect(G_OBJECT(widget), "toggled", G_CALLBACK(MenuCheckItem_toggle), (gpointer)this);
      |                                                                                    ^~~~~~~~
../ruby/video/glx2.cpp:346:25: error: 'glGenTextures' was not declared in this scope
  346 |     if(_glTexture == 0) glGenTextures(1, &_glTexture);
      |                         ^~~~~~~~~~~~~
../hiro/core/../gtk/action/menu-check-item.cpp:14:3: error: 'g_signal_connect' was not declared in this scope
   14 |   g_signal_connect(G_OBJECT(widget), "toggled", G_CALLBACK(MenuCheckItem_toggle), (gpointer)this);
      |   ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/action/menu-check-item.cpp: In member function 'virtual void hiro::pMenuCheckItem::destruct()':
../hiro/core/../gtk/action/menu-check-item.cpp:18:22: error: 'widget' was not declared in this scope; did you mean 'Widget'?
   18 |   gtk_widget_destroy(widget);
      |                      ^~~~~~
      |                      Widget
../ruby/video/glx2.cpp:352:19: error: 'GL_TEXTURE_2D' was not declared in this scope
  352 |     glBindTexture(GL_TEXTURE_2D, _glTexture);
      |                   ^~~~~~~~~~~~~
../hiro/core/../gtk/action/menu-check-item.cpp:18:3: error: 'gtk_widget_destroy' was not declared in this scope
   18 |   gtk_widget_destroy(widget);
      |   ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/action/menu-check-item.cpp: In member function 'void hiro::pMenuCheckItem::setChecked(bool)':
../hiro/core/../gtk/action/menu-check-item.cpp:28:54: error: 'widget' was not declared in this scope; did you mean 'Widget'?
   28 |   gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(widget), checked);
      |                                                      ^~~~~~
      |                                                      Widget
../hiro/core/../gtk/action/menu-check-item.cpp:28:34: error: 'GTK_CHECK_MENU_ITEM' was not declared in this scope
   28 |   gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(widget), checked);
      |                                  ^~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/action/menu-check-item.cpp:28:3: error: 'gtk_check_menu_item_set_active' was not declared in this scope
   28 |   gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(widget), checked);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/action/menu-check-item.cpp: In member function 'void hiro::pMenuCheckItem::setText(const nall::string&)':
../hiro/core/../gtk/action/menu-check-item.cpp:33:41: error: 'widget' was not declared in this scope; did you mean 'Widget'?
   33 |   gtk_menu_item_set_label(GTK_MENU_ITEM(widget), _mnemonic(text));
      |                                         ^~~~~~
      |                                         Widget
../hiro/core/../gtk/action/menu-check-item.cpp:33:27: error: 'GTK_MENU_ITEM' was not declared in this scope
   33 |   gtk_menu_item_set_label(GTK_MENU_ITEM(widget), _mnemonic(text));
      |                           ^~~~~~~~~~~~~
../ruby/video/glx2.cpp:352:34: error: '_glTexture' was not declared in this scope; did you mean 'OpenGLTexture'?
  352 |     glBindTexture(GL_TEXTURE_2D, _glTexture);
      |                                  ^~~~~~~~~~
      |                                  OpenGLTexture
../hiro/core/../gtk/action/menu-check-item.cpp:33:3: error: 'gtk_menu_item_set_label' was not declared in this scope
   33 |   gtk_menu_item_set_label(GTK_MENU_ITEM(widget), _mnemonic(text));
      |   ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../hiro/core/../gtk/platform.cpp:26:
../hiro/core/../gtk/action/menu-radio-item.cpp: At global scope:
../hiro/core/../gtk/action/menu-radio-item.cpp:5:36: error: 'GtkCheckMenuItem' was not declared in this scope
    5 | static auto MenuRadioItem_activate(GtkCheckMenuItem* gtkCheckMenuItem, pMenuRadioItem* p) -> void {
      |                                    ^~~~~~~~~~~~~~~~
../ruby/video/glx2.cpp:352:5: error: 'glBindTexture' was not declared in this scope
  352 |     glBindTexture(GL_TEXTURE_2D, _glTexture);
      |     ^~~~~~~~~~~~~
../hiro/core/../gtk/action/menu-radio-item.cpp:5:54: error: 'gtkCheckMenuItem' was not declared in this scope
    5 | static auto MenuRadioItem_activate(GtkCheckMenuItem* gtkCheckMenuItem, pMenuRadioItem* p) -> void {
      |                                                      ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/action/menu-radio-item.cpp:5:86: error: expected primary-expression before '*' token
    5 | static auto MenuRadioItem_activate(GtkCheckMenuItem* gtkCheckMenuItem, pMenuRadioItem* p) -> void {
      |                                                                                      ^
../hiro/core/../gtk/action/menu-radio-item.cpp:5:88: error: 'p' was not declared in this scope
    5 | static auto MenuRadioItem_activate(GtkCheckMenuItem* gtkCheckMenuItem, pMenuRadioItem* p) -> void {
      |                                                                                        ^
../hiro/core/../gtk/action/menu-radio-item.cpp:5:89: error: expression list treated as compound expression in initializer [-fpermissive]
    5 | static auto MenuRadioItem_activate(GtkCheckMenuItem* gtkCheckMenuItem, pMenuRadioItem* p) -> void {
      |                                                                                         ^
../hiro/core/../gtk/action/menu-radio-item.cpp:5:91: error: expected ',' or ';' before '->' token
    5 | static auto MenuRadioItem_activate(GtkCheckMenuItem* gtkCheckMenuItem, pMenuRadioItem* p) -> void {
      |                                                                                           ^~
../hiro/core/../gtk/action/menu-radio-item.cpp: In member function 'virtual void hiro::pMenuRadioItem::construct()':
../hiro/core/../gtk/action/menu-radio-item.cpp:10:3: error: 'widget' was not declared in this scope; did you mean 'Widget'?
   10 |   widget = gtk_radio_menu_item_new_with_mnemonic(0, "");
      |   ^~~~~~
      |   Widget
../ruby/video/glx2.cpp:353:19: error: 'GL_UNPACK_ROW_LENGTH' was not declared in this scope
  353 |     glPixelStorei(GL_UNPACK_ROW_LENGTH, _glWidth);
      |                   ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/action/menu-radio-item.cpp:10:12: error: 'gtk_radio_menu_item_new_with_mnemonic' was not declared in this scope
   10 |   widget = gtk_radio_menu_item_new_with_mnemonic(0, "");
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../ruby/video/glx2.cpp:353:5: error: 'glPixelStorei' was not declared in this scope
  353 |     glPixelStorei(GL_UNPACK_ROW_LENGTH, _glWidth);
      |     ^~~~~~~~~~~~~
../hiro/core/../gtk/action/menu-radio-item.cpp:11:3: error: 'gtkCheckMenuItem' was not declared in this scope
   11 |   gtkCheckMenuItem = GTK_CHECK_MENU_ITEM(widget);
      |   ^~~~~~~~~~~~~~~~
../ruby/video/glx2.cpp:354:36: error: 'GL_RGBA' was not declared in this scope
  354 |     glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, _glWidth, _glHeight, 0, GL_BGRA, _glFormat, _glBuffer);
      |                                    ^~~~~~~
../ruby/video/glx2.cpp:354:69: error: 'GL_BGRA' was not declared in this scope
  354 |     glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, _glWidth, _glHeight, 0, GL_BGRA, _glFormat, _glBuffer);
      |                                                                     ^~~~~~~
../hiro/core/../gtk/action/menu-radio-item.cpp:11:22: error: 'GTK_CHECK_MENU_ITEM' was not declared in this scope
   11 |   gtkCheckMenuItem = GTK_CHECK_MENU_ITEM(widget);
      |                      ^~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/action/menu-radio-item.cpp:12:3: error: 'gtkRadioMenuItem' was not declared in this scope
   12 |   gtkRadioMenuItem = GTK_RADIO_MENU_ITEM(widget);
      |   ^~~~~~~~~~~~~~~~
../ruby/video/glx2.cpp:354:5: error: 'glTexImage2D' was not declared in this scope
  354 |     glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, _glWidth, _glHeight, 0, GL_BGRA, _glFormat, _glBuffer);
      |     ^~~~~~~~~~~~
In file included from ../ruby/video/xshm.cpp:9,
                 from ../ruby/video/video.cpp:30:
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/XShm.h: At global scope:
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/XShm.h:41:5: error: 'Bool' does not name a type
   41 |     Bool send_event;        /* true if this came from a SendEvent request */
      |     ^~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/XShm.h:41:5: note: the macro 'Bool' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/Xlib.h:78: note: it was later defined here
   78 | #define Bool int
      | 
../hiro/core/../gtk/action/menu-radio-item.cpp:12:22: error: 'GTK_RADIO_MENU_ITEM' was not declared in this scope
   12 |   gtkRadioMenuItem = GTK_RADIO_MENU_ITEM(widget);
      |                      ^~~~~~~~~~~~~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/XShm.h:42:5: error: 'Display' does not name a type
   42 |     Display *display;       /* Display the event was read from */
      |     ^~~~~~~
../hiro/core/../gtk/action/menu-radio-item.cpp:16:20: error: 'G_OBJECT' was not declared in this scope
   16 |   g_signal_connect(G_OBJECT(widget), "toggled", G_CALLBACK(MenuRadioItem_activate), (gpointer)this);
      |                    ^~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/XShm.h:43:5: error: 'Drawable' does not name a type; did you mean 'BadDrawable'?
   43 |     Drawable drawable;      /* drawable of request */
      |     ^~~~~~~~
      |     BadDrawable
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/XShm.h:54:5: error: 'Bool' does not name a type
   54 |     Bool readOnly;      /* how the server should attach it */
      |     ^~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/XShm.h:54:5: note: the macro 'Bool' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/Xlib.h:78: note: it was later defined here
   78 | #define Bool int
      | 
../hiro/core/../gtk/action/menu-radio-item.cpp:16:49: error: 'G_CALLBACK' was not declared in this scope
   16 |   g_signal_connect(G_OBJECT(widget), "toggled", G_CALLBACK(MenuRadioItem_activate), (gpointer)this);
      |                                                 ^~~~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/XShm.h:59:1: error: 'Bool' does not name a type
   59 | Bool XShmQueryExtension(
      | ^~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/XShm.h:59:1: note: the macro 'Bool' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/Xlib.h:78: note: it was later defined here
   78 | #define Bool int
      | 
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/XShm.h:64:5: error: 'Display' was not declared in this scope
   64 |     Display*            /* dpy */
      |     ^~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/XShm.h:65:1: error: expected primary-expression before ')' token
   65 | );
      | ^
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/XShm.h:67:1: error: 'Bool' does not name a type
   67 | Bool XShmQueryVersion(
      | ^~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/XShm.h:67:1: note: the macro 'Bool' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/Xlib.h:78: note: it was later defined here
   78 | #define Bool int
      | 
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/XShm.h:75:5: error: 'Display' was not declared in this scope
   75 |     Display*            /* dpy */
      |     ^~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/XShm.h:76:1: error: expected primary-expression before ')' token
   76 | );
      | ^
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/XShm.h:78:1: error: 'Bool' does not name a type
   78 | Bool XShmAttach(
      | ^~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/XShm.h:78:1: note: the macro 'Bool' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/Xlib.h:78: note: it was later defined here
   78 | #define Bool int
      | 
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/XShm.h:83:1: error: 'Bool' does not name a type
   83 | Bool XShmDetach(
      | ^~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/XShm.h:83:1: note: the macro 'Bool' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/Xlib.h:78: note: it was later defined here
   78 | #define Bool int
      | 
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/XShm.h:88:1: error: 'Bool' does not name a type
   88 | Bool XShmPutImage(
      | ^~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/XShm.h:88:1: note: the macro 'Bool' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/Xlib.h:78: note: it was later defined here
   78 | #define Bool int
      | 
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/XShm.h:102:1: error: 'Bool' does not name a type
  102 | Bool XShmGetImage(
      | ^~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/XShm.h:102:1: note: the macro 'Bool' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/Xlib.h:78: note: it was later defined here
   78 | #define Bool int
      | 
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/XShm.h:111:1: error: 'XImage' does not name a type
  111 | XImage *XShmCreateImage(
      | ^~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/XShm.h:122:1: error: 'Pixmap' does not name a type; did you mean 'ZPixmap'?
  122 | Pixmap XShmCreatePixmap(
      | ^~~~~~
      | ZPixmap
../ruby/video/xshm.cpp:277:28: error: 'Display' has not been declared
  277 |   static auto errorHandler(Display* display, XErrorEvent* event) -> int {
      |                            ^~~~~~~
../ruby/video/xshm.cpp:277:46: error: 'XErrorEvent' has not been declared
  277 |   static auto errorHandler(Display* display, XErrorEvent* event) -> int {
      |                                              ^~~~~~~~~~~
../hiro/core/../gtk/action/menu-radio-item.cpp:16:86: error: 'gpointer' was not declared in this scope
   16 |   g_signal_connect(G_OBJECT(widget), "toggled", G_CALLBACK(MenuRadioItem_activate), (gpointer)this);
      |                                                                                      ^~~~~~~~
../ruby/video/xshm.cpp:289:3: error: 'Display' does not name a type
  289 |   Display* _display = nullptr;
      |   ^~~~~~~
../ruby/video/xshm.cpp:296:3: error: 'Visual' does not name a type
  296 |   Visual* _visual = nullptr;
      |   ^~~~~~
../hiro/core/../gtk/action/menu-radio-item.cpp:16:3: error: 'g_signal_connect' was not declared in this scope
   16 |   g_signal_connect(G_OBJECT(widget), "toggled", G_CALLBACK(MenuRadioItem_activate), (gpointer)this);
      |   ^~~~~~~~~~~~~~~~
../ruby/video/xshm.cpp:297:3: error: 'Window' does not name a type
  297 |   Window _parent = 0;
      |   ^~~~~~
../ruby/video/xshm.cpp:298:3: error: 'Window' does not name a type
  298 |   Window _window = 0;
      |   ^~~~~~
../ruby/video/xshm.cpp:299:3: error: 'Colormap' does not name a type; did you mean 'CWColormap'?
  299 |   Colormap _colormap = 0;
      |   ^~~~~~~~
      |   CWColormap
../ruby/video/xshm.cpp:302:3: error: 'XImage' does not name a type
  302 |   XImage* _image = nullptr;
      |   ^~~~~~
../hiro/core/../gtk/action/menu-radio-item.cpp: In member function 'virtual void hiro::pMenuRadioItem::destruct()':
../hiro/core/../gtk/action/menu-radio-item.cpp:20:6: error: 'widget' was not declared in this scope; did you mean 'Widget'?
   20 |   if(widget) gtk_widget_destroy(widget), widget = nullptr;
      |      ^~~~~~
      |      Widget
../hiro/core/../gtk/action/menu-radio-item.cpp:20:14: error: 'gtk_widget_destroy' was not declared in this scope
   20 |   if(widget) gtk_widget_destroy(widget), widget = nullptr;
      |              ^~~~~~~~~~~~~~~~~~
../ruby/video/xshm.cpp: In member function 'virtual void VideoXShm::size(uint&, uint&)':
../ruby/video/xshm.cpp:50:7: error: 'XWindowAttributes' was not declared in this scope
   50 |       XWindowAttributes parent;
      |       ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/action/menu-radio-item.cpp: In member function 'void hiro::pMenuRadioItem::setChecked()':
../hiro/core/../gtk/action/menu-radio-item.cpp:25:34: error: 'gtkCheckMenuItem' was not declared in this scope
   25 |   gtk_check_menu_item_set_active(gtkCheckMenuItem, true);
      |                                  ^~~~~~~~~~~~~~~~
../ruby/video/xshm.cpp:51:28: error: '_display' was not declared in this scope
   51 |       XGetWindowAttributes(_display, _parent, &parent);
      |                            ^~~~~~~~
../ruby/video/xshm.cpp:51:38: error: '_parent' was not declared in this scope
   51 |       XGetWindowAttributes(_display, _parent, &parent);
      |                                      ^~~~~~~
../hiro/core/../gtk/action/menu-radio-item.cpp:25:3: error: 'gtk_check_menu_item_set_active' was not declared in this scope
   25 |   gtk_check_menu_item_set_active(gtkCheckMenuItem, true);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../ruby/video/xshm.cpp:51:48: error: 'parent' was not declared in this scope; did you mean 'dirent'?
   51 |       XGetWindowAttributes(_display, _parent, &parent);
      |                                                ^~~~~~
      |                                                dirent
../ruby/video/xshm.cpp:51:7: error: 'XGetWindowAttributes' was not declared in this scope
   51 |       XGetWindowAttributes(_display, _parent, &parent);
      |       ^~~~~~~~~~~~~~~~~~~~
../ruby/video/xshm.cpp: In member function 'virtual void VideoXShm::output(uint, uint)':
../ruby/video/xshm.cpp:74:5: error: 'XWindowAttributes' was not declared in this scope
   74 |     XWindowAttributes window;
      |     ^~~~~~~~~~~~~~~~~
../ruby/video/xshm.cpp:75:26: error: '_display' was not declared in this scope
   75 |     XGetWindowAttributes(_display, _window, &window);
      |                          ^~~~~~~~
../hiro/core/../gtk/action/menu-radio-item.cpp: In member function 'void hiro::pMenuRadioItem::setGroup(hiro::sGroup)':
../hiro/core/../gtk/action/menu-radio-item.cpp:30:9: error: 'GtkRadioMenuItem' was not declared in this scope
   30 |   maybe<GtkRadioMenuItem*> gtkRadioMenuItem;
      |         ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/action/menu-radio-item.cpp:30:26: error: template argument 1 is invalid
   30 |   maybe<GtkRadioMenuItem*> gtkRadioMenuItem;
      |                          ^
../hiro/core/../gtk/action/menu-radio-item.cpp:36:47: error: 'struct hiro::pMenuRadioItem' has no member named 'gtkRadioMenuItem'
   36 |           gtk_radio_menu_item_set_group(self->gtkRadioMenuItem, nullptr);
      |                                               ^~~~~~~~~~~~~~~~
../ruby/video/xshm.cpp:75:36: error: '_window' was not declared in this scope; did you mean 'BadWindow'?
   75 |     XGetWindowAttributes(_display, _window, &window);
      |                                    ^~~~~~~
      |                                    BadWindow
../ruby/video/xshm.cpp:75:46: error: 'window' was not declared in this scope
   75 |     XGetWindowAttributes(_display, _window, &window);
      |                                              ^~~~~~
../hiro/core/../gtk/action/menu-radio-item.cpp:36:11: error: 'gtk_radio_menu_item_set_group' was not declared in this scope
   36 |           gtk_radio_menu_item_set_group(self->gtkRadioMenuItem, nullptr);
      |           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/action/menu-radio-item.cpp:38:38: error: 'struct hiro::pMenuRadioItem' has no member named 'gtkRadioMenuItem'
   38 |             gtkRadioMenuItem = self->gtkRadioMenuItem;
      |                                      ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/action/menu-radio-item.cpp:39:50: error: 'struct hiro::pMenuRadioItem' has no member named 'gtkCheckMenuItem'
   39 |             gtk_check_menu_item_set_active(self->gtkCheckMenuItem, menuRadioItem->state.checked = true);
      |                                                  ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/action/menu-radio-item.cpp:39:13: error: 'gtk_check_menu_item_set_active' was not declared in this scope
   39 |             gtk_check_menu_item_set_active(self->gtkCheckMenuItem, menuRadioItem->state.checked = true);
      |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/action/menu-radio-item.cpp:41:49: error: 'struct hiro::pMenuRadioItem' has no member named 'gtkRadioMenuItem'
   41 |             gtk_radio_menu_item_set_group(self->gtkRadioMenuItem, gtk_radio_menu_item_get_group(*gtkRadioMenuItem));
      |                                                 ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/action/menu-radio-item.cpp:41:97: error: invalid type argument of unary '*' (have 'int')
   41 |             gtk_radio_menu_item_set_group(self->gtkRadioMenuItem, gtk_radio_menu_item_get_group(*gtkRadioMenuItem));
      |                                                                                                 ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/action/menu-radio-item.cpp:41:67: error: 'gtk_radio_menu_item_get_group' was not declared in this scope
   41 |             gtk_radio_menu_item_set_group(self->gtkRadioMenuItem, gtk_radio_menu_item_get_group(*gtkRadioMenuItem));
      |                                                                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/action/menu-radio-item.cpp:42:50: error: 'struct hiro::pMenuRadioItem' has no member named 'gtkCheckMenuItem'
   42 |             gtk_check_menu_item_set_active(self->gtkCheckMenuItem, menuRadioItem->state.checked = false);
      |                                                  ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/action/menu-radio-item.cpp:42:13: error: 'gtk_check_menu_item_set_active' was not declared in this scope
   42 |             gtk_check_menu_item_set_active(self->gtkCheckMenuItem, menuRadioItem->state.checked = false);
      |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../ruby/video/xshm.cpp:75:5: error: 'XGetWindowAttributes' was not declared in this scope
   75 |     XGetWindowAttributes(_display, _window, &window);
      |     ^~~~~~~~~~~~~~~~~~~~
../ruby/video/xshm.cpp:77:23: error: expected ';' before 'parent'
   77 |     XWindowAttributes parent;
      |                       ^~~~~~
../hiro/core/../gtk/action/menu-radio-item.cpp: In member function 'void hiro::pMenuRadioItem::setText(const nall::string&)':
../hiro/core/../gtk/action/menu-radio-item.cpp:52:41: error: 'widget' was not declared in this scope; did you mean 'Widget'?
   52 |   gtk_menu_item_set_label(GTK_MENU_ITEM(widget), _mnemonic(text));
      |                                         ^~~~~~
      |                                         Widget
../ruby/video/xshm.cpp:78:36: error: '_parent' was not declared in this scope
   78 |     XGetWindowAttributes(_display, _parent, &parent);
      |                                    ^~~~~~~
../ruby/video/xshm.cpp:78:46: error: 'parent' was not declared in this scope; did you mean 'dirent'?
   78 |     XGetWindowAttributes(_display, _parent, &parent);
      |                                              ^~~~~~
      |                                              dirent
../hiro/core/../gtk/action/menu-radio-item.cpp:52:27: error: 'GTK_MENU_ITEM' was not declared in this scope
   52 |   gtk_menu_item_set_label(GTK_MENU_ITEM(widget), _mnemonic(text));
      |                           ^~~~~~~~~~~~~
../hiro/core/../gtk/action/menu-radio-item.cpp:52:3: error: 'gtk_menu_item_set_label' was not declared in this scope
   52 |   gtk_menu_item_set_label(GTK_MENU_ITEM(widget), _mnemonic(text));
      |   ^~~~~~~~~~~~~~~~~~~~~~~
../ruby/video/xshm.cpp:83:7: error: 'XResizeWindow' was not declared in this scope
   83 |       XResizeWindow(_display, _window, _outputWidth, _outputHeight);
      |       ^~~~~~~~~~~~~
In file included from ../hiro/core/../gtk/platform.cpp:30:
../hiro/core/../gtk/widget/widget.cpp: At global scope:
../hiro/core/../gtk/widget/widget.cpp:5:25: error: 'GtkWidget' was not declared in this scope; did you mean 'wWidget'?
    5 | static auto Widget_drop(GtkWidget* widget, GdkDragContext* context, int x, int y,
      |                         ^~~~~~~~~
      |                         wWidget
../hiro/core/../gtk/widget/widget.cpp:5:36: error: 'widget' was not declared in this scope; did you mean 'Widget'?
    5 | static auto Widget_drop(GtkWidget* widget, GdkDragContext* context, int x, int y,
      |                                    ^~~~~~
      |                                    Widget
../ruby/video/xshm.cpp:99:9: error: '_image' was not declared in this scope
   99 |     if(!_image || !_inputBuffer || !_outputBuffer) return;
      |         ^~~~~~
../hiro/core/../gtk/widget/widget.cpp:5:44: error: 'GdkDragContext' was not declared in this scope
    5 | static auto Widget_drop(GtkWidget* widget, GdkDragContext* context, int x, int y,
      |                                            ^~~~~~~~~~~~~~
../ruby/video/xshm.cpp:150:5: error: 'GC' was not declared in this scope
  150 |     GC gc = XCreateGC(_display, _window, 0, 0);
      |     ^~
../ruby/video/xshm.cpp:151:37: error: 'gc' was not declared in this scope
  151 |     XShmPutImage(_display, _window, gc, _image, 0, 0, x, y, width, height, False);
      |                                     ^~
../ruby/video/xshm.cpp:151:41: error: '_image' was not declared in this scope
  151 |     XShmPutImage(_display, _window, gc, _image, 0, 0, x, y, width, height, False);
      |                                         ^~~~~~
../hiro/core/../gtk/widget/widget.cpp:5:60: error: 'context' was not declared in this scope; did you mean 'ucontext'?
    5 | static auto Widget_drop(GtkWidget* widget, GdkDragContext* context, int x, int y,
      |                                                            ^~~~~~~
      |                                                            ucontext
../hiro/core/../gtk/widget/widget.cpp:5:69: error: expected primary-expression before 'int'
    5 | static auto Widget_drop(GtkWidget* widget, GdkDragContext* context, int x, int y,
      |                                                                     ^~~
../hiro/core/../gtk/widget/widget.cpp:5:76: error: expected primary-expression before 'int'
    5 | static auto Widget_drop(GtkWidget* widget, GdkDragContext* context, int x, int y,
      |                                                                            ^~~
../ruby/video/xshm.cpp:151:76: error: 'False' was not declared in this scope
  151 |     XShmPutImage(_display, _window, gc, _image, 0, 0, x, y, width, height, False);
      |                                                                            ^~~~~
../ruby/video/xshm.cpp:151:76: note: the macro 'False' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/Xlib.h:81: note: it was later defined here
   81 | #define False 0
      | 
../hiro/core/../gtk/widget/widget.cpp:6:1: error: 'GtkSelectionData' was not declared in this scope
    6 | GtkSelectionData* data, uint type, uint timestamp, pWidget* p) -> void {
      | ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/widget.cpp:6:19: error: 'data' was not declared in this scope
    6 | GtkSelectionData* data, uint type, uint timestamp, pWidget* p) -> void {
      |                   ^~~~
../hiro/core/../gtk/widget/widget.cpp:6:30: error: expected primary-expression before 'type'
    6 | GtkSelectionData* data, uint type, uint timestamp, pWidget* p) -> void {
      |                              ^~~~
../hiro/core/../gtk/widget/widget.cpp:6:41: error: expected primary-expression before 'timestamp'
    6 | GtkSelectionData* data, uint type, uint timestamp, pWidget* p) -> void {
      |                                         ^~~~~~~~~
../hiro/core/../gtk/widget/widget.cpp:6:59: error: expected primary-expression before '*' token
    6 | GtkSelectionData* data, uint type, uint timestamp, pWidget* p) -> void {
      |                                                           ^
../hiro/core/../gtk/widget/widget.cpp:6:61: error: 'p' was not declared in this scope
    6 | GtkSelectionData* data, uint type, uint timestamp, pWidget* p) -> void {
      |                                                             ^
../hiro/core/../gtk/widget/widget.cpp:6:62: error: expression list treated as compound expression in initializer [-fpermissive]
    6 | GtkSelectionData* data, uint type, uint timestamp, pWidget* p) -> void {
      |                                                              ^
../hiro/core/../gtk/widget/widget.cpp:6:64: error: expected ',' or ';' before '->' token
    6 | GtkSelectionData* data, uint type, uint timestamp, pWidget* p) -> void {
      |                                                                ^~
../hiro/core/../gtk/widget/widget.cpp:13:31: error: 'GtkWidget' was not declared in this scope; did you mean 'wWidget'?
   13 | static auto Widget_mouseEnter(GtkWidget* widget, GdkEventButton* event, pWidget* p) -> int {
      |                               ^~~~~~~~~
      |                               wWidget
../hiro/core/../gtk/widget/widget.cpp:13:42: error: 'widget' was not declared in this scope; did you mean 'Widget'?
   13 | static auto Widget_mouseEnter(GtkWidget* widget, GdkEventButton* event, pWidget* p) -> int {
      |                                          ^~~~~~
      |                                          Widget
../ruby/video/xshm.cpp:151:5: error: 'XShmPutImage' was not declared in this scope; did you mean 'XSubImage'?
  151 |     XShmPutImage(_display, _window, gc, _image, 0, 0, x, y, width, height, False);
      |     ^~~~~~~~~~~~
      |     XSubImage
../hiro/core/../gtk/widget/widget.cpp:13:50: error: 'GdkEventButton' was not declared in this scope
   13 | static auto Widget_mouseEnter(GtkWidget* widget, GdkEventButton* event, pWidget* p) -> int {
      |                                                  ^~~~~~~~~~~~~~
../hiro/core/../gtk/widget/widget.cpp:13:66: error: 'event' was not declared in this scope; did you mean 'servent'?
   13 | static auto Widget_mouseEnter(GtkWidget* widget, GdkEventButton* event, pWidget* p) -> int {
      |                                                                  ^~~~~
      |                                                                  servent
../hiro/core/../gtk/widget/widget.cpp:13:80: error: expected primary-expression before '*' token
   13 | static auto Widget_mouseEnter(GtkWidget* widget, GdkEventButton* event, pWidget* p) -> int {
      |                                                                                ^
../hiro/core/../gtk/widget/widget.cpp:13:82: error: 'p' was not declared in this scope
   13 | static auto Widget_mouseEnter(GtkWidget* widget, GdkEventButton* event, pWidget* p) -> int {
      |                                                                                  ^
../hiro/core/../gtk/widget/widget.cpp:13:83: error: expression list treated as compound expression in initializer [-fpermissive]
   13 | static auto Widget_mouseEnter(GtkWidget* widget, GdkEventButton* event, pWidget* p) -> int {
      |                                                                                   ^
../hiro/core/../gtk/widget/widget.cpp:13:85: error: expected ',' or ';' before '->' token
   13 | static auto Widget_mouseEnter(GtkWidget* widget, GdkEventButton* event, pWidget* p) -> int {
      |                                                                                     ^~
../hiro/core/../gtk/widget/widget.cpp:23:31: error: 'GtkWidget' was not declared in this scope; did you mean 'wWidget'?
   23 | static auto Widget_mouseLeave(GtkWidget* widget, GdkEventButton* event, pWidget* p) -> int {
      |                               ^~~~~~~~~
      |                               wWidget
../ruby/video/xshm.cpp:152:5: error: 'XFreeGC' was not declared in this scope
  152 |     XFreeGC(_display, gc);
      |     ^~~~~~~
../hiro/core/../gtk/widget/widget.cpp:23:42: error: 'widget' was not declared in this scope; did you mean 'Widget'?
   23 | static auto Widget_mouseLeave(GtkWidget* widget, GdkEventButton* event, pWidget* p) -> int {
      |                                          ^~~~~~
      |                                          Widget
../hiro/core/../gtk/widget/widget.cpp:23:50: error: 'GdkEventButton' was not declared in this scope
   23 | static auto Widget_mouseLeave(GtkWidget* widget, GdkEventButton* event, pWidget* p) -> int {
      |                                                  ^~~~~~~~~~~~~~
../ruby/video/xshm.cpp:153:5: error: 'XFlush' was not declared in this scope; did you mean 'flush'?
  153 |     XFlush(_display);
      |     ^~~~~~
      |     flush
../hiro/core/../gtk/widget/widget.cpp:23:66: error: 'event' was not declared in this scope; did you mean 'servent'?
   23 | static auto Widget_mouseLeave(GtkWidget* widget, GdkEventButton* event, pWidget* p) -> int {
      |                                                                  ^~~~~
      |                                                                  servent
../hiro/core/../gtk/widget/widget.cpp:23:80: error: expected primary-expression before '*' token
   23 | static auto Widget_mouseLeave(GtkWidget* widget, GdkEventButton* event, pWidget* p) -> int {
      |                                                                                ^
../hiro/core/../gtk/widget/widget.cpp:23:82: error: 'p' was not declared in this scope
   23 | static auto Widget_mouseLeave(GtkWidget* widget, GdkEventButton* event, pWidget* p) -> int {
      |                                                                                  ^
../hiro/core/../gtk/widget/widget.cpp:23:83: error: expression list treated as compound expression in initializer [-fpermissive]
   23 | static auto Widget_mouseLeave(GtkWidget* widget, GdkEventButton* event, pWidget* p) -> int {
      |                                                                                   ^
../hiro/core/../gtk/widget/widget.cpp:23:85: error: expected ',' or ';' before '->' token
   23 | static auto Widget_mouseLeave(GtkWidget* widget, GdkEventButton* event, pWidget* p) -> int {
      |                                                                                     ^~
../hiro/core/../gtk/widget/widget.cpp:33:30: error: 'GtkWidget' was not declared in this scope; did you mean 'wWidget'?
   33 | static auto Widget_mouseMove(GtkWidget* widget, GdkEventButton* event, pWidget* p) -> signed {
      |                              ^~~~~~~~~
      |                              wWidget
../ruby/video/xshm.cpp: In member function 'virtual void VideoXShm::poll()':
../ruby/video/xshm.cpp:157:20: error: '_display' was not declared in this scope
  157 |     while(XPending(_display)) {
      |                    ^~~~~~~~
../hiro/core/../gtk/widget/widget.cpp:33:41: error: 'widget' was not declared in this scope; did you mean 'Widget'?
   33 | static auto Widget_mouseMove(GtkWidget* widget, GdkEventButton* event, pWidget* p) -> signed {
      |                                         ^~~~~~
      |                                         Widget
../hiro/core/../gtk/widget/widget.cpp:33:49: error: 'GdkEventButton' was not declared in this scope
   33 | static auto Widget_mouseMove(GtkWidget* widget, GdkEventButton* event, pWidget* p) -> signed {
      |                                                 ^~~~~~~~~~~~~~
../ruby/video/xshm.cpp:157:11: error: 'XPending' was not declared in this scope; did you mean 'sigpending'?
  157 |     while(XPending(_display)) {
      |           ^~~~~~~~
      |           sigpending
../hiro/core/../gtk/widget/widget.cpp:33:65: error: 'event' was not declared in this scope; did you mean 'servent'?
   33 | static auto Widget_mouseMove(GtkWidget* widget, GdkEventButton* event, pWidget* p) -> signed {
      |                                                                 ^~~~~
      |                                                                 servent
../hiro/core/../gtk/widget/widget.cpp:33:79: error: expected primary-expression before '*' token
   33 | static auto Widget_mouseMove(GtkWidget* widget, GdkEventButton* event, pWidget* p) -> signed {
      |                                                                               ^
../hiro/core/../gtk/widget/widget.cpp:33:81: error: 'p' was not declared in this scope
   33 | static auto Widget_mouseMove(GtkWidget* widget, GdkEventButton* event, pWidget* p) -> signed {
      |                                                                                 ^
../hiro/core/../gtk/widget/widget.cpp:33:82: error: expression list treated as compound expression in initializer [-fpermissive]
   33 | static auto Widget_mouseMove(GtkWidget* widget, GdkEventButton* event, pWidget* p) -> signed {
      |                                                                                  ^
../hiro/core/../gtk/widget/widget.cpp:33:84: error: expected ',' or ';' before '->' token
   33 | static auto Widget_mouseMove(GtkWidget* widget, GdkEventButton* event, pWidget* p) -> signed {
      |                                                                                    ^~
../ruby/video/xshm.cpp:158:7: error: 'XEvent' was not declared in this scope
  158 |       XEvent event;
      |       ^~~~~~
../hiro/core/../gtk/widget/widget.cpp:38:31: error: 'GtkWidget' was not declared in this scope; did you mean 'wWidget'?
   38 | static auto Widget_mousePress(GtkWidget* widget, GdkEventButton* event, pWidget* p) -> signed {
      |                               ^~~~~~~~~
      |                               wWidget
../hiro/core/../gtk/widget/widget.cpp:38:42: error: 'widget' was not declared in this scope; did you mean 'Widget'?
   38 | static auto Widget_mousePress(GtkWidget* widget, GdkEventButton* event, pWidget* p) -> signed {
      |                                          ^~~~~~
      |                                          Widget
../ruby/video/xshm.cpp:159:29: error: 'event' was not declared in this scope; did you mean 'servent'?
  159 |       XNextEvent(_display, &event);
      |                             ^~~~~
      |                             servent
../hiro/core/../gtk/widget/widget.cpp:38:50: error: 'GdkEventButton' was not declared in this scope
   38 | static auto Widget_mousePress(GtkWidget* widget, GdkEventButton* event, pWidget* p) -> signed {
      |                                                  ^~~~~~~~~~~~~~
../hiro/core/../gtk/widget/widget.cpp:38:66: error: 'event' was not declared in this scope; did you mean 'servent'?
   38 | static auto Widget_mousePress(GtkWidget* widget, GdkEventButton* event, pWidget* p) -> signed {
      |                                                                  ^~~~~
      |                                                                  servent
../hiro/core/../gtk/widget/widget.cpp:38:80: error: expected primary-expression before '*' token
   38 | static auto Widget_mousePress(GtkWidget* widget, GdkEventButton* event, pWidget* p) -> signed {
      |                                                                                ^
../hiro/core/../gtk/widget/widget.cpp:38:82: error: 'p' was not declared in this scope
   38 | static auto Widget_mousePress(GtkWidget* widget, GdkEventButton* event, pWidget* p) -> signed {
      |                                                                                  ^
../hiro/core/../gtk/widget/widget.cpp:38:83: error: expression list treated as compound expression in initializer [-fpermissive]
   38 | static auto Widget_mousePress(GtkWidget* widget, GdkEventButton* event, pWidget* p) -> signed {
      |                                                                                   ^
../hiro/core/../gtk/widget/widget.cpp:38:85: error: expected ',' or ';' before '->' token
   38 | static auto Widget_mousePress(GtkWidget* widget, GdkEventButton* event, pWidget* p) -> signed {
      |                                                                                     ^~
../hiro/core/../gtk/widget/widget.cpp:47:33: error: 'GtkWidget' was not declared in this scope; did you mean 'wWidget'?
   47 | static auto Widget_mouseRelease(GtkWidget* widget, GdkEventButton* event, pWidget* p) -> signed {
      |                                 ^~~~~~~~~
      |                                 wWidget
../hiro/core/../gtk/widget/widget.cpp:47:44: error: 'widget' was not declared in this scope; did you mean 'Widget'?
   47 | static auto Widget_mouseRelease(GtkWidget* widget, GdkEventButton* event, pWidget* p) -> signed {
      |                                            ^~~~~~
      |                                            Widget
../hiro/core/../gtk/widget/widget.cpp:47:52: error: 'GdkEventButton' was not declared in this scope
   47 | static auto Widget_mouseRelease(GtkWidget* widget, GdkEventButton* event, pWidget* p) -> signed {
      |                                                    ^~~~~~~~~~~~~~
../hiro/core/../gtk/widget/widget.cpp:47:68: error: 'event' was not declared in this scope; did you mean 'servent'?
   47 | static auto Widget_mouseRelease(GtkWidget* widget, GdkEventButton* event, pWidget* p) -> signed {
      |                                                                    ^~~~~
      |                                                                    servent
../hiro/core/../gtk/widget/widget.cpp:47:82: error: expected primary-expression before '*' token
   47 | static auto Widget_mouseRelease(GtkWidget* widget, GdkEventButton* event, pWidget* p) -> signed {
      |                                                                                  ^
../hiro/core/../gtk/widget/widget.cpp:47:84: error: 'p' was not declared in this scope
   47 | static auto Widget_mouseRelease(GtkWidget* widget, GdkEventButton* event, pWidget* p) -> signed {
      |                                                                                    ^
../hiro/core/../gtk/widget/widget.cpp:47:85: error: expression list treated as compound expression in initializer [-fpermissive]
   47 | static auto Widget_mouseRelease(GtkWidget* widget, GdkEventButton* event, pWidget* p) -> signed {
      |                                                                                     ^
../hiro/core/../gtk/widget/widget.cpp:47:87: error: expected ',' or ';' before '->' token
   47 | static auto Widget_mouseRelease(GtkWidget* widget, GdkEventButton* event, pWidget* p) -> signed {
      |                                                                                       ^~
../hiro/core/../gtk/widget/widget.cpp: In member function 'virtual void hiro::pWidget::construct()':
../hiro/core/../gtk/widget/widget.cpp:57:7: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   57 |   if(!gtkWidget) return;
      |       ^~~~~~~~~
      |       pWidget
../hiro/core/../gtk/widget/widget.cpp: At global scope:
../hiro/core/../gtk/widget/widget.cpp:73:45: error: 'GtkWidget' does not name a type; did you mean 'pWidget'?
   73 | auto pWidget::container(mWidget& widget) -> GtkWidget* {
      |                                             ^~~~~~~~~
      |                                             pWidget
../hiro/core/../gtk/widget/widget.cpp:73:54: error: expected initializer before '*' token
   73 | auto pWidget::container(mWidget& widget) -> GtkWidget* {
      |                                                      ^
../ruby/video/xshm.cpp:159:7: error: 'XNextEvent' was not declared in this scope
  159 |       XNextEvent(_display, &event);
      |       ^~~~~~~~~~
../hiro/core/../gtk/widget/widget.cpp: In member function 'virtual bool hiro::pWidget::focused() const':
../hiro/core/../gtk/widget/widget.cpp:78:7: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   78 |   if(!gtkWidget) return false;
      |       ^~~~~~~~~
      |       pWidget
../ruby/video/xshm.cpp:160:24: error: 'Expose' was not declared in this scope
  160 |       if(event.type == Expose) {
      |                        ^~~~~~
../ruby/video/xshm.cpp:160:24: note: the macro 'Expose' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/X.h:191: note: it was later defined here
  191 | #define Expose                  12
      | 
../hiro/core/../gtk/widget/widget.cpp:79:31: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   79 |   return gtk_widget_has_focus(gtkWidget);
      |                               ^~~~~~~~~
      |                               pWidget
../hiro/core/../gtk/widget/widget.cpp:79:10: error: 'gtk_widget_has_focus' was not declared in this scope
   79 |   return gtk_widget_has_focus(gtkWidget);
      |          ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/widget.cpp: In member function 'void hiro::pWidget::setDroppable(bool)':
../hiro/core/../gtk/widget/widget.cpp:83:7: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   83 |   if(!gtkWidget) return;
      |       ^~~~~~~~~
      |       pWidget
../hiro/core/../gtk/widget/widget.cpp:85:23: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   85 |     gtk_drag_dest_set(gtkWidget, GTK_DEST_DEFAULT_ALL, nullptr, 0, GDK_ACTION_COPY);
      |                       ^~~~~~~~~
      |                       pWidget
../ruby/video/xshm.cpp:161:9: error: 'XWindowAttributes' was not declared in this scope
  161 |         XWindowAttributes attributes{};
      |         ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/widget.cpp:85:34: error: 'GTK_DEST_DEFAULT_ALL' was not declared in this scope
   85 |     gtk_drag_dest_set(gtkWidget, GTK_DEST_DEFAULT_ALL, nullptr, 0, GDK_ACTION_COPY);
      |                                  ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/widget.cpp:85:68: error: 'GDK_ACTION_COPY' was not declared in this scope
   85 |     gtk_drag_dest_set(gtkWidget, GTK_DEST_DEFAULT_ALL, nullptr, 0, GDK_ACTION_COPY);
      |                                                                    ^~~~~~~~~~~~~~~
../ruby/video/xshm.cpp:162:40: error: '_window' was not declared in this scope; did you mean 'BadWindow'?
  162 |         XGetWindowAttributes(_display, _window, &attributes);
      |                                        ^~~~~~~
      |                                        BadWindow
../hiro/core/../gtk/widget/widget.cpp:85:5: error: 'gtk_drag_dest_set' was not declared in this scope
   85 |     gtk_drag_dest_set(gtkWidget, GTK_DEST_DEFAULT_ALL, nullptr, 0, GDK_ACTION_COPY);
      |     ^~~~~~~~~~~~~~~~~
../ruby/video/xshm.cpp:162:50: error: 'attributes' was not declared in this scope
  162 |         XGetWindowAttributes(_display, _window, &attributes);
      |                                                  ^~~~~~~~~~
../hiro/core/../gtk/widget/widget.cpp:86:5: error: 'gtk_drag_dest_add_uri_targets' was not declared in this scope
   86 |     gtk_drag_dest_add_uri_targets(gtkWidget);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../ruby/video/xshm.cpp:162:9: error: 'XGetWindowAttributes' was not declared in this scope
  162 |         XGetWindowAttributes(_display, _window, &attributes);
      |         ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/widget.cpp: In member function 'virtual void hiro::pWidget::setEnabled(bool)':
../hiro/core/../gtk/widget/widget.cpp:91:7: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   91 |   if(!gtkWidget) return;
      |       ^~~~~~~~~
      |       pWidget
../hiro/core/../gtk/widget/widget.cpp:92:28: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   92 |   gtk_widget_set_sensitive(gtkWidget, enabled);
      |                            ^~~~~~~~~
      |                            pWidget
../ruby/video/xshm.cpp: In member function 'void VideoXShm::construct()':
../ruby/video/xshm.cpp:170:5: error: '_display' was not declared in this scope
  170 |     _display = XOpenDisplay(nullptr);
      |     ^~~~~~~~
../hiro/core/../gtk/widget/widget.cpp:92:3: error: 'gtk_widget_set_sensitive' was not declared in this scope
   92 |   gtk_widget_set_sensitive(gtkWidget, enabled);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/widget.cpp: In member function 'virtual void hiro::pWidget::setFocused()':
../hiro/core/../gtk/widget/widget.cpp:100:7: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
  100 |   if(!gtkWidget) return;
      |       ^~~~~~~~~
      |       pWidget
../hiro/core/../gtk/widget/widget.cpp:101:25: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
  101 |   gtk_widget_grab_focus(gtkWidget);
      |                         ^~~~~~~~~
      |                         pWidget
../hiro/core/../gtk/widget/widget.cpp:101:3: error: 'gtk_widget_grab_focus' was not declared in this scope
  101 |   gtk_widget_grab_focus(gtkWidget);
      |   ^~~~~~~~~~~~~~~~~~~~~
../ruby/video/xshm.cpp:170:16: error: 'XOpenDisplay' was not declared in this scope
  170 |     _display = XOpenDisplay(nullptr);
      |                ^~~~~~~~~~~~
../hiro/core/../gtk/widget/widget.cpp: In member function 'virtual void hiro::pWidget::setFont(const hiro::Font&)':
../hiro/core/../gtk/widget/widget.cpp:105:7: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
  105 |   if(!gtkWidget) return;
      |       ^~~~~~~~~
      |       pWidget
../hiro/core/../gtk/widget/widget.cpp:106:25: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
  106 |   return pFont::setFont(gtkWidget, font);
      |                         ^~~~~~~~~
      |                         pWidget
../ruby/video/xshm.cpp:171:15: error: 'DefaultScreen' was not declared in this scope
  171 |     _screen = DefaultScreen(_display);
      |               ^~~~~~~~~~~~~
../ruby/video/xshm.cpp:171:15: note: the macro 'DefaultScreen' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/Xlib.h:89: note: it was later defined here
   89 | #define DefaultScreen(dpy)      (((_XPrivDisplay)(dpy))->default_screen)
      | 
../hiro/core/../gtk/widget/widget.cpp: In member function 'virtual void hiro::pWidget::setGeometry(hiro::Geometry)':
../hiro/core/../gtk/widget/widget.cpp:110:7: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
  110 |   if(!gtkWidget) return;
      |       ^~~~~~~~~
      |       pWidget
../hiro/core/../gtk/widget/widget.cpp:111:6: error: 'gtkParent' was not declared in this scope
  111 |   if(gtkParent) gtk_fixed_move(GTK_FIXED(gtkParent), gtkWidget, geometry.x(), geometry.y());
      |      ^~~~~~~~~
../ruby/video/xshm.cpp:172:5: error: 'XSetErrorHandler' was not declared in this scope; did you mean 'errorHandler'?
  172 |     XSetErrorHandler(errorHandler);
      |     ^~~~~~~~~~~~~~~~
      |     errorHandler
../hiro/core/../gtk/widget/widget.cpp:111:32: error: 'GTK_FIXED' was not declared in this scope; did you mean 'MAP_FIXED'?
  111 |   if(gtkParent) gtk_fixed_move(GTK_FIXED(gtkParent), gtkWidget, geometry.x(), geometry.y());
      |                                ^~~~~~~~~
      |                                MAP_FIXED
../hiro/core/../gtk/widget/widget.cpp:111:54: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
  111 |   if(gtkParent) gtk_fixed_move(GTK_FIXED(gtkParent), gtkWidget, geometry.x(), geometry.y());
      |                                                      ^~~~~~~~~
      |                                                      pWidget
../hiro/core/../gtk/widget/widget.cpp:111:17: error: 'gtk_fixed_move' was not declared in this scope
  111 |   if(gtkParent) gtk_fixed_move(GTK_FIXED(gtkParent), gtkWidget, geometry.x(), geometry.y());
      |                 ^~~~~~~~~~~~~~
../ruby/video/xshm.cpp: In member function 'void VideoXShm::destruct()':
../ruby/video/xshm.cpp:177:19: error: '_display' was not declared in this scope
  177 |     XCloseDisplay(_display);
      |                   ^~~~~~~~
../hiro/core/../gtk/widget/widget.cpp:114:31: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
  114 |   gtk_widget_set_size_request(gtkWidget, geometry.width(), geometry.height());
      |                               ^~~~~~~~~
      |                               pWidget
../hiro/core/../gtk/widget/widget.cpp:114:3: error: 'gtk_widget_set_size_request' was not declared in this scope
  114 |   gtk_widget_set_size_request(gtkWidget, geometry.width(), geometry.height());
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/widget.cpp:115:11: error: 'gtk_widget_get_realized' was not declared in this scope
  115 |   if(0 && gtk_widget_get_realized(gtkWidget)) {
      |           ^~~~~~~~~~~~~~~~~~~~~~~
../ruby/video/xshm.cpp:177:5: error: 'XCloseDisplay' was not declared in this scope
  177 |     XCloseDisplay(_display);
      |     ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/widget.cpp:121:9: error: 'GtkAllocation' was not declared in this scope
  121 |         GtkAllocation allocation;
      |         ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/widget.cpp:122:47: error: 'allocation' was not declared in this scope
  122 |         gtk_widget_get_allocation(gtkWidget, &allocation);
      |                                               ^~~~~~~~~~
../ruby/video/xshm.cpp: In member function 'bool VideoXShm::initialize()':
../ruby/video/xshm.cpp:184:5: error: '_parent' was not declared in this scope
  184 |     _parent = self.fullScreen ? RootWindow(_display, _screen) : (Window)self.context;
      |     ^~~~~~~
../hiro/core/../gtk/widget/widget.cpp:122:9: error: 'gtk_widget_get_allocation' was not declared in this scope
  122 |         gtk_widget_get_allocation(gtkWidget, &allocation);
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~
../ruby/video/xshm.cpp:184:44: error: '_display' was not declared in this scope
  184 |     _parent = self.fullScreen ? RootWindow(_display, _screen) : (Window)self.context;
      |                                            ^~~~~~~~
../hiro/core/../gtk/widget/widget.cpp:124:9: error: 'gtk_main_iteration_do' was not declared in this scope
  124 |         gtk_main_iteration_do(false);
      |         ^~~~~~~~~~~~~~~~~~~~~
../ruby/video/xshm.cpp:184:33: error: 'RootWindow' was not declared in this scope
  184 |     _parent = self.fullScreen ? RootWindow(_display, _screen) : (Window)self.context;
      |                                 ^~~~~~~~~~
../ruby/video/xshm.cpp:184:33: note: the macro 'RootWindow' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/Xlib.h:88: note: it was later defined here
   88 | #define RootWindow(dpy, scr)    (ScreenOfDisplay(dpy,scr)->root)
      | 
../hiro/core/../gtk/widget/widget.cpp:131:3: error: 'gtk_widget_queue_draw' was not declared in this scope
  131 |   gtk_widget_queue_draw(gtkWidget);
      |   ^~~~~~~~~~~~~~~~~~~~~
../ruby/video/xshm.cpp:184:66: error: 'Window' was not declared in this scope
  184 |     _parent = self.fullScreen ? RootWindow(_display, _screen) : (Window)self.context;
      |                                                                  ^~~~~~
../hiro/core/../gtk/widget/widget.cpp: In member function 'void hiro::pWidget::setMouseCursor(const hiro::MouseCursor&)':
../hiro/core/../gtk/widget/widget.cpp:147:7: error: 'gdkMouseCursor' was not declared in this scope; did you mean 'setMouseCursor'?
  147 |       gdkMouseCursor = gdk_cursor_new_from_name(gdk_display_get_default(), name);
      |       ^~~~~~~~~~~~~~
      |       setMouseCursor
../hiro/core/../gtk/widget/widget.cpp:147:49: error: 'gdk_display_get_default' was not declared in this scope
  147 |       gdkMouseCursor = gdk_cursor_new_from_name(gdk_display_get_default(), name);
      |                                                 ^~~~~~~~~~~~~~~~~~~~~~~
../ruby/video/xshm.cpp:185:5: error: 'XWindowAttributes' was not declared in this scope
  185 |     XWindowAttributes windowAttributes{};
      |     ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/widget.cpp:147:24: error: 'gdk_cursor_new_from_name' was not declared in this scope
  147 |       gdkMouseCursor = gdk_cursor_new_from_name(gdk_display_get_default(), name);
      |                        ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/widget.cpp: In member function 'void hiro::pWidget::setToolTip(const nall::string&)':
../hiro/core/../gtk/widget/widget.cpp:153:31: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
  153 |   gtk_widget_set_tooltip_text(gtkWidget, toolTip);
      |                               ^~~~~~~~~
      |                               pWidget
../ruby/video/xshm.cpp:186:46: error: 'windowAttributes' was not declared in this scope
  186 |     XGetWindowAttributes(_display, _parent, &windowAttributes);
      |                                              ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/widget.cpp:153:3: error: 'gtk_widget_set_tooltip_text' was not declared in this scope
  153 |   gtk_widget_set_tooltip_text(gtkWidget, toolTip);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/widget.cpp: In member function 'virtual void hiro::pWidget::setVisible(bool)':
../hiro/core/../gtk/widget/widget.cpp:157:7: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
  157 |   if(!gtkWidget) return;
      |       ^~~~~~~~~
      |       pWidget
../ruby/video/xshm.cpp:186:5: error: 'XGetWindowAttributes' was not declared in this scope
  186 |     XGetWindowAttributes(_display, _parent, &windowAttributes);
      |     ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/widget.cpp:158:26: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
  158 |   gtk_widget_set_visible(gtkWidget, visible);
      |                          ^~~~~~~~~
      |                          pWidget
../ruby/video/xshm.cpp:198:5: error: '_visual' was not declared in this scope
  198 |     _visual = windowAttributes.visual;
      |     ^~~~~~~
../ruby/video/xshm.cpp:199:5: error: '_colormap' was not declared in this scope; did you mean 'CWColormap'?
  199 |     _colormap = XCreateColormap(_display, _parent, _visual, AllocNone);
      |     ^~~~~~~~~
      |     CWColormap
../ruby/video/xshm.cpp:199:61: error: 'AllocNone' was not declared in this scope
  199 |     _colormap = XCreateColormap(_display, _parent, _visual, AllocNone);
      |                                                             ^~~~~~~~~
../ruby/video/xshm.cpp:199:61: note: the macro 'AllocNone' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/X.h:616: note: it was later defined here
  616 | #define AllocNone               0       /* create map with no entries */
      | 
../hiro/core/../gtk/widget/widget.cpp:158:3: error: 'gtk_widget_set_visible' was not declared in this scope
  158 |   gtk_widget_set_visible(gtkWidget, visible);
      |   ^~~~~~~~~~~~~~~~~~~~~~
In file included from ../hiro/core/../gtk/platform.cpp:31:
../hiro/core/../gtk/widget/button.cpp: At global scope:
../hiro/core/../gtk/widget/button.cpp:5:29: error: 'GtkButton' was not declared in this scope; did you mean 'wButton'?
    5 | static auto Button_activate(GtkButton* gtkButton, pButton* p) -> void { p->_doActivate(); }
      |                             ^~~~~~~~~
      |                             wButton
../hiro/core/../gtk/widget/button.cpp:5:40: error: 'gtkButton' was not declared in this scope; did you mean 'wButton'?
    5 | static auto Button_activate(GtkButton* gtkButton, pButton* p) -> void { p->_doActivate(); }
      |                                        ^~~~~~~~~
      |                                        wButton
../hiro/core/../gtk/widget/button.cpp:5:58: error: expected primary-expression before '*' token
    5 | static auto Button_activate(GtkButton* gtkButton, pButton* p) -> void { p->_doActivate(); }
      |                                                          ^
../hiro/core/../gtk/widget/button.cpp:5:60: error: 'p' was not declared in this scope
    5 | static auto Button_activate(GtkButton* gtkButton, pButton* p) -> void { p->_doActivate(); }
      |                                                            ^
../hiro/core/../gtk/widget/button.cpp:5:61: error: expression list treated as compound expression in initializer [-fpermissive]
    5 | static auto Button_activate(GtkButton* gtkButton, pButton* p) -> void { p->_doActivate(); }
      |                                                             ^
../hiro/core/../gtk/widget/button.cpp:5:63: error: expected ',' or ';' before '->' token
    5 | static auto Button_activate(GtkButton* gtkButton, pButton* p) -> void { p->_doActivate(); }
      |                                                               ^~
../ruby/video/xshm.cpp:199:17: error: 'XCreateColormap' was not declared in this scope; did you mean 'XNStdColormap'?
  199 |     _colormap = XCreateColormap(_display, _parent, _visual, AllocNone);
      |                 ^~~~~~~~~~~~~~~
      |                 XNStdColormap
../hiro/core/../gtk/widget/button.cpp: In member function 'virtual void hiro::pButton::construct()':
../hiro/core/../gtk/widget/button.cpp:8:3: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
    8 |   gtkWidget = gtk_button_new();
      |   ^~~~~~~~~
      |   pWidget
../hiro/core/../gtk/widget/button.cpp:8:15: error: 'gtk_button_new' was not declared in this scope
    8 |   gtkWidget = gtk_button_new();
      |               ^~~~~~~~~~~~~~
../ruby/video/xshm.cpp:200:5: error: 'XSetWindowAttributes' was not declared in this scope
  200 |     XSetWindowAttributes attributes{};
      |     ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/button.cpp:9:3: error: 'gtkButton' was not declared in this scope; did you mean 'pButton'?
    9 |   gtkButton = GTK_BUTTON(gtkWidget);
      |   ^~~~~~~~~
      |   pButton
../hiro/core/../gtk/widget/button.cpp:9:15: error: 'GTK_BUTTON' was not declared in this scope
    9 |   gtkButton = GTK_BUTTON(gtkWidget);
      |               ^~~~~~~~~~
../ruby/video/xshm.cpp:201:5: error: 'attributes' was not declared in this scope
  201 |     attributes.border_pixel = 0;
      |     ^~~~~~~~~~
../hiro/core/../gtk/widget/button.cpp:16:20: error: 'G_OBJECT' was not declared in this scope
   16 |   g_signal_connect(G_OBJECT(gtkButton), "clicked", G_CALLBACK(Button_activate), (gpointer)this);
      |                    ^~~~~~~~
../ruby/video/xshm.cpp:205:5: error: '_window' was not declared in this scope; did you mean 'BadWindow'?
  205 |     _window = XCreateWindow(_display, _parent,
      |     ^~~~~~~
      |     BadWindow
../hiro/core/../gtk/widget/button.cpp:16:52: error: 'G_CALLBACK' was not declared in this scope
   16 |   g_signal_connect(G_OBJECT(gtkButton), "clicked", G_CALLBACK(Button_activate), (gpointer)this);
      |                                                    ^~~~~~~~~~
../ruby/video/xshm.cpp:207:18: error: 'InputOutput' was not declared in this scope
  207 |       0, _depth, InputOutput, _visual,
      |                  ^~~~~~~~~~~
../ruby/video/xshm.cpp:207:18: note: the macro 'InputOutput' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/X.h:387: note: it was later defined here
  387 | #define InputOutput             1
      | 
../ruby/video/xshm.cpp:208:7: error: 'CWBorderPixel' was not declared in this scope
  208 |       CWBorderPixel | CWColormap | CWOverrideRedirect, &attributes
      |       ^~~~~~~~~~~~~
../ruby/video/xshm.cpp:208:7: note: the macro 'CWBorderPixel' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/X.h:395: note: it was later defined here
  395 | #define CWBorderPixel           (1L<<3)
      | 
../ruby/video/xshm.cpp:208:23: error: 'CWColormap' was not declared in this scope
  208 |       CWBorderPixel | CWColormap | CWOverrideRedirect, &attributes
      |                       ^~~~~~~~~~
../ruby/video/xshm.cpp:208:23: note: the macro 'CWColormap' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/X.h:405: note: it was later defined here
  405 | #define CWColormap              (1L<<13)
      | 
../ruby/video/xshm.cpp:208:36: error: 'CWOverrideRedirect' was not declared in this scope
  208 |       CWBorderPixel | CWColormap | CWOverrideRedirect, &attributes
      |                                    ^~~~~~~~~~~~~~~~~~
../ruby/video/xshm.cpp:208:36: note: the macro 'CWOverrideRedirect' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/X.h:401: note: it was later defined here
  401 | #define CWOverrideRedirect      (1L<<9)
      | 
../ruby/video/xshm.cpp:205:15: error: 'XCreateWindow' was not declared in this scope
  205 |     _window = XCreateWindow(_display, _parent,
      |               ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/button.cpp:16:82: error: 'gpointer' was not declared in this scope
   16 |   g_signal_connect(G_OBJECT(gtkButton), "clicked", G_CALLBACK(Button_activate), (gpointer)this);
      |                                                                                  ^~~~~~~~
../hiro/core/../gtk/widget/button.cpp:16:3: error: 'g_signal_connect' was not declared in this scope
   16 |   g_signal_connect(G_OBJECT(gtkButton), "clicked", G_CALLBACK(Button_activate), (gpointer)this);
      |   ^~~~~~~~~~~~~~~~
../ruby/video/xshm.cpp:211:37: error: 'ExposureMask' was not declared in this scope
  211 |     XSelectInput(_display, _window, ExposureMask);
      |                                     ^~~~~~~~~~~~
../ruby/video/xshm.cpp:211:37: note: the macro 'ExposureMask' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/X.h:166: note: it was later defined here
  166 | #define ExposureMask                    (1L<<15)
      | 
../hiro/core/../gtk/widget/button.cpp: In member function 'virtual void hiro::pButton::destruct()':
../hiro/core/../gtk/widget/button.cpp:22:22: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   22 |   gtk_widget_destroy(gtkWidget);
      |                      ^~~~~~~~~
      |                      pWidget
../ruby/video/xshm.cpp:211:5: error: 'XSelectInput' was not declared in this scope
  211 |     XSelectInput(_display, _window, ExposureMask);
      |     ^~~~~~~~~~~~
../hiro/core/../gtk/widget/button.cpp:22:3: error: 'gtk_widget_destroy' was not declared in this scope
   22 |   gtk_widget_destroy(gtkWidget);
      |   ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/button.cpp: In member function 'void hiro::pButton::setBordered(bool)':
../hiro/core/../gtk/widget/button.cpp:42:25: error: 'gtkButton' was not declared in this scope; did you mean 'pButton'?
   42 |   gtk_button_set_relief(gtkButton, bordered ? GTK_RELIEF_NORMAL : GTK_RELIEF_NONE);
      |                         ^~~~~~~~~
      |                         pButton
../hiro/core/../gtk/widget/button.cpp:42:47: error: 'GTK_RELIEF_NORMAL' was not declared in this scope
   42 |   gtk_button_set_relief(gtkButton, bordered ? GTK_RELIEF_NORMAL : GTK_RELIEF_NONE);
      |                                               ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/button.cpp:42:67: error: 'GTK_RELIEF_NONE' was not declared in this scope
   42 |   gtk_button_set_relief(gtkButton, bordered ? GTK_RELIEF_NORMAL : GTK_RELIEF_NONE);
      |                                                                   ^~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/button.cpp:42:3: error: 'gtk_button_set_relief' was not declared in this scope
   42 |   gtk_button_set_relief(gtkButton, bordered ? GTK_RELIEF_NORMAL : GTK_RELIEF_NONE);
      |   ^~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/button.cpp: In member function 'void hiro::pButton::setIcon(const nall::image&)':
../hiro/core/../gtk/widget/button.cpp:47:21: error: 'CreateImage' was not declared in this scope
   47 |     auto gtkImage = CreateImage(icon);
      |                     ^~~~~~~~~~~
../hiro/core/../gtk/widget/button.cpp:48:26: error: 'gtkButton' was not declared in this scope; did you mean 'pButton'?
   48 |     gtk_button_set_image(gtkButton, (GtkWidget*)gtkImage);
      |                          ^~~~~~~~~
      |                          pButton
../ruby/video/xshm.cpp:212:5: error: 'XSetWindowBackground' was not declared in this scope
  212 |     XSetWindowBackground(_display, _window, 0);
      |     ^~~~~~~~~~~~~~~~~~~~
../ruby/video/xshm.cpp:213:5: error: 'XMapWindow' was not declared in this scope; did you mean 'BadWindow'?
  213 |     XMapWindow(_display, _window);
      |     ^~~~~~~~~~
      |     BadWindow
../hiro/core/../gtk/widget/button.cpp:48:38: error: 'GtkWidget' was not declared in this scope; did you mean 'pWidget'?
   48 |     gtk_button_set_image(gtkButton, (GtkWidget*)gtkImage);
      |                                      ^~~~~~~~~
      |                                      pWidget
../hiro/core/../gtk/widget/button.cpp:48:48: error: expected primary-expression before ')' token
   48 |     gtk_button_set_image(gtkButton, (GtkWidget*)gtkImage);
      |                                                ^
../ruby/video/xshm.cpp:214:5: error: 'XFlush' was not declared in this scope; did you mean 'flush'?
  214 |     XFlush(_display);
      |     ^~~~~~
      |     flush
../hiro/core/../gtk/widget/button.cpp:48:5: error: 'gtk_button_set_image' was not declared in this scope
   48 |     gtk_button_set_image(gtkButton, (GtkWidget*)gtkImage);
      |     ^~~~~~~~~~~~~~~~~~~~
../ruby/video/xshm.cpp:216:11: error: 'XPending' was not declared in this scope; did you mean 'sigpending'?
  216 |     while(XPending(_display)) {
      |           ^~~~~~~~
      |           sigpending
../ruby/video/xshm.cpp:217:7: error: 'XEvent' was not declared in this scope
  217 |       XEvent event;
      |       ^~~~~~
../ruby/video/xshm.cpp:218:29: error: 'event' was not declared in this scope; did you mean 'servent'?
  218 |       XNextEvent(_display, &event);
      |                             ^~~~~
      |                             servent
../ruby/video/xshm.cpp:218:7: error: 'XNextEvent' was not declared in this scope
  218 |       XNextEvent(_display, &event);
      |       ^~~~~~~~~~
../ruby/video/xshm.cpp: In member function 'void VideoXShm::terminate()':
../ruby/video/xshm.cpp:232:8: error: '_window' was not declared in this scope; did you mean 'BadWindow'?
  232 |     if(_window) {
      |        ^~~~~~~
      |        BadWindow
../hiro/core/../gtk/widget/button.cpp:50:26: error: 'gtkButton' was not declared in this scope; did you mean 'pButton'?
   50 |     gtk_button_set_image(gtkButton, nullptr);
      |                          ^~~~~~~~~
      |                          pButton
../ruby/video/xshm.cpp:233:20: error: '_display' was not declared in this scope
  233 |       XUnmapWindow(_display, _window);
      |                    ^~~~~~~~
../ruby/video/xshm.cpp:233:7: error: 'XUnmapWindow' was not declared in this scope
  233 |       XUnmapWindow(_display, _window);
      |       ^~~~~~~~~~~~
../ruby/video/xshm.cpp:237:8: error: '_colormap' was not declared in this scope; did you mean 'CWColormap'?
  237 |     if(_colormap) {
      |        ^~~~~~~~~
      |        CWColormap
../hiro/core/../gtk/widget/button.cpp:50:5: error: 'gtk_button_set_image' was not declared in this scope
   50 |     gtk_button_set_image(gtkButton, nullptr);
      |     ^~~~~~~~~~~~~~~~~~~~
../ruby/video/xshm.cpp:238:21: error: '_display' was not declared in this scope
  238 |       XFreeColormap(_display, _colormap);
      |                     ^~~~~~~~
../ruby/video/xshm.cpp:238:7: error: 'XFreeColormap' was not declared in this scope; did you mean 'XNStdColormap'?
  238 |       XFreeColormap(_display, _colormap);
      |       ^~~~~~~~~~~~~
      |       XNStdColormap
../ruby/video/xshm.cpp: In member function 'void VideoXShm::allocate()':
../ruby/video/xshm.cpp:250:14: error: 'struct XShmSegmentInfo' has no member named 'readOnly'
  250 |     _shmInfo.readOnly = False;
      |              ^~~~~~~~
../ruby/video/xshm.cpp:250:25: error: 'False' was not declared in this scope
  250 |     _shmInfo.readOnly = False;
      |                         ^~~~~
../ruby/video/xshm.cpp:250:25: note: the macro 'False' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/Xlib.h:81: note: it was later defined here
   81 | #define False 0
      | 
../hiro/core/../gtk/widget/button.cpp: In member function 'void hiro::pButton::setOrientation(hiro::Orientation)':
../hiro/core/../gtk/widget/button.cpp:56:63: error: 'gtkButton' was not declared in this scope; did you mean 'pButton'?
   56 |   case Orientation::Horizontal: gtk_button_set_image_position(gtkButton, GTK_POS_LEFT); break;
      |                                                               ^~~~~~~~~
      |                                                               pButton
../ruby/video/xshm.cpp:251:16: error: '_display' was not declared in this scope
  251 |     XShmAttach(_display, &_shmInfo);
      |                ^~~~~~~~
../hiro/core/../gtk/widget/button.cpp:56:74: error: 'GTK_POS_LEFT' was not declared in this scope
   56 |   case Orientation::Horizontal: gtk_button_set_image_position(gtkButton, GTK_POS_LEFT); break;
      |                                                                          ^~~~~~~~~~~~
../hiro/core/../gtk/widget/button.cpp:56:33: error: 'gtk_button_set_image_position' was not declared in this scope
   56 |   case Orientation::Horizontal: gtk_button_set_image_position(gtkButton, GTK_POS_LEFT); break;
      |                                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../ruby/video/xshm.cpp:251:5: error: 'XShmAttach' was not declared in this scope
  251 |     XShmAttach(_display, &_shmInfo);
      |     ^~~~~~~~~~
../ruby/video/xshm.cpp:253:5: error: '_image' was not declared in this scope
  253 |     _image = XShmCreateImage(_display, _visual, _depth, ZPixmap, _shmInfo.shmaddr, &_shmInfo, _outputWidth, _outputHeight);
      |     ^~~~~~
../hiro/core/../gtk/widget/button.cpp:57:74: error: 'GTK_POS_TOP' was not declared in this scope
   57 |   case Orientation::Vertical:   gtk_button_set_image_position(gtkButton, GTK_POS_TOP);  break;
      |                                                                          ^~~~~~~~~~~
../ruby/video/xshm.cpp:253:40: error: '_visual' was not declared in this scope
  253 |     _image = XShmCreateImage(_display, _visual, _depth, ZPixmap, _shmInfo.shmaddr, &_shmInfo, _outputWidth, _outputHeight);
      |                                        ^~~~~~~
../hiro/core/../gtk/widget/button.cpp: In member function 'void hiro::pButton::setText(const nall::string&)':
../hiro/core/../gtk/widget/button.cpp:62:24: error: 'gtkButton' was not declared in this scope; did you mean 'pButton'?
   62 |   gtk_button_set_label(gtkButton, text);
      |                        ^~~~~~~~~
      |                        pButton
../ruby/video/xshm.cpp:253:57: error: 'ZPixmap' was not declared in this scope
  253 |     _image = XShmCreateImage(_display, _visual, _depth, ZPixmap, _shmInfo.shmaddr, &_shmInfo, _outputWidth, _outputHeight);
      |                                                         ^~~~~~~
../ruby/video/xshm.cpp:253:57: note: the macro 'ZPixmap' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/X.h:608: note: it was later defined here
  608 | #define ZPixmap                 2       /* depth == drawable depth */
      | 
../hiro/core/../gtk/widget/button.cpp:62:3: error: 'gtk_button_set_label' was not declared in this scope
   62 |   gtk_button_set_label(gtkButton, text);
      |   ^~~~~~~~~~~~~~~~~~~~
In file included from ../hiro/core/../gtk/platform.cpp:32:
../hiro/core/../gtk/widget/canvas.cpp: At global scope:
../hiro/core/../gtk/widget/canvas.cpp:6:25: error: 'GtkWidget' was not declared in this scope; did you mean 'wWidget'?
    6 | static auto Canvas_draw(GtkWidget* widget, cairo_t* context, pCanvas* p) -> signed {
      |                         ^~~~~~~~~
      |                         wWidget
../hiro/core/../gtk/widget/canvas.cpp:6:36: error: 'widget' was not declared in this scope; did you mean 'Widget'?
    6 | static auto Canvas_draw(GtkWidget* widget, cairo_t* context, pCanvas* p) -> signed {
      |                                    ^~~~~~
      |                                    Widget
../hiro/core/../gtk/widget/canvas.cpp:6:44: error: 'cairo_t' was not declared in this scope
    6 | static auto Canvas_draw(GtkWidget* widget, cairo_t* context, pCanvas* p) -> signed {
      |                                            ^~~~~~~
../hiro/core/../gtk/widget/canvas.cpp:6:53: error: 'context' was not declared in this scope; did you mean 'ucontext'?
    6 | static auto Canvas_draw(GtkWidget* widget, cairo_t* context, pCanvas* p) -> signed {
      |                                                     ^~~~~~~
      |                                                     ucontext
../hiro/core/../gtk/widget/canvas.cpp:6:69: error: expected primary-expression before '*' token
    6 | static auto Canvas_draw(GtkWidget* widget, cairo_t* context, pCanvas* p) -> signed {
      |                                                                     ^
../hiro/core/../gtk/widget/canvas.cpp:6:71: error: 'p' was not declared in this scope
    6 | static auto Canvas_draw(GtkWidget* widget, cairo_t* context, pCanvas* p) -> signed {
      |                                                                       ^
../hiro/core/../gtk/widget/canvas.cpp:6:72: error: expression list treated as compound expression in initializer [-fpermissive]
    6 | static auto Canvas_draw(GtkWidget* widget, cairo_t* context, pCanvas* p) -> signed {
      |                                                                        ^
../hiro/core/../gtk/widget/canvas.cpp:6:74: error: expected ',' or ';' before '->' token
    6 | static auto Canvas_draw(GtkWidget* widget, cairo_t* context, pCanvas* p) -> signed {
      |                                                                          ^~
../ruby/video/xshm.cpp:253:14: error: 'XShmCreateImage' was not declared in this scope
  253 |     _image = XShmCreateImage(_display, _visual, _depth, ZPixmap, _shmInfo.shmaddr, &_shmInfo, _outputWidth, _outputHeight);
      |              ^~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/canvas.cpp:12:27: error: 'GtkWidget' was not declared in this scope; did you mean 'wWidget'?
   12 | static auto Canvas_expose(GtkWidget* widget, GdkEventExpose* event, pCanvas* p) -> signed {
      |                           ^~~~~~~~~
      |                           wWidget
../ruby/video/xshm.cpp: In member function 'void VideoXShm::free()':
../ruby/video/xshm.cpp:257:8: error: '_image' was not declared in this scope
  257 |     if(_image) {
      |        ^~~~~~
../hiro/core/../gtk/widget/canvas.cpp:12:38: error: 'widget' was not declared in this scope; did you mean 'Widget'?
   12 | static auto Canvas_expose(GtkWidget* widget, GdkEventExpose* event, pCanvas* p) -> signed {
      |                                      ^~~~~~
      |                                      Widget
../hiro/core/../gtk/widget/canvas.cpp:12:46: error: 'GdkEventExpose' was not declared in this scope
   12 | static auto Canvas_expose(GtkWidget* widget, GdkEventExpose* event, pCanvas* p) -> signed {
      |                                              ^~~~~~~~~~~~~~
../hiro/core/../gtk/widget/canvas.cpp:12:62: error: 'event' was not declared in this scope; did you mean 'servent'?
   12 | static auto Canvas_expose(GtkWidget* widget, GdkEventExpose* event, pCanvas* p) -> signed {
      |                                                              ^~~~~
      |                                                              servent
../hiro/core/../gtk/widget/canvas.cpp:12:76: error: expected primary-expression before '*' token
   12 | static auto Canvas_expose(GtkWidget* widget, GdkEventExpose* event, pCanvas* p) -> signed {
      |                                                                            ^
../hiro/core/../gtk/widget/canvas.cpp:12:78: error: 'p' was not declared in this scope
   12 | static auto Canvas_expose(GtkWidget* widget, GdkEventExpose* event, pCanvas* p) -> signed {
      |                                                                              ^
../hiro/core/../gtk/widget/canvas.cpp:12:79: error: expression list treated as compound expression in initializer [-fpermissive]
   12 | static auto Canvas_expose(GtkWidget* widget, GdkEventExpose* event, pCanvas* p) -> signed {
      |                                                                               ^
../hiro/core/../gtk/widget/canvas.cpp:12:81: error: expected ',' or ';' before '->' token
   12 | static auto Canvas_expose(GtkWidget* widget, GdkEventExpose* event, pCanvas* p) -> signed {
      |                                                                                 ^~
../hiro/core/../gtk/widget/canvas.cpp:17:29: error: 'GtkWidget' was not declared in this scope; did you mean 'wWidget'?
   17 | static auto Canvas_keyPress(GtkWidget* widget, GdkEventKey* event, pViewport* p) -> signed {
      |                             ^~~~~~~~~
      |                             wWidget
../hiro/core/../gtk/widget/canvas.cpp:17:40: error: 'widget' was not declared in this scope; did you mean 'Widget'?
   17 | static auto Canvas_keyPress(GtkWidget* widget, GdkEventKey* event, pViewport* p) -> signed {
      |                                        ^~~~~~
      |                                        Widget
../hiro/core/../gtk/widget/canvas.cpp:17:48: error: 'GdkEventKey' was not declared in this scope
   17 | static auto Canvas_keyPress(GtkWidget* widget, GdkEventKey* event, pViewport* p) -> signed {
      |                                                ^~~~~~~~~~~
../hiro/core/../gtk/widget/canvas.cpp:17:61: error: 'event' was not declared in this scope; did you mean 'servent'?
   17 | static auto Canvas_keyPress(GtkWidget* widget, GdkEventKey* event, pViewport* p) -> signed {
      |                                                             ^~~~~
      |                                                             servent
../hiro/core/../gtk/widget/canvas.cpp:17:77: error: expected primary-expression before '*' token
   17 | static auto Canvas_keyPress(GtkWidget* widget, GdkEventKey* event, pViewport* p) -> signed {
      |                                                                             ^
../hiro/core/../gtk/widget/canvas.cpp:17:79: error: 'p' was not declared in this scope
   17 | static auto Canvas_keyPress(GtkWidget* widget, GdkEventKey* event, pViewport* p) -> signed {
      |                                                                               ^
../hiro/core/../gtk/widget/canvas.cpp:17:80: error: expression list treated as compound expression in initializer [-fpermissive]
   17 | static auto Canvas_keyPress(GtkWidget* widget, GdkEventKey* event, pViewport* p) -> signed {
      |                                                                                ^
../hiro/core/../gtk/widget/canvas.cpp:17:82: error: expected ',' or ';' before '->' token
   17 | static auto Canvas_keyPress(GtkWidget* widget, GdkEventKey* event, pViewport* p) -> signed {
      |                                                                                  ^~
../hiro/core/../gtk/widget/canvas.cpp:26:31: error: 'GtkWidget' was not declared in this scope; did you mean 'wWidget'?
   26 | static auto Canvas_mousePress(GtkWidget* widget, GdkEventButton* event, pCanvas* p) -> signed {
      |                               ^~~~~~~~~
      |                               wWidget
../hiro/core/../gtk/widget/canvas.cpp:26:42: error: 'widget' was not declared in this scope; did you mean 'Widget'?
   26 | static auto Canvas_mousePress(GtkWidget* widget, GdkEventButton* event, pCanvas* p) -> signed {
      |                                          ^~~~~~
      |                                          Widget
../hiro/core/../gtk/widget/canvas.cpp:26:50: error: 'GdkEventButton' was not declared in this scope
   26 | static auto Canvas_mousePress(GtkWidget* widget, GdkEventButton* event, pCanvas* p) -> signed {
      |                                                  ^~~~~~~~~~~~~~
../hiro/core/../gtk/widget/canvas.cpp:26:66: error: 'event' was not declared in this scope; did you mean 'servent'?
   26 | static auto Canvas_mousePress(GtkWidget* widget, GdkEventButton* event, pCanvas* p) -> signed {
      |                                                                  ^~~~~
      |                                                                  servent
../hiro/core/../gtk/widget/canvas.cpp:26:80: error: expected primary-expression before '*' token
   26 | static auto Canvas_mousePress(GtkWidget* widget, GdkEventButton* event, pCanvas* p) -> signed {
      |                                                                                ^
../hiro/core/../gtk/widget/canvas.cpp:26:82: error: 'p' was not declared in this scope
   26 | static auto Canvas_mousePress(GtkWidget* widget, GdkEventButton* event, pCanvas* p) -> signed {
      |                                                                                  ^
../hiro/core/../gtk/widget/canvas.cpp:26:83: error: expression list treated as compound expression in initializer [-fpermissive]
   26 | static auto Canvas_mousePress(GtkWidget* widget, GdkEventButton* event, pCanvas* p) -> signed {
      |                                                                                   ^
../hiro/core/../gtk/widget/canvas.cpp:26:85: error: expected ',' or ';' before '->' token
   26 | static auto Canvas_mousePress(GtkWidget* widget, GdkEventButton* event, pCanvas* p) -> signed {
      |                                                                                     ^~
../hiro/core/../gtk/widget/canvas.cpp: In member function 'virtual void hiro::pCanvas::construct()':
../hiro/core/../gtk/widget/canvas.cpp:35:3: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   35 |   gtkWidget = gtk_drawing_area_new();
      |   ^~~~~~~~~
      |   pWidget
../ruby/video/xshm.cpp:258:18: error: '_display' was not declared in this scope
  258 |       XShmDetach(_display, &_shmInfo);
      |                  ^~~~~~~~
../ruby/video/xshm.cpp:258:7: error: 'XShmDetach' was not declared in this scope
  258 |       XShmDetach(_display, &_shmInfo);
      |       ^~~~~~~~~~
../hiro/core/../gtk/widget/canvas.cpp:35:15: error: 'gtk_drawing_area_new' was not declared in this scope
   35 |   gtkWidget = gtk_drawing_area_new();
      |               ^~~~~~~~~~~~~~~~~~~~
../ruby/video/xshm.cpp:259:7: error: 'XDestroyImage' was not declared in this scope
  259 |       XDestroyImage(_image);
      |       ^~~~~~~~~~~~~
../ruby/video/xshm.cpp:259:7: note: the macro 'XDestroyImage' had not yet been defined
In file included from ../ruby/input/xlib.cpp:4:
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/Xutil.h:216: note: it was later defined here
  216 | #define XDestroyImage(ximage) \
      | 
In file included from ../ruby/video/xvideo.cpp:5:
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h: At global scope:
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:98:5: error: 'Bool' does not name a type
   98 |     Bool send_event;            /* true if this came from a SendEvent request */
      |     ^~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:98:5: note: the macro 'Bool' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/Xlib.h:78: note: it was later defined here
   78 | #define Bool int
      | 
../hiro/core/../gtk/widget/canvas.cpp:37:5: error: 'GDK_BUTTON_PRESS_MASK' was not declared in this scope
   37 |     GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_EXPOSURE_MASK | GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_POINTER_MOTION_MASK);
      |     ^~~~~~~~~~~~~~~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:99:5: error: 'Display' does not name a type
   99 |     Display *display;           /* Display the event was read from */
      |     ^~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:109:5: error: 'Bool' does not name a type
  109 |     Bool send_event;            /* true if this came from a SendEvent request */
      |     ^~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:109:5: note: the macro 'Bool' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/Xlib.h:78: note: it was later defined here
   78 | #define Bool int
      | 
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:110:5: error: 'Display' does not name a type
  110 |     Display *display;           /* Display the event was read from */
      |     ^~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:161:5: error: 'XPointer' does not name a type
  161 |     XPointer obdata;
      |     ^~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:166:12: warning: 'XvQueryExtension' initialized and declared 'extern'
  166 | extern int XvQueryExtension(
      |            ^~~~~~~~~~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:167:5: error: 'Display' was not declared in this scope
  167 |     Display *                   /* display */,
      |     ^~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:167:46: error: expected primary-expression before ',' token
  167 |     Display *                   /* display */,
      |                                              ^
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:168:5: error: expected primary-expression before 'unsigned'
  168 |     unsigned int *              /* p_version */,
      |     ^~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:169:5: error: expected primary-expression before 'unsigned'
  169 |     unsigned int *              /* p_revision */,
      |     ^~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:170:5: error: expected primary-expression before 'unsigned'
  170 |     unsigned int *              /* p_requestBase */,
      |     ^~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:171:5: error: expected primary-expression before 'unsigned'
  171 |     unsigned int *              /* p_eventBase */,
      |     ^~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:172:5: error: expected primary-expression before 'unsigned'
  172 |     unsigned int *              /* p_errorBase */
      |     ^~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:173:1: error: expression list treated as compound expression in initializer [-fpermissive]
  173 | );
      | ^
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:175:12: warning: 'XvQueryAdaptors' initialized and declared 'extern'
  175 | extern int XvQueryAdaptors(
      |            ^~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/canvas.cpp:37:29: error: 'GDK_BUTTON_RELEASE_MASK' was not declared in this scope
   37 |     GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_EXPOSURE_MASK | GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_POINTER_MOTION_MASK);
      |                             ^~~~~~~~~~~~~~~~~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:176:5: error: 'Display' was not declared in this scope
  176 |     Display *                   /* display */,
      |     ^~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:176:46: error: expected primary-expression before ',' token
  176 |     Display *                   /* display */,
      |                                              ^
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:177:45: error: expected primary-expression before ',' token
  177 |     Window                      /* window */,
      |                                             ^
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:178:5: error: expected primary-expression before 'unsigned'
  178 |     unsigned int *              /* p_nAdaptors */,
      |     ^~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:179:19: error: expected primary-expression before '*' token
  179 |     XvAdaptorInfo **            /* p_pAdaptors */
      |                   ^
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:180:1: error: expected primary-expression before ')' token
  180 | );
      | ^
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:180:1: error: expression list treated as compound expression in initializer [-fpermissive]
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:182:12: warning: 'XvQueryEncodings' initialized and declared 'extern'
  182 | extern int XvQueryEncodings(
      |            ^~~~~~~~~~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:183:5: error: 'Display' was not declared in this scope
  183 |     Display *                   /* display */,
      |     ^~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:183:46: error: expected primary-expression before ',' token
  183 |     Display *                   /* display */,
      |                                              ^
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:184:43: error: expected primary-expression before ',' token
  184 |     XvPortID                    /* port */,
      |                                           ^
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:185:5: error: expected primary-expression before 'unsigned'
  185 |     unsigned int *              /* p_nEncoding */,
      |     ^~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:186:20: error: expected primary-expression before '*' token
  186 |     XvEncodingInfo **           /* p_pEncoding */
      |                    ^
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:187:1: error: expected primary-expression before ')' token
  187 | );
      | ^
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:187:1: error: expression list treated as compound expression in initializer [-fpermissive]
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:189:12: warning: 'XvPutVideo' initialized and declared 'extern'
  189 | extern int XvPutVideo(
      |            ^~~~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:190:5: error: 'Display' was not declared in this scope
  190 |     Display *                   /* display */,
      |     ^~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:190:46: error: expected primary-expression before ',' token
  190 |     Display *                   /* display */,
      |                                              ^
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:191:43: error: expected primary-expression before ',' token
  191 |     XvPortID                    /* port */,
      |                                           ^
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:192:40: error: expected primary-expression before ',' token
  192 |     Drawable                    /* d */,
      |                                        ^
../hiro/core/../gtk/widget/canvas.cpp:37:55: error: 'GDK_EXPOSURE_MASK' was not declared in this scope
   37 |     GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_EXPOSURE_MASK | GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_POINTER_MOTION_MASK);
      |                                                       ^~~~~~~~~~~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:193:5: error: 'GC' was not declared in this scope
  193 |     GC                          /* gc */,
      |     ^~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:194:5: error: expected primary-expression before 'int'
  194 |     int                         /* vx */,
      |     ^~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:195:5: error: expected primary-expression before 'int'
  195 |     int                         /* vy */,
      |     ^~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:196:5: error: expected primary-expression before 'unsigned'
  196 |     unsigned int                /* vw */,
      |     ^~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:197:5: error: expected primary-expression before 'unsigned'
  197 |     unsigned int                /* vh */,
      |     ^~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:198:5: error: expected primary-expression before 'int'
  198 |     int                         /* dx */,
      |     ^~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:199:5: error: expected primary-expression before 'int'
  199 |     int                         /* dy */,
      |     ^~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:200:5: error: expected primary-expression before 'unsigned'
  200 |     unsigned int                /* dw */,
      |     ^~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:201:5: error: expected primary-expression before 'unsigned'
  201 |     unsigned int                /* dh */
      |     ^~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:202:1: error: expression list treated as compound expression in initializer [-fpermissive]
  202 | );
      | ^
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:204:12: warning: 'XvPutStill' initialized and declared 'extern'
  204 | extern int XvPutStill(
      |            ^~~~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:205:5: error: 'Display' was not declared in this scope
  205 |     Display *                   /* display */,
      |     ^~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:205:46: error: expected primary-expression before ',' token
  205 |     Display *                   /* display */,
      |                                              ^
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:206:43: error: expected primary-expression before ',' token
  206 |     XvPortID                    /* port */,
      |                                           ^
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:207:40: error: expected primary-expression before ',' token
  207 |     Drawable                    /* d */,
      |                                        ^
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:208:5: error: 'GC' was not declared in this scope
  208 |     GC                          /* gc */,
      |     ^~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:209:5: error: expected primary-expression before 'int'
  209 |     int                         /* vx */,
      |     ^~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:210:5: error: expected primary-expression before 'int'
  210 |     int                         /* vy */,
      |     ^~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:211:5: error: expected primary-expression before 'unsigned'
  211 |     unsigned int                /* vw */,
      |     ^~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:212:5: error: expected primary-expression before 'unsigned'
  212 |     unsigned int                /* vh */,
      |     ^~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:213:5: error: expected primary-expression before 'int'
  213 |     int                         /* dx */,
      |     ^~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:214:5: error: expected primary-expression before 'int'
  214 |     int                         /* dy */,
      |     ^~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:215:5: error: expected primary-expression before 'unsigned'
  215 |     unsigned int                /* dw */,
      |     ^~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:216:5: error: expected primary-expression before 'unsigned'
  216 |     unsigned int                /* dh */
      |     ^~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:217:1: error: expression list treated as compound expression in initializer [-fpermissive]
  217 | );
      | ^
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:219:12: warning: 'XvGetVideo' initialized and declared 'extern'
  219 | extern int XvGetVideo(
      |            ^~~~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:220:5: error: 'Display' was not declared in this scope
  220 |     Display *                   /* display */,
      |     ^~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:220:46: error: expected primary-expression before ',' token
  220 |     Display *                   /* display */,
      |                                              ^
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:221:43: error: expected primary-expression before ',' token
  221 |     XvPortID                    /* port */,
      |                                           ^
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:222:40: error: expected primary-expression before ',' token
  222 |     Drawable                    /* d */,
      |                                        ^
../hiro/core/../gtk/widget/canvas.cpp:37:75: error: 'GDK_ENTER_NOTIFY_MASK' was not declared in this scope
   37 |     GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_EXPOSURE_MASK | GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_POINTER_MOTION_MASK);
      |                                                                           ^~~~~~~~~~~~~~~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:223:5: error: 'GC' was not declared in this scope
  223 |     GC                          /* gc */,
      |     ^~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:224:5: error: expected primary-expression before 'int'
  224 |     int                         /* vx */,
      |     ^~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:225:5: error: expected primary-expression before 'int'
  225 |     int                         /* vy */,
      |     ^~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:226:5: error: expected primary-expression before 'unsigned'
  226 |     unsigned int                /* vw */,
      |     ^~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:227:5: error: expected primary-expression before 'unsigned'
  227 |     unsigned int                /* vh */,
      |     ^~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:228:5: error: expected primary-expression before 'int'
  228 |     int                         /* dx */,
      |     ^~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:229:5: error: expected primary-expression before 'int'
  229 |     int                         /* dy */,
      |     ^~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:230:5: error: expected primary-expression before 'unsigned'
  230 |     unsigned int                /* dw */,
      |     ^~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:231:5: error: expected primary-expression before 'unsigned'
  231 |     unsigned int                /* dh */
      |     ^~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:232:1: error: expression list treated as compound expression in initializer [-fpermissive]
  232 | );
      | ^
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:234:12: warning: 'XvGetStill' initialized and declared 'extern'
  234 | extern int XvGetStill(
      |            ^~~~~~~~~~
../hiro/core/../gtk/widget/canvas.cpp:37:99: error: 'GDK_LEAVE_NOTIFY_MASK' was not declared in this scope
   37 |     GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_EXPOSURE_MASK | GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_POINTER_MOTION_MASK);
      |                                                                                                   ^~~~~~~~~~~~~~~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:235:5: error: 'Display' was not declared in this scope
  235 |     Display *                   /* display */,
      |     ^~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:235:46: error: expected primary-expression before ',' token
  235 |     Display *                   /* display */,
      |                                              ^
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:236:43: error: expected primary-expression before ',' token
  236 |     XvPortID                    /* port */,
      |                                           ^
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:237:40: error: expected primary-expression before ',' token
  237 |     Drawable                    /* d */,
      |                                        ^
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:238:5: error: 'GC' was not declared in this scope
  238 |     GC                          /* gc */,
      |     ^~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:239:5: error: expected primary-expression before 'int'
  239 |     int                         /* vx */,
      |     ^~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:240:5: error: expected primary-expression before 'int'
  240 |     int                         /* vy */,
      |     ^~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:241:5: error: expected primary-expression before 'unsigned'
  241 |     unsigned int                /* vw */,
      |     ^~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:242:5: error: expected primary-expression before 'unsigned'
  242 |     unsigned int                /* vh */,
      |     ^~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:243:5: error: expected primary-expression before 'int'
  243 |     int                         /* dx */,
      |     ^~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:244:5: error: expected primary-expression before 'int'
  244 |     int                         /* dy */,
      |     ^~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:245:5: error: expected primary-expression before 'unsigned'
  245 |     unsigned int                /* dw */,
      |     ^~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:246:5: error: expected primary-expression before 'unsigned'
  246 |     unsigned int                /* dh */
      |     ^~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:247:1: error: expression list treated as compound expression in initializer [-fpermissive]
  247 | );
      | ^
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:249:12: warning: 'XvStopVideo' initialized and declared 'extern'
  249 | extern int XvStopVideo(
      |            ^~~~~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:250:5: error: 'Display' was not declared in this scope
  250 |     Display *                   /* display */,
      |     ^~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:250:46: error: expected primary-expression before ',' token
  250 |     Display *                   /* display */,
      |                                              ^
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:251:43: error: expected primary-expression before ',' token
  251 |     XvPortID                    /* port */,
      |                                           ^
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:253:1: error: expected primary-expression before ')' token
  253 | );
      | ^
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:253:1: error: expression list treated as compound expression in initializer [-fpermissive]
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:255:12: warning: 'XvGrabPort' initialized and declared 'extern'
  255 | extern int XvGrabPort(
      |            ^~~~~~~~~~
../hiro/core/../gtk/widget/canvas.cpp:37:123: error: 'GDK_POINTER_MOTION_MASK' was not declared in this scope
   37 |     GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_EXPOSURE_MASK | GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_POINTER_MOTION_MASK);
      |                                                                                                                           ^~~~~~~~~~~~~~~~~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:256:5: error: 'Display' was not declared in this scope
  256 |     Display *                   /* display */,
      |     ^~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:256:46: error: expected primary-expression before ',' token
  256 |     Display *                   /* display */,
      |                                              ^
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:257:43: error: expected primary-expression before ',' token
  257 |     XvPortID                    /* port */,
      |                                           ^
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:259:1: error: expected primary-expression before ')' token
  259 | );
      | ^
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:259:1: error: expression list treated as compound expression in initializer [-fpermissive]
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:261:12: warning: 'XvUngrabPort' initialized and declared 'extern'
  261 | extern int XvUngrabPort(
      |            ^~~~~~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:262:5: error: 'Display' was not declared in this scope
  262 |     Display *                   /* display */,
      |     ^~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:262:46: error: expected primary-expression before ',' token
  262 |     Display *                   /* display */,
      |                                              ^
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:263:43: error: expected primary-expression before ',' token
  263 |     XvPortID                    /* port */,
      |                                           ^
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:265:1: error: expected primary-expression before ')' token
  265 | );
      | ^
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:265:1: error: expression list treated as compound expression in initializer [-fpermissive]
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:267:12: warning: 'XvSelectVideoNotify' initialized and declared 'extern'
  267 | extern int XvSelectVideoNotify(
      |            ^~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/canvas.cpp:36:3: error: 'gtk_widget_add_events' was not declared in this scope
   36 |   gtk_widget_add_events(gtkWidget,
      |   ^~~~~~~~~~~~~~~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:268:5: error: 'Display' was not declared in this scope
  268 |     Display *                   /* display */,
      |     ^~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:268:46: error: expected primary-expression before ',' token
  268 |     Display *                   /* display */,
      |                                              ^
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:269:47: error: expected primary-expression before ',' token
  269 |     Drawable                    /* drawable */,
      |                                               ^
../hiro/core/../gtk/widget/canvas.cpp:46:20: error: 'G_OBJECT' was not declared in this scope
   46 |   g_signal_connect(G_OBJECT(gtkWidget), "button-press-event", G_CALLBACK(Canvas_mousePress), (gpointer)this);
      |                    ^~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:270:5: error: 'Bool' was not declared in this scope
  270 |     Bool                        /* onoff */
      |     ^~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:270:5: note: the macro 'Bool' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/Xlib.h:78: note: it was later defined here
   78 | #define Bool int
      | 
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:271:1: error: expression list treated as compound expression in initializer [-fpermissive]
  271 | );
      | ^
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:273:12: warning: 'XvSelectPortNotify' initialized and declared 'extern'
  273 | extern int XvSelectPortNotify(
      |            ^~~~~~~~~~~~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:274:5: error: 'Display' was not declared in this scope
  274 |     Display *                   /* display */,
      |     ^~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:274:46: error: expected primary-expression before ',' token
  274 |     Display *                   /* display */,
      |                                              ^
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:275:43: error: expected primary-expression before ',' token
  275 |     XvPortID                    /* port */,
      |                                           ^
../hiro/core/../gtk/widget/canvas.cpp:46:63: error: 'G_CALLBACK' was not declared in this scope
   46 |   g_signal_connect(G_OBJECT(gtkWidget), "button-press-event", G_CALLBACK(Canvas_mousePress), (gpointer)this);
      |                                                               ^~~~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:276:5: error: 'Bool' was not declared in this scope
  276 |     Bool                        /* onoff */
      |     ^~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:276:5: note: the macro 'Bool' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/Xlib.h:78: note: it was later defined here
   78 | #define Bool int
      | 
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:277:1: error: expression list treated as compound expression in initializer [-fpermissive]
  277 | );
      | ^
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:279:12: warning: 'XvSetPortAttribute' initialized and declared 'extern'
  279 | extern int XvSetPortAttribute(
      |            ^~~~~~~~~~~~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:280:5: error: 'Display' was not declared in this scope
  280 |     Display *                   /* display */,
      |     ^~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:280:46: error: expected primary-expression before ',' token
  280 |     Display *                   /* display */,
      |                                              ^
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:281:43: error: expected primary-expression before ',' token
  281 |     XvPortID                    /* port */,
      |                                           ^
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:282:48: error: expected primary-expression before ',' token
  282 |     Atom                        /* attribute */,
      |                                                ^
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:283:5: error: expected primary-expression before 'int'
  283 |     int                         /* value */
      |     ^~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:284:1: error: expression list treated as compound expression in initializer [-fpermissive]
  284 | );
      | ^
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:286:12: warning: 'XvGetPortAttribute' initialized and declared 'extern'
  286 | extern int XvGetPortAttribute(
      |            ^~~~~~~~~~~~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:287:5: error: 'Display' was not declared in this scope
  287 |     Display *                   /* display */,
      |     ^~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:287:46: error: expected primary-expression before ',' token
  287 |     Display *                   /* display */,
      |                                              ^
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:288:43: error: expected primary-expression before ',' token
  288 |     XvPortID                    /* port */,
      |                                           ^
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:289:48: error: expected primary-expression before ',' token
  289 |     Atom                        /* attribute */,
      |                                                ^
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:290:5: error: expected primary-expression before 'int'
  290 |     int *                       /* p_value */
      |     ^~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:291:1: error: expression list treated as compound expression in initializer [-fpermissive]
  291 | );
      | ^
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:293:12: warning: 'XvQueryBestSize' initialized and declared 'extern'
  293 | extern int XvQueryBestSize(
      |            ^~~~~~~~~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:294:5: error: 'Display' was not declared in this scope
  294 |     Display *                   /* display */,
      |     ^~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:294:46: error: expected primary-expression before ',' token
  294 |     Display *                   /* display */,
      |                                              ^
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:295:43: error: expected primary-expression before ',' token
  295 |     XvPortID                    /* port */,
      |                                           ^
../hiro/core/../gtk/widget/canvas.cpp:46:95: error: 'gpointer' was not declared in this scope
   46 |   g_signal_connect(G_OBJECT(gtkWidget), "button-press-event", G_CALLBACK(Canvas_mousePress), (gpointer)this);
      |                                                                                               ^~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:296:5: error: 'Bool' was not declared in this scope
  296 |     Bool                        /* motion */,
      |     ^~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:296:5: note: the macro 'Bool' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/Xlib.h:78: note: it was later defined here
   78 | #define Bool int
      | 
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:297:5: error: expected primary-expression before 'unsigned'
  297 |     unsigned int                /* vid_w */,
      |     ^~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:298:5: error: expected primary-expression before 'unsigned'
  298 |     unsigned int                /* vid_h */,
      |     ^~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:299:5: error: expected primary-expression before 'unsigned'
  299 |     unsigned int                /* drw_w */,
      |     ^~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:300:5: error: expected primary-expression before 'unsigned'
  300 |     unsigned int                /* drw_h */,
      |     ^~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:301:5: error: expected primary-expression before 'unsigned'
  301 |     unsigned int *              /* p_actual_width */,
      |     ^~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:302:5: error: expected primary-expression before 'unsigned'
  302 |     unsigned int *              /* p_actual_width */
      |     ^~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:303:1: error: expression list treated as compound expression in initializer [-fpermissive]
  303 | );
      | ^
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:305:21: warning: 'XvQueryPortAttributes' initialized and declared 'extern'
  305 | extern XvAttribute *XvQueryPortAttributes(
      |                     ^~~~~~~~~~~~~~~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:306:5: error: 'Display' was not declared in this scope
  306 |     Display *                   /* display */,
      |     ^~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:306:46: error: expected primary-expression before ',' token
  306 |     Display *                   /* display */,
      |                                              ^
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:307:43: error: expected primary-expression before ',' token
  307 |     XvPortID                    /* port */,
      |                                           ^
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:308:5: error: expected primary-expression before 'int'
  308 |     int *                       /* number */
      |     ^~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:309:1: error: expression list treated as compound expression in initializer [-fpermissive]
  309 | );
      | ^
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:321:29: warning: 'XvListImageFormats' initialized and declared 'extern'
  321 | extern XvImageFormatValues *XvListImageFormats (
      |                             ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/canvas.cpp:46:3: error: 'g_signal_connect' was not declared in this scope
   46 |   g_signal_connect(G_OBJECT(gtkWidget), "button-press-event", G_CALLBACK(Canvas_mousePress), (gpointer)this);
      |   ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/canvas.cpp:47:108: error: expected ')' before 'this'
   47 |   g_signal_connect(G_OBJECT(gtkWidget), "button-release-event", G_CALLBACK(Widget_mouseRelease), (gpointer)this);
      |                   ~                                                                                        ^~~~
      |                                                                                                            )
../hiro/core/../gtk/widget/canvas.cpp:48:98: error: expected ')' before 'this'
   48 |   g_signal_connect(G_OBJECT(gtkWidget), "drag-data-received", G_CALLBACK(Widget_drop), (gpointer)this);
      |                   ~                                                                              ^~~~
      |                                                                                                  )
../hiro/core/../gtk/widget/canvas.cpp:52:84: error: expected ')' before 'this'
   52 |   g_signal_connect(G_OBJECT(gtkWidget), "draw", G_CALLBACK(Canvas_draw), (gpointer)this);
      |                   ~                                                                ^~~~
      |                                                                                    )
../hiro/core/../gtk/widget/canvas.cpp:54:99: error: expected ')' before 'this'
   54 |   g_signal_connect(G_OBJECT(gtkWidget), "key-press-event", G_CALLBACK(Canvas_keyPress), (gpointer)this);
      |                   ~                                                                               ^~~~
      |                                                                                                   )
../hiro/core/../gtk/widget/canvas.cpp:55:104: error: expected ')' before 'this'
   55 |   g_signal_connect(G_OBJECT(gtkWidget), "enter-notify-event", G_CALLBACK(Widget_mouseEnter), (gpointer)this);
      |                   ~                                                                                    ^~~~
      |                                                                                                        )
../hiro/core/../gtk/widget/canvas.cpp:56:104: error: expected ')' before 'this'
   56 |   g_signal_connect(G_OBJECT(gtkWidget), "leave-notify-event", G_CALLBACK(Widget_mouseLeave), (gpointer)this);
      |                   ~                                                                                    ^~~~
      |                                                                                                        )
../hiro/core/../gtk/widget/canvas.cpp:57:104: error: expected ')' before 'this'
   57 |   g_signal_connect(G_OBJECT(gtkWidget), "motion-notify-event", G_CALLBACK(Widget_mouseMove), (gpointer)this);
      |                   ~                                                                                    ^~~~
      |                                                                                                        )
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:322:5: error: 'Display' was not declared in this scope
  322 |     Display     *display,
      |     ^~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:323:17: error: expected primary-expression before 'port_id'
  323 |     XvPortID    port_id,
      |                 ^~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:324:5: error: expected primary-expression before 'int'
  324 |     int         *count_return
      |     ^~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:325:1: error: expression list treated as compound expression in initializer [-fpermissive]
  325 | );
      | ^
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:327:17: warning: 'XvCreateImage' initialized and declared 'extern'
  327 | extern XvImage *XvCreateImage (
      |                 ^~~~~~~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:328:5: error: 'Display' was not declared in this scope
  328 |     Display *display,
      |     ^~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:329:14: error: expected primary-expression before 'port'
  329 |     XvPortID port,
      |              ^~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:330:5: error: expected primary-expression before 'int'
  330 |     int id,
      |     ^~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:331:5: error: expected primary-expression before 'char'
  331 |     char *data,
      |     ^~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:332:5: error: expected primary-expression before 'int'
  332 |     int width,
      |     ^~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:333:5: error: expected primary-expression before 'int'
  333 |     int height
      |     ^~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:334:1: error: expression list treated as compound expression in initializer [-fpermissive]
  334 | );
      | ^
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:336:12: warning: 'XvPutImage' initialized and declared 'extern'
  336 | extern int XvPutImage (
      |            ^~~~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:337:5: error: 'Display' was not declared in this scope
  337 |     Display *display,
      |     ^~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:338:14: error: expected primary-expression before 'id'
  338 |     XvPortID id,
      |              ^~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:339:14: error: expected primary-expression before 'd'
  339 |     Drawable d,
      |              ^
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:340:5: error: 'GC' was not declared in this scope
  340 |     GC gc,
      |     ^~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:341:13: error: expected primary-expression before '*' token
  341 |     XvImage *image,
      |             ^
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:341:19: error: expected primary-expression before ',' token
  341 |     XvImage *image,
      |                   ^
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:342:5: error: expected primary-expression before 'int'
  342 |     int src_x,
      |     ^~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:343:5: error: expected primary-expression before 'int'
  343 |     int src_y,
      |     ^~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:344:5: error: expected primary-expression before 'unsigned'
  344 |     unsigned int src_w,
      |     ^~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:345:5: error: expected primary-expression before 'unsigned'
  345 |     unsigned int src_h,
      |     ^~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:346:5: error: expected primary-expression before 'int'
  346 |     int dest_x,
      |     ^~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:347:5: error: expected primary-expression before 'int'
  347 |     int dest_y,
      |     ^~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:348:5: error: expected primary-expression before 'unsigned'
  348 |     unsigned int dest_w,
      |     ^~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:349:5: error: expected primary-expression before 'unsigned'
  349 |     unsigned int dest_h
      |     ^~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:350:1: error: expression list treated as compound expression in initializer [-fpermissive]
  350 | );
      | ^
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:352:12: warning: 'XvShmPutImage' initialized and declared 'extern'
  352 | extern int XvShmPutImage (
      |            ^~~~~~~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:353:5: error: 'Display' was not declared in this scope
  353 |     Display *display,
      |     ^~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:354:14: error: expected primary-expression before 'id'
  354 |     XvPortID id,
      |              ^~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:355:14: error: expected primary-expression before 'd'
  355 |     Drawable d,
      |              ^
../hiro/core/../gtk/widget/canvas.cpp: In member function 'virtual void hiro::pCanvas::destruct()':
../hiro/core/../gtk/widget/canvas.cpp:64:6: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   64 |   if(gtkWidget) gtk_widget_destroy(gtkWidget), gtkWidget = nullptr;
      |      ^~~~~~~~~
      |      pWidget
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:356:5: error: 'GC' was not declared in this scope
  356 |     GC gc,
      |     ^~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:357:13: error: expected primary-expression before '*' token
  357 |     XvImage *image,
      |             ^
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:357:19: error: expected primary-expression before ',' token
  357 |     XvImage *image,
      |                   ^
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:358:5: error: expected primary-expression before 'int'
  358 |     int src_x,
      |     ^~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:359:5: error: expected primary-expression before 'int'
  359 |     int src_y,
      |     ^~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:360:5: error: expected primary-expression before 'unsigned'
  360 |     unsigned int src_w,
      |     ^~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:361:5: error: expected primary-expression before 'unsigned'
  361 |     unsigned int src_h,
      |     ^~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:362:5: error: expected primary-expression before 'int'
  362 |     int dest_x,
      |     ^~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:363:5: error: expected primary-expression before 'int'
  363 |     int dest_y,
      |     ^~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:364:5: error: expected primary-expression before 'unsigned'
  364 |     unsigned int dest_w,
      |     ^~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:365:5: error: expected primary-expression before 'unsigned'
  365 |     unsigned int dest_h,
      |     ^~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:366:5: error: 'Bool' was not declared in this scope
  366 |     Bool send_event
      |     ^~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:366:5: note: the macro 'Bool' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/Xlib.h:78: note: it was later defined here
   78 | #define Bool int
      | 
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:367:1: error: expression list treated as compound expression in initializer [-fpermissive]
  367 | );
      | ^
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:369:17: warning: 'XvShmCreateImage' initialized and declared 'extern'
  369 | extern XvImage *XvShmCreateImage (
      |                 ^~~~~~~~~~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:370:5: error: 'Display' was not declared in this scope
  370 |     Display *display,
      |     ^~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:371:14: error: expected primary-expression before 'port'
  371 |     XvPortID port,
      |              ^~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:372:5: error: expected primary-expression before 'int'
  372 |     int id,
      |     ^~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:373:5: error: expected primary-expression before 'char'
  373 |     char *data,
      |     ^~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:374:5: error: expected primary-expression before 'int'
  374 |     int width,
      |     ^~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:375:5: error: expected primary-expression before 'int'
  375 |     int height,
      |     ^~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:376:21: error: expected primary-expression before '*' token
  376 |     XShmSegmentInfo *shminfo
      |                     ^
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:376:22: error: 'shminfo' was not declared in this scope; did you mean 'siginfo'?
  376 |     XShmSegmentInfo *shminfo
      |                      ^~~~~~~
      |                      siginfo
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:377:1: error: expression list treated as compound expression in initializer [-fpermissive]
  377 | );
      | ^
../ruby/video/xvideo.cpp:7:17: warning: 'XvShmCreateImage' initialized and declared 'extern'
    7 | extern "C" auto XvShmCreateImage(Display*, XvPortID, int, char*, int, int, XShmSegmentInfo*) -> XvImage*;
      |                 ^~~~~~~~~~~~~~~~
../ruby/video/xvideo.cpp:7:17: error: conflicting declaration 'auto XvShmCreateImage'
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/extensions/Xvlib.h:369:17: note: previous declaration as 'XvImage* XvShmCreateImage'
  369 | extern XvImage *XvShmCreateImage (
      |                 ^~~~~~~~~~~~~~~~
../ruby/video/xvideo.cpp:7:34: error: 'Display' was not declared in this scope
    7 | extern "C" auto XvShmCreateImage(Display*, XvPortID, int, char*, int, int, XShmSegmentInfo*) -> XvImage*;
      |                                  ^~~~~~~
../ruby/video/xvideo.cpp:7:42: error: expected primary-expression before ',' token
    7 | extern "C" auto XvShmCreateImage(Display*, XvPortID, int, char*, int, int, XShmSegmentInfo*) -> XvImage*;
      |                                          ^
../ruby/video/xvideo.cpp:7:52: error: expected primary-expression before ',' token
    7 | extern "C" auto XvShmCreateImage(Display*, XvPortID, int, char*, int, int, XShmSegmentInfo*) -> XvImage*;
      |                                                    ^
../ruby/video/xvideo.cpp:7:54: error: expected primary-expression before 'int'
    7 | extern "C" auto XvShmCreateImage(Display*, XvPortID, int, char*, int, int, XShmSegmentInfo*) -> XvImage*;
      |                                                      ^~~
../ruby/video/xvideo.cpp:7:59: error: expected primary-expression before 'char'
    7 | extern "C" auto XvShmCreateImage(Display*, XvPortID, int, char*, int, int, XShmSegmentInfo*) -> XvImage*;
      |                                                           ^~~~
../ruby/video/xvideo.cpp:7:66: error: expected primary-expression before 'int'
    7 | extern "C" auto XvShmCreateImage(Display*, XvPortID, int, char*, int, int, XShmSegmentInfo*) -> XvImage*;
      |                                                                  ^~~
../ruby/video/xvideo.cpp:7:71: error: expected primary-expression before 'int'
    7 | extern "C" auto XvShmCreateImage(Display*, XvPortID, int, char*, int, int, XShmSegmentInfo*) -> XvImage*;
      |                                                                       ^~~
../ruby/video/xvideo.cpp:7:91: error: expected primary-expression before '*' token
    7 | extern "C" auto XvShmCreateImage(Display*, XvPortID, int, char*, int, int, XShmSegmentInfo*) -> XvImage*;
      |                                                                                           ^
../ruby/video/xvideo.cpp:7:92: error: expected primary-expression before ')' token
    7 | extern "C" auto XvShmCreateImage(Display*, XvPortID, int, char*, int, int, XShmSegmentInfo*) -> XvImage*;
      |                                                                                            ^
../hiro/core/../gtk/widget/canvas.cpp:64:17: error: 'gtk_widget_destroy' was not declared in this scope
   64 |   if(gtkWidget) gtk_widget_destroy(gtkWidget), gtkWidget = nullptr;
      |                 ^~~~~~~~~~~~~~~~~~
../ruby/video/xvideo.cpp:549:3: error: 'Display' does not name a type
  549 |   Display* _display = nullptr;
      |   ^~~~~~~
../ruby/video/xvideo.cpp:555:3: error: 'GC' does not name a type
  555 |   GC _gc = 0;
      |   ^~
../hiro/core/../gtk/widget/canvas.cpp:65:3: error: 'gtkParent' was not declared in this scope
   65 |   gtkParent = nullptr;
      |   ^~~~~~~~~
../hiro/core/../gtk/widget/canvas.cpp: In member function 'virtual void hiro::pCanvas::setFocusable(bool)':
../hiro/core/../gtk/widget/canvas.cpp:94:28: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   94 |   gtk_widget_set_can_focus(gtkWidget, focusable);
      |                            ^~~~~~~~~
      |                            pWidget
../ruby/video/xvideo.cpp: In member function 'virtual bool VideoXVideo::setBlocking(bool)':
../ruby/video/xvideo.cpp:46:5: error: 'Display' was not declared in this scope
   46 |     Display* display = XOpenDisplay(nullptr);
      |     ^~~~~~~
../hiro/core/../gtk/widget/canvas.cpp:94:3: error: 'gtk_widget_set_can_focus' was not declared in this scope
   94 |   gtk_widget_set_can_focus(gtkWidget, focusable);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/canvas.cpp: At global scope:
../hiro/core/../gtk/widget/canvas.cpp:115:6: error: 'auto hiro::pCanvas::_onDraw' is not a static data member of 'struct hiro::pCanvas'
  115 | auto pCanvas::_onDraw(cairo_t* context) -> void {
      |      ^~~~~~~
../ruby/video/xvideo.cpp:46:24: error: 'XOpenDisplay' was not declared in this scope
   46 |     Display* display = XOpenDisplay(nullptr);
      |                        ^~~~~~~~~~~~
../hiro/core/../gtk/widget/canvas.cpp:115:23: error: 'cairo_t' was not declared in this scope
  115 | auto pCanvas::_onDraw(cairo_t* context) -> void {
      |                       ^~~~~~~
../hiro/core/../gtk/widget/canvas.cpp:115:32: error: 'context' was not declared in this scope; did you mean 'ucontext'?
  115 | auto pCanvas::_onDraw(cairo_t* context) -> void {
      |                                ^~~~~~~
      |                                ucontext
../hiro/core/../gtk/widget/canvas.cpp:115:41: error: expected ',' or ';' before '->' token
  115 | auto pCanvas::_onDraw(cairo_t* context) -> void {
      |                                         ^~
../hiro/core/../gtk/widget/canvas.cpp:146:6: error: 'auto hiro::pCanvas::_onExpose' is not a static data member of 'struct hiro::pCanvas'
  146 | auto pCanvas::_onExpose(GdkEventExpose* expose) -> void {
      |      ^~~~~~~
../hiro/core/../gtk/widget/canvas.cpp:146:25: error: 'GdkEventExpose' was not declared in this scope
  146 | auto pCanvas::_onExpose(GdkEventExpose* expose) -> void {
      |                         ^~~~~~~~~~~~~~
../hiro/core/../gtk/widget/canvas.cpp:146:41: error: 'expose' was not declared in this scope; did you mean 'export'?
  146 | auto pCanvas::_onExpose(GdkEventExpose* expose) -> void {
      |                                         ^~~~~~
      |                                         export
../hiro/core/../gtk/widget/canvas.cpp:146:49: error: expected ',' or ';' before '->' token
  146 | auto pCanvas::_onExpose(GdkEventExpose* expose) -> void {
      |                                                 ^~
../hiro/core/../gtk/widget/canvas.cpp: In member function 'void hiro::pCanvas::_rasterize()':
../hiro/core/../gtk/widget/canvas.cpp:171:7: error: 'surface' was not declared in this scope
  171 |   if(!surface) surface = gdk_pixbuf_new(GDK_COLORSPACE_RGB, true, 8, width, height);
      |       ^~~~~~~
../hiro/core/../gtk/widget/canvas.cpp:171:41: error: 'GDK_COLORSPACE_RGB' was not declared in this scope
  171 |   if(!surface) surface = gdk_pixbuf_new(GDK_COLORSPACE_RGB, true, 8, width, height);
      |                                         ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/canvas.cpp:171:26: error: 'gdk_pixbuf_new' was not declared in this scope
  171 |   if(!surface) surface = gdk_pixbuf_new(GDK_COLORSPACE_RGB, true, 8, width, height);
      |                          ^~~~~~~~~~~~~~
../ruby/video/xvideo.cpp:47:17: error: 'XInternAtom' was not declared in this scope
   47 |     Atom atom = XInternAtom(display, "XV_SYNC_TO_VBLANK", true);
      |                 ^~~~~~~~~~~
../ruby/video/xvideo.cpp:49:25: error: 'XvSetPortAttribute' cannot be used as a function
   49 |       XvSetPortAttribute(display, _port, atom, self.blocking);
      |       ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/canvas.cpp:172:50: error: 'surface' was not declared in this scope
  172 |   auto buffer = (uint32_t*)gdk_pixbuf_get_pixels(surface);
      |                                                  ^~~~~~~
../ruby/video/xvideo.cpp:52:5: error: 'XCloseDisplay' was not declared in this scope
   52 |     XCloseDisplay(display);
      |     ^~~~~~~~~~~~~
../ruby/video/xvideo.cpp: In member function 'virtual void VideoXVideo::size(uint&, uint&)':
../ruby/video/xvideo.cpp:76:7: error: 'XWindowAttributes' was not declared in this scope
   76 |       XWindowAttributes parent;
      |       ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/canvas.cpp:172:28: error: 'gdk_pixbuf_get_pixels' was not declared in this scope
  172 |   auto buffer = (uint32_t*)gdk_pixbuf_get_pixels(surface);
      |                            ^~~~~~~~~~~~~~~~~~~~~
../ruby/video/xvideo.cpp:77:28: error: '_display' was not declared in this scope
   77 |       XGetWindowAttributes(_display, _parent, &parent);
      |                            ^~~~~~~~
../ruby/video/xvideo.cpp:77:48: error: 'parent' was not declared in this scope; did you mean '_parent'?
   77 |       XGetWindowAttributes(_display, _parent, &parent);
      |                                                ^~~~~~
      |                                                _parent
../hiro/core/../gtk/widget/canvas.cpp: In member function 'void hiro::pCanvas::_redraw()':
../hiro/core/../gtk/widget/canvas.cpp:196:30: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
  196 |   if(gtk_widget_get_realized(gtkWidget)) {
      |                              ^~~~~~~~~
      |                              pWidget
../ruby/video/xvideo.cpp:77:7: error: 'XGetWindowAttributes' was not declared in this scope
   77 |       XGetWindowAttributes(_display, _parent, &parent);
      |       ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/canvas.cpp:196:6: error: 'gtk_widget_get_realized' was not declared in this scope
  196 |   if(gtk_widget_get_realized(gtkWidget)) {
      |      ^~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/canvas.cpp:197:32: error: 'gtk_widget_get_window' was not declared in this scope
  197 |     gdk_window_invalidate_rect(gtk_widget_get_window(gtkWidget), nullptr, true);
      |                                ^~~~~~~~~~~~~~~~~~~~~
../ruby/video/xvideo.cpp: In member function 'virtual void VideoXVideo::output(uint, uint)':
../ruby/video/xvideo.cpp:93:5: error: 'XWindowAttributes' was not declared in this scope
   93 |     XWindowAttributes window;
      |     ^~~~~~~~~~~~~~~~~
../ruby/video/xvideo.cpp:94:26: error: '_display' was not declared in this scope
   94 |     XGetWindowAttributes(_display, _window, &window);
      |                          ^~~~~~~~
../ruby/video/xvideo.cpp:94:46: error: 'window' was not declared in this scope; did you mean 'Window'?
   94 |     XGetWindowAttributes(_display, _window, &window);
      |                                              ^~~~~~
      |                                              Window
../hiro/core/../gtk/widget/canvas.cpp:197:5: error: 'gdk_window_invalidate_rect' was not declared in this scope
  197 |     gdk_window_invalidate_rect(gtk_widget_get_window(gtkWidget), nullptr, true);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~
../ruby/video/xvideo.cpp:94:5: error: 'XGetWindowAttributes' was not declared in this scope
   94 |     XGetWindowAttributes(_display, _window, &window);
      |     ^~~~~~~~~~~~~~~~~~~~
../ruby/video/xvideo.cpp:96:23: error: expected ';' before 'parent'
   96 |     XWindowAttributes parent;
      |                       ^~~~~~
../hiro/core/../gtk/widget/canvas.cpp: In member function 'void hiro::pCanvas::_release()':
../hiro/core/../gtk/widget/canvas.cpp:202:6: error: 'surface' was not declared in this scope
  202 |   if(surface) {
      |      ^~~~~~~
../ruby/video/xvideo.cpp:97:46: error: 'parent' was not declared in this scope; did you mean '_parent'?
   97 |     XGetWindowAttributes(_display, _parent, &parent);
      |                                              ^~~~~~
      |                                              _parent
../hiro/core/../gtk/widget/canvas.cpp:203:5: error: 'g_object_unref' was not declared in this scope
  203 |     g_object_unref(surface);
      |     ^~~~~~~~~~~~~~
In file included from ../hiro/core/../gtk/platform.cpp:33:
../hiro/core/../gtk/widget/check-button.cpp: At global scope:
../hiro/core/../gtk/widget/check-button.cpp:5:32: error: 'GtkToggleButton' was not declared in this scope
    5 | static auto CheckButton_toggle(GtkToggleButton* toggleButton, pCheckButton* p) -> void {
      |                                ^~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/check-button.cpp:5:49: error: 'toggleButton' was not declared in this scope
    5 | static auto CheckButton_toggle(GtkToggleButton* toggleButton, pCheckButton* p) -> void {
      |                                                 ^~~~~~~~~~~~
../hiro/core/../gtk/widget/check-button.cpp:5:75: error: expected primary-expression before '*' token
    5 | static auto CheckButton_toggle(GtkToggleButton* toggleButton, pCheckButton* p) -> void {
      |                                                                           ^
../hiro/core/../gtk/widget/check-button.cpp:5:77: error: 'p' was not declared in this scope
    5 | static auto CheckButton_toggle(GtkToggleButton* toggleButton, pCheckButton* p) -> void {
      |                                                                             ^
../hiro/core/../gtk/widget/check-button.cpp:5:78: error: expression list treated as compound expression in initializer [-fpermissive]
    5 | static auto CheckButton_toggle(GtkToggleButton* toggleButton, pCheckButton* p) -> void {
      |                                                                              ^
../hiro/core/../gtk/widget/check-button.cpp:5:80: error: expected ',' or ';' before '->' token
    5 | static auto CheckButton_toggle(GtkToggleButton* toggleButton, pCheckButton* p) -> void {
      |                                                                                ^~
../ruby/video/xvideo.cpp:100:7: error: 'XResizeWindow' was not declared in this scope
  100 |       XResizeWindow(_display, _window, parent.width, parent.height);
      |       ^~~~~~~~~~~~~
../ruby/video/xvideo.cpp:130:45: error: '_gc' was not declared in this scope
  130 |     XvShmPutImage(_display, _port, _window, _gc, _image,
      |                                             ^~~
../ruby/video/xvideo.cpp:130:18: error: 'XvShmPutImage' cannot be used as a function
  130 |     XvShmPutImage(_display, _port, _window, _gc, _image,
      |     ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  131 |       0, 0, _width, _height,
      |       ~~~~~~~~~~~~~~~~~~~~~~
  132 |       x, y, width, height,
      |       ~~~~~~~~~~~~~~~~~~~~
  133 |       true);
      |       ~~~~~       
../hiro/core/../gtk/widget/check-button.cpp: In member function 'virtual void hiro::pCheckButton::construct()':
../hiro/core/../gtk/widget/check-button.cpp:11:3: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   11 |   gtkWidget = gtk_toggle_button_new();
      |   ^~~~~~~~~
      |   pWidget
../ruby/video/xvideo.cpp: In member function 'virtual void VideoXVideo::poll()':
../ruby/video/xvideo.cpp:137:20: error: '_display' was not declared in this scope
  137 |     while(XPending(_display)) {
      |                    ^~~~~~~~
../hiro/core/../gtk/widget/check-button.cpp:11:15: error: 'gtk_toggle_button_new' was not declared in this scope
   11 |   gtkWidget = gtk_toggle_button_new();
      |               ^~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/check-button.cpp:19:20: error: 'G_OBJECT' was not declared in this scope
   19 |   g_signal_connect(G_OBJECT(gtkWidget), "toggled", G_CALLBACK(CheckButton_toggle), (gpointer)this);
      |                    ^~~~~~~~
../ruby/video/xvideo.cpp:137:11: error: 'XPending' was not declared in this scope; did you mean 'sigpending'?
  137 |     while(XPending(_display)) {
      |           ^~~~~~~~
      |           sigpending
../ruby/video/xvideo.cpp:138:7: error: 'XEvent' was not declared in this scope; did you mean 'XvEvent'?
  138 |       XEvent event;
      |       ^~~~~~
      |       XvEvent
../hiro/core/../gtk/widget/check-button.cpp:19:52: error: 'G_CALLBACK' was not declared in this scope
   19 |   g_signal_connect(G_OBJECT(gtkWidget), "toggled", G_CALLBACK(CheckButton_toggle), (gpointer)this);
      |                                                    ^~~~~~~~~~
../ruby/video/xvideo.cpp:139:29: error: 'event' was not declared in this scope; did you mean 'servent'?
  139 |       XNextEvent(_display, &event);
      |                             ^~~~~
      |                             servent
../hiro/core/../gtk/widget/check-button.cpp:19:85: error: 'gpointer' was not declared in this scope
   19 |   g_signal_connect(G_OBJECT(gtkWidget), "toggled", G_CALLBACK(CheckButton_toggle), (gpointer)this);
      |                                                                                     ^~~~~~~~
../hiro/core/../gtk/widget/check-button.cpp:19:3: error: 'g_signal_connect' was not declared in this scope
   19 |   g_signal_connect(G_OBJECT(gtkWidget), "toggled", G_CALLBACK(CheckButton_toggle), (gpointer)this);
      |   ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/check-button.cpp: In member function 'virtual void hiro::pCheckButton::destruct()':
../hiro/core/../gtk/widget/check-button.cpp:25:22: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   25 |   gtk_widget_destroy(gtkWidget);
      |                      ^~~~~~~~~
      |                      pWidget
../hiro/core/../gtk/widget/check-button.cpp:25:3: error: 'gtk_widget_destroy' was not declared in this scope
   25 |   gtk_widget_destroy(gtkWidget);
      |   ^~~~~~~~~~~~~~~~~~
../ruby/video/xvideo.cpp:139:7: error: 'XNextEvent' was not declared in this scope; did you mean 'XvEvent'?
  139 |       XNextEvent(_display, &event);
      |       ^~~~~~~~~~
      |       XvEvent
../hiro/core/../gtk/widget/check-button.cpp: In member function 'void hiro::pCheckButton::setBordered(bool)':
../hiro/core/../gtk/widget/check-button.cpp:45:36: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   45 |   gtk_button_set_relief(GTK_BUTTON(gtkWidget), bordered ? GTK_RELIEF_NORMAL : GTK_RELIEF_NONE);
      |                                    ^~~~~~~~~
      |                                    pWidget
../hiro/core/../gtk/widget/check-button.cpp:45:25: error: 'GTK_BUTTON' was not declared in this scope
   45 |   gtk_button_set_relief(GTK_BUTTON(gtkWidget), bordered ? GTK_RELIEF_NORMAL : GTK_RELIEF_NONE);
      |                         ^~~~~~~~~~
../hiro/core/../gtk/widget/check-button.cpp:45:59: error: 'GTK_RELIEF_NORMAL' was not declared in this scope
   45 |   gtk_button_set_relief(GTK_BUTTON(gtkWidget), bordered ? GTK_RELIEF_NORMAL : GTK_RELIEF_NONE);
      |                                                           ^~~~~~~~~~~~~~~~~
../ruby/video/xvideo.cpp:141:9: error: 'XWindowAttributes' was not declared in this scope
  141 |         XWindowAttributes attributes;
      |         ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/check-button.cpp:45:79: error: 'GTK_RELIEF_NONE' was not declared in this scope
   45 |   gtk_button_set_relief(GTK_BUTTON(gtkWidget), bordered ? GTK_RELIEF_NORMAL : GTK_RELIEF_NONE);
      |                                                                               ^~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/check-button.cpp:45:3: error: 'gtk_button_set_relief' was not declared in this scope
   45 |   gtk_button_set_relief(GTK_BUTTON(gtkWidget), bordered ? GTK_RELIEF_NORMAL : GTK_RELIEF_NONE);
      |   ^~~~~~~~~~~~~~~~~~~~~
../ruby/video/xvideo.cpp:142:50: error: 'attributes' was not declared in this scope
  142 |         XGetWindowAttributes(_display, _window, &attributes);
      |                                                  ^~~~~~~~~~
../hiro/core/../gtk/widget/check-button.cpp: In member function 'void hiro::pCheckButton::setChecked(bool)':
../hiro/core/../gtk/widget/check-button.cpp:50:50: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   50 |   gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(gtkWidget), checked);
      |                                                  ^~~~~~~~~
      |                                                  pWidget
../hiro/core/../gtk/widget/check-button.cpp:50:32: error: 'GTK_TOGGLE_BUTTON' was not declared in this scope
   50 |   gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(gtkWidget), checked);
      |                                ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/check-button.cpp:50:3: error: 'gtk_toggle_button_set_active' was not declared in this scope
   50 |   gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(gtkWidget), checked);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../ruby/video/xvideo.cpp:142:9: error: 'XGetWindowAttributes' was not declared in this scope
  142 |         XGetWindowAttributes(_display, _window, &attributes);
      |         ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/check-button.cpp: In member function 'void hiro::pCheckButton::setIcon(const nall::image&)':
../hiro/core/../gtk/widget/check-button.cpp:56:5: error: 'GtkImage' was not declared in this scope
   56 |     GtkImage* gtkImage = CreateImage(icon);
      |     ^~~~~~~~
../hiro/core/../gtk/widget/check-button.cpp:56:15: error: 'gtkImage' was not declared in this scope
   56 |     GtkImage* gtkImage = CreateImage(icon);
      |               ^~~~~~~~
../ruby/video/xvideo.cpp: In member function 'bool VideoXVideo::initialize()':
../ruby/video/xvideo.cpp:153:5: error: '_display' was not declared in this scope
  153 |     _display = XOpenDisplay(nullptr);
      |     ^~~~~~~~
../hiro/core/../gtk/widget/check-button.cpp:56:26: error: 'CreateImage' was not declared in this scope
   56 |     GtkImage* gtkImage = CreateImage(icon);
      |                          ^~~~~~~~~~~
../hiro/core/../gtk/widget/check-button.cpp:57:37: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   57 |     gtk_button_set_image(GTK_BUTTON(gtkWidget), (GtkWidget*)gtkImage);
      |                                     ^~~~~~~~~
      |                                     pWidget
../ruby/video/xvideo.cpp:153:16: error: 'XOpenDisplay' was not declared in this scope
  153 |     _display = XOpenDisplay(nullptr);
      |                ^~~~~~~~~~~~
../hiro/core/../gtk/widget/check-button.cpp:57:26: error: 'GTK_BUTTON' was not declared in this scope
   57 |     gtk_button_set_image(GTK_BUTTON(gtkWidget), (GtkWidget*)gtkImage);
      |                          ^~~~~~~~~~
../hiro/core/../gtk/widget/check-button.cpp:57:50: error: 'GtkWidget' was not declared in this scope; did you mean 'pWidget'?
   57 |     gtk_button_set_image(GTK_BUTTON(gtkWidget), (GtkWidget*)gtkImage);
      |                                                  ^~~~~~~~~
      |                                                  pWidget
../hiro/core/../gtk/widget/check-button.cpp:57:60: error: expected primary-expression before ')' token
   57 |     gtk_button_set_image(GTK_BUTTON(gtkWidget), (GtkWidget*)gtkImage);
      |                                                            ^
../ruby/video/xvideo.cpp:154:15: error: 'DefaultScreen' was not declared in this scope
  154 |     _screen = DefaultScreen(_display);
      |               ^~~~~~~~~~~~~
../ruby/video/xvideo.cpp:154:15: note: the macro 'DefaultScreen' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/Xlib.h:89: note: it was later defined here
   89 | #define DefaultScreen(dpy)      (((_XPrivDisplay)(dpy))->default_screen)
      | 
../hiro/core/../gtk/widget/check-button.cpp:57:5: error: 'gtk_button_set_image' was not declared in this scope
   57 |     gtk_button_set_image(GTK_BUTTON(gtkWidget), (GtkWidget*)gtkImage);
      |     ^~~~~~~~~~~~~~~~~~~~
../ruby/video/xvideo.cpp:156:9: error: 'XShmQueryExtension' was not declared in this scope; did you mean 'XvQueryExtension'?
  156 |     if(!XShmQueryExtension(_display)) {
      |         ^~~~~~~~~~~~~~~~~~
      |         XvQueryExtension
../hiro/core/../gtk/widget/check-button.cpp:59:37: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   59 |     gtk_button_set_image(GTK_BUTTON(gtkWidget), nullptr);
      |                                     ^~~~~~~~~
      |                                     pWidget
../hiro/core/../gtk/widget/check-button.cpp:59:26: error: 'GTK_BUTTON' was not declared in this scope
   59 |     gtk_button_set_image(GTK_BUTTON(gtkWidget), nullptr);
      |                          ^~~~~~~~~~
../ruby/video/xvideo.cpp:167:31: error: 'DefaultRootWindow' was not declared in this scope
  167 |     XvQueryAdaptors(_display, DefaultRootWindow(_display), &adaptorCount, &adaptorInfo);
      |                               ^~~~~~~~~~~~~~~~~
../ruby/video/xvideo.cpp:167:31: note: the macro 'DefaultRootWindow' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/Xlib.h:90: note: it was later defined here
   90 | #define DefaultRootWindow(dpy)  (ScreenOfDisplay(dpy,DefaultScreen(dpy))->root)
      | 
../ruby/video/xvideo.cpp:167:20: error: 'XvQueryAdaptors' cannot be used as a function
  167 |     XvQueryAdaptors(_display, DefaultRootWindow(_display), &adaptorCount, &adaptorInfo);
      |     ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../ruby/video/xvideo.cpp:185:5: error: 'XVisualInfo' was not declared in this scope; did you mean 'VisualID'?
  185 |     XVisualInfo visualTemplate;
      |     ^~~~~~~~~~~
      |     VisualID
../hiro/core/../gtk/widget/check-button.cpp:59:5: error: 'gtk_button_set_image' was not declared in this scope
   59 |     gtk_button_set_image(GTK_BUTTON(gtkWidget), nullptr);
      |     ^~~~~~~~~~~~~~~~~~~~
../ruby/video/xvideo.cpp:186:5: error: 'visualTemplate' was not declared in this scope
  186 |     visualTemplate.visualid = visualID;
      |     ^~~~~~~~~~~~~~
../hiro/core/../gtk/widget/check-button.cpp: In member function 'void hiro::pCheckButton::setOrientation(hiro::Orientation)':
../hiro/core/../gtk/widget/check-button.cpp:65:74: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   65 |   case Orientation::Horizontal: gtk_button_set_image_position(GTK_BUTTON(gtkWidget), GTK_POS_LEFT); break;
      |                                                                          ^~~~~~~~~
      |                                                                          pWidget
../ruby/video/xvideo.cpp:191:48: error: 'VisualIDMask' was not declared in this scope
  191 |     auto visualInfo = XGetVisualInfo(_display, VisualIDMask | VisualScreenMask | VisualDepthMask, &visualTemplate, &visualMatches);
      |                                                ^~~~~~~~~~~~
../ruby/video/xvideo.cpp:191:48: note: the macro 'VisualIDMask' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/Xutil.h:305: note: it was later defined here
  305 | #define VisualIDMask            0x1
      | 
../hiro/core/../gtk/widget/check-button.cpp:65:63: error: 'GTK_BUTTON' was not declared in this scope
   65 |   case Orientation::Horizontal: gtk_button_set_image_position(GTK_BUTTON(gtkWidget), GTK_POS_LEFT); break;
      |                                                               ^~~~~~~~~~
../ruby/video/xvideo.cpp:191:63: error: 'VisualScreenMask' was not declared in this scope
  191 |     auto visualInfo = XGetVisualInfo(_display, VisualIDMask | VisualScreenMask | VisualDepthMask, &visualTemplate, &visualMatches);
      |                                                               ^~~~~~~~~~~~~~~~
../ruby/video/xvideo.cpp:191:63: note: the macro 'VisualScreenMask' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/Xutil.h:306: note: it was later defined here
  306 | #define VisualScreenMask        0x2
      | 
../hiro/core/../gtk/widget/check-button.cpp:65:86: error: 'GTK_POS_LEFT' was not declared in this scope
   65 |   case Orientation::Horizontal: gtk_button_set_image_position(GTK_BUTTON(gtkWidget), GTK_POS_LEFT); break;
      |                                                                                      ^~~~~~~~~~~~
../ruby/video/xvideo.cpp:191:82: error: 'VisualDepthMask' was not declared in this scope
  191 |     auto visualInfo = XGetVisualInfo(_display, VisualIDMask | VisualScreenMask | VisualDepthMask, &visualTemplate, &visualMatches);
      |                                                                                  ^~~~~~~~~~~~~~~
../ruby/video/xvideo.cpp:191:82: note: the macro 'VisualDepthMask' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/Xutil.h:307: note: it was later defined here
  307 | #define VisualDepthMask         0x4
      | 
../hiro/core/../gtk/widget/check-button.cpp:65:33: error: 'gtk_button_set_image_position' was not declared in this scope
   65 |   case Orientation::Horizontal: gtk_button_set_image_position(GTK_BUTTON(gtkWidget), GTK_POS_LEFT); break;
      |                                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/check-button.cpp:66:86: error: 'GTK_POS_TOP' was not declared in this scope
   66 |   case Orientation::Vertical:   gtk_button_set_image_position(GTK_BUTTON(gtkWidget), GTK_POS_TOP);  break;
      |                                                                                      ^~~~~~~~~~~
../hiro/core/../gtk/widget/check-button.cpp: In member function 'void hiro::pCheckButton::setText(const nall::string&)':
../hiro/core/../gtk/widget/check-button.cpp:71:35: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   71 |   gtk_button_set_label(GTK_BUTTON(gtkWidget), text);
      |                                   ^~~~~~~~~
      |                                   pWidget
../hiro/core/../gtk/widget/check-button.cpp:71:24: error: 'GTK_BUTTON' was not declared in this scope
   71 |   gtk_button_set_label(GTK_BUTTON(gtkWidget), text);
      |                        ^~~~~~~~~~
../ruby/video/xvideo.cpp:191:23: error: 'XGetVisualInfo' was not declared in this scope; did you mean 'visualInfo'?
  191 |     auto visualInfo = XGetVisualInfo(_display, VisualIDMask | VisualScreenMask | VisualDepthMask, &visualTemplate, &visualMatches);
      |                       ^~~~~~~~~~~~~~
      |                       visualInfo
../hiro/core/../gtk/widget/check-button.cpp:71:3: error: 'gtk_button_set_label' was not declared in this scope
   71 |   gtk_button_set_label(GTK_BUTTON(gtkWidget), text);
      |   ^~~~~~~~~~~~~~~~~~~~
../ruby/video/xvideo.cpp:193:22: error: 'XFree' was not declared in this scope
  193 |       if(visualInfo) XFree(visualInfo);
      |                      ^~~~~
In file included from ../hiro/core/../gtk/platform.cpp:34:
../hiro/core/../gtk/widget/check-label.cpp: At global scope:
../hiro/core/../gtk/widget/check-label.cpp:5:31: error: 'GtkToggleButton' was not declared in this scope
    5 | static auto CheckLabel_toggle(GtkToggleButton* toggleButton, pCheckLabel* p) -> void {
      |                               ^~~~~~~~~~~~~~~
../ruby/video/xvideo.cpp:198:33: error: 'RootWindow' was not declared in this scope
  198 |     _parent = self.fullScreen ? RootWindow(_display, _screen) : (Window)self.context;
      |                                 ^~~~~~~~~~
../ruby/video/xvideo.cpp:198:33: note: the macro 'RootWindow' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/Xlib.h:88: note: it was later defined here
   88 | #define RootWindow(dpy, scr)    (ScreenOfDisplay(dpy,scr)->root)
      | 
../hiro/core/../gtk/widget/check-label.cpp:5:48: error: 'toggleButton' was not declared in this scope
    5 | static auto CheckLabel_toggle(GtkToggleButton* toggleButton, pCheckLabel* p) -> void {
      |                                                ^~~~~~~~~~~~
../hiro/core/../gtk/widget/check-label.cpp:5:73: error: expected primary-expression before '*' token
    5 | static auto CheckLabel_toggle(GtkToggleButton* toggleButton, pCheckLabel* p) -> void {
      |                                                                         ^
../hiro/core/../gtk/widget/check-label.cpp:5:75: error: 'p' was not declared in this scope
    5 | static auto CheckLabel_toggle(GtkToggleButton* toggleButton, pCheckLabel* p) -> void {
      |                                                                           ^
../hiro/core/../gtk/widget/check-label.cpp:5:76: error: expression list treated as compound expression in initializer [-fpermissive]
    5 | static auto CheckLabel_toggle(GtkToggleButton* toggleButton, pCheckLabel* p) -> void {
      |                                                                            ^
../hiro/core/../gtk/widget/check-label.cpp:5:78: error: expected ',' or ';' before '->' token
    5 | static auto CheckLabel_toggle(GtkToggleButton* toggleButton, pCheckLabel* p) -> void {
      |                                                                              ^~
../hiro/core/../gtk/widget/check-label.cpp: In member function 'virtual void hiro::pCheckLabel::construct()':
../hiro/core/../gtk/widget/check-label.cpp:11:3: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   11 |   gtkWidget = gtk_check_button_new_with_label("");
      |   ^~~~~~~~~
      |   pWidget
../ruby/video/xvideo.cpp:202:5: error: 'XWindowAttributes' was not declared in this scope
  202 |     XWindowAttributes windowAttributes{};
      |     ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/check-label.cpp:11:15: error: 'gtk_check_button_new_with_label' was not declared in this scope
   11 |   gtkWidget = gtk_check_button_new_with_label("");
      |               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../ruby/video/xvideo.cpp:203:46: error: 'windowAttributes' was not declared in this scope
  203 |     XGetWindowAttributes(_display, _parent, &windowAttributes);
      |                                              ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/check-label.cpp:16:20: error: 'G_OBJECT' was not declared in this scope
   16 |   g_signal_connect(G_OBJECT(gtkWidget), "toggled", G_CALLBACK(CheckLabel_toggle), (gpointer)this);
      |                    ^~~~~~~~
../hiro/core/../gtk/widget/check-label.cpp:16:52: error: 'G_CALLBACK' was not declared in this scope
   16 |   g_signal_connect(G_OBJECT(gtkWidget), "toggled", G_CALLBACK(CheckLabel_toggle), (gpointer)this);
      |                                                    ^~~~~~~~~~
../ruby/video/xvideo.cpp:203:5: error: 'XGetWindowAttributes' was not declared in this scope
  203 |     XGetWindowAttributes(_display, _parent, &windowAttributes);
      |     ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/check-label.cpp:16:84: error: 'gpointer' was not declared in this scope
   16 |   g_signal_connect(G_OBJECT(gtkWidget), "toggled", G_CALLBACK(CheckLabel_toggle), (gpointer)this);
      |                                                                                    ^~~~~~~~
../ruby/video/xvideo.cpp:211:17: error: 'XCreateColormap' was not declared in this scope; did you mean 'XNStdColormap'?
  211 |     _colormap = XCreateColormap(_display, _parent, visualInfo->visual, AllocNone);
      |                 ^~~~~~~~~~~~~~~
      |                 XNStdColormap
../hiro/core/../gtk/widget/check-label.cpp:16:3: error: 'g_signal_connect' was not declared in this scope
   16 |   g_signal_connect(G_OBJECT(gtkWidget), "toggled", G_CALLBACK(CheckLabel_toggle), (gpointer)this);
      |   ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/check-label.cpp: In member function 'virtual void hiro::pCheckLabel::destruct()':
../hiro/core/../gtk/widget/check-label.cpp:22:22: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   22 |   gtk_widget_destroy(gtkWidget);
      |                      ^~~~~~~~~
      |                      pWidget
../ruby/video/xvideo.cpp:212:5: error: 'XSetWindowAttributes' was not declared in this scope
  212 |     XSetWindowAttributes attributes{};
      |     ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/check-label.cpp:22:3: error: 'gtk_widget_destroy' was not declared in this scope
   22 |   gtk_widget_destroy(gtkWidget);
      |   ^~~~~~~~~~~~~~~~~~
../ruby/video/xvideo.cpp:213:5: error: 'attributes' was not declared in this scope
  213 |     attributes.border_pixel = 0;
      |     ^~~~~~~~~~
../hiro/core/../gtk/widget/check-label.cpp: In member function 'void hiro::pCheckLabel::setChecked(bool)':
../hiro/core/../gtk/widget/check-label.cpp:32:50: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   32 |   gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(gtkWidget), checked);
      |                                                  ^~~~~~~~~
      |                                                  pWidget
../ruby/video/xvideo.cpp:216:15: error: 'XCreateWindow' was not declared in this scope
  216 |     _window = XCreateWindow(_display, _parent,
      |               ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/check-label.cpp:32:32: error: 'GTK_TOGGLE_BUTTON' was not declared in this scope
   32 |   gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(gtkWidget), checked);
      |                                ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/check-label.cpp:32:3: error: 'gtk_toggle_button_set_active' was not declared in this scope
   32 |   gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(gtkWidget), checked);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../ruby/video/xvideo.cpp:220:5: error: 'XSelectInput' was not declared in this scope
  220 |     XSelectInput(_display, _window, ExposureMask);
      |     ^~~~~~~~~~~~
../hiro/core/../gtk/widget/check-label.cpp: In member function 'void hiro::pCheckLabel::setText(const nall::string&)':
../hiro/core/../gtk/widget/check-label.cpp:37:35: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   37 |   gtk_button_set_label(GTK_BUTTON(gtkWidget), text);
      |                                   ^~~~~~~~~
      |                                   pWidget
../ruby/video/xvideo.cpp:221:5: error: 'XFree' was not declared in this scope
  221 |     XFree(visualInfo);
      |     ^~~~~
../hiro/core/../gtk/widget/check-label.cpp:37:24: error: 'GTK_BUTTON' was not declared in this scope
   37 |   gtk_button_set_label(GTK_BUTTON(gtkWidget), text);
      |                        ^~~~~~~~~~
../hiro/core/../gtk/widget/check-label.cpp:37:3: error: 'gtk_button_set_label' was not declared in this scope
   37 |   gtk_button_set_label(GTK_BUTTON(gtkWidget), text);
      |   ^~~~~~~~~~~~~~~~~~~~
../ruby/video/xvideo.cpp:222:5: error: 'XSetWindowBackground' was not declared in this scope
  222 |     XSetWindowBackground(_display, _window, 0);
      |     ^~~~~~~~~~~~~~~~~~~~
In file included from ../hiro/core/../gtk/platform.cpp:35:
../hiro/core/../gtk/widget/combo-button.cpp: At global scope:
../hiro/core/../gtk/widget/combo-button.cpp:5:32: error: 'GtkComboBox' was not declared in this scope
    5 | static auto ComboButton_change(GtkComboBox* comboBox, pComboButton* p) -> void { p->_updateSelected(); }
      |                                ^~~~~~~~~~~
../hiro/core/../gtk/widget/combo-button.cpp:5:45: error: 'comboBox' was not declared in this scope
    5 | static auto ComboButton_change(GtkComboBox* comboBox, pComboButton* p) -> void { p->_updateSelected(); }
      |                                             ^~~~~~~~
../hiro/core/../gtk/widget/combo-button.cpp:5:67: error: expected primary-expression before '*' token
    5 | static auto ComboButton_change(GtkComboBox* comboBox, pComboButton* p) -> void { p->_updateSelected(); }
      |                                                                   ^
../hiro/core/../gtk/widget/combo-button.cpp:5:69: error: 'p' was not declared in this scope
    5 | static auto ComboButton_change(GtkComboBox* comboBox, pComboButton* p) -> void { p->_updateSelected(); }
      |                                                                     ^
../hiro/core/../gtk/widget/combo-button.cpp:5:70: error: expression list treated as compound expression in initializer [-fpermissive]
    5 | static auto ComboButton_change(GtkComboBox* comboBox, pComboButton* p) -> void { p->_updateSelected(); }
      |                                                                      ^
../hiro/core/../gtk/widget/combo-button.cpp:5:72: error: expected ',' or ';' before '->' token
    5 | static auto ComboButton_change(GtkComboBox* comboBox, pComboButton* p) -> void { p->_updateSelected(); }
      |                                                                        ^~
../ruby/video/xvideo.cpp:223:5: error: 'XMapWindow' was not declared in this scope; did you mean 'BadWindow'?
  223 |     XMapWindow(_display, _window);
      |     ^~~~~~~~~~
      |     BadWindow
../hiro/core/../gtk/widget/combo-button.cpp: In member function 'virtual void hiro::pComboButton::construct()':
../hiro/core/../gtk/widget/combo-button.cpp:8:3: error: 'gtkListStore' was not declared in this scope
    8 |   gtkListStore = gtk_list_store_new(2, GDK_TYPE_PIXBUF, G_TYPE_STRING);
      |   ^~~~~~~~~~~~
../ruby/video/xvideo.cpp:225:5: error: '_gc' was not declared in this scope
  225 |     _gc = XCreateGC(_display, _window, 0, 0);
      |     ^~~
../hiro/core/../gtk/widget/combo-button.cpp:8:40: error: 'GDK_TYPE_PIXBUF' was not declared in this scope
    8 |   gtkListStore = gtk_list_store_new(2, GDK_TYPE_PIXBUF, G_TYPE_STRING);
      |                                        ^~~~~~~~~~~~~~~
../ruby/video/xvideo.cpp:225:11: error: 'XCreateGC' was not declared in this scope; did you mean 'create'?
  225 |     _gc = XCreateGC(_display, _window, 0, 0);
      |           ^~~~~~~~~
      |           create
../ruby/video/xvideo.cpp:228:47: error: 'XvQueryPortAttributes' cannot be used as a function
  228 |     auto attributeList = XvQueryPortAttributes(_display, _port, &attributeCount);
      |                          ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../ruby/video/xvideo.cpp:230:38: error: no matching function for call to 'nall::string::string(<brace-enclosed initializer list>)'
  230 |       if(string{attributeList[n].name} == "XV_AUTOPAINT_COLORKEY") {
      |                                      ^
../nall/string.hpp:151:39: note: candidate: 'template<class T, class ... P> nall::string::string(T&&, P&& ...)'
  151 |   template<typename T, typename... P> string(T&& s, P&&... p) : string() {
      |                                       ^~~~~~
../nall/string.hpp:151:39: note:   template argument deduction/substitution failed:
../nall/string.hpp:140:10: note: candidate: 'nall::string::string(nall::string&&)'
  140 |   inline string(string&& source) : string() { operator=(move(source)); }
      |          ^~~~~~
../nall/string.hpp:140:10: note:   conversion of argument 1 would be ill-formed:
../nall/string.hpp:139:10: note: candidate: 'nall::string::string(const nall::string&)'
  139 |   inline string(const string& source) : string() { operator=(source); }
      |          ^~~~~~
../nall/string.hpp:139:10: note:   conversion of argument 1 would be ill-formed:
../nall/string.hpp:138:10: note: candidate: 'nall::string::string(nall::string&)'
  138 |   inline string(string& source) : string() { operator=(source); }
      |          ^~~~~~
../nall/string.hpp:138:10: note:   conversion of argument 1 would be ill-formed:
In file included from ../nall/string/core.hpp:7,
                 from ../nall/string.hpp:344:
../nall/string/allocator/adaptive.hpp:22:1: note: candidate: 'nall::string::string()'
   22 | string::string() : _data(nullptr), _capacity(SSO - 1), _size(0) {
      | ^~~~~~
../nall/string/allocator/adaptive.hpp:22:1: note:   candidate expects 0 arguments, 1 provided
../hiro/core/../gtk/widget/combo-button.cpp:8:57: error: 'G_TYPE_STRING' was not declared in this scope
    8 |   gtkListStore = gtk_list_store_new(2, GDK_TYPE_PIXBUF, G_TYPE_STRING);
      |                                                         ^~~~~~~~~~~~~
../ruby/video/xvideo.cpp:232:21: error: 'XInternAtom' was not declared in this scope
  232 |         Atom atom = XInternAtom(_display, "XV_AUTOPAINT_COLORKEY", true);
      |                     ^~~~~~~~~~~
../ruby/video/xvideo.cpp:233:44: error: 'XvSetPortAttribute' cannot be used as a function
  233 |         if(atom != None) XvSetPortAttribute(_display, _port, atom, 1);
      |                          ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
../ruby/video/xvideo.cpp: In member function 'void VideoXVideo::terminate()':
../ruby/video/xvideo.cpp:263:18: error: '_display' was not declared in this scope
  263 |       XShmDetach(_display, &_shmInfo);
      |                  ^~~~~~~~
../hiro/core/../gtk/widget/combo-button.cpp:8:18: error: 'gtk_list_store_new' was not declared in this scope
    8 |   gtkListStore = gtk_list_store_new(2, GDK_TYPE_PIXBUF, G_TYPE_STRING);
      |                  ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-button.cpp:9:3: error: 'gtkTreeModel' was not declared in this scope
    9 |   gtkTreeModel = GTK_TREE_MODEL(gtkListStore);
      |   ^~~~~~~~~~~~
../ruby/video/xvideo.cpp:263:7: error: 'XShmDetach' was not declared in this scope
  263 |       XShmDetach(_display, &_shmInfo);
      |       ^~~~~~~~~~
../hiro/core/../gtk/widget/combo-button.cpp:9:18: error: 'GTK_TREE_MODEL' was not declared in this scope
    9 |   gtkTreeModel = GTK_TREE_MODEL(gtkListStore);
      |                  ^~~~~~~~~~~~~~
../ruby/video/xvideo.cpp:266:7: error: 'XFree' was not declared in this scope
  266 |       XFree(_image);
      |       ^~~~~
../hiro/core/../gtk/widget/combo-button.cpp:10:3: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   10 |   gtkWidget = gtk_combo_box_new_with_model(gtkTreeModel);
      |   ^~~~~~~~~
      |   pWidget
../ruby/video/xvideo.cpp:270:8: error: '_gc' was not declared in this scope
  270 |     if(_gc) {
      |        ^~~
../hiro/core/../gtk/widget/combo-button.cpp:10:15: error: 'gtk_combo_box_new_with_model' was not declared in this scope
   10 |   gtkWidget = gtk_combo_box_new_with_model(gtkTreeModel);
      |               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../ruby/video/xvideo.cpp:271:15: error: '_display' was not declared in this scope
  271 |       XFreeGC(_display, _gc);
      |               ^~~~~~~~
../hiro/core/../gtk/widget/combo-button.cpp:11:3: error: 'gtkComboBox' was not declared in this scope
   11 |   gtkComboBox = GTK_COMBO_BOX(gtkWidget);
      |   ^~~~~~~~~~~
../ruby/video/xvideo.cpp:271:7: error: 'XFreeGC' was not declared in this scope
  271 |       XFreeGC(_display, _gc);
      |       ^~~~~~~
../ruby/video/xvideo.cpp:276:20: error: '_display' was not declared in this scope
  276 |       XUnmapWindow(_display, _window);
      |                    ^~~~~~~~
../hiro/core/../gtk/widget/combo-button.cpp:11:17: error: 'GTK_COMBO_BOX' was not declared in this scope
   11 |   gtkComboBox = GTK_COMBO_BOX(gtkWidget);
      |                 ^~~~~~~~~~~~~
../ruby/video/xvideo.cpp:276:7: error: 'XUnmapWindow' was not declared in this scope
  276 |       XUnmapWindow(_display, _window);
      |       ^~~~~~~~~~~~
../ruby/video/xvideo.cpp:281:21: error: '_display' was not declared in this scope
  281 |       XFreeColormap(_display, _colormap);
      |                     ^~~~~~~~
../ruby/video/xvideo.cpp:281:7: error: 'XFreeColormap' was not declared in this scope; did you mean 'XNStdColormap'?
  281 |       XFreeColormap(_display, _colormap);
      |       ^~~~~~~~~~~~~
      |       XNStdColormap
../hiro/core/../gtk/widget/combo-button.cpp:13:3: error: 'gtkCellIcon' was not declared in this scope
   13 |   gtkCellIcon = gtk_cell_renderer_pixbuf_new();
      |   ^~~~~~~~~~~
../hiro/core/../gtk/widget/combo-button.cpp:13:17: error: 'gtk_cell_renderer_pixbuf_new' was not declared in this scope
   13 |   gtkCellIcon = gtk_cell_renderer_pixbuf_new();
      |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-button.cpp:14:30: error: 'GTK_CELL_LAYOUT' was not declared in this scope
   14 |   gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(gtkWidget), gtkCellIcon, false);
      |                              ^~~~~~~~~~~~~~~
../ruby/video/xvideo.cpp:285:8: error: '_display' was not declared in this scope
  285 |     if(_display) {
      |        ^~~~~~~~
../hiro/core/../gtk/widget/combo-button.cpp:14:3: error: 'gtk_cell_layout_pack_start' was not declared in this scope
   14 |   gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(gtkWidget), gtkCellIcon, false);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~
../ruby/video/xvideo.cpp:286:7: error: 'XCloseDisplay' was not declared in this scope
  286 |       XCloseDisplay(_display);
      |       ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-button.cpp:15:3: error: 'gtk_cell_layout_set_attributes' was not declared in this scope
   15 |   gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(gtkWidget), gtkCellIcon, "pixbuf", 0, nullptr);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../ruby/video/xvideo.cpp: In member function 'void VideoXVideo::queryAvailableFormats()':
../ruby/video/xvideo.cpp:304:37: error: '_display' was not declared in this scope
  304 |     auto array = XvListImageFormats(_display, _port, &count);
      |                                     ^~~~~~~~
../ruby/video/xvideo.cpp:304:36: error: 'XvListImageFormats' cannot be used as a function
  304 |     auto array = XvListImageFormats(_display, _port, &count);
      |                  ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-button.cpp:16:3: error: 'gtkCellText' was not declared in this scope
   16 |   gtkCellText = gtk_cell_renderer_text_new();
      |   ^~~~~~~~~~~
../ruby/video/xvideo.cpp: In member function 'void VideoXVideo::resize(uint, uint)':
../ruby/video/xvideo.cpp:352:18: error: '_display' was not declared in this scope
  352 |       XShmDetach(_display, &_shmInfo);
      |                  ^~~~~~~~
../hiro/core/../gtk/widget/combo-button.cpp:16:17: error: 'gtk_cell_renderer_text_new' was not declared in this scope
   16 |   gtkCellText = gtk_cell_renderer_text_new();
      |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-button.cpp:20:20: error: 'G_OBJECT' was not declared in this scope
   20 |   g_signal_connect(G_OBJECT(gtkWidget), "changed", G_CALLBACK(ComboButton_change), (gpointer)this);
      |                    ^~~~~~~~
../ruby/video/xvideo.cpp:352:7: error: 'XShmDetach' was not declared in this scope
  352 |       XShmDetach(_display, &_shmInfo);
      |       ^~~~~~~~~~
../hiro/core/../gtk/widget/combo-button.cpp:20:52: error: 'G_CALLBACK' was not declared in this scope
   20 |   g_signal_connect(G_OBJECT(gtkWidget), "changed", G_CALLBACK(ComboButton_change), (gpointer)this);
      |                                                    ^~~~~~~~~~
../ruby/video/xvideo.cpp:355:7: error: 'XFree' was not declared in this scope
  355 |       XFree(_image);
      |       ^~~~~
../hiro/core/../gtk/widget/combo-button.cpp:20:85: error: 'gpointer' was not declared in this scope
   20 |   g_signal_connect(G_OBJECT(gtkWidget), "changed", G_CALLBACK(ComboButton_change), (gpointer)this);
      |                                                                                     ^~~~~~~~
../ruby/video/xvideo.cpp:358:31: error: '_display' was not declared in this scope
  358 |     _image = XvShmCreateImage(_display, _port, _formatID, 0, _bufferWidth, _bufferHeight, &_shmInfo);
      |                               ^~~~~~~~
../ruby/video/xvideo.cpp:358:30: error: 'XvShmCreateImage' cannot be used as a function
  358 |     _image = XvShmCreateImage(_display, _port, _formatID, 0, _bufferWidth, _bufferHeight, &_shmInfo);
      |              ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../ruby/video/xvideo.cpp:362:14: error: 'struct XShmSegmentInfo' has no member named 'readOnly'
  362 |     _shmInfo.readOnly = false;
      |              ^~~~~~~~
../hiro/core/../gtk/widget/combo-button.cpp:20:3: error: 'g_signal_connect' was not declared in this scope
   20 |   g_signal_connect(G_OBJECT(gtkWidget), "changed", G_CALLBACK(ComboButton_change), (gpointer)this);
      |   ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-button.cpp: In member function 'virtual void hiro::pComboButton::destruct()':
../hiro/core/../gtk/widget/combo-button.cpp:26:22: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   26 |   gtk_widget_destroy(gtkWidget);
      |                      ^~~~~~~~~
      |                      pWidget
../ruby/video/xvideo.cpp:363:5: error: 'XShmAttach' was not declared in this scope
  363 |     XShmAttach(_display, &_shmInfo);
      |     ^~~~~~~~~~
../hiro/core/../gtk/widget/combo-button.cpp:26:3: error: 'gtk_widget_destroy' was not declared in this scope
   26 |   gtk_widget_destroy(gtkWidget);
      |   ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-button.cpp: In member function 'void hiro::pComboButton::remove(hiro::sComboButtonItem)':
../hiro/core/../gtk/widget/combo-button.cpp:47:27: error: 'gtkListStore' was not declared in this scope
   47 |     gtk_list_store_remove(gtkListStore, &delegate->gtkIter);
      |                           ^~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-button.cpp:47:52: error: 'struct hiro::pComboButtonItem' has no member named 'gtkIter'
   47 |     gtk_list_store_remove(gtkListStore, &delegate->gtkIter);
      |                                                    ^~~~~~~
../hiro/core/../gtk/widget/combo-button.cpp:47:5: error: 'gtk_list_store_remove' was not declared in this scope
   47 |     gtk_list_store_remove(gtkListStore, &delegate->gtkIter);
      |     ^~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-button.cpp:48:33: error: 'gtkComboBox' was not declared in this scope
   48 |     if(gtk_combo_box_get_active(gtkComboBox) < 0) {
      |                                 ^~~~~~~~~~~
../hiro/core/../gtk/widget/combo-button.cpp:48:8: error: 'gtk_combo_box_get_active' was not declared in this scope
   48 |     if(gtk_combo_box_get_active(gtkComboBox) < 0) {
      |        ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-button.cpp: In member function 'virtual void hiro::pComboButton::reset()':
../hiro/core/../gtk/widget/combo-button.cpp:57:24: error: 'gtkListStore' was not declared in this scope
   57 |   gtk_list_store_clear(gtkListStore);
      |                        ^~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-button.cpp:57:3: error: 'gtk_list_store_clear' was not declared in this scope
   57 |   gtk_list_store_clear(gtkListStore);
      |   ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-button.cpp: In member function 'virtual void hiro::pComboButton::setFont(const hiro::Font&)':
../hiro/core/../gtk/widget/combo-button.cpp:63:33: error: 'create' is not a member of 'hiro::pFont'
   63 |   auto fontDescription = pFont::create(font);
      |                                 ^~~~~~
../hiro/core/../gtk/widget/combo-button.cpp:64:25: error: 'gtkCellText' was not declared in this scope
   64 |   g_object_set(G_OBJECT(gtkCellText), "font-desc", fontDescription, nullptr);
      |                         ^~~~~~~~~~~
../hiro/core/../gtk/widget/combo-button.cpp:64:16: error: 'G_OBJECT' was not declared in this scope
   64 |   g_object_set(G_OBJECT(gtkCellText), "font-desc", fontDescription, nullptr);
      |                ^~~~~~~~
../hiro/core/../gtk/widget/combo-button.cpp:64:3: error: 'g_object_set' was not declared in this scope
   64 |   g_object_set(G_OBJECT(gtkCellText), "font-desc", fontDescription, nullptr);
      |   ^~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-button.cpp: In member function 'void hiro::pComboButton::_append(hiro::sComboButtonItem)':
../hiro/core/../gtk/widget/combo-button.cpp:70:27: error: 'gtkListStore' was not declared in this scope
   70 |     gtk_list_store_append(gtkListStore, &self->gtkIter);
      |                           ^~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-button.cpp:70:48: error: 'struct hiro::pComboButtonItem' has no member named 'gtkIter'
   70 |     gtk_list_store_append(gtkListStore, &self->gtkIter);
      |                                                ^~~~~~~
../hiro/core/../gtk/widget/combo-button.cpp:70:5: error: 'gtk_list_store_append' was not declared in this scope
   70 |     gtk_list_store_append(gtkListStore, &self->gtkIter);
      |     ^~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-button.cpp:75:31: error: 'gtkComboBox' was not declared in this scope
   75 |   if(gtk_combo_box_get_active(gtkComboBox) < 0) item->setSelected();
      |                               ^~~~~~~~~~~
../hiro/core/../gtk/widget/combo-button.cpp:75:6: error: 'gtk_combo_box_get_active' was not declared in this scope
   75 |   if(gtk_combo_box_get_active(gtkComboBox) < 0) item->setSelected();
      |      ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-button.cpp: In member function 'void hiro::pComboButton::_updateSelected()':
../hiro/core/../gtk/widget/combo-button.cpp:81:46: error: 'gtkComboBox' was not declared in this scope
   81 |   signed selected = gtk_combo_box_get_active(gtkComboBox);
      |                                              ^~~~~~~~~~~
../hiro/core/../gtk/widget/combo-button.cpp:81:21: error: 'gtk_combo_box_get_active' was not declared in this scope
   81 |   signed selected = gtk_combo_box_get_active(gtkComboBox);
      |                     ^~~~~~~~~~~~~~~~~~~~~~~~
In file included from ../hiro/core/../gtk/platform.cpp:36:
../hiro/core/../gtk/widget/combo-button-item.cpp: In member function 'void hiro::pComboButtonItem::setIcon(const nall::image&)':
../hiro/core/../gtk/widget/combo-button-item.cpp:14:19: error: 'CreatePixbuf' was not declared in this scope
   14 |     auto pixbuf = CreatePixbuf(icon, true);
      |                   ^~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-button-item.cpp:15:32: error: 'struct hiro::pComboButton' has no member named 'gtkListStore'
   15 |     gtk_list_store_set(parent->gtkListStore, &gtkIter, 0, pixbuf, -1);
      |                                ^~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-button-item.cpp:15:47: error: 'gtkIter' was not declared in this scope
   15 |     gtk_list_store_set(parent->gtkListStore, &gtkIter, 0, pixbuf, -1);
      |                                               ^~~~~~~
../hiro/core/../gtk/widget/combo-button-item.cpp:15:5: error: 'gtk_list_store_set' was not declared in this scope
   15 |     gtk_list_store_set(parent->gtkListStore, &gtkIter, 0, pixbuf, -1);
      |     ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-button-item.cpp: In member function 'void hiro::pComboButtonItem::setSelected()':
../hiro/core/../gtk/widget/combo-button-item.cpp:22:38: error: 'struct hiro::pComboButton' has no member named 'gtkComboBox'
   22 |     gtk_combo_box_set_active(parent->gtkComboBox, self().offset());
      |                                      ^~~~~~~~~~~
../hiro/core/../gtk/widget/combo-button-item.cpp:22:5: error: 'gtk_combo_box_set_active' was not declared in this scope
   22 |     gtk_combo_box_set_active(parent->gtkComboBox, self().offset());
      |     ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-button-item.cpp: In member function 'void hiro::pComboButtonItem::setText(const nall::string&)':
../hiro/core/../gtk/widget/combo-button-item.cpp:29:32: error: 'struct hiro::pComboButton' has no member named 'gtkListStore'
   29 |     gtk_list_store_set(parent->gtkListStore, &gtkIter, 1, text.data(), -1);
      |                                ^~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-button-item.cpp:29:47: error: 'gtkIter' was not declared in this scope
   29 |     gtk_list_store_set(parent->gtkListStore, &gtkIter, 1, text.data(), -1);
      |                                               ^~~~~~~
../hiro/core/../gtk/widget/combo-button-item.cpp:29:5: error: 'gtk_list_store_set' was not declared in this scope
   29 |     gtk_list_store_set(parent->gtkListStore, &gtkIter, 1, text.data(), -1);
      |     ^~~~~~~~~~~~~~~~~~
In file included from ../hiro/core/../gtk/platform.cpp:37:
../hiro/core/../gtk/widget/combo-edit.cpp: At global scope:
../hiro/core/../gtk/widget/combo-edit.cpp:5:32: error: 'GtkComboBox' was not declared in this scope
    5 | static auto ComboEdit_activate(GtkComboBox* comboBox, pComboEdit* p) -> void { p->self().doActivate(); }
      |                                ^~~~~~~~~~~
../hiro/core/../gtk/widget/combo-edit.cpp:5:45: error: 'comboBox' was not declared in this scope
    5 | static auto ComboEdit_activate(GtkComboBox* comboBox, pComboEdit* p) -> void { p->self().doActivate(); }
      |                                             ^~~~~~~~
../hiro/core/../gtk/widget/combo-edit.cpp:5:65: error: expected primary-expression before '*' token
    5 | static auto ComboEdit_activate(GtkComboBox* comboBox, pComboEdit* p) -> void { p->self().doActivate(); }
      |                                                                 ^
../hiro/core/../gtk/widget/combo-edit.cpp:5:67: error: 'p' was not declared in this scope
    5 | static auto ComboEdit_activate(GtkComboBox* comboBox, pComboEdit* p) -> void { p->self().doActivate(); }
      |                                                                   ^
../hiro/core/../gtk/widget/combo-edit.cpp:5:68: error: expression list treated as compound expression in initializer [-fpermissive]
    5 | static auto ComboEdit_activate(GtkComboBox* comboBox, pComboEdit* p) -> void { p->self().doActivate(); }
      |                                                                    ^
../hiro/core/../gtk/widget/combo-edit.cpp:5:70: error: expected ',' or ';' before '->' token
    5 | static auto ComboEdit_activate(GtkComboBox* comboBox, pComboEdit* p) -> void { p->self().doActivate(); }
      |                                                                      ^~
../hiro/core/../gtk/widget/combo-edit.cpp:6:30: error: 'GtkComboBox' was not declared in this scope
    6 | static auto ComboEdit_change(GtkComboBox* comboBox, pComboEdit* p) -> void { p->_updateText(); }
      |                              ^~~~~~~~~~~
../hiro/core/../gtk/widget/combo-edit.cpp:6:43: error: 'comboBox' was not declared in this scope
    6 | static auto ComboEdit_change(GtkComboBox* comboBox, pComboEdit* p) -> void { p->_updateText(); }
      |                                           ^~~~~~~~
../hiro/core/../gtk/widget/combo-edit.cpp:6:63: error: expected primary-expression before '*' token
    6 | static auto ComboEdit_change(GtkComboBox* comboBox, pComboEdit* p) -> void { p->_updateText(); }
      |                                                               ^
../hiro/core/../gtk/widget/combo-edit.cpp:6:65: error: 'p' was not declared in this scope
    6 | static auto ComboEdit_change(GtkComboBox* comboBox, pComboEdit* p) -> void { p->_updateText(); }
      |                                                                 ^
../hiro/core/../gtk/widget/combo-edit.cpp:6:66: error: expression list treated as compound expression in initializer [-fpermissive]
    6 | static auto ComboEdit_change(GtkComboBox* comboBox, pComboEdit* p) -> void { p->_updateText(); }
      |                                                                  ^
../hiro/core/../gtk/widget/combo-edit.cpp:6:68: error: expected ',' or ';' before '->' token
    6 | static auto ComboEdit_change(GtkComboBox* comboBox, pComboEdit* p) -> void { p->_updateText(); }
      |                                                                    ^~
../hiro/core/../gtk/widget/combo-edit.cpp: In member function 'virtual void hiro::pComboEdit::construct()':
../hiro/core/../gtk/widget/combo-edit.cpp:9:3: error: 'gtkListStore' was not declared in this scope
    9 |   gtkListStore = gtk_list_store_new(2, GDK_TYPE_PIXBUF, G_TYPE_STRING);
      |   ^~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-edit.cpp:9:40: error: 'GDK_TYPE_PIXBUF' was not declared in this scope
    9 |   gtkListStore = gtk_list_store_new(2, GDK_TYPE_PIXBUF, G_TYPE_STRING);
      |                                        ^~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-edit.cpp:9:57: error: 'G_TYPE_STRING' was not declared in this scope
    9 |   gtkListStore = gtk_list_store_new(2, GDK_TYPE_PIXBUF, G_TYPE_STRING);
      |                                                         ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-edit.cpp:9:18: error: 'gtk_list_store_new' was not declared in this scope
    9 |   gtkListStore = gtk_list_store_new(2, GDK_TYPE_PIXBUF, G_TYPE_STRING);
      |                  ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-edit.cpp:10:3: error: 'gtkTreeModel' was not declared in this scope
   10 |   gtkTreeModel = GTK_TREE_MODEL(gtkListStore);
      |   ^~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-edit.cpp:10:18: error: 'GTK_TREE_MODEL' was not declared in this scope
   10 |   gtkTreeModel = GTK_TREE_MODEL(gtkListStore);
      |                  ^~~~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-edit.cpp:11:3: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   11 |   gtkWidget = gtk_combo_box_new_with_model_and_entry(gtkTreeModel);
      |   ^~~~~~~~~
      |   pWidget
../hiro/core/../gtk/widget/combo-edit.cpp:11:15: error: 'gtk_combo_box_new_with_model_and_entry' was not declared in this scope
   11 |   gtkWidget = gtk_combo_box_new_with_model_and_entry(gtkTreeModel);
      |               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-edit.cpp:12:3: error: 'gtkComboBox' was not declared in this scope
   12 |   gtkComboBox = GTK_COMBO_BOX(gtkWidget);
      |   ^~~~~~~~~~~
../hiro/core/../gtk/widget/combo-edit.cpp:12:17: error: 'GTK_COMBO_BOX' was not declared in this scope
   12 |   gtkComboBox = GTK_COMBO_BOX(gtkWidget);
      |                 ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-edit.cpp:14:25: error: 'GTK_CELL_LAYOUT' was not declared in this scope
   14 |   gtk_cell_layout_clear(GTK_CELL_LAYOUT(gtkWidget));
      |                         ^~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-edit.cpp:14:3: error: 'gtk_cell_layout_clear' was not declared in this scope
   14 |   gtk_cell_layout_clear(GTK_CELL_LAYOUT(gtkWidget));
      |   ^~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-edit.cpp:15:3: error: 'gtkCellIcon' was not declared in this scope
   15 |   gtkCellIcon = gtk_cell_renderer_pixbuf_new();
      |   ^~~~~~~~~~~
../hiro/core/../gtk/widget/combo-edit.cpp:15:17: error: 'gtk_cell_renderer_pixbuf_new' was not declared in this scope
   15 |   gtkCellIcon = gtk_cell_renderer_pixbuf_new();
      |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-edit.cpp:16:3: error: 'gtk_cell_layout_pack_start' was not declared in this scope
   16 |   gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(gtkWidget), gtkCellIcon, false);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-edit.cpp:17:3: error: 'gtk_cell_layout_set_attributes' was not declared in this scope
   17 |   gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(gtkWidget), gtkCellIcon, "pixbuf", 0, nullptr);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-edit.cpp:18:3: error: 'gtkCellText' was not declared in this scope
   18 |   gtkCellText = gtk_cell_renderer_text_new();
      |   ^~~~~~~~~~~
../hiro/core/../gtk/widget/combo-edit.cpp:18:17: error: 'gtk_cell_renderer_text_new' was not declared in this scope
   18 |   gtkCellText = gtk_cell_renderer_text_new();
      |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-edit.cpp:29:3: error: 'gtk_combo_box_set_entry_text_column' was not declared in this scope
   29 |   gtk_combo_box_set_entry_text_column(gtkComboBox, 1);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-edit.cpp:39:47: error: 'GTK_BIN' was not declared in this scope
   39 |   g_signal_connect(G_OBJECT(gtk_bin_get_child(GTK_BIN(gtkComboBox))), "activate", G_CALLBACK(ComboEdit_activate), (gpointer)this);
      |                                               ^~~~~~~
../hiro/core/../gtk/widget/combo-edit.cpp:39:29: error: 'gtk_bin_get_child' was not declared in this scope
   39 |   g_signal_connect(G_OBJECT(gtk_bin_get_child(GTK_BIN(gtkComboBox))), "activate", G_CALLBACK(ComboEdit_activate), (gpointer)this);
      |                             ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-edit.cpp:39:20: error: 'G_OBJECT' was not declared in this scope
   39 |   g_signal_connect(G_OBJECT(gtk_bin_get_child(GTK_BIN(gtkComboBox))), "activate", G_CALLBACK(ComboEdit_activate), (gpointer)this);
      |                    ^~~~~~~~
../hiro/core/../gtk/widget/combo-edit.cpp:39:83: error: 'G_CALLBACK' was not declared in this scope
   39 |   g_signal_connect(G_OBJECT(gtk_bin_get_child(GTK_BIN(gtkComboBox))), "activate", G_CALLBACK(ComboEdit_activate), (gpointer)this);
      |                                                                                   ^~~~~~~~~~
../hiro/core/../gtk/widget/combo-edit.cpp:39:116: error: 'gpointer' was not declared in this scope
   39 |   g_signal_connect(G_OBJECT(gtk_bin_get_child(GTK_BIN(gtkComboBox))), "activate", G_CALLBACK(ComboEdit_activate), (gpointer)this);
      |                                                                                                                    ^~~~~~~~
../hiro/core/../gtk/widget/combo-edit.cpp:39:3: error: 'g_signal_connect' was not declared in this scope
   39 |   g_signal_connect(G_OBJECT(gtk_bin_get_child(GTK_BIN(gtkComboBox))), "activate", G_CALLBACK(ComboEdit_activate), (gpointer)this);
      |   ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-edit.cpp:40:92: error: expected ')' before 'this'
   40 |   g_signal_connect(G_OBJECT(gtkWidget), "changed", G_CALLBACK(ComboEdit_change), (gpointer)this);
      |                   ~                                                                        ^~~~
      |                                                                                            )
../hiro/core/../gtk/widget/combo-edit.cpp: In member function 'virtual void hiro::pComboEdit::destruct()':
../hiro/core/../gtk/widget/combo-edit.cpp:46:22: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   46 |   gtk_widget_destroy(gtkWidget);
      |                      ^~~~~~~~~
      |                      pWidget
../hiro/core/../gtk/widget/combo-edit.cpp:46:3: error: 'gtk_widget_destroy' was not declared in this scope
   46 |   gtk_widget_destroy(gtkWidget);
      |   ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-edit.cpp: In member function 'void hiro::pComboEdit::append(hiro::sComboEditItem)':
../hiro/core/../gtk/widget/combo-edit.cpp:52:27: error: 'gtkListStore' was not declared in this scope
   52 |     gtk_list_store_append(gtkListStore, &self->gtkIter);
      |                           ^~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-edit.cpp:52:48: error: 'struct hiro::pComboEditItem' has no member named 'gtkIter'
   52 |     gtk_list_store_append(gtkListStore, &self->gtkIter);
      |                                                ^~~~~~~
../hiro/core/../gtk/widget/combo-edit.cpp:52:5: error: 'gtk_list_store_append' was not declared in this scope
   52 |     gtk_list_store_append(gtkListStore, &self->gtkIter);
      |     ^~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-edit.cpp: In member function 'void hiro::pComboEdit::remove(hiro::sComboEditItem)':
../hiro/core/../gtk/widget/combo-edit.cpp:74:27: error: 'gtkListStore' was not declared in this scope
   74 |     gtk_list_store_remove(gtkListStore, &delegate->gtkIter);
      |                           ^~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-edit.cpp:74:52: error: 'struct hiro::pComboEditItem' has no member named 'gtkIter'
   74 |     gtk_list_store_remove(gtkListStore, &delegate->gtkIter);
      |                                                    ^~~~~~~
../hiro/core/../gtk/widget/combo-edit.cpp:74:5: error: 'gtk_list_store_remove' was not declared in this scope
   74 |     gtk_list_store_remove(gtkListStore, &delegate->gtkIter);
      |     ^~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-edit.cpp: In member function 'virtual void hiro::pComboEdit::reset()':
../hiro/core/../gtk/widget/combo-edit.cpp:81:24: error: 'gtkListStore' was not declared in this scope
   81 |   gtk_list_store_clear(gtkListStore);
      |                        ^~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-edit.cpp:81:3: error: 'gtk_list_store_clear' was not declared in this scope
   81 |   gtk_list_store_clear(gtkListStore);
      |   ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-edit.cpp: In member function 'void hiro::pComboEdit::setBackgroundColor(hiro::Color)':
../hiro/core/../gtk/widget/combo-edit.cpp:86:3: error: 'GdkColor' was not declared in this scope; did you mean 'Color'?
   86 |   GdkColor gdkColor = CreateColor(color);
      |   ^~~~~~~~
      |   Color
../hiro/core/../gtk/widget/combo-edit.cpp:87:52: error: 'gtkComboBox' was not declared in this scope
   87 |   gtk_widget_modify_base(gtk_bin_get_child(GTK_BIN(gtkComboBox)), GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |                                                    ^~~~~~~~~~~
../hiro/core/../gtk/widget/combo-edit.cpp:87:44: error: 'GTK_BIN' was not declared in this scope
   87 |   gtk_widget_modify_base(gtk_bin_get_child(GTK_BIN(gtkComboBox)), GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |                                            ^~~~~~~
../hiro/core/../gtk/widget/combo-edit.cpp:87:26: error: 'gtk_bin_get_child' was not declared in this scope
   87 |   gtk_widget_modify_base(gtk_bin_get_child(GTK_BIN(gtkComboBox)), GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |                          ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-edit.cpp:87:67: error: 'GTK_STATE_NORMAL' was not declared in this scope
   87 |   gtk_widget_modify_base(gtk_bin_get_child(GTK_BIN(gtkComboBox)), GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |                                                                   ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-edit.cpp:87:94: error: 'gdkColor' was not declared in this scope; did you mean 'Color'?
   87 |   gtk_widget_modify_base(gtk_bin_get_child(GTK_BIN(gtkComboBox)), GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |                                                                                              ^~~~~~~~
      |                                                                                              Color
../hiro/core/../gtk/widget/combo-edit.cpp:87:3: error: 'gtk_widget_modify_base' was not declared in this scope
   87 |   gtk_widget_modify_base(gtk_bin_get_child(GTK_BIN(gtkComboBox)), GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |   ^~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-edit.cpp: In member function 'void hiro::pComboEdit::setEditable(bool)':
../hiro/core/../gtk/widget/combo-edit.cpp:91:68: error: 'gtkComboBox' was not declared in this scope
   91 |   gtk_editable_set_editable(GTK_EDITABLE(gtk_bin_get_child(GTK_BIN(gtkComboBox))), editable);
      |                                                                    ^~~~~~~~~~~
../hiro/core/../gtk/widget/combo-edit.cpp:91:60: error: 'GTK_BIN' was not declared in this scope
   91 |   gtk_editable_set_editable(GTK_EDITABLE(gtk_bin_get_child(GTK_BIN(gtkComboBox))), editable);
      |                                                            ^~~~~~~
../hiro/core/../gtk/widget/combo-edit.cpp:91:42: error: 'gtk_bin_get_child' was not declared in this scope
   91 |   gtk_editable_set_editable(GTK_EDITABLE(gtk_bin_get_child(GTK_BIN(gtkComboBox))), editable);
      |                                          ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-edit.cpp:91:29: error: 'GTK_EDITABLE' was not declared in this scope
   91 |   gtk_editable_set_editable(GTK_EDITABLE(gtk_bin_get_child(GTK_BIN(gtkComboBox))), editable);
      |                             ^~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-edit.cpp:91:3: error: 'gtk_editable_set_editable' was not declared in this scope
   91 |   gtk_editable_set_editable(GTK_EDITABLE(gtk_bin_get_child(GTK_BIN(gtkComboBox))), editable);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-edit.cpp: In member function 'void hiro::pComboEdit::setForegroundColor(hiro::Color)':
../hiro/core/../gtk/widget/combo-edit.cpp:95:3: error: 'GdkColor' was not declared in this scope; did you mean 'Color'?
   95 |   GdkColor gdkColor = CreateColor(color);
      |   ^~~~~~~~
      |   Color
../hiro/core/../gtk/widget/combo-edit.cpp:96:52: error: 'gtkComboBox' was not declared in this scope
   96 |   gtk_widget_modify_text(gtk_bin_get_child(GTK_BIN(gtkComboBox)), GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |                                                    ^~~~~~~~~~~
../hiro/core/../gtk/widget/combo-edit.cpp:96:44: error: 'GTK_BIN' was not declared in this scope
   96 |   gtk_widget_modify_text(gtk_bin_get_child(GTK_BIN(gtkComboBox)), GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |                                            ^~~~~~~
../hiro/core/../gtk/widget/combo-edit.cpp:96:26: error: 'gtk_bin_get_child' was not declared in this scope
   96 |   gtk_widget_modify_text(gtk_bin_get_child(GTK_BIN(gtkComboBox)), GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |                          ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-edit.cpp:96:67: error: 'GTK_STATE_NORMAL' was not declared in this scope
   96 |   gtk_widget_modify_text(gtk_bin_get_child(GTK_BIN(gtkComboBox)), GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |                                                                   ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-edit.cpp:96:94: error: 'gdkColor' was not declared in this scope; did you mean 'Color'?
   96 |   gtk_widget_modify_text(gtk_bin_get_child(GTK_BIN(gtkComboBox)), GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |                                                                                              ^~~~~~~~
      |                                                                                              Color
../hiro/core/../gtk/widget/combo-edit.cpp:96:3: error: 'gtk_widget_modify_text' was not declared in this scope
   96 |   gtk_widget_modify_text(gtk_bin_get_child(GTK_BIN(gtkComboBox)), GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |   ^~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-edit.cpp: In member function 'virtual void hiro::pComboEdit::setFont(const hiro::Font&)':
../hiro/core/../gtk/widget/combo-edit.cpp:101:33: error: 'create' is not a member of 'hiro::pFont'
  101 |   auto fontDescription = pFont::create(font);
      |                                 ^~~~~~
../hiro/core/../gtk/widget/combo-edit.cpp:102:25: error: 'gtkCellText' was not declared in this scope
  102 |   g_object_set(G_OBJECT(gtkCellText), "font-desc", fontDescription, nullptr);
      |                         ^~~~~~~~~~~
../hiro/core/../gtk/widget/combo-edit.cpp:102:16: error: 'G_OBJECT' was not declared in this scope
  102 |   g_object_set(G_OBJECT(gtkCellText), "font-desc", fontDescription, nullptr);
      |                ^~~~~~~~
../hiro/core/../gtk/widget/combo-edit.cpp:102:3: error: 'g_object_set' was not declared in this scope
  102 |   g_object_set(G_OBJECT(gtkCellText), "font-desc", fontDescription, nullptr);
      |   ^~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-edit.cpp: In member function 'void hiro::pComboEdit::setText(const nall::string&)':
../hiro/core/../gtk/widget/combo-edit.cpp:107:58: error: 'gtkComboBox' was not declared in this scope
  107 |   gtk_entry_set_text(GTK_ENTRY(gtk_bin_get_child(GTK_BIN(gtkComboBox))), text);
      |                                                          ^~~~~~~~~~~
../hiro/core/../gtk/widget/combo-edit.cpp:107:50: error: 'GTK_BIN' was not declared in this scope
  107 |   gtk_entry_set_text(GTK_ENTRY(gtk_bin_get_child(GTK_BIN(gtkComboBox))), text);
      |                                                  ^~~~~~~
../hiro/core/../gtk/widget/combo-edit.cpp:107:32: error: 'gtk_bin_get_child' was not declared in this scope
  107 |   gtk_entry_set_text(GTK_ENTRY(gtk_bin_get_child(GTK_BIN(gtkComboBox))), text);
      |                                ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-edit.cpp:107:22: error: 'GTK_ENTRY' was not declared in this scope; did you mean 'AT_ENTRY'?
  107 |   gtk_entry_set_text(GTK_ENTRY(gtk_bin_get_child(GTK_BIN(gtkComboBox))), text);
      |                      ^~~~~~~~~
      |                      AT_ENTRY
../hiro/core/../gtk/widget/combo-edit.cpp:107:3: error: 'gtk_entry_set_text' was not declared in this scope
  107 |   gtk_entry_set_text(GTK_ENTRY(gtk_bin_get_child(GTK_BIN(gtkComboBox))), text);
      |   ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-edit.cpp: In member function 'void hiro::pComboEdit::_updateText()':
../hiro/core/../gtk/widget/combo-edit.cpp:112:72: error: 'gtkComboBox' was not declared in this scope
  112 |   string text = gtk_entry_get_text(GTK_ENTRY(gtk_bin_get_child(GTK_BIN(gtkComboBox))));
      |                                                                        ^~~~~~~~~~~
../hiro/core/../gtk/widget/combo-edit.cpp:112:64: error: 'GTK_BIN' was not declared in this scope
  112 |   string text = gtk_entry_get_text(GTK_ENTRY(gtk_bin_get_child(GTK_BIN(gtkComboBox))));
      |                                                                ^~~~~~~
../hiro/core/../gtk/widget/combo-edit.cpp:112:46: error: 'gtk_bin_get_child' was not declared in this scope
  112 |   string text = gtk_entry_get_text(GTK_ENTRY(gtk_bin_get_child(GTK_BIN(gtkComboBox))));
      |                                              ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-edit.cpp:112:36: error: 'GTK_ENTRY' was not declared in this scope; did you mean 'AT_ENTRY'?
  112 |   string text = gtk_entry_get_text(GTK_ENTRY(gtk_bin_get_child(GTK_BIN(gtkComboBox))));
      |                                    ^~~~~~~~~
      |                                    AT_ENTRY
../hiro/core/../gtk/widget/combo-edit.cpp:112:17: error: 'gtk_entry_get_text' was not declared in this scope
  112 |   string text = gtk_entry_get_text(GTK_ENTRY(gtk_bin_get_child(GTK_BIN(gtkComboBox))));
      |                 ^~~~~~~~~~~~~~~~~~
In file included from ../hiro/core/../gtk/platform.cpp:38:
../hiro/core/../gtk/widget/combo-edit-item.cpp: In member function 'void hiro::pComboEditItem::setIcon(const nall::image&)':
../hiro/core/../gtk/widget/combo-edit-item.cpp:13:19: error: 'CreatePixbuf' was not declared in this scope
   13 |     auto pixbuf = CreatePixbuf(icon, true);
      |                   ^~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-edit-item.cpp:14:32: error: 'struct hiro::pComboEdit' has no member named 'gtkListStore'
   14 |     gtk_list_store_set(parent->gtkListStore, &gtkIter, 0, pixbuf, -1);
      |                                ^~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-edit-item.cpp:14:47: error: 'gtkIter' was not declared in this scope
   14 |     gtk_list_store_set(parent->gtkListStore, &gtkIter, 0, pixbuf, -1);
      |                                               ^~~~~~~
../hiro/core/../gtk/widget/combo-edit-item.cpp:14:5: error: 'gtk_list_store_set' was not declared in this scope
   14 |     gtk_list_store_set(parent->gtkListStore, &gtkIter, 0, pixbuf, -1);
      |     ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-edit-item.cpp: In member function 'void hiro::pComboEditItem::setText(const nall::string&)':
../hiro/core/../gtk/widget/combo-edit-item.cpp:20:32: error: 'struct hiro::pComboEdit' has no member named 'gtkListStore'
   20 |     gtk_list_store_set(parent->gtkListStore, &gtkIter, 1, text.data(), -1);
      |                                ^~~~~~~~~~~~
../hiro/core/../gtk/widget/combo-edit-item.cpp:20:47: error: 'gtkIter' was not declared in this scope
   20 |     gtk_list_store_set(parent->gtkListStore, &gtkIter, 1, text.data(), -1);
      |                                               ^~~~~~~
../hiro/core/../gtk/widget/combo-edit-item.cpp:20:5: error: 'gtk_list_store_set' was not declared in this scope
   20 |     gtk_list_store_set(parent->gtkListStore, &gtkIter, 1, text.data(), -1);
      |     ^~~~~~~~~~~~~~~~~~
In file included from ../hiro/core/../gtk/platform.cpp:39:
../hiro/core/../gtk/widget/console.cpp: At global scope:
../hiro/core/../gtk/widget/console.cpp:5:30: error: 'GtkWidget' was not declared in this scope; did you mean 'wWidget'?
    5 | static auto Console_keyPress(GtkWidget*, GdkEventKey* event, pConsole* p) -> signed {
      |                              ^~~~~~~~~
      |                              wWidget
../hiro/core/../gtk/widget/console.cpp:5:40: error: expected primary-expression before ',' token
    5 | static auto Console_keyPress(GtkWidget*, GdkEventKey* event, pConsole* p) -> signed {
      |                                        ^
../hiro/core/../gtk/widget/console.cpp:5:42: error: 'GdkEventKey' was not declared in this scope
    5 | static auto Console_keyPress(GtkWidget*, GdkEventKey* event, pConsole* p) -> signed {
      |                                          ^~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:5:55: error: 'event' was not declared in this scope; did you mean 'servent'?
    5 | static auto Console_keyPress(GtkWidget*, GdkEventKey* event, pConsole* p) -> signed {
      |                                                       ^~~~~
      |                                                       servent
../hiro/core/../gtk/widget/console.cpp:5:70: error: expected primary-expression before '*' token
    5 | static auto Console_keyPress(GtkWidget*, GdkEventKey* event, pConsole* p) -> signed {
      |                                                                      ^
../hiro/core/../gtk/widget/console.cpp:5:72: error: 'p' was not declared in this scope
    5 | static auto Console_keyPress(GtkWidget*, GdkEventKey* event, pConsole* p) -> signed {
      |                                                                        ^
../hiro/core/../gtk/widget/console.cpp:5:73: error: expression list treated as compound expression in initializer [-fpermissive]
    5 | static auto Console_keyPress(GtkWidget*, GdkEventKey* event, pConsole* p) -> signed {
      |                                                                         ^
../hiro/core/../gtk/widget/console.cpp:5:75: error: expected ',' or ';' before '->' token
    5 | static auto Console_keyPress(GtkWidget*, GdkEventKey* event, pConsole* p) -> signed {
      |                                                                           ^~
../hiro/core/../gtk/widget/console.cpp: In member function 'virtual void hiro::pConsole::construct()':
../hiro/core/../gtk/widget/console.cpp:10:3: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   10 |   gtkWidget = gtk_scrolled_window_new(0, 0);
      |   ^~~~~~~~~
      |   pWidget
../hiro/core/../gtk/widget/console.cpp:10:15: error: 'gtk_scrolled_window_new' was not declared in this scope
   10 |   gtkWidget = gtk_scrolled_window_new(0, 0);
      |               ^~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:11:34: error: 'GTK_SCROLLED_WINDOW' was not declared in this scope
   11 |   gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(gtkWidget), GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
      |                                  ^~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:11:66: error: 'GTK_POLICY_AUTOMATIC' was not declared in this scope
   11 |   gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(gtkWidget), GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
      |                                                                  ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:11:88: error: 'GTK_POLICY_ALWAYS' was not declared in this scope
   11 |   gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(gtkWidget), GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
      |                                                                                        ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:11:3: error: 'gtk_scrolled_window_set_policy' was not declared in this scope
   11 |   gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(gtkWidget), GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:12:71: error: 'GTK_SHADOW_ETCHED_IN' was not declared in this scope
   12 |   gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(gtkWidget), GTK_SHADOW_ETCHED_IN);
      |                                                                       ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:12:3: error: 'gtk_scrolled_window_set_shadow_type' was not declared in this scope
   12 |   gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(gtkWidget), GTK_SHADOW_ETCHED_IN);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:14:3: error: 'subWidget' was not declared in this scope; did you mean 'sWidget'?
   14 |   subWidget = gtk_text_view_new();
      |   ^~~~~~~~~
      |   sWidget
../hiro/core/../gtk/widget/console.cpp:14:15: error: 'gtk_text_view_new' was not declared in this scope
   14 |   subWidget = gtk_text_view_new();
      |               ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:15:3: error: 'gtk_widget_show' was not declared in this scope
   15 |   gtk_widget_show(subWidget);
      |   ^~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:16:30: error: 'GTK_TEXT_VIEW' was not declared in this scope
   16 |   gtk_text_view_set_editable(GTK_TEXT_VIEW(subWidget), false);
      |                              ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:16:3: error: 'gtk_text_view_set_editable' was not declared in this scope
   16 |   gtk_text_view_set_editable(GTK_TEXT_VIEW(subWidget), false);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:17:57: error: 'GTK_WRAP_NONE' was not declared in this scope
   17 |   gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(subWidget), GTK_WRAP_NONE);
      |                                                         ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:17:3: error: 'gtk_text_view_set_wrap_mode' was not declared in this scope
   17 |   gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(subWidget), GTK_WRAP_NONE);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:18:21: error: 'GTK_CONTAINER' was not declared in this scope
   18 |   gtk_container_add(GTK_CONTAINER(gtkWidget), subWidget);
      |                     ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:18:3: error: 'gtk_container_add' was not declared in this scope
   18 |   gtk_container_add(GTK_CONTAINER(gtkWidget), subWidget);
      |   ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:20:3: error: 'textBuffer' was not declared in this scope; did you mean 'setbuffer'?
   20 |   textBuffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(subWidget));
      |   ^~~~~~~~~~
      |   setbuffer
../hiro/core/../gtk/widget/console.cpp:20:16: error: 'gtk_text_view_get_buffer' was not declared in this scope
   20 |   textBuffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(subWidget));
      |                ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:25:20: error: 'G_OBJECT' was not declared in this scope
   25 |   g_signal_connect(G_OBJECT(subWidget), "key-press-event", G_CALLBACK(Console_keyPress), (gpointer)this);
      |                    ^~~~~~~~
../hiro/core/../gtk/widget/console.cpp:25:60: error: 'G_CALLBACK' was not declared in this scope
   25 |   g_signal_connect(G_OBJECT(subWidget), "key-press-event", G_CALLBACK(Console_keyPress), (gpointer)this);
      |                                                            ^~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:25:91: error: 'gpointer' was not declared in this scope
   25 |   g_signal_connect(G_OBJECT(subWidget), "key-press-event", G_CALLBACK(Console_keyPress), (gpointer)this);
      |                                                                                           ^~~~~~~~
../hiro/core/../gtk/widget/console.cpp:25:3: error: 'g_signal_connect' was not declared in this scope
   25 |   g_signal_connect(G_OBJECT(subWidget), "key-press-event", G_CALLBACK(Console_keyPress), (gpointer)this);
      |   ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp: In member function 'virtual void hiro::pConsole::destruct()':
../hiro/core/../gtk/widget/console.cpp:31:22: error: 'subWidget' was not declared in this scope; did you mean 'sWidget'?
   31 |   gtk_widget_destroy(subWidget);
      |                      ^~~~~~~~~
      |                      sWidget
../hiro/core/../gtk/widget/console.cpp:31:3: error: 'gtk_widget_destroy' was not declared in this scope
   31 |   gtk_widget_destroy(subWidget);
      |   ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:32:22: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   32 |   gtk_widget_destroy(gtkWidget);
      |                      ^~~~~~~~~
      |                      pWidget
../hiro/core/../gtk/widget/console.cpp: In member function 'void hiro::pConsole::print(const nall::string&)':
../hiro/core/../gtk/widget/console.cpp:37:3: error: 'GtkTextIter' was not declared in this scope
   37 |   GtkTextIter iter;
      |   ^~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:38:43: error: 'textBuffer' was not declared in this scope; did you mean 'setbuffer'?
   38 |   gtk_text_buffer_get_iter_at_line_offset(textBuffer, &iter, gtk_text_buffer_get_line_count(textBuffer), 0);
      |                                           ^~~~~~~~~~
      |                                           setbuffer
../hiro/core/../gtk/widget/console.cpp:38:56: error: 'iter' was not declared in this scope
   38 |   gtk_text_buffer_get_iter_at_line_offset(textBuffer, &iter, gtk_text_buffer_get_line_count(textBuffer), 0);
      |                                                        ^~~~
../hiro/core/../gtk/widget/console.cpp:38:62: error: 'gtk_text_buffer_get_line_count' was not declared in this scope
   38 |   gtk_text_buffer_get_iter_at_line_offset(textBuffer, &iter, gtk_text_buffer_get_line_count(textBuffer), 0);
      |                                                              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:38:3: error: 'gtk_text_buffer_get_iter_at_line_offset' was not declared in this scope
   38 |   gtk_text_buffer_get_iter_at_line_offset(textBuffer, &iter, gtk_text_buffer_get_line_count(textBuffer), 0);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:39:3: error: 'gtk_text_buffer_insert' was not declared in this scope
   39 |   gtk_text_buffer_insert(textBuffer, &iter, text, -1);
      |   ^~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp: In member function 'virtual void hiro::pConsole::reset()':
../hiro/core/../gtk/widget/console.cpp:45:28: error: 'textBuffer' was not declared in this scope; did you mean 'setbuffer'?
   45 |   gtk_text_buffer_set_text(textBuffer, state().prompt, -1);
      |                            ^~~~~~~~~~
      |                            setbuffer
../hiro/core/../gtk/widget/console.cpp:45:3: error: 'gtk_text_buffer_set_text' was not declared in this scope
   45 |   gtk_text_buffer_set_text(textBuffer, state().prompt, -1);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp: In member function 'void hiro::pConsole::setBackgroundColor(hiro::Color)':
../hiro/core/../gtk/widget/console.cpp:50:3: error: 'GdkColor' was not declared in this scope; did you mean 'Color'?
   50 |   GdkColor gdkColor = CreateColor(color);
      |   ^~~~~~~~
      |   Color
../hiro/core/../gtk/widget/console.cpp:51:26: error: 'subWidget' was not declared in this scope; did you mean 'sWidget'?
   51 |   gtk_widget_modify_base(subWidget, GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |                          ^~~~~~~~~
      |                          sWidget
../hiro/core/../gtk/widget/console.cpp:51:37: error: 'GTK_STATE_NORMAL' was not declared in this scope
   51 |   gtk_widget_modify_base(subWidget, GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |                                     ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:51:64: error: 'gdkColor' was not declared in this scope; did you mean 'Color'?
   51 |   gtk_widget_modify_base(subWidget, GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |                                                                ^~~~~~~~
      |                                                                Color
../hiro/core/../gtk/widget/console.cpp:51:3: error: 'gtk_widget_modify_base' was not declared in this scope
   51 |   gtk_widget_modify_base(subWidget, GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |   ^~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp: In member function 'void hiro::pConsole::setForegroundColor(hiro::Color)':
../hiro/core/../gtk/widget/console.cpp:55:3: error: 'GdkColor' was not declared in this scope; did you mean 'Color'?
   55 |   GdkColor gdkColor = CreateColor(color);
      |   ^~~~~~~~
      |   Color
../hiro/core/../gtk/widget/console.cpp:56:26: error: 'subWidget' was not declared in this scope; did you mean 'sWidget'?
   56 |   gtk_widget_modify_text(subWidget, GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |                          ^~~~~~~~~
      |                          sWidget
../hiro/core/../gtk/widget/console.cpp:56:37: error: 'GTK_STATE_NORMAL' was not declared in this scope
   56 |   gtk_widget_modify_text(subWidget, GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |                                     ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:56:64: error: 'gdkColor' was not declared in this scope; did you mean 'Color'?
   56 |   gtk_widget_modify_text(subWidget, GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |                                                                ^~~~~~~~
      |                                                                Color
../hiro/core/../gtk/widget/console.cpp:56:3: error: 'gtk_widget_modify_text' was not declared in this scope
   56 |   gtk_widget_modify_text(subWidget, GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |   ^~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp: In member function 'void hiro::pConsole::setPrompt(const nall::string&)':
../hiro/core/../gtk/widget/console.cpp:61:3: error: 'GtkTextIter' was not declared in this scope
   61 |   GtkTextIter lhs, rhs;
      |   ^~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:62:43: error: 'textBuffer' was not declared in this scope; did you mean 'setbuffer'?
   62 |   gtk_text_buffer_get_iter_at_line_offset(textBuffer, &lhs, gtk_text_buffer_get_line_count(textBuffer), 0);
      |                                           ^~~~~~~~~~
      |                                           setbuffer
../hiro/core/../gtk/widget/console.cpp:62:56: error: 'lhs' was not declared in this scope
   62 |   gtk_text_buffer_get_iter_at_line_offset(textBuffer, &lhs, gtk_text_buffer_get_line_count(textBuffer), 0);
      |                                                        ^~~
../hiro/core/../gtk/widget/console.cpp:62:61: error: 'gtk_text_buffer_get_line_count' was not declared in this scope
   62 |   gtk_text_buffer_get_iter_at_line_offset(textBuffer, &lhs, gtk_text_buffer_get_line_count(textBuffer), 0);
      |                                                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:62:3: error: 'gtk_text_buffer_get_iter_at_line_offset' was not declared in this scope
   62 |   gtk_text_buffer_get_iter_at_line_offset(textBuffer, &lhs, gtk_text_buffer_get_line_count(textBuffer), 0);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:63:56: error: 'rhs' was not declared in this scope
   63 |   gtk_text_buffer_get_iter_at_line_offset(textBuffer, &rhs, gtk_text_buffer_get_line_count(textBuffer), previousPrompt.size());
      |                                                        ^~~
../hiro/core/../gtk/widget/console.cpp:64:3: error: 'gtk_text_buffer_delete' was not declared in this scope
   64 |   gtk_text_buffer_delete(textBuffer, &lhs, &rhs);
      |   ^~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:66:3: error: 'gtk_text_buffer_insert' was not declared in this scope
   66 |   gtk_text_buffer_insert(textBuffer, &lhs, previousPrompt = prompt, -1);
      |   ^~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp: In member function 'bool hiro::pConsole::_keyPress(unsigned int, unsigned int)':
../hiro/core/../gtk/widget/console.cpp:71:14: error: 'GDK_CONTROL_MASK' was not declared in this scope
   71 |   if(mask & (GDK_CONTROL_MASK | GDK_MOD1_MASK | GDK_SUPER_MASK)) return false;  //allow actions such as Ctrl+C (copy)
      |              ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:71:33: error: 'GDK_MOD1_MASK' was not declared in this scope
   71 |   if(mask & (GDK_CONTROL_MASK | GDK_MOD1_MASK | GDK_SUPER_MASK)) return false;  //allow actions such as Ctrl+C (copy)
      |                                 ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:71:49: error: 'GDK_SUPER_MASK' was not declared in this scope
   71 |   if(mask & (GDK_CONTROL_MASK | GDK_MOD1_MASK | GDK_SUPER_MASK)) return false;  //allow actions such as Ctrl+C (copy)
      |                                                 ^~~~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:73:3: error: 'GtkTextMark' was not declared in this scope
   73 |   GtkTextMark* mark = gtk_text_buffer_get_mark(textBuffer, "insert");
      |   ^~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:73:16: error: 'mark' was not declared in this scope; did you mean 'mask'?
   73 |   GtkTextMark* mark = gtk_text_buffer_get_mark(textBuffer, "insert");
      |                ^~~~
      |                mask
../hiro/core/../gtk/widget/console.cpp:73:48: error: 'textBuffer' was not declared in this scope; did you mean 'setbuffer'?
   73 |   GtkTextMark* mark = gtk_text_buffer_get_mark(textBuffer, "insert");
      |                                                ^~~~~~~~~~
      |                                                setbuffer
../hiro/core/../gtk/widget/console.cpp:73:23: error: 'gtk_text_buffer_get_mark' was not declared in this scope
   73 |   GtkTextMark* mark = gtk_text_buffer_get_mark(textBuffer, "insert");
      |                       ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:74:3: error: 'GtkTextIter' was not declared in this scope
   74 |   GtkTextIter start, cursor, end;
      |   ^~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:75:56: error: 'start' was not declared in this scope; did you mean 'stat'?
   75 |   gtk_text_buffer_get_iter_at_line_offset(textBuffer, &start, gtk_text_buffer_get_line_count(textBuffer), state().prompt.size());
      |                                                        ^~~~~
      |                                                        stat
../hiro/core/../gtk/widget/console.cpp:75:63: error: 'gtk_text_buffer_get_line_count' was not declared in this scope
   75 |   gtk_text_buffer_get_iter_at_line_offset(textBuffer, &start, gtk_text_buffer_get_line_count(textBuffer), state().prompt.size());
      |                                                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:75:3: error: 'gtk_text_buffer_get_iter_at_line_offset' was not declared in this scope
   75 |   gtk_text_buffer_get_iter_at_line_offset(textBuffer, &start, gtk_text_buffer_get_line_count(textBuffer), state().prompt.size());
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:76:49: error: 'cursor' was not declared in this scope
   76 |   gtk_text_buffer_get_iter_at_mark(textBuffer, &cursor, mark);
      |                                                 ^~~~~~
../hiro/core/../gtk/widget/console.cpp:76:3: error: 'gtk_text_buffer_get_iter_at_mark' was not declared in this scope
   76 |   gtk_text_buffer_get_iter_at_mark(textBuffer, &cursor, mark);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:77:45: error: 'end' was not declared in this scope; did you mean 'std::end'?
   77 |   gtk_text_buffer_get_end_iter(textBuffer, &end);
      |                                             ^~~
      |                                             std::end
In file included from /opt/tools/gcc13/include/c++/13.3.0/utility:73,
                 from ../nall/platform.hpp:29:
/opt/tools/gcc13/include/c++/13.3.0/initializer_list:99:5: note: 'std::end' declared here
   99 |     end(initializer_list<_Tp> __ils) noexcept
      |     ^~~
../hiro/core/../gtk/widget/console.cpp:77:3: error: 'gtk_text_buffer_get_end_iter' was not declared in this scope
   77 |   gtk_text_buffer_get_end_iter(textBuffer, &end);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:79:18: error: 'GDK_KEY_Return' was not declared in this scope
   79 |   if(scancode == GDK_KEY_Return || scancode == GDK_KEY_KP_Enter) {
      |                  ^~~~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:79:48: error: 'GDK_KEY_KP_Enter' was not declared in this scope
   79 |   if(scancode == GDK_KEY_Return || scancode == GDK_KEY_KP_Enter) {
      |                                                ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:80:18: error: 'gtk_text_buffer_get_text' was not declared in this scope
   80 |     char* temp = gtk_text_buffer_get_text(textBuffer, &start, &end, true);
      |                  ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:82:5: error: 'g_free' was not declared in this scope; did you mean 'free'?
   82 |     g_free(temp);
      |     ^~~~~~
      |     free
../hiro/core/../gtk/widget/console.cpp:83:5: error: 'gtk_text_buffer_insert' was not declared in this scope
   83 |     gtk_text_buffer_insert(textBuffer, &end, string{"\n", state().prompt}, -1);
      |     ^~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:92:18: error: 'GDK_KEY_Up' was not declared in this scope
   92 |   if(scancode == GDK_KEY_Up) {
      |                  ^~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:93:5: error: 'gtk_text_buffer_delete' was not declared in this scope
   93 |     gtk_text_buffer_delete(textBuffer, &start, &end);
      |     ^~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:96:7: error: 'gtk_text_buffer_insert' was not declared in this scope
   96 |       gtk_text_buffer_insert(textBuffer, &end, history[historyOffset++], -1);
      |       ^~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:102:18: error: 'GDK_KEY_Down' was not declared in this scope
  102 |   if(scancode == GDK_KEY_Down) {
      |                  ^~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:103:5: error: 'gtk_text_buffer_delete' was not declared in this scope
  103 |     gtk_text_buffer_delete(textBuffer, &start, &end);
      |     ^~~~~~~~~~~~~~~~~~~~~~
In file included from ../ruby/input/sdl.cpp:5,
                 from ../ruby/input/input.cpp:10:
../ruby/input/keyboard/xlib.cpp: At global scope:
../ruby/input/keyboard/xlib.cpp:9:3: error: 'Display' does not name a type
    9 |   Display* display = nullptr;
      |   ^~~~~~~
../hiro/core/../gtk/widget/console.cpp:106:7: error: 'gtk_text_buffer_insert' was not declared in this scope
  106 |       gtk_text_buffer_insert(textBuffer, &end, history[--historyOffset], -1);
      |       ^~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:112:18: error: 'GDK_KEY_Left' was not declared in this scope
  112 |   if(scancode == GDK_KEY_Left) {
      |                  ^~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:113:8: error: 'gtk_text_iter_get_offset' was not declared in this scope
  113 |     if(gtk_text_iter_get_offset(&cursor) <= gtk_text_iter_get_offset(&start)) {
      |        ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:114:7: error: 'gtk_text_buffer_place_cursor' was not declared in this scope
  114 |       gtk_text_buffer_place_cursor(textBuffer, &start);
      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:116:7: error: 'gtk_text_iter_set_offset' was not declared in this scope
  116 |       gtk_text_iter_set_offset(&cursor, gtk_text_iter_get_offset(&cursor) - 1);
      |       ^~~~~~~~~~~~~~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp: In member function 'void InputKeyboardXlib::poll(nall::vector<nall::shared_pointer<nall::HID::Device> >&)':
../ruby/input/keyboard/xlib.cpp:27:5: error: 'XQueryKeymap' was not declared in this scope
   27 |     XQueryKeymap(display, state);
      |     ^~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:117:7: error: 'gtk_text_buffer_place_cursor' was not declared in this scope
  117 |       gtk_text_buffer_place_cursor(textBuffer, &cursor);
      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:123:18: error: 'GDK_KEY_Right' was not declared in this scope
  123 |   if(scancode == GDK_KEY_Right) {
      |                  ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:124:8: error: 'gtk_text_iter_get_offset' was not declared in this scope
  124 |     if(gtk_text_iter_get_offset(&cursor) < gtk_text_iter_get_offset(&start)) {
      |        ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:125:7: error: 'gtk_text_buffer_place_cursor' was not declared in this scope
  125 |       gtk_text_buffer_place_cursor(textBuffer, &end);
      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp: In member function 'bool InputKeyboardXlib::initialize()':
../ruby/input/keyboard/xlib.cpp:39:15: error: 'XOpenDisplay' was not declared in this scope
   39 |     display = XOpenDisplay(0);
      |               ^~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:127:7: error: 'gtk_text_iter_set_offset' was not declared in this scope
  127 |       gtk_text_iter_set_offset(&cursor, gtk_text_iter_get_offset(&cursor) + 1);
      |       ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:128:7: error: 'gtk_text_buffer_place_cursor' was not declared in this scope
  128 |       gtk_text_buffer_place_cursor(textBuffer, &cursor);
      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:41:28: error: 'XK_Escape' was not declared in this scope
   41 |     keys.append({"Escape", XK_Escape});
      |                            ^~~~~~~~~
../ruby/input/keyboard/xlib.cpp:41:28: note: the macro 'XK_Escape' had not yet been defined
../hiro/core/../gtk/widget/console.cpp:134:18: error: 'GDK_KEY_Home' was not declared in this scope
  134 |   if(scancode == GDK_KEY_Home) {
      |                  ^~~~~~~~~~~~
In file included from /home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysym.h:73,
                 from /home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/Xutil.h:54:
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:208: note: it was later defined here
  208 | #define XK_Escape                        0xff1b  /* U+001B ESCAPE */
      | 
../ruby/input/keyboard/xlib.cpp:41:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
   41 |     keys.append({"Escape", XK_Escape});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/console.cpp:135:5: error: 'gtk_text_buffer_place_cursor' was not declared in this scope
  135 |     gtk_text_buffer_place_cursor(textBuffer, &start);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:140:18: error: 'GDK_KEY_End' was not declared in this scope
  140 |   if(scancode == GDK_KEY_End) {
      |                  ^~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:141:5: error: 'gtk_text_buffer_place_cursor' was not declared in this scope
  141 |     gtk_text_buffer_place_cursor(textBuffer, &end);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:146:18: error: 'GDK_KEY_BackSpace' was not declared in this scope
  146 |   if(scancode == GDK_KEY_BackSpace) {
      |                  ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:147:8: error: 'gtk_text_iter_get_offset' was not declared in this scope
  147 |     if(gtk_text_iter_get_offset(&cursor) <= gtk_text_iter_get_offset(&start)) return true;
      |        ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:148:16: error: expected ';' before 'lhs'
  148 |     GtkTextIter lhs = cursor;
      |                ^~~~
      |                ;
../hiro/core/../gtk/widget/console.cpp:149:31: error: 'lhs' was not declared in this scope
  149 |     gtk_text_iter_set_offset(&lhs, gtk_text_iter_get_offset(&cursor) - 1);
      |                               ^~~
../ruby/input/keyboard/xlib.cpp:43:24: error: 'XK_F1' was not declared in this scope
   43 |     keys.append({"F1", XK_F1});
      |                        ^~~~~
../ruby/input/keyboard/xlib.cpp:43:24: note: the macro 'XK_F1' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:328: note: it was later defined here
  328 | #define XK_F1                            0xffbe
      | 
../ruby/input/keyboard/xlib.cpp:43:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
   43 |     keys.append({"F1", XK_F1});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/console.cpp:149:36: error: 'gtk_text_iter_get_offset' was not declared in this scope
  149 |     gtk_text_iter_set_offset(&lhs, gtk_text_iter_get_offset(&cursor) - 1);
      |                                    ^~~~~~~~~~~~~~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:44:24: error: 'XK_F2' was not declared in this scope
   44 |     keys.append({"F2", XK_F2});
      |                        ^~~~~
../ruby/input/keyboard/xlib.cpp:44:24: note: the macro 'XK_F2' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:329: note: it was later defined here
  329 | #define XK_F2                            0xffbf
      | 
../ruby/input/keyboard/xlib.cpp:44:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
   44 |     keys.append({"F2", XK_F2});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../ruby/input/keyboard/xlib.cpp:45:24: error: 'XK_F3' was not declared in this scope
   45 |     keys.append({"F3", XK_F3});
      |                        ^~~~~
../ruby/input/keyboard/xlib.cpp:45:24: note: the macro 'XK_F3' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:330: note: it was later defined here
  330 | #define XK_F3                            0xffc0
      | 
../ruby/input/keyboard/xlib.cpp:45:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
   45 |     keys.append({"F3", XK_F3});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/console.cpp:149:5: error: 'gtk_text_iter_set_offset' was not declared in this scope
  149 |     gtk_text_iter_set_offset(&lhs, gtk_text_iter_get_offset(&cursor) - 1);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:46:24: error: 'XK_F4' was not declared in this scope
   46 |     keys.append({"F4", XK_F4});
      |                        ^~~~~
../ruby/input/keyboard/xlib.cpp:46:24: note: the macro 'XK_F4' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:331: note: it was later defined here
  331 | #define XK_F4                            0xffc1
      | 
../ruby/input/keyboard/xlib.cpp:46:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
   46 |     keys.append({"F4", XK_F4});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../ruby/input/keyboard/xlib.cpp:47:24: error: 'XK_F5' was not declared in this scope
   47 |     keys.append({"F5", XK_F5});
      |                        ^~~~~
../ruby/input/keyboard/xlib.cpp:47:24: note: the macro 'XK_F5' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:332: note: it was later defined here
  332 | #define XK_F5                            0xffc2
      | 
../ruby/input/keyboard/xlib.cpp:47:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
   47 |     keys.append({"F5", XK_F5});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/console.cpp:150:5: error: 'gtk_text_buffer_delete' was not declared in this scope
  150 |     gtk_text_buffer_delete(textBuffer, &lhs, &cursor);
      |     ^~~~~~~~~~~~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:48:24: error: 'XK_F6' was not declared in this scope
   48 |     keys.append({"F6", XK_F6});
      |                        ^~~~~
../ruby/input/keyboard/xlib.cpp:48:24: note: the macro 'XK_F6' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:333: note: it was later defined here
  333 | #define XK_F6                            0xffc3
      | 
../ruby/input/keyboard/xlib.cpp:48:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
   48 |     keys.append({"F6", XK_F6});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/console.cpp:155:18: error: 'GDK_KEY_Delete' was not declared in this scope
  155 |   if(scancode == GDK_KEY_Delete) {
      |                  ^~~~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:156:8: error: 'gtk_text_iter_get_offset' was not declared in this scope
  156 |     if(gtk_text_iter_get_offset(&cursor) < gtk_text_iter_get_offset(&start)) return true;
      |        ^~~~~~~~~~~~~~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:49:24: error: 'XK_F7' was not declared in this scope
   49 |     keys.append({"F7", XK_F7});
      |                        ^~~~~
../ruby/input/keyboard/xlib.cpp:49:24: note: the macro 'XK_F7' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:334: note: it was later defined here
  334 | #define XK_F7                            0xffc4
      | 
../ruby/input/keyboard/xlib.cpp:49:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
   49 |     keys.append({"F7", XK_F7});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/console.cpp:157:8: error: 'gtk_text_iter_get_offset' was not declared in this scope
  157 |     if(gtk_text_iter_get_offset(&cursor) == gtk_text_iter_get_offset(&end)) return true;
      |        ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:158:16: error: expected ';' before 'rhs'
  158 |     GtkTextIter rhs = cursor;
      |                ^~~~
      |                ;
../hiro/core/../gtk/widget/console.cpp:159:31: error: 'rhs' was not declared in this scope
  159 |     gtk_text_iter_set_offset(&rhs, gtk_text_iter_get_offset(&cursor) + 1);
      |                               ^~~
../ruby/input/keyboard/xlib.cpp:50:24: error: 'XK_F8' was not declared in this scope
   50 |     keys.append({"F8", XK_F8});
      |                        ^~~~~
../ruby/input/keyboard/xlib.cpp:50:24: note: the macro 'XK_F8' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:335: note: it was later defined here
  335 | #define XK_F8                            0xffc5
      | 
../ruby/input/keyboard/xlib.cpp:50:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
   50 |     keys.append({"F8", XK_F8});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/console.cpp:159:36: error: 'gtk_text_iter_get_offset' was not declared in this scope
  159 |     gtk_text_iter_set_offset(&rhs, gtk_text_iter_get_offset(&cursor) + 1);
      |                                    ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:159:5: error: 'gtk_text_iter_set_offset' was not declared in this scope
  159 |     gtk_text_iter_set_offset(&rhs, gtk_text_iter_get_offset(&cursor) + 1);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:51:24: error: 'XK_F9' was not declared in this scope
   51 |     keys.append({"F9", XK_F9});
      |                        ^~~~~
../ruby/input/keyboard/xlib.cpp:51:24: note: the macro 'XK_F9' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:336: note: it was later defined here
  336 | #define XK_F9                            0xffc6
      | 
../ruby/input/keyboard/xlib.cpp:51:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
   51 |     keys.append({"F9", XK_F9});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/console.cpp:160:5: error: 'gtk_text_buffer_delete' was not declared in this scope
  160 |     gtk_text_buffer_delete(textBuffer, &cursor, &rhs);
      |     ^~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:166:8: error: 'gtk_text_iter_get_offset' was not declared in this scope
  166 |     if(gtk_text_iter_get_offset(&cursor) < gtk_text_iter_get_offset(&start)) return true;
      |        ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:167:5: error: 'gtk_text_buffer_insert' was not declared in this scope
  167 |     gtk_text_buffer_insert(textBuffer, &cursor, string{(char)scancode}, -1);
      |     ^~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp: In member function 'void hiro::pConsole::_seekToEnd()':
../hiro/core/../gtk/widget/console.cpp:176:3: error: 'GtkTextIter' was not declared in this scope
  176 |   GtkTextIter iter;
      |   ^~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:52:25: error: 'XK_F10' was not declared in this scope
   52 |     keys.append({"F10", XK_F10});
      |                         ^~~~~~
../ruby/input/keyboard/xlib.cpp:52:25: note: the macro 'XK_F10' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:337: note: it was later defined here
  337 | #define XK_F10                           0xffc7
      | 
../ruby/input/keyboard/xlib.cpp:52:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
   52 |     keys.append({"F10", XK_F10});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/console.cpp:177:32: error: 'textBuffer' was not declared in this scope; did you mean 'setbuffer'?
  177 |   gtk_text_buffer_get_end_iter(textBuffer, &iter);
      |                                ^~~~~~~~~~
      |                                setbuffer
../hiro/core/../gtk/widget/console.cpp:177:45: error: 'iter' was not declared in this scope
  177 |   gtk_text_buffer_get_end_iter(textBuffer, &iter);
      |                                             ^~~~
../hiro/core/../gtk/widget/console.cpp:177:3: error: 'gtk_text_buffer_get_end_iter' was not declared in this scope
  177 |   gtk_text_buffer_get_end_iter(textBuffer, &iter);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:178:3: error: 'gtk_text_buffer_place_cursor' was not declared in this scope
  178 |   gtk_text_buffer_place_cursor(textBuffer, &iter);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:53:25: error: 'XK_F11' was not declared in this scope
   53 |     keys.append({"F11", XK_F11});
      |                         ^~~~~~
../ruby/input/keyboard/xlib.cpp:53:25: note: the macro 'XK_F11' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:338: note: it was later defined here
  338 | #define XK_F11                           0xffc8
      | 
../ruby/input/keyboard/xlib.cpp:53:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
   53 |     keys.append({"F11", XK_F11});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/console.cpp: In member function 'void hiro::pConsole::_seekToMark()':
../hiro/core/../gtk/widget/console.cpp:183:3: error: 'GtkTextMark' was not declared in this scope
  183 |   GtkTextMark* mark = gtk_text_buffer_get_mark(textBuffer, "insert");
      |   ^~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:183:16: error: 'mark' was not declared in this scope
  183 |   GtkTextMark* mark = gtk_text_buffer_get_mark(textBuffer, "insert");
      |                ^~~~
../hiro/core/../gtk/widget/console.cpp:183:48: error: 'textBuffer' was not declared in this scope; did you mean 'setbuffer'?
  183 |   GtkTextMark* mark = gtk_text_buffer_get_mark(textBuffer, "insert");
      |                                                ^~~~~~~~~~
      |                                                setbuffer
../ruby/input/keyboard/xlib.cpp:54:25: error: 'XK_F12' was not declared in this scope
   54 |     keys.append({"F12", XK_F12});
      |                         ^~~~~~
../ruby/input/keyboard/xlib.cpp:54:25: note: the macro 'XK_F12' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:340: note: it was later defined here
  340 | #define XK_F12                           0xffc9
      | 
../ruby/input/keyboard/xlib.cpp:54:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
   54 |     keys.append({"F12", XK_F12});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/console.cpp:183:23: error: 'gtk_text_buffer_get_mark' was not declared in this scope
  183 |   GtkTextMark* mark = gtk_text_buffer_get_mark(textBuffer, "insert");
      |                       ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:184:52: error: 'subWidget' was not declared in this scope; did you mean 'sWidget'?
  184 |   gtk_text_view_scroll_mark_onscreen(GTK_TEXT_VIEW(subWidget), mark);
      |                                                    ^~~~~~~~~
      |                                                    sWidget
../hiro/core/../gtk/widget/console.cpp:184:38: error: 'GTK_TEXT_VIEW' was not declared in this scope
  184 |   gtk_text_view_scroll_mark_onscreen(GTK_TEXT_VIEW(subWidget), mark);
      |                                      ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/console.cpp:184:3: error: 'gtk_text_view_scroll_mark_onscreen' was not declared in this scope
  184 |   gtk_text_view_scroll_mark_onscreen(GTK_TEXT_VIEW(subWidget), mark);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from ../hiro/core/../gtk/platform.cpp:40:
../hiro/core/../gtk/widget/frame.cpp: In member function 'virtual void hiro::pFrame::construct()':
../hiro/core/../gtk/widget/frame.cpp:6:3: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
    6 |   gtkWidget = gtk_frame_new(nullptr);
      |   ^~~~~~~~~
      |   pWidget
../hiro/core/../gtk/widget/frame.cpp:6:15: error: 'gtk_frame_new' was not declared in this scope
    6 |   gtkWidget = gtk_frame_new(nullptr);
      |               ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/frame.cpp:7:3: error: 'gtkLabel' was not declared in this scope; did you mean 'wLabel'?
    7 |   gtkLabel = gtk_label_new("");
      |   ^~~~~~~~
      |   wLabel
../hiro/core/../gtk/widget/frame.cpp:7:14: error: 'gtk_label_new' was not declared in this scope
    7 |   gtkLabel = gtk_label_new("");
      |              ^~~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:56:32: error: 'XK_Scroll_Lock' was not declared in this scope
   56 |     keys.append({"ScrollLock", XK_Scroll_Lock});
      |                                ^~~~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:56:32: note: the macro 'XK_Scroll_Lock' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:206: note: it was later defined here
  206 | #define XK_Scroll_Lock                   0xff14
      | 
../ruby/input/keyboard/xlib.cpp:56:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
   56 |     keys.append({"ScrollLock", XK_Scroll_Lock});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/frame.cpp:8:30: error: 'GTK_FRAME' was not declared in this scope
    8 |   gtk_frame_set_label_widget(GTK_FRAME(gtkWidget), gtkLabel);
      |                              ^~~~~~~~~
../hiro/core/../gtk/widget/frame.cpp:8:3: error: 'gtk_frame_set_label_widget' was not declared in this scope
    8 |   gtk_frame_set_label_widget(GTK_FRAME(gtkWidget), gtkLabel);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:57:27: error: 'XK_Pause' was not declared in this scope
   57 |     keys.append({"Pause", XK_Pause});
      |                           ^~~~~~~~
../ruby/input/keyboard/xlib.cpp:57:27: note: the macro 'XK_Pause' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:205: note: it was later defined here
  205 | #define XK_Pause                         0xff13  /* Pause, hold */
      | 
../ruby/input/keyboard/xlib.cpp:57:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
   57 |     keys.append({"Pause", XK_Pause});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/frame.cpp:9:3: error: 'gtk_widget_show' was not declared in this scope
    9 |   gtk_widget_show(gtkLabel);
      |   ^~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/frame.cpp:10:3: error: 'gtkChild' was not declared in this scope
   10 |   gtkChild = gtk_fixed_new();
      |   ^~~~~~~~
../hiro/core/../gtk/widget/frame.cpp:10:14: error: 'gtk_fixed_new' was not declared in this scope
   10 |   gtkChild = gtk_fixed_new();
      |              ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/frame.cpp:11:21: error: 'GTK_CONTAINER' was not declared in this scope
   11 |   gtk_container_add(GTK_CONTAINER(gtkWidget), gtkChild);
      |                     ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/frame.cpp:11:3: error: 'gtk_container_add' was not declared in this scope
   11 |   gtk_container_add(GTK_CONTAINER(gtkWidget), gtkChild);
      |   ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/frame.cpp: In member function 'virtual void hiro::pFrame::destruct()':
../hiro/core/../gtk/widget/frame.cpp:20:22: error: 'gtkChild' was not declared in this scope
   20 |   gtk_widget_destroy(gtkChild);
      |                      ^~~~~~~~
../ruby/input/keyboard/xlib.cpp:59:27: error: 'XK_asciitilde' was not declared in this scope
   59 |     keys.append({"Tilde", XK_asciitilde});
      |                           ^~~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:59:27: note: the macro 'XK_asciitilde' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:719: note: it was later defined here
  719 | #define XK_asciitilde                    0x007e  /* U+007E TILDE */
      | 
../ruby/input/keyboard/xlib.cpp:59:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
   59 |     keys.append({"Tilde", XK_asciitilde});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/frame.cpp:20:3: error: 'gtk_widget_destroy' was not declared in this scope
   20 |   gtk_widget_destroy(gtkChild);
      |   ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/frame.cpp:21:22: error: 'gtkLabel' was not declared in this scope; did you mean 'wLabel'?
   21 |   gtk_widget_destroy(gtkLabel);
      |                      ^~~~~~~~
      |                      wLabel
../hiro/core/../gtk/widget/frame.cpp:22:22: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   22 |   gtk_widget_destroy(gtkWidget);
      |                      ^~~~~~~~~
      |                      pWidget
../ruby/input/keyboard/xlib.cpp:61:26: error: 'XK_0' was not declared in this scope
   61 |     keys.append({"Num0", XK_0});
      |                          ^~~~
../ruby/input/keyboard/xlib.cpp:61:26: note: the macro 'XK_0' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:640: note: it was later defined here
  640 | #define XK_0                             0x0030  /* U+0030 DIGIT ZERO */
      | 
../ruby/input/keyboard/xlib.cpp:61:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
   61 |     keys.append({"Num0", XK_0});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/frame.cpp: At global scope:
../hiro/core/../gtk/widget/frame.cpp:32:44: error: 'GtkWidget' does not name a type; did you mean 'pWidget'?
   32 | auto pFrame::container(mWidget& widget) -> GtkWidget* {
      |                                            ^~~~~~~~~
      |                                            pWidget
../hiro/core/../gtk/widget/frame.cpp:32:53: error: expected initializer before '*' token
   32 | auto pFrame::container(mWidget& widget) -> GtkWidget* {
      |                                                     ^
../ruby/input/keyboard/xlib.cpp:62:26: error: 'XK_1' was not declared in this scope
   62 |     keys.append({"Num1", XK_1});
      |                          ^~~~
../ruby/input/keyboard/xlib.cpp:62:26: note: the macro 'XK_1' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:641: note: it was later defined here
  641 | #define XK_1                             0x0031  /* U+0031 DIGIT ONE */
      | 
../ruby/input/keyboard/xlib.cpp:62:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
   62 |     keys.append({"Num1", XK_1});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/frame.cpp: In member function 'virtual void hiro::pFrame::setFont(const hiro::Font&)':
../hiro/core/../gtk/widget/frame.cpp:51:18: error: 'gtkLabel' was not declared in this scope; did you mean 'wLabel'?
   51 |   pFont::setFont(gtkLabel, font);
      |                  ^~~~~~~~
      |                  wLabel
../hiro/core/../gtk/widget/frame.cpp: In member function 'void hiro::pFrame::setText(const nall::string&)':
../hiro/core/../gtk/widget/frame.cpp:77:32: error: 'gtkLabel' was not declared in this scope; did you mean 'wLabel'?
   77 |   gtk_label_set_text(GTK_LABEL(gtkLabel), text);
      |                                ^~~~~~~~
      |                                wLabel
../ruby/input/keyboard/xlib.cpp:63:26: error: 'XK_2' was not declared in this scope
   63 |     keys.append({"Num2", XK_2});
      |                          ^~~~
../ruby/input/keyboard/xlib.cpp:63:26: note: the macro 'XK_2' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:642: note: it was later defined here
  642 | #define XK_2                             0x0032  /* U+0032 DIGIT TWO */
      | 
../ruby/input/keyboard/xlib.cpp:63:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
   63 |     keys.append({"Num2", XK_2});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/frame.cpp:77:22: error: 'GTK_LABEL' was not declared in this scope
   77 |   gtk_label_set_text(GTK_LABEL(gtkLabel), text);
      |                      ^~~~~~~~~
../hiro/core/../gtk/widget/frame.cpp:77:3: error: 'gtk_label_set_text' was not declared in this scope
   77 |   gtk_label_set_text(GTK_LABEL(gtkLabel), text);
      |   ^~~~~~~~~~~~~~~~~~
In file included from ../hiro/core/../gtk/platform.cpp:41:
../hiro/core/../gtk/widget/hex-edit.cpp: At global scope:
../hiro/core/../gtk/widget/hex-edit.cpp:5:30: error: 'GtkWidget' was not declared in this scope; did you mean 'wWidget'?
    5 | static auto HexEdit_keyPress(GtkWidget* widget, GdkEventKey* event, pHexEdit* p) -> signed {
      |                              ^~~~~~~~~
      |                              wWidget
../hiro/core/../gtk/widget/hex-edit.cpp:5:41: error: 'widget' was not declared in this scope; did you mean 'Widget'?
    5 | static auto HexEdit_keyPress(GtkWidget* widget, GdkEventKey* event, pHexEdit* p) -> signed {
      |                                         ^~~~~~
      |                                         Widget
../hiro/core/../gtk/widget/hex-edit.cpp:5:49: error: 'GdkEventKey' was not declared in this scope
    5 | static auto HexEdit_keyPress(GtkWidget* widget, GdkEventKey* event, pHexEdit* p) -> signed {
      |                                                 ^~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:64:26: error: 'XK_3' was not declared in this scope
   64 |     keys.append({"Num3", XK_3});
      |                          ^~~~
../ruby/input/keyboard/xlib.cpp:64:26: note: the macro 'XK_3' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:643: note: it was later defined here
  643 | #define XK_3                             0x0033  /* U+0033 DIGIT THREE */
      | 
../ruby/input/keyboard/xlib.cpp:64:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
   64 |     keys.append({"Num3", XK_3});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/hex-edit.cpp:5:62: error: 'event' was not declared in this scope; did you mean 'servent'?
    5 | static auto HexEdit_keyPress(GtkWidget* widget, GdkEventKey* event, pHexEdit* p) -> signed {
      |                                                              ^~~~~
      |                                                              servent
../hiro/core/../gtk/widget/hex-edit.cpp:5:77: error: expected primary-expression before '*' token
    5 | static auto HexEdit_keyPress(GtkWidget* widget, GdkEventKey* event, pHexEdit* p) -> signed {
      |                                                                             ^
../hiro/core/../gtk/widget/hex-edit.cpp:5:79: error: 'p' was not declared in this scope
    5 | static auto HexEdit_keyPress(GtkWidget* widget, GdkEventKey* event, pHexEdit* p) -> signed {
      |                                                                               ^
../hiro/core/../gtk/widget/hex-edit.cpp:5:80: error: expression list treated as compound expression in initializer [-fpermissive]
    5 | static auto HexEdit_keyPress(GtkWidget* widget, GdkEventKey* event, pHexEdit* p) -> signed {
      |                                                                                ^
../hiro/core/../gtk/widget/hex-edit.cpp:5:82: error: expected ',' or ';' before '->' token
    5 | static auto HexEdit_keyPress(GtkWidget* widget, GdkEventKey* event, pHexEdit* p) -> signed {
      |                                                                                  ^~
../hiro/core/../gtk/widget/hex-edit.cpp:9:33: error: 'GtkWidget' was not declared in this scope; did you mean 'wWidget'?
    9 | static auto HexEdit_mouseScroll(GtkWidget* widget, GdkEventScroll* event, pHexEdit* p) -> signed {
      |                                 ^~~~~~~~~
      |                                 wWidget
../ruby/input/keyboard/xlib.cpp:65:26: error: 'XK_4' was not declared in this scope
   65 |     keys.append({"Num4", XK_4});
      |                          ^~~~
../ruby/input/keyboard/xlib.cpp:65:26: note: the macro 'XK_4' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:644: note: it was later defined here
  644 | #define XK_4                             0x0034  /* U+0034 DIGIT FOUR */
      | 
../ruby/input/keyboard/xlib.cpp:65:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
   65 |     keys.append({"Num4", XK_4});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../ruby/input/keyboard/xlib.cpp:66:26: error: 'XK_5' was not declared in this scope
   66 |     keys.append({"Num5", XK_5});
      |                          ^~~~
../ruby/input/keyboard/xlib.cpp:66:26: note: the macro 'XK_5' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:645: note: it was later defined here
  645 | #define XK_5                             0x0035  /* U+0035 DIGIT FIVE */
      | 
../ruby/input/keyboard/xlib.cpp:66:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
   66 |     keys.append({"Num5", XK_5});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/hex-edit.cpp:9:44: error: 'widget' was not declared in this scope; did you mean 'Widget'?
    9 | static auto HexEdit_mouseScroll(GtkWidget* widget, GdkEventScroll* event, pHexEdit* p) -> signed {
      |                                            ^~~~~~
      |                                            Widget
../hiro/core/../gtk/widget/hex-edit.cpp:9:52: error: 'GdkEventScroll' was not declared in this scope
    9 | static auto HexEdit_mouseScroll(GtkWidget* widget, GdkEventScroll* event, pHexEdit* p) -> signed {
      |                                                    ^~~~~~~~~~~~~~
../hiro/core/../gtk/widget/hex-edit.cpp:9:68: error: 'event' was not declared in this scope; did you mean 'servent'?
    9 | static auto HexEdit_mouseScroll(GtkWidget* widget, GdkEventScroll* event, pHexEdit* p) -> signed {
      |                                                                    ^~~~~
      |                                                                    servent
../hiro/core/../gtk/widget/hex-edit.cpp:9:83: error: expected primary-expression before '*' token
    9 | static auto HexEdit_mouseScroll(GtkWidget* widget, GdkEventScroll* event, pHexEdit* p) -> signed {
      |                                                                                   ^
../hiro/core/../gtk/widget/hex-edit.cpp:9:85: error: 'p' was not declared in this scope
    9 | static auto HexEdit_mouseScroll(GtkWidget* widget, GdkEventScroll* event, pHexEdit* p) -> signed {
      |                                                                                     ^
../hiro/core/../gtk/widget/hex-edit.cpp:9:86: error: expression list treated as compound expression in initializer [-fpermissive]
    9 | static auto HexEdit_mouseScroll(GtkWidget* widget, GdkEventScroll* event, pHexEdit* p) -> signed {
      |                                                                                      ^
../hiro/core/../gtk/widget/hex-edit.cpp:9:88: error: expected ',' or ';' before '->' token
    9 | static auto HexEdit_mouseScroll(GtkWidget* widget, GdkEventScroll* event, pHexEdit* p) -> signed {
      |                                                                                        ^~
../hiro/core/../gtk/widget/hex-edit.cpp:23:28: error: 'GtkRange' was not declared in this scope
   23 | static auto HexEdit_scroll(GtkRange* range, GtkScrollType scroll, double value, pHexEdit* p) -> signed {
      |                            ^~~~~~~~
../hiro/core/../gtk/widget/hex-edit.cpp:23:45: error: 'GtkScrollType' was not declared in this scope
   23 | static auto HexEdit_scroll(GtkRange* range, GtkScrollType scroll, double value, pHexEdit* p) -> signed {
      |                                             ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/hex-edit.cpp:23:67: error: expected primary-expression before 'double'
   23 | static auto HexEdit_scroll(GtkRange* range, GtkScrollType scroll, double value, pHexEdit* p) -> signed {
      |                                                                   ^~~~~~
../hiro/core/../gtk/widget/hex-edit.cpp:23:89: error: expected primary-expression before '*' token
   23 | static auto HexEdit_scroll(GtkRange* range, GtkScrollType scroll, double value, pHexEdit* p) -> signed {
      |                                                                                         ^
../hiro/core/../gtk/widget/hex-edit.cpp:23:91: error: 'p' was not declared in this scope
   23 | static auto HexEdit_scroll(GtkRange* range, GtkScrollType scroll, double value, pHexEdit* p) -> signed {
      |                                                                                           ^
../hiro/core/../gtk/widget/hex-edit.cpp:23:92: error: expression list treated as compound expression in initializer [-fpermissive]
   23 | static auto HexEdit_scroll(GtkRange* range, GtkScrollType scroll, double value, pHexEdit* p) -> signed {
      |                                                                                            ^
../hiro/core/../gtk/widget/hex-edit.cpp:23:94: error: expected ',' or ';' before '->' token
   23 | static auto HexEdit_scroll(GtkRange* range, GtkScrollType scroll, double value, pHexEdit* p) -> signed {
      |                                                                                              ^~
../ruby/input/keyboard/xlib.cpp:67:26: error: 'XK_6' was not declared in this scope
   67 |     keys.append({"Num6", XK_6});
      |                          ^~~~
../ruby/input/keyboard/xlib.cpp:67:26: note: the macro 'XK_6' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:646: note: it was later defined here
  646 | #define XK_6                             0x0036  /* U+0036 DIGIT SIX */
      | 
../ruby/input/keyboard/xlib.cpp:67:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
   67 |     keys.append({"Num6", XK_6});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/hex-edit.cpp: In member function 'virtual void hiro::pHexEdit::construct()':
../hiro/core/../gtk/widget/hex-edit.cpp:32:3: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   32 |   gtkWidget = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
      |   ^~~~~~~~~
      |   pWidget
../hiro/core/../gtk/widget/hex-edit.cpp:32:27: error: 'GTK_ORIENTATION_HORIZONTAL' was not declared in this scope
   32 |   gtkWidget = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
      |                           ^~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/hex-edit.cpp:32:15: error: 'gtk_box_new' was not declared in this scope
   32 |   gtkWidget = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
      |               ^~~~~~~~~~~
../hiro/core/../gtk/widget/hex-edit.cpp:35:3: error: 'container' was not declared in this scope
   35 |   container = gtk_scrolled_window_new(0, 0);
      |   ^~~~~~~~~
../ruby/input/keyboard/xlib.cpp:68:26: error: 'XK_7' was not declared in this scope
   68 |     keys.append({"Num7", XK_7});
      |                          ^~~~
../ruby/input/keyboard/xlib.cpp:68:26: note: the macro 'XK_7' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:647: note: it was later defined here
  647 | #define XK_7                             0x0037  /* U+0037 DIGIT SEVEN */
      | 
../ruby/input/keyboard/xlib.cpp:68:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
   68 |     keys.append({"Num7", XK_7});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/hex-edit.cpp:35:15: error: 'gtk_scrolled_window_new' was not declared in this scope
   35 |   container = gtk_scrolled_window_new(0, 0);
      |               ^~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/hex-edit.cpp:36:34: error: 'GTK_SCROLLED_WINDOW' was not declared in this scope
   36 |   gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(container), GTK_POLICY_AUTOMATIC, GTK_POLICY_NEVER);
      |                                  ^~~~~~~~~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:69:26: error: 'XK_8' was not declared in this scope
   69 |     keys.append({"Num8", XK_8});
      |                          ^~~~
../ruby/input/keyboard/xlib.cpp:69:26: note: the macro 'XK_8' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:648: note: it was later defined here
  648 | #define XK_8                             0x0038  /* U+0038 DIGIT EIGHT */
      | 
../ruby/input/keyboard/xlib.cpp:69:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
   69 |     keys.append({"Num8", XK_8});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/hex-edit.cpp:36:66: error: 'GTK_POLICY_AUTOMATIC' was not declared in this scope
   36 |   gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(container), GTK_POLICY_AUTOMATIC, GTK_POLICY_NEVER);
      |                                                                  ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/hex-edit.cpp:36:88: error: 'GTK_POLICY_NEVER' was not declared in this scope
   36 |   gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(container), GTK_POLICY_AUTOMATIC, GTK_POLICY_NEVER);
      |                                                                                        ^~~~~~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:70:26: error: 'XK_9' was not declared in this scope
   70 |     keys.append({"Num9", XK_9});
      |                          ^~~~
../ruby/input/keyboard/xlib.cpp:70:26: note: the macro 'XK_9' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:649: note: it was later defined here
  649 | #define XK_9                             0x0039  /* U+0039 DIGIT NINE */
      | 
../ruby/input/keyboard/xlib.cpp:70:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
   70 |     keys.append({"Num9", XK_9});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/hex-edit.cpp:36:3: error: 'gtk_scrolled_window_set_policy' was not declared in this scope
   36 |   gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(container), GTK_POLICY_AUTOMATIC, GTK_POLICY_NEVER);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:72:26: error: 'XK_minus' was not declared in this scope
   72 |     keys.append({"Dash", XK_minus});
      |                          ^~~~~~~~
../ruby/input/keyboard/xlib.cpp:72:26: note: the macro 'XK_minus' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:637: note: it was later defined here
  637 | #define XK_minus                         0x002d  /* U+002D HYPHEN-MINUS */
      | 
../ruby/input/keyboard/xlib.cpp:72:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
   72 |     keys.append({"Dash", XK_minus});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/hex-edit.cpp:37:71: error: 'GTK_SHADOW_ETCHED_IN' was not declared in this scope
   37 |   gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(container), GTK_SHADOW_ETCHED_IN);
      |                                                                       ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/hex-edit.cpp:37:3: error: 'gtk_scrolled_window_set_shadow_type' was not declared in this scope
   37 |   gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(container), GTK_SHADOW_ETCHED_IN);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/hex-edit.cpp:39:3: error: 'subWidget' was not declared in this scope; did you mean 'sWidget'?
   39 |   subWidget = gtk_text_view_new();
      |   ^~~~~~~~~
      |   sWidget
../ruby/input/keyboard/xlib.cpp:73:27: error: 'XK_equal' was not declared in this scope
   73 |     keys.append({"Equal", XK_equal});
      |                           ^~~~~~~~
../ruby/input/keyboard/xlib.cpp:73:27: note: the macro 'XK_equal' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:653: note: it was later defined here
  653 | #define XK_equal                         0x003d  /* U+003D EQUALS SIGN */
      | 
../ruby/input/keyboard/xlib.cpp:73:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
   73 |     keys.append({"Equal", XK_equal});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/hex-edit.cpp:39:15: error: 'gtk_text_view_new' was not declared in this scope
   39 |   subWidget = gtk_text_view_new();
      |               ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/hex-edit.cpp:40:30: error: 'GTK_TEXT_VIEW' was not declared in this scope
   40 |   gtk_text_view_set_editable(GTK_TEXT_VIEW(subWidget), false);
      |                              ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/hex-edit.cpp:40:3: error: 'gtk_text_view_set_editable' was not declared in this scope
   40 |   gtk_text_view_set_editable(GTK_TEXT_VIEW(subWidget), false);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/hex-edit.cpp:41:57: error: 'GTK_WRAP_NONE' was not declared in this scope
   41 |   gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(subWidget), GTK_WRAP_NONE);
      |                                                         ^~~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:74:31: error: 'XK_BackSpace' was not declared in this scope
   74 |     keys.append({"Backspace", XK_BackSpace});
      |                               ^~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:74:31: note: the macro 'XK_BackSpace' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:200: note: it was later defined here
  200 | #define XK_BackSpace                     0xff08  /* U+0008 BACKSPACE */
      | 
../ruby/input/keyboard/xlib.cpp:74:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
   74 |     keys.append({"Backspace", XK_BackSpace});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/hex-edit.cpp:41:3: error: 'gtk_text_view_set_wrap_mode' was not declared in this scope
   41 |   gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(subWidget), GTK_WRAP_NONE);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/hex-edit.cpp:42:21: error: 'GTK_CONTAINER' was not declared in this scope
   42 |   gtk_container_add(GTK_CONTAINER(container), subWidget);
      |                     ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/hex-edit.cpp:42:3: error: 'gtk_container_add' was not declared in this scope
   42 |   gtk_container_add(GTK_CONTAINER(container), subWidget);
      |   ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/hex-edit.cpp:47:3: error: 'scrollBar' was not declared in this scope; did you mean 'scroll'?
   47 |   scrollBar = gtk_scrollbar_new(GTK_ORIENTATION_VERTICAL, nullptr);
      |   ^~~~~~~~~
      |   scroll
../ruby/input/keyboard/xlib.cpp:76:28: error: 'XK_Insert' was not declared in this scope
   76 |     keys.append({"Insert", XK_Insert});
      |                            ^~~~~~~~~
../ruby/input/keyboard/xlib.cpp:76:28: note: the macro 'XK_Insert' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:266: note: it was later defined here
  266 | #define XK_Insert                        0xff63  /* Insert, insert here */
      | 
../ruby/input/keyboard/xlib.cpp:76:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
   76 |     keys.append({"Insert", XK_Insert});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/hex-edit.cpp:47:33: error: 'GTK_ORIENTATION_VERTICAL' was not declared in this scope
   47 |   scrollBar = gtk_scrollbar_new(GTK_ORIENTATION_VERTICAL, nullptr);
      |                                 ^~~~~~~~~~~~~~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:77:28: error: 'XK_Delete' was not declared in this scope
   77 |     keys.append({"Delete", XK_Delete});
      |                            ^~~~~~~~~
../ruby/input/keyboard/xlib.cpp:77:28: note: the macro 'XK_Delete' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:209: note: it was later defined here
  209 | #define XK_Delete                        0xffff  /* U+007F DELETE */
      | 
../ruby/input/keyboard/xlib.cpp:77:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
   77 |     keys.append({"Delete", XK_Delete});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/hex-edit.cpp:47:15: error: 'gtk_scrollbar_new' was not declared in this scope
   47 |   scrollBar = gtk_scrollbar_new(GTK_ORIENTATION_VERTICAL, nullptr);
      |               ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/hex-edit.cpp:49:23: error: 'GTK_RANGE' was not declared in this scope
   49 |   gtk_range_set_range(GTK_RANGE(scrollBar), 0, 255);
      |                       ^~~~~~~~~
../hiro/core/../gtk/widget/hex-edit.cpp:49:3: error: 'gtk_range_set_range' was not declared in this scope
   49 |   gtk_range_set_range(GTK_RANGE(scrollBar), 0, 255);
      |   ^~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/hex-edit.cpp:50:3: error: 'gtk_range_set_increments' was not declared in this scope
   50 |   gtk_range_set_increments(GTK_RANGE(scrollBar), 1, 16);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/hex-edit.cpp:51:3: error: 'gtk_widget_set_sensitive' was not declared in this scope
   51 |   gtk_widget_set_sensitive(scrollBar, false);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/hex-edit.cpp:53:22: error: 'GTK_BOX' was not declared in this scope
   53 |   gtk_box_pack_start(GTK_BOX(gtkWidget), container, true, true, 0);
      |                      ^~~~~~~
../ruby/input/keyboard/xlib.cpp:78:26: error: 'XK_Home' was not declared in this scope
   78 |     keys.append({"Home", XK_Home});
      |                          ^~~~~~~
../ruby/input/keyboard/xlib.cpp:78:26: note: the macro 'XK_Home' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:248: note: it was later defined here
  248 | #define XK_Home                          0xff50
      | 
../ruby/input/keyboard/xlib.cpp:78:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
   78 |     keys.append({"Home", XK_Home});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/hex-edit.cpp:53:3: error: 'gtk_box_pack_start' was not declared in this scope
   53 |   gtk_box_pack_start(GTK_BOX(gtkWidget), container, true, true, 0);
      |   ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/hex-edit.cpp:56:3: error: 'textBuffer' was not declared in this scope; did you mean 'setbuffer'?
   56 |   textBuffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(subWidget));
      |   ^~~~~~~~~~
      |   setbuffer
../ruby/input/keyboard/xlib.cpp:79:25: error: 'XK_End' was not declared in this scope
   79 |     keys.append({"End", XK_End});
      |                         ^~~~~~
../ruby/input/keyboard/xlib.cpp:79:25: note: the macro 'XK_End' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:257: note: it was later defined here
  257 | #define XK_End                           0xff57  /* EOL */
      | 
../ruby/input/keyboard/xlib.cpp:79:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
   79 |     keys.append({"End", XK_End});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/hex-edit.cpp:56:16: error: 'gtk_text_view_get_buffer' was not declared in this scope
   56 |   textBuffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(subWidget));
      |                ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/hex-edit.cpp:57:3: error: 'textCursor' was not declared in this scope; did you mean 'TextCursor'?
   57 |   textCursor = gtk_text_buffer_get_mark(textBuffer, "insert");
      |   ^~~~~~~~~~
      |   TextCursor
../hiro/core/../gtk/widget/hex-edit.cpp:57:16: error: 'gtk_text_buffer_get_mark' was not declared in this scope
   57 |   textCursor = gtk_text_buffer_get_mark(textBuffer, "insert");
      |                ^~~~~~~~~~~~~~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:80:28: error: 'XK_Prior' was not declared in this scope
   80 |     keys.append({"PageUp", XK_Prior});
      |                            ^~~~~~~~
../ruby/input/keyboard/xlib.cpp:80:28: note: the macro 'XK_Prior' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:253: note: it was later defined here
  253 | #define XK_Prior                         0xff55  /* Prior, previous */
      | 
../ruby/input/keyboard/xlib.cpp:80:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
   80 |     keys.append({"PageUp", XK_Prior});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/hex-edit.cpp:59:3: error: 'gtk_widget_show' was not declared in this scope
   59 |   gtk_widget_show(scrollBar);
      |   ^~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/hex-edit.cpp:71:20: error: 'G_OBJECT' was not declared in this scope
   71 |   g_signal_connect(G_OBJECT(subWidget), "key-press-event", G_CALLBACK(HexEdit_keyPress), (gpointer)this);
      |                    ^~~~~~~~
../hiro/core/../gtk/widget/hex-edit.cpp:71:60: error: 'G_CALLBACK' was not declared in this scope
   71 |   g_signal_connect(G_OBJECT(subWidget), "key-press-event", G_CALLBACK(HexEdit_keyPress), (gpointer)this);
      |                                                            ^~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:81:30: error: 'XK_Next' was not declared in this scope
   81 |     keys.append({"PageDown", XK_Next});
      |                              ^~~~~~~
../ruby/input/keyboard/xlib.cpp:81:30: note: the macro 'XK_Next' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:255: note: it was later defined here
  255 | #define XK_Next                          0xff56  /* Next */
      | 
../ruby/input/keyboard/xlib.cpp:81:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
   81 |     keys.append({"PageDown", XK_Next});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/hex-edit.cpp:71:91: error: 'gpointer' was not declared in this scope
   71 |   g_signal_connect(G_OBJECT(subWidget), "key-press-event", G_CALLBACK(HexEdit_keyPress), (gpointer)this);
      |                                                                                           ^~~~~~~~
../hiro/core/../gtk/widget/hex-edit.cpp:71:3: error: 'g_signal_connect' was not declared in this scope
   71 |   g_signal_connect(G_OBJECT(subWidget), "key-press-event", G_CALLBACK(HexEdit_keyPress), (gpointer)this);
      |   ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/hex-edit.cpp:72:100: error: expected ')' before 'this'
   72 |   g_signal_connect(G_OBJECT(subWidget), "scroll-event", G_CALLBACK(HexEdit_mouseScroll), (gpointer)this);
      |                   ~                                                                                ^~~~
      |                                                                                                    )
../hiro/core/../gtk/widget/hex-edit.cpp:74:95: error: expected ')' before 'this'
   74 |   g_signal_connect(G_OBJECT(scrollBar), "change-value", G_CALLBACK(HexEdit_scroll), (gpointer)this);
      |                   ~                                                                           ^~~~
      |                                                                                               )
../hiro/core/../gtk/widget/hex-edit.cpp:75:100: error: expected ')' before 'this'
   75 |   g_signal_connect(G_OBJECT(scrollBar), "scroll-event", G_CALLBACK(HexEdit_mouseScroll), (gpointer)this);
      |                   ~                                                                                ^~~~
      |                                                                                                    )
../ruby/input/keyboard/xlib.cpp:83:23: error: 'XK_A' was not declared in this scope
   83 |     keys.append({"A", XK_A});
      |                       ^~~~
../ruby/input/keyboard/xlib.cpp:83:23: note: the macro 'XK_A' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:657: note: it was later defined here
  657 | #define XK_A                             0x0041  /* U+0041 LATIN CAPITAL LETTER A */
      | 
../ruby/input/keyboard/xlib.cpp:83:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
   83 |     keys.append({"A", XK_A});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/hex-edit.cpp: In member function 'virtual void hiro::pHexEdit::destruct()':
../hiro/core/../gtk/widget/hex-edit.cpp:81:22: error: 'scrollBar' was not declared in this scope; did you mean 'scroll'?
   81 |   gtk_widget_destroy(scrollBar);
      |                      ^~~~~~~~~
      |                      scroll
../hiro/core/../gtk/widget/hex-edit.cpp:81:3: error: 'gtk_widget_destroy' was not declared in this scope
   81 |   gtk_widget_destroy(scrollBar);
      |   ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/hex-edit.cpp:82:22: error: 'subWidget' was not declared in this scope; did you mean 'sWidget'?
   82 |   gtk_widget_destroy(subWidget);
      |                      ^~~~~~~~~
      |                      sWidget
../hiro/core/../gtk/widget/hex-edit.cpp:83:22: error: 'container' was not declared in this scope
   83 |   gtk_widget_destroy(container);
      |                      ^~~~~~~~~
../ruby/input/keyboard/xlib.cpp:84:23: error: 'XK_B' was not declared in this scope
   84 |     keys.append({"B", XK_B});
      |                       ^~~~
../ruby/input/keyboard/xlib.cpp:84:23: note: the macro 'XK_B' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:658: note: it was later defined here
  658 | #define XK_B                             0x0042  /* U+0042 LATIN CAPITAL LETTER B */
      | 
../ruby/input/keyboard/xlib.cpp:84:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
   84 |     keys.append({"B", XK_B});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/hex-edit.cpp:84:22: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   84 |   gtk_widget_destroy(gtkWidget);
      |                      ^~~~~~~~~
      |                      pWidget
../hiro/core/../gtk/widget/hex-edit.cpp: In member function 'virtual bool hiro::pHexEdit::focused() const':
../hiro/core/../gtk/widget/hex-edit.cpp:88:31: error: 'subWidget' was not declared in this scope; did you mean 'sWidget'?
   88 |   return gtk_widget_has_focus(subWidget) || gtk_widget_has_focus(scrollBar);
      |                               ^~~~~~~~~
      |                               sWidget
../ruby/input/keyboard/xlib.cpp:85:23: error: 'XK_C' was not declared in this scope
   85 |     keys.append({"C", XK_C});
      |                       ^~~~
../ruby/input/keyboard/xlib.cpp:85:23: note: the macro 'XK_C' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:659: note: it was later defined here
  659 | #define XK_C                             0x0043  /* U+0043 LATIN CAPITAL LETTER C */
      | 
../ruby/input/keyboard/xlib.cpp:85:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
   85 |     keys.append({"C", XK_C});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/hex-edit.cpp:88:10: error: 'gtk_widget_has_focus' was not declared in this scope
   88 |   return gtk_widget_has_focus(subWidget) || gtk_widget_has_focus(scrollBar);
      |          ^~~~~~~~~~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:86:23: error: 'XK_D' was not declared in this scope
   86 |     keys.append({"D", XK_D});
      |                       ^~~~
../ruby/input/keyboard/xlib.cpp:86:23: note: the macro 'XK_D' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:660: note: it was later defined here
  660 | #define XK_D                             0x0044  /* U+0044 LATIN CAPITAL LETTER D */
      | 
../ruby/input/keyboard/xlib.cpp:86:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
   86 |     keys.append({"D", XK_D});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/hex-edit.cpp:88:66: error: 'scrollBar' was not declared in this scope; did you mean 'scroll'?
   88 |   return gtk_widget_has_focus(subWidget) || gtk_widget_has_focus(scrollBar);
      |                                                                  ^~~~~~~~~
      |                                                                  scroll
../hiro/core/../gtk/widget/hex-edit.cpp: In member function 'void hiro::pHexEdit::setBackgroundColor(hiro::Color)':
../hiro/core/../gtk/widget/hex-edit.cpp:98:3: error: 'GdkColor' was not declared in this scope; did you mean 'Color'?
   98 |   GdkColor gdkColor = CreateColor(color);
      |   ^~~~~~~~
      |   Color
../hiro/core/../gtk/widget/hex-edit.cpp:99:26: error: 'subWidget' was not declared in this scope; did you mean 'sWidget'?
   99 |   gtk_widget_modify_base(subWidget, GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |                          ^~~~~~~~~
      |                          sWidget
../hiro/core/../gtk/widget/hex-edit.cpp:99:37: error: 'GTK_STATE_NORMAL' was not declared in this scope
   99 |   gtk_widget_modify_base(subWidget, GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |                                     ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/hex-edit.cpp:99:64: error: 'gdkColor' was not declared in this scope; did you mean 'Color'?
   99 |   gtk_widget_modify_base(subWidget, GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |                                                                ^~~~~~~~
      |                                                                Color
../ruby/input/keyboard/xlib.cpp:87:23: error: 'XK_E' was not declared in this scope
   87 |     keys.append({"E", XK_E});
      |                       ^~~~
../ruby/input/keyboard/xlib.cpp:87:23: note: the macro 'XK_E' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:661: note: it was later defined here
  661 | #define XK_E                             0x0045  /* U+0045 LATIN CAPITAL LETTER E */
      | 
../ruby/input/keyboard/xlib.cpp:87:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
   87 |     keys.append({"E", XK_E});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/hex-edit.cpp:99:3: error: 'gtk_widget_modify_base' was not declared in this scope
   99 |   gtk_widget_modify_base(subWidget, GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |   ^~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/hex-edit.cpp: In member function 'void hiro::pHexEdit::setForegroundColor(hiro::Color)':
../hiro/core/../gtk/widget/hex-edit.cpp:108:3: error: 'GdkColor' was not declared in this scope; did you mean 'Color'?
  108 |   GdkColor gdkColor = CreateColor(color);
      |   ^~~~~~~~
      |   Color
../hiro/core/../gtk/widget/hex-edit.cpp:109:26: error: 'subWidget' was not declared in this scope; did you mean 'sWidget'?
  109 |   gtk_widget_modify_text(subWidget, GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |                          ^~~~~~~~~
      |                          sWidget
../ruby/input/keyboard/xlib.cpp:88:23: error: 'XK_F' was not declared in this scope
   88 |     keys.append({"F", XK_F});
      |                       ^~~~
../ruby/input/keyboard/xlib.cpp:88:23: note: the macro 'XK_F' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:662: note: it was later defined here
  662 | #define XK_F                             0x0046  /* U+0046 LATIN CAPITAL LETTER F */
      | 
../ruby/input/keyboard/xlib.cpp:88:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
   88 |     keys.append({"F", XK_F});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/hex-edit.cpp:109:37: error: 'GTK_STATE_NORMAL' was not declared in this scope
  109 |   gtk_widget_modify_text(subWidget, GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |                                     ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/hex-edit.cpp:109:64: error: 'gdkColor' was not declared in this scope; did you mean 'Color'?
  109 |   gtk_widget_modify_text(subWidget, GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |                                                                ^~~~~~~~
      |                                                                Color
../hiro/core/../gtk/widget/hex-edit.cpp:109:3: error: 'gtk_widget_modify_text' was not declared in this scope
  109 |   gtk_widget_modify_text(subWidget, GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |   ^~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/hex-edit.cpp: In member function 'void hiro::pHexEdit::update()':
../hiro/core/../gtk/widget/hex-edit.cpp:124:30: error: 'textBuffer' was not declared in this scope; did you mean 'setbuffer'?
  124 |     gtk_text_buffer_set_text(textBuffer, "", -1);
      |                              ^~~~~~~~~~
      |                              setbuffer
../ruby/input/keyboard/xlib.cpp:89:23: error: 'XK_G' was not declared in this scope
   89 |     keys.append({"G", XK_G});
      |                       ^~~~
../ruby/input/keyboard/xlib.cpp:89:23: note: the macro 'XK_G' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:663: note: it was later defined here
  663 | #define XK_G                             0x0047  /* U+0047 LATIN CAPITAL LETTER G */
      | 
../ruby/input/keyboard/xlib.cpp:89:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
   89 |     keys.append({"G", XK_G});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/hex-edit.cpp:124:5: error: 'gtk_text_buffer_set_text' was not declared in this scope
  124 |     gtk_text_buffer_set_text(textBuffer, "", -1);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:90:23: error: 'XK_H' was not declared in this scope
   90 |     keys.append({"H", XK_H});
      |                       ^~~~
../ruby/input/keyboard/xlib.cpp:90:23: note: the macro 'XK_H' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:664: note: it was later defined here
  664 | #define XK_H                             0x0048  /* U+0048 LATIN CAPITAL LETTER H */
      | 
../ruby/input/keyboard/xlib.cpp:90:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
   90 |     keys.append({"H", XK_H});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/hex-edit.cpp:156:28: error: 'textBuffer' was not declared in this scope; did you mean 'setbuffer'?
  156 |   gtk_text_buffer_set_text(textBuffer, output, -1);
      |                            ^~~~~~~~~~
      |                            setbuffer
../hiro/core/../gtk/widget/hex-edit.cpp:156:3: error: 'gtk_text_buffer_set_text' was not declared in this scope
  156 |   gtk_text_buffer_set_text(textBuffer, output, -1);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:91:23: error: 'XK_I' was not declared in this scope
   91 |     keys.append({"I", XK_I});
      |                       ^~~~
../ruby/input/keyboard/xlib.cpp:91:23: note: the macro 'XK_I' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:665: note: it was later defined here
  665 | #define XK_I                             0x0049  /* U+0049 LATIN CAPITAL LETTER I */
      | 
../ruby/input/keyboard/xlib.cpp:91:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
   91 |     keys.append({"I", XK_I});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/hex-edit.cpp: In member function 'unsigned int hiro::pHexEdit::cursorPosition()':
../hiro/core/../gtk/widget/hex-edit.cpp:162:3: error: 'GtkTextIter' was not declared in this scope
  162 |   GtkTextIter iter;
      |   ^~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:92:23: error: 'XK_J' was not declared in this scope
   92 |     keys.append({"J", XK_J});
      |                       ^~~~
../ruby/input/keyboard/xlib.cpp:92:23: note: the macro 'XK_J' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:666: note: it was later defined here
  666 | #define XK_J                             0x004a  /* U+004A LATIN CAPITAL LETTER J */
      | 
../ruby/input/keyboard/xlib.cpp:92:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
   92 |     keys.append({"J", XK_J});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/hex-edit.cpp:163:36: error: 'textBuffer' was not declared in this scope; did you mean 'setbuffer'?
  163 |   gtk_text_buffer_get_iter_at_mark(textBuffer, &iter, textCursor);
      |                                    ^~~~~~~~~~
      |                                    setbuffer
../ruby/input/keyboard/xlib.cpp:93:23: error: 'XK_K' was not declared in this scope
   93 |     keys.append({"K", XK_K});
      |                       ^~~~
../ruby/input/keyboard/xlib.cpp:93:23: note: the macro 'XK_K' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:667: note: it was later defined here
  667 | #define XK_K                             0x004b  /* U+004B LATIN CAPITAL LETTER K */
      | 
../ruby/input/keyboard/xlib.cpp:93:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
   93 |     keys.append({"K", XK_K});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/hex-edit.cpp:163:49: error: 'iter' was not declared in this scope
  163 |   gtk_text_buffer_get_iter_at_mark(textBuffer, &iter, textCursor);
      |                                                 ^~~~
../hiro/core/../gtk/widget/hex-edit.cpp:163:55: error: 'textCursor' was not declared in this scope; did you mean 'TextCursor'?
  163 |   gtk_text_buffer_get_iter_at_mark(textBuffer, &iter, textCursor);
      |                                                       ^~~~~~~~~~
      |                                                       TextCursor
../hiro/core/../gtk/widget/hex-edit.cpp:163:3: error: 'gtk_text_buffer_get_iter_at_mark' was not declared in this scope
  163 |   gtk_text_buffer_get_iter_at_mark(textBuffer, &iter, textCursor);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/hex-edit.cpp:164:10: error: 'gtk_text_iter_get_offset' was not declared in this scope
  164 |   return gtk_text_iter_get_offset(&iter);
      |          ^~~~~~~~~~~~~~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:94:23: error: 'XK_L' was not declared in this scope
   94 |     keys.append({"L", XK_L});
      |                       ^~~~
../ruby/input/keyboard/xlib.cpp:94:23: note: the macro 'XK_L' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:668: note: it was later defined here
  668 | #define XK_L                             0x004c  /* U+004C LATIN CAPITAL LETTER L */
      | 
../ruby/input/keyboard/xlib.cpp:94:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
   94 |     keys.append({"L", XK_L});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/hex-edit.cpp: In member function 'bool hiro::pHexEdit::keyPress(unsigned int, unsigned int)':
../hiro/core/../gtk/widget/hex-edit.cpp:170:14: error: 'GDK_CONTROL_MASK' was not declared in this scope
  170 |   if(mask & (GDK_CONTROL_MASK | GDK_MOD1_MASK | GDK_SUPER_MASK)) return false;  //allow actions such as Ctrl+C (copy)
      |              ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/hex-edit.cpp:170:33: error: 'GDK_MOD1_MASK' was not declared in this scope
  170 |   if(mask & (GDK_CONTROL_MASK | GDK_MOD1_MASK | GDK_SUPER_MASK)) return false;  //allow actions such as Ctrl+C (copy)
      |                                 ^~~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:95:23: error: 'XK_M' was not declared in this scope
   95 |     keys.append({"M", XK_M});
      |                       ^~~~
../ruby/input/keyboard/xlib.cpp:95:23: note: the macro 'XK_M' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:669: note: it was later defined here
  669 | #define XK_M                             0x004d  /* U+004D LATIN CAPITAL LETTER M */
      | 
../ruby/input/keyboard/xlib.cpp:95:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
   95 |     keys.append({"M", XK_M});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/hex-edit.cpp:170:49: error: 'GDK_SUPER_MASK' was not declared in this scope
  170 |   if(mask & (GDK_CONTROL_MASK | GDK_MOD1_MASK | GDK_SUPER_MASK)) return false;  //allow actions such as Ctrl+C (copy)
      |                                                 ^~~~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:96:23: error: 'XK_N' was not declared in this scope
   96 |     keys.append({"N", XK_N});
      |                       ^~~~
../ruby/input/keyboard/xlib.cpp:96:23: note: the macro 'XK_N' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:670: note: it was later defined here
  670 | #define XK_N                             0x004e  /* U+004E LATIN CAPITAL LETTER N */
      | 
../ruby/input/keyboard/xlib.cpp:96:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
   96 |     keys.append({"N", XK_N});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/hex-edit.cpp:177:18: error: 'GDK_KEY_Home' was not declared in this scope
  177 |   if(scancode == GDK_KEY_Home) {
      |                  ^~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:97:23: error: 'XK_O' was not declared in this scope
   97 |     keys.append({"O", XK_O});
      |                       ^~~~
../ruby/input/keyboard/xlib.cpp:97:23: note: the macro 'XK_O' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:671: note: it was later defined here
  671 | #define XK_O                             0x004f  /* U+004F LATIN CAPITAL LETTER O */
      | 
../ruby/input/keyboard/xlib.cpp:97:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
   97 |     keys.append({"O", XK_O});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/hex-edit.cpp:182:18: error: 'GDK_KEY_End' was not declared in this scope
  182 |   if(scancode == GDK_KEY_End) {
      |                  ^~~~~~~~~~~
../hiro/core/../gtk/widget/hex-edit.cpp:187:18: error: 'GDK_KEY_Up' was not declared in this scope
  187 |   if(scancode == GDK_KEY_Up) {
      |                  ^~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:98:23: error: 'XK_P' was not declared in this scope
   98 |     keys.append({"P", XK_P});
      |                       ^~~~
../ruby/input/keyboard/xlib.cpp:98:23: note: the macro 'XK_P' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:672: note: it was later defined here
  672 | #define XK_P                             0x0050  /* U+0050 LATIN CAPITAL LETTER P */
      | 
../ruby/input/keyboard/xlib.cpp:98:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
   98 |     keys.append({"P", XK_P});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/hex-edit.cpp:198:18: error: 'GDK_KEY_Down' was not declared in this scope
  198 |   if(scancode == GDK_KEY_Down) {
      |                  ^~~~~~~~~~~~
../hiro/core/../gtk/widget/hex-edit.cpp:210:18: error: 'GDK_KEY_Page_Up' was not declared in this scope
  210 |   if(scancode == GDK_KEY_Page_Up) {
      |                  ^~~~~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:99:23: error: 'XK_Q' was not declared in this scope
   99 |     keys.append({"Q", XK_Q});
      |                       ^~~~
../ruby/input/keyboard/xlib.cpp:99:23: note: the macro 'XK_Q' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:673: note: it was later defined here
  673 | #define XK_Q                             0x0051  /* U+0051 LATIN CAPITAL LETTER Q */
      | 
../ruby/input/keyboard/xlib.cpp:99:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
   99 |     keys.append({"Q", XK_Q});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/hex-edit.cpp:221:18: error: 'GDK_KEY_Page_Down' was not declared in this scope
  221 |   if(scancode == GDK_KEY_Page_Down) {
      |                  ^~~~~~~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:100:23: error: 'XK_R' was not declared in this scope
  100 |     keys.append({"R", XK_R});
      |                       ^~~~
../ruby/input/keyboard/xlib.cpp:100:23: note: the macro 'XK_R' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:674: note: it was later defined here
  674 | #define XK_R                             0x0052  /* U+0052 LATIN CAPITAL LETTER R */
      | 
../ruby/input/keyboard/xlib.cpp:100:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
  100 |     keys.append({"R", XK_R});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/hex-edit.cpp: In member function 'void hiro::pHexEdit::setCursorPosition(unsigned int)':
../hiro/core/../gtk/widget/hex-edit.cpp:293:3: error: 'GtkTextIter' was not declared in this scope
  293 |   GtkTextIter iter;
      |   ^~~~~~~~~~~
../hiro/core/../gtk/widget/hex-edit.cpp:294:36: error: 'textBuffer' was not declared in this scope; did you mean 'setbuffer'?
  294 |   gtk_text_buffer_get_iter_at_mark(textBuffer, &iter, textCursor);
      |                                    ^~~~~~~~~~
      |                                    setbuffer
../hiro/core/../gtk/widget/hex-edit.cpp:294:49: error: 'iter' was not declared in this scope
  294 |   gtk_text_buffer_get_iter_at_mark(textBuffer, &iter, textCursor);
      |                                                 ^~~~
../ruby/input/keyboard/xlib.cpp:101:23: error: 'XK_S' was not declared in this scope
  101 |     keys.append({"S", XK_S});
      |                       ^~~~
../ruby/input/keyboard/xlib.cpp:101:23: note: the macro 'XK_S' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:675: note: it was later defined here
  675 | #define XK_S                             0x0053  /* U+0053 LATIN CAPITAL LETTER S */
      | 
../ruby/input/keyboard/xlib.cpp:101:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
  101 |     keys.append({"S", XK_S});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/hex-edit.cpp:294:55: error: 'textCursor' was not declared in this scope; did you mean 'TextCursor'?
  294 |   gtk_text_buffer_get_iter_at_mark(textBuffer, &iter, textCursor);
      |                                                       ^~~~~~~~~~
      |                                                       TextCursor
../hiro/core/../gtk/widget/hex-edit.cpp:294:3: error: 'gtk_text_buffer_get_iter_at_mark' was not declared in this scope
  294 |   gtk_text_buffer_get_iter_at_mark(textBuffer, &iter, textCursor);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/hex-edit.cpp:297:14: error: expected ';' before 'endIter'
  297 |   GtkTextIter endIter;
      |              ^~~~~~~~
      |              ;
../ruby/input/keyboard/xlib.cpp:102:23: error: 'XK_T' was not declared in this scope
  102 |     keys.append({"T", XK_T});
      |                       ^~~~
../ruby/input/keyboard/xlib.cpp:102:23: note: the macro 'XK_T' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:676: note: it was later defined here
  676 | #define XK_T                             0x0054  /* U+0054 LATIN CAPITAL LETTER T */
      | 
../ruby/input/keyboard/xlib.cpp:102:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
  102 |     keys.append({"T", XK_T});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../ruby/input/keyboard/xlib.cpp:103:23: error: 'XK_U' was not declared in this scope
  103 |     keys.append({"U", XK_U});
      |                       ^~~~
../ruby/input/keyboard/xlib.cpp:103:23: note: the macro 'XK_U' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:677: note: it was later defined here
  677 | #define XK_U                             0x0055  /* U+0055 LATIN CAPITAL LETTER U */
      | 
../ruby/input/keyboard/xlib.cpp:103:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
  103 |     keys.append({"U", XK_U});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/hex-edit.cpp:298:3: error: 'gtk_text_buffer_get_end_iter' was not declared in this scope
  298 |   gtk_text_buffer_get_end_iter(textBuffer, &iter);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:104:23: error: 'XK_V' was not declared in this scope
  104 |     keys.append({"V", XK_V});
      |                       ^~~~
../ruby/input/keyboard/xlib.cpp:104:23: note: the macro 'XK_V' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:678: note: it was later defined here
  678 | #define XK_V                             0x0056  /* U+0056 LATIN CAPITAL LETTER V */
      | 
../ruby/input/keyboard/xlib.cpp:104:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
  104 |     keys.append({"V", XK_V});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/hex-edit.cpp:299:26: error: 'gtk_text_iter_get_offset' was not declared in this scope
  299 |   unsigned endPosition = gtk_text_iter_get_offset(&iter);
      |                          ^~~~~~~~~~~~~~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:105:23: error: 'XK_W' was not declared in this scope
  105 |     keys.append({"W", XK_W});
      |                       ^~~~
../ruby/input/keyboard/xlib.cpp:105:23: note: the macro 'XK_W' had not yet been defined
../hiro/core/../gtk/widget/hex-edit.cpp:301:3: error: 'gtk_text_iter_set_offset' was not declared in this scope
  301 |   gtk_text_iter_set_offset(&iter, min(position, endPosition));
      |   ^~~~~~~~~~~~~~~~~~~~~~~~
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:679: note: it was later defined here
  679 | #define XK_W                             0x0057  /* U+0057 LATIN CAPITAL LETTER W */
      | 
../ruby/input/keyboard/xlib.cpp:105:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
  105 |     keys.append({"W", XK_W});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/hex-edit.cpp:302:3: error: 'gtk_text_buffer_place_cursor' was not declared in this scope
  302 |   gtk_text_buffer_place_cursor(textBuffer, &iter);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:106:23: error: 'XK_X' was not declared in this scope
  106 |     keys.append({"X", XK_X});
      |                       ^~~~
../ruby/input/keyboard/xlib.cpp:106:23: note: the macro 'XK_X' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:680: note: it was later defined here
  680 | #define XK_X                             0x0058  /* U+0058 LATIN CAPITAL LETTER X */
      | 
../ruby/input/keyboard/xlib.cpp:106:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
  106 |     keys.append({"X", XK_X});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/hex-edit.cpp: In member function 'void hiro::pHexEdit::setScroll()':
../hiro/core/../gtk/widget/hex-edit.cpp:307:35: error: 'scrollBar' was not declared in this scope; did you mean 'scroll'?
  307 |     gtk_range_set_range(GTK_RANGE(scrollBar), 0, rowsScrollable());
      |                                   ^~~~~~~~~
      |                                   scroll
../hiro/core/../gtk/widget/hex-edit.cpp:307:25: error: 'GTK_RANGE' was not declared in this scope
  307 |     gtk_range_set_range(GTK_RANGE(scrollBar), 0, rowsScrollable());
      |                         ^~~~~~~~~
../ruby/input/keyboard/xlib.cpp:107:23: error: 'XK_Y' was not declared in this scope
  107 |     keys.append({"Y", XK_Y});
      |                       ^~~~
../ruby/input/keyboard/xlib.cpp:107:23: note: the macro 'XK_Y' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:681: note: it was later defined here
  681 | #define XK_Y                             0x0059  /* U+0059 LATIN CAPITAL LETTER Y */
      | 
../ruby/input/keyboard/xlib.cpp:107:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
  107 |     keys.append({"Y", XK_Y});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/hex-edit.cpp:307:5: error: 'gtk_range_set_range' was not declared in this scope
  307 |     gtk_range_set_range(GTK_RANGE(scrollBar), 0, rowsScrollable());
      |     ^~~~~~~~~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:108:23: error: 'XK_Z' was not declared in this scope
  108 |     keys.append({"Z", XK_Z});
      |                       ^~~~
../ruby/input/keyboard/xlib.cpp:108:23: note: the macro 'XK_Z' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:682: note: it was later defined here
  682 | #define XK_Z                             0x005a  /* U+005A LATIN CAPITAL LETTER Z */
      | 
../ruby/input/keyboard/xlib.cpp:108:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
  108 |     keys.append({"Z", XK_Z});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/hex-edit.cpp:308:5: error: 'gtk_widget_set_sensitive' was not declared in this scope
  308 |     gtk_widget_set_sensitive(scrollBar, true);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/hex-edit.cpp:310:30: error: 'scrollBar' was not declared in this scope; did you mean 'scroll'?
  310 |     gtk_widget_set_sensitive(scrollBar, false);
      |                              ^~~~~~~~~
      |                              scroll
../hiro/core/../gtk/widget/hex-edit.cpp:310:5: error: 'gtk_widget_set_sensitive' was not declared in this scope
  310 |     gtk_widget_set_sensitive(scrollBar, false);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/hex-edit.cpp: In member function 'void hiro::pHexEdit::updateScroll()':
../hiro/core/../gtk/widget/hex-edit.cpp:316:33: error: 'scrollBar' was not declared in this scope; did you mean 'scroll'?
  316 |   gtk_range_set_value(GTK_RANGE(scrollBar), row);
      |                                 ^~~~~~~~~
      |                                 scroll
../hiro/core/../gtk/widget/hex-edit.cpp:316:23: error: 'GTK_RANGE' was not declared in this scope
  316 |   gtk_range_set_value(GTK_RANGE(scrollBar), row);
      |                       ^~~~~~~~~
../ruby/input/keyboard/xlib.cpp:110:33: error: 'XK_bracketleft' was not declared in this scope
  110 |     keys.append({"LeftBracket", XK_bracketleft});
      |                                 ^~~~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:110:33: note: the macro 'XK_bracketleft' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:683: note: it was later defined here
  683 | #define XK_bracketleft                   0x005b  /* U+005B LEFT SQUARE BRACKET */
      | 
../ruby/input/keyboard/xlib.cpp:110:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
  110 |     keys.append({"LeftBracket", XK_bracketleft});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/hex-edit.cpp:316:3: error: 'gtk_range_set_value' was not declared in this scope
  316 |   gtk_range_set_value(GTK_RANGE(scrollBar), row);
      |   ^~~~~~~~~~~~~~~~~~~
In file included from ../hiro/core/../gtk/platform.cpp:42:
../hiro/core/../gtk/widget/horizontal-scroll-bar.cpp: At global scope:
../hiro/core/../gtk/widget/horizontal-scroll-bar.cpp:5:40: error: 'GtkRange' was not declared in this scope
    5 | static auto HorizontalScrollBar_change(GtkRange* gtkRange, pHorizontalScrollBar* p) -> void {
      |                                        ^~~~~~~~
../hiro/core/../gtk/widget/horizontal-scroll-bar.cpp:5:50: error: 'gtkRange' was not declared in this scope
    5 | static auto HorizontalScrollBar_change(GtkRange* gtkRange, pHorizontalScrollBar* p) -> void {
      |                                                  ^~~~~~~~
../hiro/core/../gtk/widget/horizontal-scroll-bar.cpp:5:80: error: expected primary-expression before '*' token
    5 | static auto HorizontalScrollBar_change(GtkRange* gtkRange, pHorizontalScrollBar* p) -> void {
      |                                                                                ^
../hiro/core/../gtk/widget/horizontal-scroll-bar.cpp:5:82: error: 'p' was not declared in this scope
    5 | static auto HorizontalScrollBar_change(GtkRange* gtkRange, pHorizontalScrollBar* p) -> void {
      |                                                                                  ^
../hiro/core/../gtk/widget/horizontal-scroll-bar.cpp:5:83: error: expression list treated as compound expression in initializer [-fpermissive]
    5 | static auto HorizontalScrollBar_change(GtkRange* gtkRange, pHorizontalScrollBar* p) -> void {
      |                                                                                   ^
../hiro/core/../gtk/widget/horizontal-scroll-bar.cpp:5:85: error: expected ',' or ';' before '->' token
    5 | static auto HorizontalScrollBar_change(GtkRange* gtkRange, pHorizontalScrollBar* p) -> void {
      |                                                                                     ^~
../hiro/core/../gtk/widget/horizontal-scroll-bar.cpp: In member function 'virtual void hiro::pHorizontalScrollBar::construct()':
../hiro/core/../gtk/widget/horizontal-scroll-bar.cpp:16:3: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   16 |   gtkWidget = gtk_scrollbar_new(GTK_ORIENTATION_HORIZONTAL, nullptr);
      |   ^~~~~~~~~
      |   pWidget
../hiro/core/../gtk/widget/horizontal-scroll-bar.cpp:16:33: error: 'GTK_ORIENTATION_HORIZONTAL' was not declared in this scope
   16 |   gtkWidget = gtk_scrollbar_new(GTK_ORIENTATION_HORIZONTAL, nullptr);
      |                                 ^~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/horizontal-scroll-bar.cpp:16:15: error: 'gtk_scrollbar_new' was not declared in this scope
   16 |   gtkWidget = gtk_scrollbar_new(GTK_ORIENTATION_HORIZONTAL, nullptr);
      |               ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/horizontal-scroll-bar.cpp:22:20: error: 'G_OBJECT' was not declared in this scope
   22 |   g_signal_connect(G_OBJECT(gtkWidget), "value-changed", G_CALLBACK(HorizontalScrollBar_change), (gpointer)this);
      |                    ^~~~~~~~
../ruby/input/keyboard/xlib.cpp:111:34: error: 'XK_bracketright' was not declared in this scope
  111 |     keys.append({"RightBracket", XK_bracketright});
      |                                  ^~~~~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:111:34: note: the macro 'XK_bracketright' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:685: note: it was later defined here
  685 | #define XK_bracketright                  0x005d  /* U+005D RIGHT SQUARE BRACKET */
      | 
../ruby/input/keyboard/xlib.cpp:111:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
  111 |     keys.append({"RightBracket", XK_bracketright});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/horizontal-scroll-bar.cpp:22:58: error: 'G_CALLBACK' was not declared in this scope
   22 |   g_signal_connect(G_OBJECT(gtkWidget), "value-changed", G_CALLBACK(HorizontalScrollBar_change), (gpointer)this);
      |                                                          ^~~~~~~~~~
../hiro/core/../gtk/widget/horizontal-scroll-bar.cpp:22:99: error: 'gpointer' was not declared in this scope
   22 |   g_signal_connect(G_OBJECT(gtkWidget), "value-changed", G_CALLBACK(HorizontalScrollBar_change), (gpointer)this);
      |                                                                                                   ^~~~~~~~
../hiro/core/../gtk/widget/horizontal-scroll-bar.cpp:22:3: error: 'g_signal_connect' was not declared in this scope
   22 |   g_signal_connect(G_OBJECT(gtkWidget), "value-changed", G_CALLBACK(HorizontalScrollBar_change), (gpointer)this);
      |   ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/horizontal-scroll-bar.cpp: In member function 'virtual void hiro::pHorizontalScrollBar::destruct()':
../hiro/core/../gtk/widget/horizontal-scroll-bar.cpp:28:22: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   28 |   gtk_widget_destroy(gtkWidget);
      |                      ^~~~~~~~~
      |                      pWidget
../hiro/core/../gtk/widget/horizontal-scroll-bar.cpp:28:3: error: 'gtk_widget_destroy' was not declared in this scope
   28 |   gtk_widget_destroy(gtkWidget);
      |   ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/horizontal-scroll-bar.cpp: In member function 'void hiro::pHorizontalScrollBar::setLength(unsigned int)':
../hiro/core/../gtk/widget/horizontal-scroll-bar.cpp:38:33: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   38 |   gtk_range_set_range(GTK_RANGE(gtkWidget), 0, max(1u, length - 1));
      |                                 ^~~~~~~~~
      |                                 pWidget
../hiro/core/../gtk/widget/horizontal-scroll-bar.cpp:38:23: error: 'GTK_RANGE' was not declared in this scope
   38 |   gtk_range_set_range(GTK_RANGE(gtkWidget), 0, max(1u, length - 1));
      |                       ^~~~~~~~~
../ruby/input/keyboard/xlib.cpp:112:31: error: 'XK_backslash' was not declared in this scope
  112 |     keys.append({"Backslash", XK_backslash});
      |                               ^~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:112:31: note: the macro 'XK_backslash' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:684: note: it was later defined here
  684 | #define XK_backslash                     0x005c  /* U+005C REVERSE SOLIDUS */
      | 
../ruby/input/keyboard/xlib.cpp:112:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
  112 |     keys.append({"Backslash", XK_backslash});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/horizontal-scroll-bar.cpp:38:3: error: 'gtk_range_set_range' was not declared in this scope
   38 |   gtk_range_set_range(GTK_RANGE(gtkWidget), 0, max(1u, length - 1));
      |   ^~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/horizontal-scroll-bar.cpp:39:3: error: 'gtk_range_set_increments' was not declared in this scope
   39 |   gtk_range_set_increments(GTK_RANGE(gtkWidget), 1, length >> 3);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/horizontal-scroll-bar.cpp: In member function 'void hiro::pHorizontalScrollBar::setPosition(unsigned int)':
../hiro/core/../gtk/widget/horizontal-scroll-bar.cpp:43:33: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   43 |   gtk_range_set_value(GTK_RANGE(gtkWidget), position);
      |                                 ^~~~~~~~~
      |                                 pWidget
../ruby/input/keyboard/xlib.cpp:113:31: error: 'XK_semicolon' was not declared in this scope
  113 |     keys.append({"Semicolon", XK_semicolon});
      |                               ^~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:113:31: note: the macro 'XK_semicolon' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:651: note: it was later defined here
  651 | #define XK_semicolon                     0x003b  /* U+003B SEMICOLON */
      | 
../ruby/input/keyboard/xlib.cpp:113:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
  113 |     keys.append({"Semicolon", XK_semicolon});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/horizontal-scroll-bar.cpp:43:23: error: 'GTK_RANGE' was not declared in this scope
   43 |   gtk_range_set_value(GTK_RANGE(gtkWidget), position);
      |                       ^~~~~~~~~
../hiro/core/../gtk/widget/horizontal-scroll-bar.cpp:43:3: error: 'gtk_range_set_value' was not declared in this scope
   43 |   gtk_range_set_value(GTK_RANGE(gtkWidget), position);
      |   ^~~~~~~~~~~~~~~~~~~
In file included from ../hiro/core/../gtk/platform.cpp:43:
../hiro/core/../gtk/widget/horizontal-slider.cpp: At global scope:
../hiro/core/../gtk/widget/horizontal-slider.cpp:5:37: error: 'GtkRange' was not declared in this scope
    5 | static auto HorizontalSlider_change(GtkRange* gtkRange, pHorizontalSlider* p) -> void {
      |                                     ^~~~~~~~
../hiro/core/../gtk/widget/horizontal-slider.cpp:5:47: error: 'gtkRange' was not declared in this scope
    5 | static auto HorizontalSlider_change(GtkRange* gtkRange, pHorizontalSlider* p) -> void {
      |                                               ^~~~~~~~
../hiro/core/../gtk/widget/horizontal-slider.cpp:5:74: error: expected primary-expression before '*' token
    5 | static auto HorizontalSlider_change(GtkRange* gtkRange, pHorizontalSlider* p) -> void {
      |                                                                          ^
../hiro/core/../gtk/widget/horizontal-slider.cpp:5:76: error: 'p' was not declared in this scope
    5 | static auto HorizontalSlider_change(GtkRange* gtkRange, pHorizontalSlider* p) -> void {
      |                                                                            ^
../hiro/core/../gtk/widget/horizontal-slider.cpp:5:77: error: expression list treated as compound expression in initializer [-fpermissive]
    5 | static auto HorizontalSlider_change(GtkRange* gtkRange, pHorizontalSlider* p) -> void {
      |                                                                             ^
../hiro/core/../gtk/widget/horizontal-slider.cpp:5:79: error: expected ',' or ';' before '->' token
    5 | static auto HorizontalSlider_change(GtkRange* gtkRange, pHorizontalSlider* p) -> void {
      |                                                                               ^~
../hiro/core/../gtk/widget/horizontal-slider.cpp: In member function 'virtual void hiro::pHorizontalSlider::construct()':
../hiro/core/../gtk/widget/horizontal-slider.cpp:16:3: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   16 |   gtkWidget = gtk_scale_new_with_range(GTK_ORIENTATION_HORIZONTAL, 0, 100, 1);
      |   ^~~~~~~~~
      |   pWidget
../ruby/input/keyboard/xlib.cpp:114:32: error: 'XK_apostrophe' was not declared in this scope
  114 |     keys.append({"Apostrophe", XK_apostrophe});
      |                                ^~~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:114:32: note: the macro 'XK_apostrophe' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:630: note: it was later defined here
  630 | #define XK_apostrophe                    0x0027  /* U+0027 APOSTROPHE */
      | 
../ruby/input/keyboard/xlib.cpp:114:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
  114 |     keys.append({"Apostrophe", XK_apostrophe});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/horizontal-slider.cpp:16:40: error: 'GTK_ORIENTATION_HORIZONTAL' was not declared in this scope
   16 |   gtkWidget = gtk_scale_new_with_range(GTK_ORIENTATION_HORIZONTAL, 0, 100, 1);
      |                                        ^~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/horizontal-slider.cpp:16:15: error: 'gtk_scale_new_with_range' was not declared in this scope
   16 |   gtkWidget = gtk_scale_new_with_range(GTK_ORIENTATION_HORIZONTAL, 0, 100, 1);
      |               ^~~~~~~~~~~~~~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:115:27: error: 'XK_comma' was not declared in this scope
  115 |     keys.append({"Comma", XK_comma});
      |                           ^~~~~~~~
../ruby/input/keyboard/xlib.cpp:115:27: note: the macro 'XK_comma' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:636: note: it was later defined here
  636 | #define XK_comma                         0x002c  /* U+002C COMMA */
      | 
../ruby/input/keyboard/xlib.cpp:115:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
  115 |     keys.append({"Comma", XK_comma});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/horizontal-slider.cpp:18:28: error: 'GTK_SCALE' was not declared in this scope
   18 |   gtk_scale_set_draw_value(GTK_SCALE(gtkWidget), false);
      |                            ^~~~~~~~~
../hiro/core/../gtk/widget/horizontal-slider.cpp:18:3: error: 'gtk_scale_set_draw_value' was not declared in this scope
   18 |   gtk_scale_set_draw_value(GTK_SCALE(gtkWidget), false);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/horizontal-slider.cpp:23:20: error: 'G_OBJECT' was not declared in this scope
   23 |   g_signal_connect(G_OBJECT(gtkWidget), "value-changed", G_CALLBACK(HorizontalSlider_change), (gpointer)this);
      |                    ^~~~~~~~
../hiro/core/../gtk/widget/horizontal-slider.cpp:23:58: error: 'G_CALLBACK' was not declared in this scope
   23 |   g_signal_connect(G_OBJECT(gtkWidget), "value-changed", G_CALLBACK(HorizontalSlider_change), (gpointer)this);
      |                                                          ^~~~~~~~~~
../hiro/core/../gtk/widget/horizontal-slider.cpp:23:96: error: 'gpointer' was not declared in this scope
   23 |   g_signal_connect(G_OBJECT(gtkWidget), "value-changed", G_CALLBACK(HorizontalSlider_change), (gpointer)this);
      |                                                                                                ^~~~~~~~
../hiro/core/../gtk/widget/horizontal-slider.cpp:23:3: error: 'g_signal_connect' was not declared in this scope
   23 |   g_signal_connect(G_OBJECT(gtkWidget), "value-changed", G_CALLBACK(HorizontalSlider_change), (gpointer)this);
      |   ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/horizontal-slider.cpp: In member function 'virtual void hiro::pHorizontalSlider::destruct()':
../hiro/core/../gtk/widget/horizontal-slider.cpp:29:22: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   29 |   gtk_widget_destroy(gtkWidget);
      |                      ^~~~~~~~~
      |                      pWidget
../ruby/input/keyboard/xlib.cpp:116:28: error: 'XK_period' was not declared in this scope
  116 |     keys.append({"Period", XK_period});
      |                            ^~~~~~~~~
../ruby/input/keyboard/xlib.cpp:116:28: note: the macro 'XK_period' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:638: note: it was later defined here
  638 | #define XK_period                        0x002e  /* U+002E FULL STOP */
      | 
../ruby/input/keyboard/xlib.cpp:116:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
  116 |     keys.append({"Period", XK_period});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/horizontal-slider.cpp:29:3: error: 'gtk_widget_destroy' was not declared in this scope
   29 |   gtk_widget_destroy(gtkWidget);
      |   ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/horizontal-slider.cpp: In member function 'void hiro::pHorizontalSlider::setLength(unsigned int)':
../hiro/core/../gtk/widget/horizontal-slider.cpp:38:33: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   38 |   gtk_range_set_range(GTK_RANGE(gtkWidget), 0, max(1u, length - 1));
      |                                 ^~~~~~~~~
      |                                 pWidget
../hiro/core/../gtk/widget/horizontal-slider.cpp:38:23: error: 'GTK_RANGE' was not declared in this scope
   38 |   gtk_range_set_range(GTK_RANGE(gtkWidget), 0, max(1u, length - 1));
      |                       ^~~~~~~~~
../hiro/core/../gtk/widget/horizontal-slider.cpp:38:3: error: 'gtk_range_set_range' was not declared in this scope
   38 |   gtk_range_set_range(GTK_RANGE(gtkWidget), 0, max(1u, length - 1));
      |   ^~~~~~~~~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:117:27: error: 'XK_slash' was not declared in this scope
  117 |     keys.append({"Slash", XK_slash});
      |                           ^~~~~~~~
../ruby/input/keyboard/xlib.cpp:117:27: note: the macro 'XK_slash' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:639: note: it was later defined here
  639 | #define XK_slash                         0x002f  /* U+002F SOLIDUS */
      | 
../ruby/input/keyboard/xlib.cpp:117:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
  117 |     keys.append({"Slash", XK_slash});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/horizontal-slider.cpp:39:3: error: 'gtk_range_set_increments' was not declared in this scope
   39 |   gtk_range_set_increments(GTK_RANGE(gtkWidget), 1, length >> 3);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/horizontal-slider.cpp: In member function 'void hiro::pHorizontalSlider::setPosition(unsigned int)':
../hiro/core/../gtk/widget/horizontal-slider.cpp:43:33: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   43 |   gtk_range_set_value(GTK_RANGE(gtkWidget), position);
      |                                 ^~~~~~~~~
      |                                 pWidget
../ruby/input/keyboard/xlib.cpp:119:29: error: 'XK_KP_0' was not declared in this scope
  119 |     keys.append({"Keypad0", XK_KP_0});
      |                             ^~~~~~~
../ruby/input/keyboard/xlib.cpp:119:29: note: the macro 'XK_KP_0' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:308: note: it was later defined here
  308 | #define XK_KP_0                          0xffb0  /*<U+0030 DIGIT ZERO>*/
      | 
../ruby/input/keyboard/xlib.cpp:119:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
  119 |     keys.append({"Keypad0", XK_KP_0});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/horizontal-slider.cpp:43:23: error: 'GTK_RANGE' was not declared in this scope
   43 |   gtk_range_set_value(GTK_RANGE(gtkWidget), position);
      |                       ^~~~~~~~~
../hiro/core/../gtk/widget/horizontal-slider.cpp:43:3: error: 'gtk_range_set_value' was not declared in this scope
   43 |   gtk_range_set_value(GTK_RANGE(gtkWidget), position);
      |   ^~~~~~~~~~~~~~~~~~~
In file included from ../hiro/core/../gtk/platform.cpp:44:
../hiro/core/../gtk/widget/icon-view.cpp: At global scope:
../hiro/core/../gtk/widget/icon-view.cpp:5:31: error: 'GtkIconView' was not declared in this scope; did you mean 'wIconView'?
    5 | static auto IconView_activate(GtkIconView* iconView, GtkTreePath* path, pIconView* p) -> void {
      |                               ^~~~~~~~~~~
      |                               wIconView
../hiro/core/../gtk/widget/icon-view.cpp:5:44: error: 'iconView' was not declared in this scope; did you mean 'IconView'?
    5 | static auto IconView_activate(GtkIconView* iconView, GtkTreePath* path, pIconView* p) -> void {
      |                                            ^~~~~~~~
      |                                            IconView
../hiro/core/../gtk/widget/icon-view.cpp:5:54: error: 'GtkTreePath' was not declared in this scope
    5 | static auto IconView_activate(GtkIconView* iconView, GtkTreePath* path, pIconView* p) -> void {
      |                                                      ^~~~~~~~~~~
../hiro/core/../gtk/widget/icon-view.cpp:5:67: error: 'path' was not declared in this scope; did you mean 'nall::Location::path'?
    5 | static auto IconView_activate(GtkIconView* iconView, GtkTreePath* path, pIconView* p) -> void {
      |                                                                   ^~~~
      |                                                                   nall::Location::path
In file included from ../nall/string/transform/cml.hpp:7,
                 from ../nall/string.hpp:365,
                 from ../nall/chrono.hpp:4,
                 from ../hiro/core/core.hpp:3:
../nall/location.hpp:9:13: note: 'nall::Location::path' declared here
    9 | inline auto path(string_view self) -> string {
      |             ^~~~
../hiro/core/../gtk/widget/icon-view.cpp:5:82: error: expected primary-expression before '*' token
    5 | static auto IconView_activate(GtkIconView* iconView, GtkTreePath* path, pIconView* p) -> void {
      |                                                                                  ^
../hiro/core/../gtk/widget/icon-view.cpp:5:84: error: 'p' was not declared in this scope
    5 | static auto IconView_activate(GtkIconView* iconView, GtkTreePath* path, pIconView* p) -> void {
      |                                                                                    ^
../hiro/core/../gtk/widget/icon-view.cpp:5:85: error: expression list treated as compound expression in initializer [-fpermissive]
    5 | static auto IconView_activate(GtkIconView* iconView, GtkTreePath* path, pIconView* p) -> void {
      |                                                                                     ^
../hiro/core/../gtk/widget/icon-view.cpp:5:87: error: expected ',' or ';' before '->' token
    5 | static auto IconView_activate(GtkIconView* iconView, GtkTreePath* path, pIconView* p) -> void {
      |                                                                                       ^~
../hiro/core/../gtk/widget/icon-view.cpp:9:34: error: 'GtkTreeView' was not declared in this scope; did you mean 'wTreeView'?
    9 | static auto IconView_buttonEvent(GtkTreeView* treeView, GdkEventButton* event, pIconView* p) -> signed {
      |                                  ^~~~~~~~~~~
      |                                  wTreeView
../hiro/core/../gtk/widget/icon-view.cpp:9:47: error: 'treeView' was not declared in this scope; did you mean 'TreeView'?
    9 | static auto IconView_buttonEvent(GtkTreeView* treeView, GdkEventButton* event, pIconView* p) -> signed {
      |                                               ^~~~~~~~
      |                                               TreeView
../hiro/core/../gtk/widget/icon-view.cpp:9:57: error: 'GdkEventButton' was not declared in this scope
    9 | static auto IconView_buttonEvent(GtkTreeView* treeView, GdkEventButton* event, pIconView* p) -> signed {
      |                                                         ^~~~~~~~~~~~~~
../hiro/core/../gtk/widget/icon-view.cpp:9:73: error: 'event' was not declared in this scope; did you mean 'servent'?
    9 | static auto IconView_buttonEvent(GtkTreeView* treeView, GdkEventButton* event, pIconView* p) -> signed {
      |                                                                         ^~~~~
      |                                                                         servent
../hiro/core/../gtk/widget/icon-view.cpp:9:89: error: expected primary-expression before '*' token
    9 | static auto IconView_buttonEvent(GtkTreeView* treeView, GdkEventButton* event, pIconView* p) -> signed {
      |                                                                                         ^
../hiro/core/../gtk/widget/icon-view.cpp:9:91: error: 'p' was not declared in this scope
    9 | static auto IconView_buttonEvent(GtkTreeView* treeView, GdkEventButton* event, pIconView* p) -> signed {
      |                                                                                           ^
../hiro/core/../gtk/widget/icon-view.cpp:9:92: error: expression list treated as compound expression in initializer [-fpermissive]
    9 | static auto IconView_buttonEvent(GtkTreeView* treeView, GdkEventButton* event, pIconView* p) -> signed {
      |                                                                                            ^
../hiro/core/../gtk/widget/icon-view.cpp:9:94: error: expected ',' or ';' before '->' token
    9 | static auto IconView_buttonEvent(GtkTreeView* treeView, GdkEventButton* event, pIconView* p) -> signed {
      |                                                                                              ^~
../hiro/core/../gtk/widget/icon-view.cpp:18:29: error: 'GtkIconView' was not declared in this scope; did you mean 'wIconView'?
   18 | static auto IconView_change(GtkIconView* iconView, pIconView* p) -> void {
      |                             ^~~~~~~~~~~
      |                             wIconView
../hiro/core/../gtk/widget/icon-view.cpp:18:42: error: 'iconView' was not declared in this scope; did you mean 'IconView'?
   18 | static auto IconView_change(GtkIconView* iconView, pIconView* p) -> void {
      |                                          ^~~~~~~~
      |                                          IconView
../hiro/core/../gtk/widget/icon-view.cpp:18:61: error: expected primary-expression before '*' token
   18 | static auto IconView_change(GtkIconView* iconView, pIconView* p) -> void {
      |                                                             ^
../hiro/core/../gtk/widget/icon-view.cpp:18:63: error: 'p' was not declared in this scope
   18 | static auto IconView_change(GtkIconView* iconView, pIconView* p) -> void {
      |                                                               ^
../hiro/core/../gtk/widget/icon-view.cpp:18:64: error: expression list treated as compound expression in initializer [-fpermissive]
   18 | static auto IconView_change(GtkIconView* iconView, pIconView* p) -> void {
      |                                                                ^
../hiro/core/../gtk/widget/icon-view.cpp:18:66: error: expected ',' or ';' before '->' token
   18 | static auto IconView_change(GtkIconView* iconView, pIconView* p) -> void {
      |                                                                  ^~
../ruby/input/keyboard/xlib.cpp:120:29: error: 'XK_KP_1' was not declared in this scope
  120 |     keys.append({"Keypad1", XK_KP_1});
      |                             ^~~~~~~
../ruby/input/keyboard/xlib.cpp:120:29: note: the macro 'XK_KP_1' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:309: note: it was later defined here
  309 | #define XK_KP_1                          0xffb1  /*<U+0031 DIGIT ONE>*/
      | 
../ruby/input/keyboard/xlib.cpp:120:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
  120 |     keys.append({"Keypad1", XK_KP_1});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/icon-view.cpp: In member function 'virtual void hiro::pIconView::construct()':
../hiro/core/../gtk/widget/icon-view.cpp:23:3: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   23 |   gtkWidget = gtk_scrolled_window_new(0, 0);
      |   ^~~~~~~~~
      |   pWidget
../hiro/core/../gtk/widget/icon-view.cpp:23:15: error: 'gtk_scrolled_window_new' was not declared in this scope
   23 |   gtkWidget = gtk_scrolled_window_new(0, 0);
      |               ^~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/icon-view.cpp:24:34: error: 'GTK_SCROLLED_WINDOW' was not declared in this scope
   24 |   gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(gtkWidget), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
      |                                  ^~~~~~~~~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:121:29: error: 'XK_KP_2' was not declared in this scope
  121 |     keys.append({"Keypad2", XK_KP_2});
      |                             ^~~~~~~
../ruby/input/keyboard/xlib.cpp:121:29: note: the macro 'XK_KP_2' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:310: note: it was later defined here
  310 | #define XK_KP_2                          0xffb2  /*<U+0032 DIGIT TWO>*/
      | 
../ruby/input/keyboard/xlib.cpp:121:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
  121 |     keys.append({"Keypad2", XK_KP_2});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/icon-view.cpp:24:66: error: 'GTK_POLICY_AUTOMATIC' was not declared in this scope
   24 |   gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(gtkWidget), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
      |                                                                  ^~~~~~~~~~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:122:29: error: 'XK_KP_3' was not declared in this scope
  122 |     keys.append({"Keypad3", XK_KP_3});
      |                             ^~~~~~~
../ruby/input/keyboard/xlib.cpp:122:29: note: the macro 'XK_KP_3' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:311: note: it was later defined here
  311 | #define XK_KP_3                          0xffb3  /*<U+0033 DIGIT THREE>*/
      | 
../ruby/input/keyboard/xlib.cpp:122:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
  122 |     keys.append({"Keypad3", XK_KP_3});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/icon-view.cpp:24:3: error: 'gtk_scrolled_window_set_policy' was not declared in this scope
   24 |   gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(gtkWidget), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/icon-view.cpp:25:71: error: 'GTK_SHADOW_ETCHED_IN' was not declared in this scope
   25 |   gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(gtkWidget), GTK_SHADOW_ETCHED_IN);
      |                                                                       ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/icon-view.cpp:25:3: error: 'gtk_scrolled_window_set_shadow_type' was not declared in this scope
   25 |   gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(gtkWidget), GTK_SHADOW_ETCHED_IN);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/icon-view.cpp:27:3: error: 'store' was not declared in this scope
   27 |   store = gtk_list_store_new(2, GDK_TYPE_PIXBUF, G_TYPE_STRING);
      |   ^~~~~
../ruby/input/keyboard/xlib.cpp:123:29: error: 'XK_KP_4' was not declared in this scope
  123 |     keys.append({"Keypad4", XK_KP_4});
      |                             ^~~~~~~
../ruby/input/keyboard/xlib.cpp:123:29: note: the macro 'XK_KP_4' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:312: note: it was later defined here
  312 | #define XK_KP_4                          0xffb4  /*<U+0034 DIGIT FOUR>*/
      | 
../ruby/input/keyboard/xlib.cpp:123:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
  123 |     keys.append({"Keypad4", XK_KP_4});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/icon-view.cpp:27:33: error: 'GDK_TYPE_PIXBUF' was not declared in this scope
   27 |   store = gtk_list_store_new(2, GDK_TYPE_PIXBUF, G_TYPE_STRING);
      |                                 ^~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/icon-view.cpp:27:50: error: 'G_TYPE_STRING' was not declared in this scope
   27 |   store = gtk_list_store_new(2, GDK_TYPE_PIXBUF, G_TYPE_STRING);
      |                                                  ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/icon-view.cpp:27:11: error: 'gtk_list_store_new' was not declared in this scope
   27 |   store = gtk_list_store_new(2, GDK_TYPE_PIXBUF, G_TYPE_STRING);
      |           ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/icon-view.cpp:28:3: error: 'subWidget' was not declared in this scope; did you mean 'sWidget'?
   28 |   subWidget = gtk_icon_view_new_with_model(GTK_TREE_MODEL(store));
      |   ^~~~~~~~~
      |   sWidget
../hiro/core/../gtk/widget/icon-view.cpp:28:44: error: 'GTK_TREE_MODEL' was not declared in this scope
   28 |   subWidget = gtk_icon_view_new_with_model(GTK_TREE_MODEL(store));
      |                                            ^~~~~~~~~~~~~~
../hiro/core/../gtk/widget/icon-view.cpp:28:15: error: 'gtk_icon_view_new_with_model' was not declared in this scope
   28 |   subWidget = gtk_icon_view_new_with_model(GTK_TREE_MODEL(store));
      |               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:124:29: error: 'XK_KP_5' was not declared in this scope
  124 |     keys.append({"Keypad5", XK_KP_5});
      |                             ^~~~~~~
../ruby/input/keyboard/xlib.cpp:124:29: note: the macro 'XK_KP_5' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:313: note: it was later defined here
  313 | #define XK_KP_5                          0xffb5  /*<U+0035 DIGIT FIVE>*/
      | 
../ruby/input/keyboard/xlib.cpp:124:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
  124 |     keys.append({"Keypad5", XK_KP_5});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/icon-view.cpp:29:35: error: 'GTK_ICON_VIEW' was not declared in this scope
   29 |   gtk_icon_view_set_pixbuf_column(GTK_ICON_VIEW(subWidget), 0);
      |                                   ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/icon-view.cpp:29:3: error: 'gtk_icon_view_set_pixbuf_column' was not declared in this scope
   29 |   gtk_icon_view_set_pixbuf_column(GTK_ICON_VIEW(subWidget), 0);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/icon-view.cpp:30:3: error: 'gtk_icon_view_set_text_column' was not declared in this scope
   30 |   gtk_icon_view_set_text_column(GTK_ICON_VIEW(subWidget), 1);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:125:29: error: 'XK_KP_6' was not declared in this scope
  125 |     keys.append({"Keypad6", XK_KP_6});
      |                             ^~~~~~~
../ruby/input/keyboard/xlib.cpp:125:29: note: the macro 'XK_KP_6' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:314: note: it was later defined here
  314 | #define XK_KP_6                          0xffb6  /*<U+0036 DIGIT SIX>*/
      | 
../ruby/input/keyboard/xlib.cpp:125:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
  125 |     keys.append({"Keypad6", XK_KP_6});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/icon-view.cpp:31:3: error: 'gtk_icon_view_set_reorderable' was not declared in this scope
   31 |   gtk_icon_view_set_reorderable(GTK_ICON_VIEW(subWidget), false);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/icon-view.cpp:32:3: error: 'gtk_icon_view_set_margin' was not declared in this scope
   32 |   gtk_icon_view_set_margin(GTK_ICON_VIEW(subWidget), 0);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:126:29: error: 'XK_KP_7' was not declared in this scope
  126 |     keys.append({"Keypad7", XK_KP_7});
      |                             ^~~~~~~
../ruby/input/keyboard/xlib.cpp:126:29: note: the macro 'XK_KP_7' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:315: note: it was later defined here
  315 | #define XK_KP_7                          0xffb7  /*<U+0037 DIGIT SEVEN>*/
      | 
../ruby/input/keyboard/xlib.cpp:126:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
  126 |     keys.append({"Keypad7", XK_KP_7});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/icon-view.cpp:33:3: error: 'gtk_icon_view_set_spacing' was not declared in this scope
   33 |   gtk_icon_view_set_spacing(GTK_ICON_VIEW(subWidget), 0);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:127:29: error: 'XK_KP_8' was not declared in this scope
  127 |     keys.append({"Keypad8", XK_KP_8});
      |                             ^~~~~~~
../ruby/input/keyboard/xlib.cpp:127:29: note: the macro 'XK_KP_8' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:316: note: it was later defined here
  316 | #define XK_KP_8                          0xffb8  /*<U+0038 DIGIT EIGHT>*/
      | 
../ruby/input/keyboard/xlib.cpp:127:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
  127 |     keys.append({"Keypad8", XK_KP_8});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/icon-view.cpp:34:3: error: 'gtk_icon_view_set_column_spacing' was not declared in this scope
   34 |   gtk_icon_view_set_column_spacing(GTK_ICON_VIEW(subWidget), 0);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:128:29: error: 'XK_KP_9' was not declared in this scope
  128 |     keys.append({"Keypad9", XK_KP_9});
      |                             ^~~~~~~
../ruby/input/keyboard/xlib.cpp:128:29: note: the macro 'XK_KP_9' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:317: note: it was later defined here
  317 | #define XK_KP_9                          0xffb9  /*<U+0039 DIGIT NINE>*/
      | 
../ruby/input/keyboard/xlib.cpp:128:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
  128 |     keys.append({"Keypad9", XK_KP_9});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/icon-view.cpp:35:3: error: 'gtk_icon_view_set_row_spacing' was not declared in this scope
   35 |   gtk_icon_view_set_row_spacing(GTK_ICON_VIEW(subWidget), 0);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/icon-view.cpp:36:3: error: 'gtk_icon_view_set_item_padding' was not declared in this scope
   36 |   gtk_icon_view_set_item_padding(GTK_ICON_VIEW(subWidget), 0);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/icon-view.cpp:37:21: error: 'GTK_CONTAINER' was not declared in this scope
   37 |   gtk_container_add(GTK_CONTAINER(gtkWidget), subWidget);
      |                     ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/icon-view.cpp:37:3: error: 'gtk_container_add' was not declared in this scope
   37 |   gtk_container_add(GTK_CONTAINER(gtkWidget), subWidget);
      |   ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/icon-view.cpp:39:3: error: 'gtk_widget_show' was not declared in this scope
   39 |   gtk_widget_show(subWidget);
      |   ^~~~~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:130:25: error: 'XK_KP_Add' was not declared in this scope
  130 |     keys.append({"Add", XK_KP_Add});
      |                         ^~~~~~~~~
../ruby/input/keyboard/xlib.cpp:130:25: note: the macro 'XK_KP_Add' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:302: note: it was later defined here
  302 | #define XK_KP_Add                        0xffab  /*<U+002B PLUS SIGN>*/
      | 
../ruby/input/keyboard/xlib.cpp:130:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
  130 |     keys.append({"Add", XK_KP_Add});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/icon-view.cpp:52:20: error: 'G_OBJECT' was not declared in this scope
   52 |   g_signal_connect(G_OBJECT(subWidget), "button-press-event", G_CALLBACK(IconView_buttonEvent), (gpointer)this);
      |                    ^~~~~~~~
../hiro/core/../gtk/widget/icon-view.cpp:52:63: error: 'G_CALLBACK' was not declared in this scope
   52 |   g_signal_connect(G_OBJECT(subWidget), "button-press-event", G_CALLBACK(IconView_buttonEvent), (gpointer)this);
      |                                                               ^~~~~~~~~~
../hiro/core/../gtk/widget/icon-view.cpp:52:98: error: 'gpointer' was not declared in this scope
   52 |   g_signal_connect(G_OBJECT(subWidget), "button-press-event", G_CALLBACK(IconView_buttonEvent), (gpointer)this);
      |                                                                                                  ^~~~~~~~
../hiro/core/../gtk/widget/icon-view.cpp:52:3: error: 'g_signal_connect' was not declared in this scope
   52 |   g_signal_connect(G_OBJECT(subWidget), "button-press-event", G_CALLBACK(IconView_buttonEvent), (gpointer)this);
      |   ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/icon-view.cpp:53:109: error: expected ')' before 'this'
   53 |   g_signal_connect(G_OBJECT(subWidget), "button-release-event", G_CALLBACK(IconView_buttonEvent), (gpointer)this);
      |                   ~                                                                                         ^~~~
      |                                                                                                             )
../hiro/core/../gtk/widget/icon-view.cpp:54:100: error: expected ')' before 'this'
   54 |   g_signal_connect(G_OBJECT(subWidget), "item-activated", G_CALLBACK(IconView_activate), (gpointer)this);
      |                   ~                                                                                ^~~~
      |                                                                                                    )
../hiro/core/../gtk/widget/icon-view.cpp:55:101: error: expected ')' before 'this'
   55 |   g_signal_connect(G_OBJECT(subWidget), "selection-changed", G_CALLBACK(IconView_change), (gpointer)this);
      |                   ~                                                                                 ^~~~
      |                                                                                                     )
../hiro/core/../gtk/widget/icon-view.cpp: In member function 'virtual void hiro::pIconView::destruct()':
../hiro/core/../gtk/widget/icon-view.cpp:61:22: error: 'subWidget' was not declared in this scope; did you mean 'sWidget'?
   61 |   gtk_widget_destroy(subWidget);
      |                      ^~~~~~~~~
      |                      sWidget
../hiro/core/../gtk/widget/icon-view.cpp:61:3: error: 'gtk_widget_destroy' was not declared in this scope
   61 |   gtk_widget_destroy(subWidget);
      |   ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/icon-view.cpp:62:22: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   62 |   gtk_widget_destroy(gtkWidget);
      |                      ^~~~~~~~~
      |                      pWidget
../hiro/core/../gtk/widget/icon-view.cpp: In member function 'void hiro::pIconView::append(hiro::sIconViewItem)':
../hiro/core/../gtk/widget/icon-view.cpp:66:3: error: 'GtkTreeIter' was not declared in this scope
   66 |   GtkTreeIter iter;
      |   ^~~~~~~~~~~
../hiro/core/../gtk/widget/icon-view.cpp:67:25: error: 'store' was not declared in this scope
   67 |   gtk_list_store_append(store, &iter);
      |                         ^~~~~
../hiro/core/../gtk/widget/icon-view.cpp:67:33: error: 'iter' was not declared in this scope; did you mean 'item'?
   67 |   gtk_list_store_append(store, &iter);
      |                                 ^~~~
      |                                 item
../ruby/input/keyboard/xlib.cpp:131:30: error: 'XK_KP_Subtract' was not declared in this scope
  131 |     keys.append({"Subtract", XK_KP_Subtract});
      |                              ^~~~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:131:30: note: the macro 'XK_KP_Subtract' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:304: note: it was later defined here
  304 | #define XK_KP_Subtract                   0xffad  /*<U+002D HYPHEN-MINUS>*/
      | 
../ruby/input/keyboard/xlib.cpp:131:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
  131 |     keys.append({"Subtract", XK_KP_Subtract});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/icon-view.cpp:67:3: error: 'gtk_list_store_append' was not declared in this scope
   67 |   gtk_list_store_append(store, &iter);
      |   ^~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/icon-view.cpp: In member function 'void hiro::pIconView::remove(hiro::sIconViewItem)':
../hiro/core/../gtk/widget/icon-view.cpp:75:3: error: 'GtkTreeIter' was not declared in this scope
   75 |   GtkTreeIter iter;
      |   ^~~~~~~~~~~
../hiro/core/../gtk/widget/icon-view.cpp:76:57: error: 'store' was not declared in this scope
   76 |   if(gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(store), &iter, string{item->offset()})) {
      |                                                         ^~~~~
../hiro/core/../gtk/widget/icon-view.cpp:76:42: error: 'GTK_TREE_MODEL' was not declared in this scope
   76 |   if(gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(store), &iter, string{item->offset()})) {
      |                                          ^~~~~~~~~~~~~~
../hiro/core/../gtk/widget/icon-view.cpp:76:66: error: 'iter' was not declared in this scope; did you mean 'item'?
   76 |   if(gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(store), &iter, string{item->offset()})) {
      |                                                                  ^~~~
      |                                                                  item
../hiro/core/../gtk/widget/icon-view.cpp:76:6: error: 'gtk_tree_model_get_iter_from_string' was not declared in this scope
   76 |   if(gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(store), &iter, string{item->offset()})) {
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/icon-view.cpp:77:5: error: 'gtk_list_store_remove' was not declared in this scope
   77 |     gtk_list_store_remove(store, &iter);
      |     ^~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/icon-view.cpp: In member function 'virtual void hiro::pIconView::reset()':
../hiro/core/../gtk/widget/icon-view.cpp:85:24: error: 'store' was not declared in this scope
   85 |   gtk_list_store_clear(store);
      |                        ^~~~~
../hiro/core/../gtk/widget/icon-view.cpp:85:3: error: 'gtk_list_store_clear' was not declared in this scope
   85 |   gtk_list_store_clear(store);
      |   ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/icon-view.cpp: In member function 'void hiro::pIconView::setBackgroundColor(hiro::Color)':
../hiro/core/../gtk/widget/icon-view.cpp:91:3: error: 'GdkColor' was not declared in this scope; did you mean 'Color'?
   91 |   GdkColor gdkColor = CreateColor(color);
      |   ^~~~~~~~
      |   Color
../ruby/input/keyboard/xlib.cpp:132:30: error: 'XK_KP_Multiply' was not declared in this scope
  132 |     keys.append({"Multiply", XK_KP_Multiply});
      |                              ^~~~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:132:30: note: the macro 'XK_KP_Multiply' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:301: note: it was later defined here
  301 | #define XK_KP_Multiply                   0xffaa  /*<U+002A ASTERISK>*/
      | 
../ruby/input/keyboard/xlib.cpp:132:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
  132 |     keys.append({"Multiply", XK_KP_Multiply});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/icon-view.cpp:92:26: error: 'subWidget' was not declared in this scope; did you mean 'sWidget'?
   92 |   gtk_widget_modify_base(subWidget, GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |                          ^~~~~~~~~
      |                          sWidget
../hiro/core/../gtk/widget/icon-view.cpp:92:37: error: 'GTK_STATE_NORMAL' was not declared in this scope
   92 |   gtk_widget_modify_base(subWidget, GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |                                     ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/icon-view.cpp:92:64: error: 'gdkColor' was not declared in this scope; did you mean 'Color'?
   92 |   gtk_widget_modify_base(subWidget, GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |                                                                ^~~~~~~~
      |                                                                Color
../ruby/input/keyboard/xlib.cpp:133:28: error: 'XK_KP_Divide' was not declared in this scope
  133 |     keys.append({"Divide", XK_KP_Divide});
      |                            ^~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:133:28: note: the macro 'XK_KP_Divide' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:306: note: it was later defined here
  306 | #define XK_KP_Divide                     0xffaf  /*<U+002F SOLIDUS>*/
      | 
../ruby/input/keyboard/xlib.cpp:133:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
  133 |     keys.append({"Divide", XK_KP_Divide});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/icon-view.cpp:92:3: error: 'gtk_widget_modify_base' was not declared in this scope
   92 |   gtk_widget_modify_base(subWidget, GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |   ^~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/icon-view.cpp: In member function 'void hiro::pIconView::setBatchable(bool)':
../hiro/core/../gtk/widget/icon-view.cpp:96:50: error: 'subWidget' was not declared in this scope; did you mean 'sWidget'?
   96 |   gtk_icon_view_set_selection_mode(GTK_ICON_VIEW(subWidget),
      |                                                  ^~~~~~~~~
      |                                                  sWidget
../hiro/core/../gtk/widget/icon-view.cpp:96:36: error: 'GTK_ICON_VIEW' was not declared in this scope
   96 |   gtk_icon_view_set_selection_mode(GTK_ICON_VIEW(subWidget),
      |                                    ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/icon-view.cpp:97:17: error: 'GTK_SELECTION_MULTIPLE' was not declared in this scope
   97 |     batchable ? GTK_SELECTION_MULTIPLE : GTK_SELECTION_SINGLE
      |                 ^~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/icon-view.cpp:97:42: error: 'GTK_SELECTION_SINGLE' was not declared in this scope
   97 |     batchable ? GTK_SELECTION_MULTIPLE : GTK_SELECTION_SINGLE
      |                                          ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/icon-view.cpp:96:3: error: 'gtk_icon_view_set_selection_mode' was not declared in this scope
   96 |   gtk_icon_view_set_selection_mode(GTK_ICON_VIEW(subWidget),
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/icon-view.cpp: In member function 'void hiro::pIconView::setFlow(hiro::Orientation)':
../hiro/core/../gtk/widget/icon-view.cpp:104:45: error: 'subWidget' was not declared in this scope; did you mean 'sWidget'?
  104 |     gtk_icon_view_set_columns(GTK_ICON_VIEW(subWidget), -1);
      |                                             ^~~~~~~~~
      |                                             sWidget
../hiro/core/../gtk/widget/icon-view.cpp:104:31: error: 'GTK_ICON_VIEW' was not declared in this scope
  104 |     gtk_icon_view_set_columns(GTK_ICON_VIEW(subWidget), -1);
      |                               ^~~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:134:27: error: 'XK_KP_Enter' was not declared in this scope
  134 |     keys.append({"Enter", XK_KP_Enter});
      |                           ^~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:134:27: note: the macro 'XK_KP_Enter' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:282: note: it was later defined here
  282 | #define XK_KP_Enter                      0xff8d  /*<U+000D CARRIAGE RETURN>*/
      | 
../ruby/input/keyboard/xlib.cpp:134:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
  134 |     keys.append({"Enter", XK_KP_Enter});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/icon-view.cpp:104:5: error: 'gtk_icon_view_set_columns' was not declared in this scope
  104 |     gtk_icon_view_set_columns(GTK_ICON_VIEW(subWidget), -1);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/icon-view.cpp:105:5: error: 'gtk_icon_view_set_item_width' was not declared in this scope
  105 |     gtk_icon_view_set_item_width(GTK_ICON_VIEW(subWidget), -1);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/icon-view.cpp:107:45: error: 'subWidget' was not declared in this scope; did you mean 'sWidget'?
  107 |     gtk_icon_view_set_columns(GTK_ICON_VIEW(subWidget), 1);
      |                                             ^~~~~~~~~
      |                                             sWidget
../hiro/core/../gtk/widget/icon-view.cpp:107:31: error: 'GTK_ICON_VIEW' was not declared in this scope
  107 |     gtk_icon_view_set_columns(GTK_ICON_VIEW(subWidget), 1);
      |                               ^~~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:136:24: error: 'XK_Up' was not declared in this scope
  136 |     keys.append({"Up", XK_Up});
      |                        ^~~~~
../ruby/input/keyboard/xlib.cpp:136:24: note: the macro 'XK_Up' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:250: note: it was later defined here
  250 | #define XK_Up                            0xff52  /* Move up, up arrow */
      | 
../ruby/input/keyboard/xlib.cpp:136:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
  136 |     keys.append({"Up", XK_Up});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/icon-view.cpp:107:5: error: 'gtk_icon_view_set_columns' was not declared in this scope
  107 |     gtk_icon_view_set_columns(GTK_ICON_VIEW(subWidget), 1);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/icon-view.cpp:108:5: error: 'gtk_icon_view_set_item_width' was not declared in this scope
  108 |     gtk_icon_view_set_item_width(GTK_ICON_VIEW(subWidget), max(128, pSizable::state().geometry.width() - 64));
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/icon-view.cpp: In member function 'void hiro::pIconView::setForegroundColor(hiro::Color)':
../hiro/core/../gtk/widget/icon-view.cpp:113:3: error: 'GdkColor' was not declared in this scope; did you mean 'Color'?
  113 |   GdkColor gdkColor = CreateColor(color);
      |   ^~~~~~~~
      |   Color
../ruby/input/keyboard/xlib.cpp:137:26: error: 'XK_Down' was not declared in this scope
  137 |     keys.append({"Down", XK_Down});
      |                          ^~~~~~~
../ruby/input/keyboard/xlib.cpp:137:26: note: the macro 'XK_Down' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:252: note: it was later defined here
  252 | #define XK_Down                          0xff54  /* Move down, down arrow */
      | 
../ruby/input/keyboard/xlib.cpp:137:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
  137 |     keys.append({"Down", XK_Down});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/icon-view.cpp:114:26: error: 'subWidget' was not declared in this scope; did you mean 'sWidget'?
  114 |   gtk_widget_modify_text(subWidget, GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |                          ^~~~~~~~~
      |                          sWidget
../hiro/core/../gtk/widget/icon-view.cpp:114:37: error: 'GTK_STATE_NORMAL' was not declared in this scope
  114 |   gtk_widget_modify_text(subWidget, GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |                                     ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/icon-view.cpp:114:64: error: 'gdkColor' was not declared in this scope; did you mean 'Color'?
  114 |   gtk_widget_modify_text(subWidget, GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |                                                                ^~~~~~~~
      |                                                                Color
../ruby/input/keyboard/xlib.cpp:138:26: error: 'XK_Left' was not declared in this scope
  138 |     keys.append({"Left", XK_Left});
      |                          ^~~~~~~
../ruby/input/keyboard/xlib.cpp:138:26: note: the macro 'XK_Left' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:249: note: it was later defined here
  249 | #define XK_Left                          0xff51  /* Move left, left arrow */
      | 
../ruby/input/keyboard/xlib.cpp:138:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
  138 |     keys.append({"Left", XK_Left});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/icon-view.cpp:114:3: error: 'gtk_widget_modify_text' was not declared in this scope
  114 |   gtk_widget_modify_text(subWidget, GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |   ^~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/icon-view.cpp: In member function 'virtual void hiro::pIconView::setGeometry(hiro::Geometry)':
../hiro/core/../gtk/widget/icon-view.cpp:120:48: error: 'subWidget' was not declared in this scope; did you mean 'sWidget'?
  120 |     gtk_icon_view_set_item_width(GTK_ICON_VIEW(subWidget), max(128, pSizable::state().geometry.width() - 64));
      |                                                ^~~~~~~~~
      |                                                sWidget
../hiro/core/../gtk/widget/icon-view.cpp:120:34: error: 'GTK_ICON_VIEW' was not declared in this scope
  120 |     gtk_icon_view_set_item_width(GTK_ICON_VIEW(subWidget), max(128, pSizable::state().geometry.width() - 64));
      |                                  ^~~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:139:27: error: 'XK_Right' was not declared in this scope
  139 |     keys.append({"Right", XK_Right});
      |                           ^~~~~~~~
../ruby/input/keyboard/xlib.cpp:139:27: note: the macro 'XK_Right' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:251: note: it was later defined here
  251 | #define XK_Right                         0xff53  /* Move right, right arrow */
      | 
../ruby/input/keyboard/xlib.cpp:139:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
  139 |     keys.append({"Right", XK_Right});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/icon-view.cpp:120:5: error: 'gtk_icon_view_set_item_width' was not declared in this scope
  120 |     gtk_icon_view_set_item_width(GTK_ICON_VIEW(subWidget), max(128, pSizable::state().geometry.width() - 64));
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:141:25: error: 'XK_Tab' was not declared in this scope
  141 |     keys.append({"Tab", XK_Tab});
      |                         ^~~~~~
../ruby/input/keyboard/xlib.cpp:141:25: note: the macro 'XK_Tab' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:201: note: it was later defined here
  201 | #define XK_Tab                           0xff09  /* U+0009 CHARACTER TABULATION */
      | 
../ruby/input/keyboard/xlib.cpp:141:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
  141 |     keys.append({"Tab", XK_Tab});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/icon-view.cpp: In member function 'void hiro::pIconView::setItemIcon(unsigned int, const nall::image&)':
../hiro/core/../gtk/widget/icon-view.cpp:126:3: error: 'GtkTreeIter' was not declared in this scope
  126 |   GtkTreeIter iter;
      |   ^~~~~~~~~~~
../hiro/core/../gtk/widget/icon-view.cpp:127:57: error: 'store' was not declared in this scope
  127 |   if(gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(store), &iter, string{position})) {
      |                                                         ^~~~~
../hiro/core/../gtk/widget/icon-view.cpp:127:42: error: 'GTK_TREE_MODEL' was not declared in this scope
  127 |   if(gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(store), &iter, string{position})) {
      |                                          ^~~~~~~~~~~~~~
../hiro/core/../gtk/widget/icon-view.cpp:127:66: error: 'iter' was not declared in this scope
  127 |   if(gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(store), &iter, string{position})) {
      |                                                                  ^~~~
../hiro/core/../gtk/widget/icon-view.cpp:127:6: error: 'gtk_tree_model_get_iter_from_string' was not declared in this scope
  127 |   if(gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(store), &iter, string{position})) {
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:142:28: error: 'XK_Return' was not declared in this scope
  142 |     keys.append({"Return", XK_Return});
      |                            ^~~~~~~~~
../ruby/input/keyboard/xlib.cpp:142:28: note: the macro 'XK_Return' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:204: note: it was later defined here
  204 | #define XK_Return                        0xff0d  /* U+000D CARRIAGE RETURN */
      | 
../ruby/input/keyboard/xlib.cpp:142:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
  142 |     keys.append({"Return", XK_Return});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/icon-view.cpp:129:7: error: 'GdkPixbuf' was not declared in this scope
  129 |       GdkPixbuf* pixbuf = CreatePixbuf(icon);
      |       ^~~~~~~~~
../hiro/core/../gtk/widget/icon-view.cpp:129:18: error: 'pixbuf' was not declared in this scope
  129 |       GdkPixbuf* pixbuf = CreatePixbuf(icon);
      |                  ^~~~~~
../hiro/core/../gtk/widget/icon-view.cpp:129:27: error: 'CreatePixbuf' was not declared in this scope
  129 |       GdkPixbuf* pixbuf = CreatePixbuf(icon);
      |                           ^~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:143:30: error: 'XK_space' was not declared in this scope
  143 |     keys.append({"Spacebar", XK_space});
      |                              ^~~~~~~~
../ruby/input/keyboard/xlib.cpp:143:30: note: the macro 'XK_space' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:623: note: it was later defined here
  623 | #define XK_space                         0x0020  /* U+0020 SPACE */
      | 
../ruby/input/keyboard/xlib.cpp:143:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
  143 |     keys.append({"Spacebar", XK_space});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/icon-view.cpp:130:7: error: 'gtk_list_store_set' was not declared in this scope
  130 |       gtk_list_store_set(store, &iter, 0, pixbuf, -1);
      |       ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/icon-view.cpp:132:7: error: 'gtk_list_store_set' was not declared in this scope
  132 |       gtk_list_store_set(store, &iter, 0, nullptr, -1);
      |       ^~~~~~~~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:145:33: error: 'XK_Control_L' was not declared in this scope
  145 |     keys.append({"LeftControl", XK_Control_L});
      |                                 ^~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:145:33: note: the macro 'XK_Control_L' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:393: note: it was later defined here
  393 | #define XK_Control_L                     0xffe3  /* Left control */
      | 
../ruby/input/keyboard/xlib.cpp:145:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
  145 |     keys.append({"LeftControl", XK_Control_L});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/icon-view.cpp: In member function 'void hiro::pIconView::setItemSelected(unsigned int, bool)':
../hiro/core/../gtk/widget/icon-view.cpp:140:3: error: 'GtkTreePath' was not declared in this scope
  140 |   GtkTreePath* path = gtk_tree_path_new_from_string(string{position});
      |   ^~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:146:34: error: 'XK_Control_R' was not declared in this scope
  146 |     keys.append({"RightControl", XK_Control_R});
      |                                  ^~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:146:34: note: the macro 'XK_Control_R' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:394: note: it was later defined here
  394 | #define XK_Control_R                     0xffe4  /* Right control */
      | 
../hiro/core/../gtk/widget/icon-view.cpp:140:16: error: 'path' was not declared in this scope; did you mean 'nall::Location::path'?
  140 |   GtkTreePath* path = gtk_tree_path_new_from_string(string{position});
      |                ^~~~
      |                nall::Location::path
../nall/location.hpp:9:13: note: 'nall::Location::path' declared here
    9 | inline auto path(string_view self) -> string {
      |             ^~~~
../ruby/input/keyboard/xlib.cpp:146:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
  146 |     keys.append({"RightControl", XK_Control_R});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/icon-view.cpp:140:23: error: 'gtk_tree_path_new_from_string' was not declared in this scope
  140 |   GtkTreePath* path = gtk_tree_path_new_from_string(string{position});
      |                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:147:29: error: 'XK_Alt_L' was not declared in this scope
  147 |     keys.append({"LeftAlt", XK_Alt_L});
      |                             ^~~~~~~~
../ruby/input/keyboard/xlib.cpp:147:29: note: the macro 'XK_Alt_L' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:400: note: it was later defined here
  400 | #define XK_Alt_L                         0xffe9  /* Left alt */
      | 
../ruby/input/keyboard/xlib.cpp:147:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
  147 |     keys.append({"LeftAlt", XK_Alt_L});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/icon-view.cpp:142:45: error: 'subWidget' was not declared in this scope; did you mean 'sWidget'?
  142 |     gtk_icon_view_select_path(GTK_ICON_VIEW(subWidget), path);
      |                                             ^~~~~~~~~
      |                                             sWidget
../hiro/core/../gtk/widget/icon-view.cpp:142:31: error: 'GTK_ICON_VIEW' was not declared in this scope
  142 |     gtk_icon_view_select_path(GTK_ICON_VIEW(subWidget), path);
      |                               ^~~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:148:30: error: 'XK_Alt_R' was not declared in this scope
  148 |     keys.append({"RightAlt", XK_Alt_R});
      |                              ^~~~~~~~
../ruby/input/keyboard/xlib.cpp:148:30: note: the macro 'XK_Alt_R' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:401: note: it was later defined here
  401 | #define XK_Alt_R                         0xffea  /* Right alt */
      | 
../ruby/input/keyboard/xlib.cpp:148:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
  148 |     keys.append({"RightAlt", XK_Alt_R});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/icon-view.cpp:142:5: error: 'gtk_icon_view_select_path' was not declared in this scope
  142 |     gtk_icon_view_select_path(GTK_ICON_VIEW(subWidget), path);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/icon-view.cpp:144:47: error: 'subWidget' was not declared in this scope; did you mean 'sWidget'?
  144 |     gtk_icon_view_unselect_path(GTK_ICON_VIEW(subWidget), path);
      |                                               ^~~~~~~~~
      |                                               sWidget
../hiro/core/../gtk/widget/icon-view.cpp:144:33: error: 'GTK_ICON_VIEW' was not declared in this scope
  144 |     gtk_icon_view_unselect_path(GTK_ICON_VIEW(subWidget), path);
      |                                 ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/icon-view.cpp:144:5: error: 'gtk_icon_view_unselect_path' was not declared in this scope
  144 |     gtk_icon_view_unselect_path(GTK_ICON_VIEW(subWidget), path);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:149:31: error: 'XK_Shift_L' was not declared in this scope
  149 |     keys.append({"LeftShift", XK_Shift_L});
      |                               ^~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:149:31: note: the macro 'XK_Shift_L' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:391: note: it was later defined here
  391 | #define XK_Shift_L                       0xffe1  /* Left shift */
      | 
../ruby/input/keyboard/xlib.cpp:149:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
  149 |     keys.append({"LeftShift", XK_Shift_L});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/icon-view.cpp:146:3: error: 'gtk_tree_path_free' was not declared in this scope
  146 |   gtk_tree_path_free(path);
      |   ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/icon-view.cpp: In member function 'void hiro::pIconView::setItemSelectedAll()':
../hiro/core/../gtk/widget/icon-view.cpp:161:42: error: 'subWidget' was not declared in this scope; did you mean 'sWidget'?
  161 |   gtk_icon_view_select_all(GTK_ICON_VIEW(subWidget));
      |                                          ^~~~~~~~~
      |                                          sWidget
../hiro/core/../gtk/widget/icon-view.cpp:161:28: error: 'GTK_ICON_VIEW' was not declared in this scope
  161 |   gtk_icon_view_select_all(GTK_ICON_VIEW(subWidget));
      |                            ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/icon-view.cpp:161:3: error: 'gtk_icon_view_select_all' was not declared in this scope
  161 |   gtk_icon_view_select_all(GTK_ICON_VIEW(subWidget));
      |   ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/icon-view.cpp: In member function 'void hiro::pIconView::setItemSelectedNone()':
../hiro/core/../gtk/widget/icon-view.cpp:168:44: error: 'subWidget' was not declared in this scope; did you mean 'sWidget'?
  168 |   gtk_icon_view_unselect_all(GTK_ICON_VIEW(subWidget));
      |                                            ^~~~~~~~~
      |                                            sWidget
../hiro/core/../gtk/widget/icon-view.cpp:168:30: error: 'GTK_ICON_VIEW' was not declared in this scope
  168 |   gtk_icon_view_unselect_all(GTK_ICON_VIEW(subWidget));
      |                              ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/icon-view.cpp:168:3: error: 'gtk_icon_view_unselect_all' was not declared in this scope
  168 |   gtk_icon_view_unselect_all(GTK_ICON_VIEW(subWidget));
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:150:32: error: 'XK_Shift_R' was not declared in this scope
  150 |     keys.append({"RightShift", XK_Shift_R});
      |                                ^~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:150:32: note: the macro 'XK_Shift_R' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:392: note: it was later defined here
  392 | #define XK_Shift_R                       0xffe2  /* Right shift */
      | 
../ruby/input/keyboard/xlib.cpp:150:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
  150 |     keys.append({"RightShift", XK_Shift_R});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/icon-view.cpp: In member function 'void hiro::pIconView::setItemText(unsigned int, const nall::string&)':
../hiro/core/../gtk/widget/icon-view.cpp:175:3: error: 'GtkTreeIter' was not declared in this scope
  175 |   GtkTreeIter iter;
      |   ^~~~~~~~~~~
../hiro/core/../gtk/widget/icon-view.cpp:176:57: error: 'store' was not declared in this scope
  176 |   if(gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(store), &iter, string{position})) {
      |                                                         ^~~~~
../hiro/core/../gtk/widget/icon-view.cpp:176:42: error: 'GTK_TREE_MODEL' was not declared in this scope
  176 |   if(gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(store), &iter, string{position})) {
      |                                          ^~~~~~~~~~~~~~
../hiro/core/../gtk/widget/icon-view.cpp:176:66: error: 'iter' was not declared in this scope
  176 |   if(gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(store), &iter, string{position})) {
      |                                                                  ^~~~
../hiro/core/../gtk/widget/icon-view.cpp:176:6: error: 'gtk_tree_model_get_iter_from_string' was not declared in this scope
  176 |   if(gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(store), &iter, string{position})) {
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:151:31: error: 'XK_Super_L' was not declared in this scope
  151 |     keys.append({"LeftSuper", XK_Super_L});
      |                               ^~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:151:31: note: the macro 'XK_Super_L' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:402: note: it was later defined here
  402 | #define XK_Super_L                       0xffeb  /* Left super */
      | 
../ruby/input/keyboard/xlib.cpp:151:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
  151 |     keys.append({"LeftSuper", XK_Super_L});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/icon-view.cpp:177:5: error: 'gtk_list_store_set' was not declared in this scope
  177 |     gtk_list_store_set(store, &iter, 1, (const char*)text, -1);
      |     ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/icon-view.cpp: In member function 'void hiro::pIconView::setOrientation(hiro::Orientation)':
../hiro/core/../gtk/widget/icon-view.cpp:182:52: error: 'subWidget' was not declared in this scope; did you mean 'sWidget'?
  182 |   gtk_icon_view_set_item_orientation(GTK_ICON_VIEW(subWidget),
      |                                                    ^~~~~~~~~
      |                                                    sWidget
../hiro/core/../gtk/widget/icon-view.cpp:182:38: error: 'GTK_ICON_VIEW' was not declared in this scope
  182 |   gtk_icon_view_set_item_orientation(GTK_ICON_VIEW(subWidget),
      |                                      ^~~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:152:32: error: 'XK_Super_R' was not declared in this scope
  152 |     keys.append({"RightSuper", XK_Super_R});
      |                                ^~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:152:32: note: the macro 'XK_Super_R' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:403: note: it was later defined here
  403 | #define XK_Super_R                       0xffec  /* Right super */
      | 
../ruby/input/keyboard/xlib.cpp:152:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
  152 |     keys.append({"RightSuper", XK_Super_R});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/icon-view.cpp:183:46: error: 'GTK_ORIENTATION_HORIZONTAL' was not declared in this scope
  183 |     orientation == Orientation::Horizontal ? GTK_ORIENTATION_HORIZONTAL : GTK_ORIENTATION_VERTICAL
      |                                              ^~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/icon-view.cpp:183:75: error: 'GTK_ORIENTATION_VERTICAL' was not declared in this scope
  183 |     orientation == Orientation::Horizontal ? GTK_ORIENTATION_HORIZONTAL : GTK_ORIENTATION_VERTICAL
      |                                                                           ^~~~~~~~~~~~~~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:153:26: error: 'XK_Menu' was not declared in this scope
  153 |     keys.append({"Menu", XK_Menu});
      |                          ^~~~~~~
../ruby/input/keyboard/xlib.cpp:153:26: note: the macro 'XK_Menu' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/keysymdef.h:269: note: it was later defined here
  269 | #define XK_Menu                          0xff67
      | 
../ruby/input/keyboard/xlib.cpp:153:16: error: no matching function for call to 'nall::vector<InputKeyboardXlib::Key>::append(<brace-enclosed initializer list>)'
  153 |     keys.append({"Menu", XK_Menu});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const T&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:37:27: note: in expansion of macro 'vector'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:37:54: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const InputKeyboardXlib::Key&'
   37 | template<typename T> auto vector<T>::append(const T& value) -> void {
      |                                             ~~~~~~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(T&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:44:27: note: in expansion of macro 'vector'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:44:49: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'InputKeyboardXlib::Key&&'
   44 | template<typename T> auto vector<T>::append(T&& value) -> void {
      |                                             ~~~~^~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(const nall::vector_base<T>&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:51:27: note: in expansion of macro 'vector'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:51:62: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const nall::vector_base<InputKeyboardXlib::Key>&'
   51 | template<typename T> auto vector<T>::append(const vector<T>& values) -> void {
      |                                             ~~~~~~~~~~~~~~~~~^~~~~~
../nall/vector.hpp:139:16: note: candidate: 'void nall::vector_base<T>::append(nall::vector_base<T>&&) [with T = InputKeyboardXlib::Key]'
  139 | #define vector vector_base
../nall/vector/modify.hpp:58:27: note: in expansion of macro 'vector'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
      |                           ^~~~~~
../nall/vector/modify.hpp:58:57: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'nall::vector_base<InputKeyboardXlib::Key>&&'
   58 | template<typename T> auto vector<T>::append(vector<T>&& values) -> void {
../hiro/core/../gtk/widget/icon-view.cpp:182:3: error: 'gtk_icon_view_set_item_orientation' was not declared in this scope
  182 |   gtk_icon_view_set_item_orientation(GTK_ICON_VIEW(subWidget),
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/icon-view.cpp: In member function 'void hiro::pIconView::_updateSelected()':
../hiro/core/../gtk/widget/icon-view.cpp:190:3: error: 'GList' was not declared in this scope
  190 |   GList* list = gtk_icon_view_get_selected_items(GTK_ICON_VIEW(subWidget));
      |   ^~~~~
../hiro/core/../gtk/widget/icon-view.cpp:190:10: error: 'list' was not declared in this scope
  190 |   GList* list = gtk_icon_view_get_selected_items(GTK_ICON_VIEW(subWidget));
      |          ^~~~
../hiro/core/../gtk/widget/icon-view.cpp:190:64: error: 'subWidget' was not declared in this scope; did you mean 'sWidget'?
  190 |   GList* list = gtk_icon_view_get_selected_items(GTK_ICON_VIEW(subWidget));
      |                                                                ^~~~~~~~~
      |                                                                sWidget
../hiro/core/../gtk/widget/icon-view.cpp:190:50: error: 'GTK_ICON_VIEW' was not declared in this scope
  190 |   GList* list = gtk_icon_view_get_selected_items(GTK_ICON_VIEW(subWidget));
      |                                                  ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/icon-view.cpp:190:17: error: 'gtk_icon_view_get_selected_items' was not declared in this scope
  190 |   GList* list = gtk_icon_view_get_selected_items(GTK_ICON_VIEW(subWidget));
      |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/icon-view.cpp:191:10: error: 'p' was not declared in this scope
  191 |   GList* p = list;
      |          ^
../hiro/core/../gtk/widget/icon-view.cpp:194:18: error: 'GtkTreePath' was not declared in this scope
  194 |     auto path = (GtkTreePath*)p->data;
      |                  ^~~~~~~~~~~
../hiro/core/../gtk/widget/icon-view.cpp:194:30: error: expected primary-expression before ')' token
  194 |     auto path = (GtkTreePath*)p->data;
      |                              ^
../hiro/core/../gtk/widget/icon-view.cpp:195:24: error: 'gtk_tree_path_to_string' was not declared in this scope
  195 |     char* pathString = gtk_tree_path_to_string(path);
      |                        ^~~~~~~~~~~~~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:161:21: error: 'XKeysymToKeycode' was not declared in this scope
  161 |       key.keycode = XKeysymToKeycode(display, key.keysym);
      |                     ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/icon-view.cpp:197:5: error: 'g_free' was not declared in this scope; did you mean 'free'?
  197 |     g_free(pathString);
      |     ^~~~~~
      |     free
../hiro/core/../gtk/widget/icon-view.cpp:202:25: error: 'GFunc' was not declared in this scope
  202 |   g_list_foreach(list, (GFunc)gtk_tree_path_free, nullptr);
      |                         ^~~~~
../hiro/core/../gtk/widget/icon-view.cpp:202:3: error: 'g_list_foreach' was not declared in this scope
  202 |   g_list_foreach(list, (GFunc)gtk_tree_path_free, nullptr);
      |   ^~~~~~~~~~~~~~
../hiro/core/../gtk/widget/icon-view.cpp:203:3: error: 'g_list_free' was not declared in this scope
  203 |   g_list_free(list);
      |   ^~~~~~~~~~~
In file included from ../hiro/core/../gtk/platform.cpp:46:
../hiro/core/../gtk/widget/label.cpp: At global scope:
../hiro/core/../gtk/widget/label.cpp:5:24: error: 'GtkWidget' was not declared in this scope; did you mean 'wWidget'?
    5 | static auto Label_draw(GtkWidget* widget, cairo_t* context, pLabel* p) -> int {
      |                        ^~~~~~~~~
      |                        wWidget
../hiro/core/../gtk/widget/label.cpp:5:35: error: 'widget' was not declared in this scope; did you mean 'Widget'?
    5 | static auto Label_draw(GtkWidget* widget, cairo_t* context, pLabel* p) -> int {
      |                                   ^~~~~~
      |                                   Widget
../hiro/core/../gtk/widget/label.cpp:5:43: error: 'cairo_t' was not declared in this scope
    5 | static auto Label_draw(GtkWidget* widget, cairo_t* context, pLabel* p) -> int {
      |                                           ^~~~~~~
../ruby/input/keyboard/xlib.cpp: In member function 'void InputKeyboardXlib::terminate()':
../ruby/input/keyboard/xlib.cpp:169:7: error: 'XCloseDisplay' was not declared in this scope
  169 |       XCloseDisplay(display);
      |       ^~~~~~~~~~~~~
../ruby/input/keyboard/xlib.cpp:170:15: error: assignment of function 'constexpr nall::DisplayServer nall::display()'
  170 |       display = nullptr;
      |       ~~~~~~~~^~~~~~~~~
../hiro/core/../gtk/widget/label.cpp:5:52: error: 'context' was not declared in this scope; did you mean 'ucontext'?
    5 | static auto Label_draw(GtkWidget* widget, cairo_t* context, pLabel* p) -> int {
      |                                                    ^~~~~~~
      |                                                    ucontext
../hiro/core/../gtk/widget/label.cpp:5:67: error: expected primary-expression before '*' token
    5 | static auto Label_draw(GtkWidget* widget, cairo_t* context, pLabel* p) -> int {
      |                                                                   ^
../hiro/core/../gtk/widget/label.cpp:5:69: error: 'p' was not declared in this scope
    5 | static auto Label_draw(GtkWidget* widget, cairo_t* context, pLabel* p) -> int {
      |                                                                     ^
../hiro/core/../gtk/widget/label.cpp:5:70: error: expression list treated as compound expression in initializer [-fpermissive]
    5 | static auto Label_draw(GtkWidget* widget, cairo_t* context, pLabel* p) -> int {
      |                                                                      ^
../hiro/core/../gtk/widget/label.cpp:5:72: error: expected ',' or ';' before '->' token
    5 | static auto Label_draw(GtkWidget* widget, cairo_t* context, pLabel* p) -> int {
      |                                                                        ^~
../hiro/core/../gtk/widget/label.cpp:42:26: error: 'GtkWidget' was not declared in this scope; did you mean 'wWidget'?
   42 | static auto Label_expose(GtkWidget* widget, GdkEvent* event, pLabel* p) -> int {
      |                          ^~~~~~~~~
      |                          wWidget
In file included from ../ruby/input/sdl.cpp:6:
../ruby/input/mouse/xlib.cpp: At global scope:
../ruby/input/mouse/xlib.cpp:11:3: error: 'Display' does not name a type
   11 |   Display* display = nullptr;
      |   ^~~~~~~
../hiro/core/../gtk/widget/label.cpp:42:37: error: 'widget' was not declared in this scope; did you mean 'Widget'?
   42 | static auto Label_expose(GtkWidget* widget, GdkEvent* event, pLabel* p) -> int {
      |                                     ^~~~~~
      |                                     Widget
../hiro/core/../gtk/widget/label.cpp:42:45: error: 'GdkEvent' was not declared in this scope
   42 | static auto Label_expose(GtkWidget* widget, GdkEvent* event, pLabel* p) -> int {
      |                                             ^~~~~~~~
../hiro/core/../gtk/widget/label.cpp:42:55: error: 'event' was not declared in this scope; did you mean 'servent'?
   42 | static auto Label_expose(GtkWidget* widget, GdkEvent* event, pLabel* p) -> int {
      |                                                       ^~~~~
      |                                                       servent
../hiro/core/../gtk/widget/label.cpp:42:68: error: expected primary-expression before '*' token
   42 | static auto Label_expose(GtkWidget* widget, GdkEvent* event, pLabel* p) -> int {
      |                                                                    ^
../hiro/core/../gtk/widget/label.cpp:42:70: error: 'p' was not declared in this scope
   42 | static auto Label_expose(GtkWidget* widget, GdkEvent* event, pLabel* p) -> int {
      |                                                                      ^
../hiro/core/../gtk/widget/label.cpp:42:71: error: expression list treated as compound expression in initializer [-fpermissive]
   42 | static auto Label_expose(GtkWidget* widget, GdkEvent* event, pLabel* p) -> int {
      |                                                                       ^
../hiro/core/../gtk/widget/label.cpp:42:73: error: expected ',' or ';' before '->' token
   42 | static auto Label_expose(GtkWidget* widget, GdkEvent* event, pLabel* p) -> int {
      |                                                                         ^~
../hiro/core/../gtk/widget/label.cpp:49:30: error: 'GtkWidget' was not declared in this scope; did you mean 'wWidget'?
   49 | static auto Label_mouseEnter(GtkWidget* widget, GdkEventButton* event, pCanvas* p) -> signed {
      |                              ^~~~~~~~~
      |                              wWidget
../hiro/core/../gtk/widget/label.cpp:49:41: error: 'widget' was not declared in this scope; did you mean 'Widget'?
   49 | static auto Label_mouseEnter(GtkWidget* widget, GdkEventButton* event, pCanvas* p) -> signed {
      |                                         ^~~~~~
      |                                         Widget
../hiro/core/../gtk/widget/label.cpp:49:49: error: 'GdkEventButton' was not declared in this scope
   49 | static auto Label_mouseEnter(GtkWidget* widget, GdkEventButton* event, pCanvas* p) -> signed {
      |                                                 ^~~~~~~~~~~~~~
../hiro/core/../gtk/widget/label.cpp:49:65: error: 'event' was not declared in this scope; did you mean 'servent'?
   49 | static auto Label_mouseEnter(GtkWidget* widget, GdkEventButton* event, pCanvas* p) -> signed {
      |                                                                 ^~~~~
      |                                                                 servent
../hiro/core/../gtk/widget/label.cpp:49:79: error: expected primary-expression before '*' token
   49 | static auto Label_mouseEnter(GtkWidget* widget, GdkEventButton* event, pCanvas* p) -> signed {
      |                                                                               ^
../hiro/core/../gtk/widget/label.cpp:49:81: error: 'p' was not declared in this scope
   49 | static auto Label_mouseEnter(GtkWidget* widget, GdkEventButton* event, pCanvas* p) -> signed {
      |                                                                                 ^
../hiro/core/../gtk/widget/label.cpp:49:82: error: expression list treated as compound expression in initializer [-fpermissive]
   49 | static auto Label_mouseEnter(GtkWidget* widget, GdkEventButton* event, pCanvas* p) -> signed {
      |                                                                                  ^
../hiro/core/../gtk/widget/label.cpp:49:84: error: expected ',' or ';' before '->' token
   49 | static auto Label_mouseEnter(GtkWidget* widget, GdkEventButton* event, pCanvas* p) -> signed {
      |                                                                                    ^~
../ruby/input/mouse/xlib.cpp: In member function 'bool InputMouseXlib::acquire()':
../ruby/input/mouse/xlib.cpp:33:38: error: 'True' was not declared in this scope
   33 |     if(XGrabPointer(display, handle, True, 0, GrabModeAsync, GrabModeAsync, rootWindow, invisibleCursor, CurrentTime) == GrabSuccess) {
      |                                      ^~~~
../ruby/input/mouse/xlib.cpp:33:38: note: the macro 'True' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/Xlib.h:80: note: it was later defined here
   80 | #define True 1
      | 
../hiro/core/../gtk/widget/label.cpp:54:30: error: 'GtkWidget' was not declared in this scope; did you mean 'wWidget'?
   54 | static auto Label_mouseLeave(GtkWidget* widget, GdkEventButton* event, pCanvas* p) -> signed {
      |                              ^~~~~~~~~
      |                              wWidget
../hiro/core/../gtk/widget/label.cpp:54:41: error: 'widget' was not declared in this scope; did you mean 'Widget'?
   54 | static auto Label_mouseLeave(GtkWidget* widget, GdkEventButton* event, pCanvas* p) -> signed {
      |                                         ^~~~~~
      |                                         Widget
../hiro/core/../gtk/widget/label.cpp:54:49: error: 'GdkEventButton' was not declared in this scope
   54 | static auto Label_mouseLeave(GtkWidget* widget, GdkEventButton* event, pCanvas* p) -> signed {
      |                                                 ^~~~~~~~~~~~~~
../hiro/core/../gtk/widget/label.cpp:54:65: error: 'event' was not declared in this scope; did you mean 'servent'?
   54 | static auto Label_mouseLeave(GtkWidget* widget, GdkEventButton* event, pCanvas* p) -> signed {
      |                                                                 ^~~~~
      |                                                                 servent
../hiro/core/../gtk/widget/label.cpp:54:79: error: expected primary-expression before '*' token
   54 | static auto Label_mouseLeave(GtkWidget* widget, GdkEventButton* event, pCanvas* p) -> signed {
      |                                                                               ^
../hiro/core/../gtk/widget/label.cpp:54:81: error: 'p' was not declared in this scope
   54 | static auto Label_mouseLeave(GtkWidget* widget, GdkEventButton* event, pCanvas* p) -> signed {
      |                                                                                 ^
../hiro/core/../gtk/widget/label.cpp:54:82: error: expression list treated as compound expression in initializer [-fpermissive]
   54 | static auto Label_mouseLeave(GtkWidget* widget, GdkEventButton* event, pCanvas* p) -> signed {
      |                                                                                  ^
../hiro/core/../gtk/widget/label.cpp:54:84: error: expected ',' or ';' before '->' token
   54 | static auto Label_mouseLeave(GtkWidget* widget, GdkEventButton* event, pCanvas* p) -> signed {
      |                                                                                    ^~
../hiro/core/../gtk/widget/label.cpp:59:30: error: 'GtkWidget' was not declared in this scope; did you mean 'wWidget'?
   59 | static auto Label_mousePress(GtkWidget* widget, GdkEventButton* event, pLabel* p) -> int {
      |                              ^~~~~~~~~
      |                              wWidget
../hiro/core/../gtk/widget/label.cpp:59:41: error: 'widget' was not declared in this scope; did you mean 'Widget'?
   59 | static auto Label_mousePress(GtkWidget* widget, GdkEventButton* event, pLabel* p) -> int {
      |                                         ^~~~~~
      |                                         Widget
../hiro/core/../gtk/widget/label.cpp:59:49: error: 'GdkEventButton' was not declared in this scope
   59 | static auto Label_mousePress(GtkWidget* widget, GdkEventButton* event, pLabel* p) -> int {
      |                                                 ^~~~~~~~~~~~~~
../hiro/core/../gtk/widget/label.cpp:59:65: error: 'event' was not declared in this scope; did you mean 'servent'?
   59 | static auto Label_mousePress(GtkWidget* widget, GdkEventButton* event, pLabel* p) -> int {
      |                                                                 ^~~~~
      |                                                                 servent
../hiro/core/../gtk/widget/label.cpp:59:78: error: expected primary-expression before '*' token
   59 | static auto Label_mousePress(GtkWidget* widget, GdkEventButton* event, pLabel* p) -> int {
      |                                                                              ^
../hiro/core/../gtk/widget/label.cpp:59:80: error: 'p' was not declared in this scope
   59 | static auto Label_mousePress(GtkWidget* widget, GdkEventButton* event, pLabel* p) -> int {
      |                                                                                ^
../hiro/core/../gtk/widget/label.cpp:59:81: error: expression list treated as compound expression in initializer [-fpermissive]
   59 | static auto Label_mousePress(GtkWidget* widget, GdkEventButton* event, pLabel* p) -> int {
      |                                                                                 ^
../hiro/core/../gtk/widget/label.cpp:59:83: error: expected ',' or ';' before '->' token
   59 | static auto Label_mousePress(GtkWidget* widget, GdkEventButton* event, pLabel* p) -> int {
      |                                                                                   ^~
../hiro/core/../gtk/widget/label.cpp:68:32: error: 'GtkWidget' was not declared in this scope; did you mean 'wWidget'?
   68 | static auto Label_mouseRelease(GtkWidget* widget, GdkEventButton* event, pLabel* p) -> int {
      |                                ^~~~~~~~~
      |                                wWidget
../hiro/core/../gtk/widget/label.cpp:68:43: error: 'widget' was not declared in this scope; did you mean 'Widget'?
   68 | static auto Label_mouseRelease(GtkWidget* widget, GdkEventButton* event, pLabel* p) -> int {
      |                                           ^~~~~~
      |                                           Widget
../ruby/input/mouse/xlib.cpp:33:8: error: 'XGrabPointer' was not declared in this scope
   33 |     if(XGrabPointer(display, handle, True, 0, GrabModeAsync, GrabModeAsync, rootWindow, invisibleCursor, CurrentTime) == GrabSuccess) {
      |        ^~~~~~~~~~~~
../hiro/core/../gtk/widget/label.cpp:68:51: error: 'GdkEventButton' was not declared in this scope
   68 | static auto Label_mouseRelease(GtkWidget* widget, GdkEventButton* event, pLabel* p) -> int {
      |                                                   ^~~~~~~~~~~~~~
../hiro/core/../gtk/widget/label.cpp:68:67: error: 'event' was not declared in this scope; did you mean 'servent'?
   68 | static auto Label_mouseRelease(GtkWidget* widget, GdkEventButton* event, pLabel* p) -> int {
      |                                                                   ^~~~~
      |                                                                   servent
../hiro/core/../gtk/widget/label.cpp:68:80: error: expected primary-expression before '*' token
   68 | static auto Label_mouseRelease(GtkWidget* widget, GdkEventButton* event, pLabel* p) -> int {
      |                                                                                ^
../hiro/core/../gtk/widget/label.cpp:68:82: error: 'p' was not declared in this scope
   68 | static auto Label_mouseRelease(GtkWidget* widget, GdkEventButton* event, pLabel* p) -> int {
      |                                                                                  ^
../hiro/core/../gtk/widget/label.cpp:68:83: error: expression list treated as compound expression in initializer [-fpermissive]
   68 | static auto Label_mouseRelease(GtkWidget* widget, GdkEventButton* event, pLabel* p) -> int {
      |                                                                                   ^
../hiro/core/../gtk/widget/label.cpp:68:85: error: expected ',' or ';' before '->' token
   68 | static auto Label_mouseRelease(GtkWidget* widget, GdkEventButton* event, pLabel* p) -> int {
      |                                                                                     ^~
../hiro/core/../gtk/widget/label.cpp: In member function 'virtual void hiro::pLabel::construct()':
../hiro/core/../gtk/widget/label.cpp:78:3: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   78 |   gtkWidget = gtk_event_box_new();
      |   ^~~~~~~~~
      |   pWidget
../hiro/core/../gtk/widget/label.cpp:78:15: error: 'gtk_event_box_new' was not declared in this scope
   78 |   gtkWidget = gtk_event_box_new();
      |               ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/label.cpp:79:3: error: 'subWidget' was not declared in this scope; did you mean 'sWidget'?
   79 |   subWidget = gtk_label_new("");
      |   ^~~~~~~~~
      |   sWidget
../hiro/core/../gtk/widget/label.cpp:79:15: error: 'gtk_label_new' was not declared in this scope
   79 |   subWidget = gtk_label_new("");
      |               ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/label.cpp:80:3: error: 'gtk_widget_show' was not declared in this scope
   80 |   gtk_widget_show(subWidget);
      |   ^~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/label.cpp:81:21: error: 'GTK_CONTAINER' was not declared in this scope
   81 |   gtk_container_add(GTK_CONTAINER(gtkWidget), subWidget);
      |                     ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/label.cpp:81:3: error: 'gtk_container_add' was not declared in this scope
   81 |   gtk_container_add(GTK_CONTAINER(gtkWidget), subWidget);
      |   ^~~~~~~~~~~~~~~~~
../ruby/input/mouse/xlib.cpp:35:7: error: 'XGetPointerControl' was not declared in this scope
   35 |       XGetPointerControl(display, &ms.numerator, &ms.denominator, &ms.threshold);
      |       ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/label.cpp:88:20: error: 'G_OBJECT' was not declared in this scope
   88 |   g_signal_connect(G_OBJECT(gtkWidget), "button-press-event", G_CALLBACK(Label_mousePress), (gpointer)this);
      |                    ^~~~~~~~
../hiro/core/../gtk/widget/label.cpp:88:63: error: 'G_CALLBACK' was not declared in this scope
   88 |   g_signal_connect(G_OBJECT(gtkWidget), "button-press-event", G_CALLBACK(Label_mousePress), (gpointer)this);
      |                                                               ^~~~~~~~~~
../hiro/core/../gtk/widget/label.cpp:88:94: error: 'gpointer' was not declared in this scope
   88 |   g_signal_connect(G_OBJECT(gtkWidget), "button-press-event", G_CALLBACK(Label_mousePress), (gpointer)this);
      |                                                                                              ^~~~~~~~
../hiro/core/../gtk/widget/label.cpp:88:3: error: 'g_signal_connect' was not declared in this scope
   88 |   g_signal_connect(G_OBJECT(gtkWidget), "button-press-event", G_CALLBACK(Label_mousePress), (gpointer)this);
      |   ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/label.cpp:89:107: error: expected ')' before 'this'
   89 |   g_signal_connect(G_OBJECT(gtkWidget), "button-release-event", G_CALLBACK(Label_mouseRelease), (gpointer)this);
      |                   ~                                                                                       ^~~~
      |                                                                                                           )
../hiro/core/../gtk/widget/label.cpp:93:83: error: expected ')' before 'this'
   93 |   g_signal_connect(G_OBJECT(subWidget), "draw", G_CALLBACK(Label_draw), (gpointer)this);
      |                   ~                                                               ^~~~
      |                                                                                   )
../hiro/core/../gtk/widget/label.cpp:95:103: error: expected ')' before 'this'
   95 |   g_signal_connect(G_OBJECT(gtkWidget), "enter-notify-event", G_CALLBACK(Label_mouseEnter), (gpointer)this);
      |                   ~                                                                                   ^~~~
      |                                                                                                       )
../hiro/core/../gtk/widget/label.cpp:96:103: error: expected ')' before 'this'
   96 |   g_signal_connect(G_OBJECT(gtkWidget), "leave-notify-event", G_CALLBACK(Label_mouseLeave), (gpointer)this);
      |                   ~                                                                                   ^~~~
      |                                                                                                       )
../ruby/input/mouse/xlib.cpp:38:44: error: 'False' was not declared in this scope
   38 |       XChangePointerControl(display, True, False, 1, 1, 0);
      |                                            ^~~~~
../ruby/input/mouse/xlib.cpp:38:44: note: the macro 'False' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/Xlib.h:81: note: it was later defined here
   81 | #define False 0
      | 
../hiro/core/../gtk/widget/label.cpp: In member function 'virtual void hiro::pLabel::destruct()':
../hiro/core/../gtk/widget/label.cpp:102:22: error: 'subWidget' was not declared in this scope; did you mean 'sWidget'?
  102 |   gtk_widget_destroy(subWidget);
      |                      ^~~~~~~~~
      |                      sWidget
../hiro/core/../gtk/widget/label.cpp:102:3: error: 'gtk_widget_destroy' was not declared in this scope
  102 |   gtk_widget_destroy(subWidget);
      |   ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/label.cpp:103:22: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
  103 |   gtk_widget_destroy(gtkWidget);
      |                      ^~~~~~~~~
      |                      pWidget
../hiro/core/../gtk/widget/label.cpp: In member function 'void hiro::pLabel::setAlignment(hiro::Alignment)':
../hiro/core/../gtk/widget/label.cpp:113:35: error: 'subWidget' was not declared in this scope; did you mean 'sWidget'?
  113 |   gtk_misc_set_alignment(GTK_MISC(subWidget), alignment.horizontal(), alignment.vertical());
      |                                   ^~~~~~~~~
      |                                   sWidget
../hiro/core/../gtk/widget/label.cpp:113:26: error: 'GTK_MISC' was not declared in this scope
  113 |   gtk_misc_set_alignment(GTK_MISC(subWidget), alignment.horizontal(), alignment.vertical());
      |                          ^~~~~~~~
../hiro/core/../gtk/widget/label.cpp:113:3: error: 'gtk_misc_set_alignment' was not declared in this scope
  113 |   gtk_misc_set_alignment(GTK_MISC(subWidget), alignment.horizontal(), alignment.vertical());
      |   ^~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/label.cpp:114:18: error: 'GTK_JUSTIFY_CENTER' was not declared in this scope
  114 |   auto justify = GTK_JUSTIFY_CENTER;
      |                  ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/label.cpp:115:48: error: 'GTK_JUSTIFY_LEFT' was not declared in this scope
  115 |   if(alignment.horizontal() < 0.333) justify = GTK_JUSTIFY_LEFT;
      |                                                ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/label.cpp:116:48: error: 'GTK_JUSTIFY_RIGHT' was not declared in this scope
  116 |   if(alignment.horizontal() > 0.666) justify = GTK_JUSTIFY_RIGHT;
      |                                                ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/label.cpp:117:25: error: 'GTK_LABEL' was not declared in this scope
  117 |   gtk_label_set_justify(GTK_LABEL(subWidget), justify);
      |                         ^~~~~~~~~
../hiro/core/../gtk/widget/label.cpp:117:3: error: 'gtk_label_set_justify' was not declared in this scope
  117 |   gtk_label_set_justify(GTK_LABEL(subWidget), justify);
      |   ^~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/label.cpp: In member function 'void hiro::pLabel::setForegroundColor(hiro::Color)':
../hiro/core/../gtk/widget/label.cpp:127:19: error: 'CreateColor' was not declared in this scope
  127 |   auto gdkColor = CreateColor(color);
      |                   ^~~~~~~~~~~
../hiro/core/../gtk/widget/label.cpp:128:24: error: 'subWidget' was not declared in this scope; did you mean 'sWidget'?
  128 |   gtk_widget_modify_fg(subWidget, GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |                        ^~~~~~~~~
      |                        sWidget
../hiro/core/../gtk/widget/label.cpp:128:35: error: 'GTK_STATE_NORMAL' was not declared in this scope
  128 |   gtk_widget_modify_fg(subWidget, GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |                                   ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/label.cpp:128:3: error: 'gtk_widget_modify_fg' was not declared in this scope
  128 |   gtk_widget_modify_fg(subWidget, GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |   ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/label.cpp: In member function 'void hiro::pLabel::setText(const nall::string&)':
../hiro/core/../gtk/widget/label.cpp:132:32: error: 'subWidget' was not declared in this scope; did you mean 'sWidget'?
  132 |   gtk_label_set_text(GTK_LABEL(subWidget), text);
      |                                ^~~~~~~~~
      |                                sWidget
../hiro/core/../gtk/widget/label.cpp:132:22: error: 'GTK_LABEL' was not declared in this scope
  132 |   gtk_label_set_text(GTK_LABEL(subWidget), text);
      |                      ^~~~~~~~~
../hiro/core/../gtk/widget/label.cpp:132:3: error: 'gtk_label_set_text' was not declared in this scope
  132 |   gtk_label_set_text(GTK_LABEL(subWidget), text);
      |   ^~~~~~~~~~~~~~~~~~
In file included from ../hiro/core/../gtk/platform.cpp:47:
../hiro/core/../gtk/widget/line-edit.cpp: At global scope:
../hiro/core/../gtk/widget/line-edit.cpp:5:31: error: 'GtkEntry' was not declared in this scope
    5 | static auto LineEdit_activate(GtkEntry*, pLineEdit* p) -> void {
      |                               ^~~~~~~~
../hiro/core/../gtk/widget/line-edit.cpp:5:40: error: expected primary-expression before ',' token
    5 | static auto LineEdit_activate(GtkEntry*, pLineEdit* p) -> void {
      |                                        ^
../hiro/core/../gtk/widget/line-edit.cpp:5:51: error: expected primary-expression before '*' token
    5 | static auto LineEdit_activate(GtkEntry*, pLineEdit* p) -> void {
      |                                                   ^
../ruby/input/mouse/xlib.cpp:38:7: error: 'XChangePointerControl' was not declared in this scope
   38 |       XChangePointerControl(display, True, False, 1, 1, 0);
      |       ^~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/line-edit.cpp:5:53: error: 'p' was not declared in this scope
    5 | static auto LineEdit_activate(GtkEntry*, pLineEdit* p) -> void {
      |                                                     ^
../hiro/core/../gtk/widget/line-edit.cpp:5:54: error: expression list treated as compound expression in initializer [-fpermissive]
    5 | static auto LineEdit_activate(GtkEntry*, pLineEdit* p) -> void {
      |                                                      ^
../hiro/core/../gtk/widget/line-edit.cpp:5:56: error: expected ',' or ';' before '->' token
    5 | static auto LineEdit_activate(GtkEntry*, pLineEdit* p) -> void {
      |                                                        ^~
../hiro/core/../gtk/widget/line-edit.cpp:9:29: error: 'GtkEditable' was not declared in this scope
    9 | static auto LineEdit_change(GtkEditable*, pLineEdit* p) -> void {
      |                             ^~~~~~~~~~~
../hiro/core/../gtk/widget/line-edit.cpp:9:41: error: expected primary-expression before ',' token
    9 | static auto LineEdit_change(GtkEditable*, pLineEdit* p) -> void {
      |                                         ^
../hiro/core/../gtk/widget/line-edit.cpp:9:52: error: expected primary-expression before '*' token
    9 | static auto LineEdit_change(GtkEditable*, pLineEdit* p) -> void {
      |                                                    ^
../hiro/core/../gtk/widget/line-edit.cpp:9:54: error: 'p' was not declared in this scope
    9 | static auto LineEdit_change(GtkEditable*, pLineEdit* p) -> void {
      |                                                      ^
../hiro/core/../gtk/widget/line-edit.cpp:9:55: error: expression list treated as compound expression in initializer [-fpermissive]
    9 | static auto LineEdit_change(GtkEditable*, pLineEdit* p) -> void {
      |                                                       ^
../hiro/core/../gtk/widget/line-edit.cpp:9:57: error: expected ',' or ';' before '->' token
    9 | static auto LineEdit_change(GtkEditable*, pLineEdit* p) -> void {
      |                                                         ^~
../hiro/core/../gtk/widget/line-edit.cpp: In member function 'virtual void hiro::pLineEdit::construct()':
../hiro/core/../gtk/widget/line-edit.cpp:15:3: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   15 |   gtkWidget = gtk_entry_new();
      |   ^~~~~~~~~
      |   pWidget
../hiro/core/../gtk/widget/line-edit.cpp:15:15: error: 'gtk_entry_new' was not declared in this scope
   15 |   gtkWidget = gtk_entry_new();
      |               ^~~~~~~~~~~~~
../ruby/input/mouse/xlib.cpp:41:7: error: 'XWarpPointer' was not declared in this scope
   41 |       XWarpPointer(display, None, rootWindow, 0, 0, 0, 0, screenWidth / 2, screenHeight / 2);
      |       ^~~~~~~~~~~~
../hiro/core/../gtk/widget/line-edit.cpp:22:20: error: 'G_OBJECT' was not declared in this scope
   22 |   g_signal_connect(G_OBJECT(gtkWidget), "activate", G_CALLBACK(LineEdit_activate), (gpointer)this);
      |                    ^~~~~~~~
../hiro/core/../gtk/widget/line-edit.cpp:22:53: error: 'G_CALLBACK' was not declared in this scope
   22 |   g_signal_connect(G_OBJECT(gtkWidget), "activate", G_CALLBACK(LineEdit_activate), (gpointer)this);
      |                                                     ^~~~~~~~~~
../ruby/input/mouse/xlib.cpp: In member function 'bool InputMouseXlib::release()':
../ruby/input/mouse/xlib.cpp:52:38: error: 'True' was not declared in this scope
   52 |       XChangePointerControl(display, True, True, ms.numerator, ms.denominator, ms.threshold);
      |                                      ^~~~
../ruby/input/mouse/xlib.cpp:52:38: note: the macro 'True' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/Xlib.h:80: note: it was later defined here
   80 | #define True 1
      | 
../hiro/core/../gtk/widget/line-edit.cpp:22:85: error: 'gpointer' was not declared in this scope
   22 |   g_signal_connect(G_OBJECT(gtkWidget), "activate", G_CALLBACK(LineEdit_activate), (gpointer)this);
      |                                                                                     ^~~~~~~~
../hiro/core/../gtk/widget/line-edit.cpp:22:3: error: 'g_signal_connect' was not declared in this scope
   22 |   g_signal_connect(G_OBJECT(gtkWidget), "activate", G_CALLBACK(LineEdit_activate), (gpointer)this);
      |   ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/line-edit.cpp:23:91: error: expected ')' before 'this'
   23 |   g_signal_connect(G_OBJECT(gtkWidget), "changed", G_CALLBACK(LineEdit_change), (gpointer)this);
      |                   ~                                                                       ^~~~
      |                                                                                           )
../hiro/core/../gtk/widget/line-edit.cpp: In member function 'virtual void hiro::pLineEdit::destruct()':
../hiro/core/../gtk/widget/line-edit.cpp:29:22: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   29 |   gtk_widget_destroy(gtkWidget);
      |                      ^~~~~~~~~
      |                      pWidget
../hiro/core/../gtk/widget/line-edit.cpp:29:3: error: 'gtk_widget_destroy' was not declared in this scope
   29 |   gtk_widget_destroy(gtkWidget);
      |   ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/line-edit.cpp: In member function 'void hiro::pLineEdit::setBackgroundColor(hiro::Color)':
../hiro/core/../gtk/widget/line-edit.cpp:38:3: error: 'GdkColor' was not declared in this scope; did you mean 'Color'?
   38 |   GdkColor gdkColor = CreateColor(color);
      |   ^~~~~~~~
      |   Color
../hiro/core/../gtk/widget/line-edit.cpp:39:26: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   39 |   gtk_widget_modify_base(gtkWidget, GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |                          ^~~~~~~~~
      |                          pWidget
../hiro/core/../gtk/widget/line-edit.cpp:39:37: error: 'GTK_STATE_NORMAL' was not declared in this scope
   39 |   gtk_widget_modify_base(gtkWidget, GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |                                     ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/line-edit.cpp:39:64: error: 'gdkColor' was not declared in this scope; did you mean 'Color'?
   39 |   gtk_widget_modify_base(gtkWidget, GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |                                                                ^~~~~~~~
      |                                                                Color
../hiro/core/../gtk/widget/line-edit.cpp:39:3: error: 'gtk_widget_modify_base' was not declared in this scope
   39 |   gtk_widget_modify_base(gtkWidget, GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |   ^~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/line-edit.cpp: In member function 'void hiro::pLineEdit::setEditable(bool)':
../hiro/core/../gtk/widget/line-edit.cpp:43:42: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   43 |   gtk_editable_set_editable(GTK_EDITABLE(gtkWidget), editable);
      |                                          ^~~~~~~~~
      |                                          pWidget
../hiro/core/../gtk/widget/line-edit.cpp:43:29: error: 'GTK_EDITABLE' was not declared in this scope
   43 |   gtk_editable_set_editable(GTK_EDITABLE(gtkWidget), editable);
      |                             ^~~~~~~~~~~~
../ruby/input/mouse/xlib.cpp:52:7: error: 'XChangePointerControl' was not declared in this scope
   52 |       XChangePointerControl(display, True, True, ms.numerator, ms.denominator, ms.threshold);
      |       ^~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/line-edit.cpp:43:3: error: 'gtk_editable_set_editable' was not declared in this scope
   43 |   gtk_editable_set_editable(GTK_EDITABLE(gtkWidget), editable);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/line-edit.cpp: In member function 'void hiro::pLineEdit::setForegroundColor(hiro::Color)':
../hiro/core/../gtk/widget/line-edit.cpp:47:3: error: 'GdkColor' was not declared in this scope; did you mean 'Color'?
   47 |   GdkColor gdkColor = CreateColor(color);
      |   ^~~~~~~~
      |   Color
../hiro/core/../gtk/widget/line-edit.cpp:48:26: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   48 |   gtk_widget_modify_text(gtkWidget, GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |                          ^~~~~~~~~
      |                          pWidget
../hiro/core/../gtk/widget/line-edit.cpp:48:37: error: 'GTK_STATE_NORMAL' was not declared in this scope
   48 |   gtk_widget_modify_text(gtkWidget, GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |                                     ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/line-edit.cpp:48:64: error: 'gdkColor' was not declared in this scope; did you mean 'Color'?
   48 |   gtk_widget_modify_text(gtkWidget, GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |                                                                ^~~~~~~~
      |                                                                Color
../hiro/core/../gtk/widget/line-edit.cpp:48:3: error: 'gtk_widget_modify_text' was not declared in this scope
   48 |   gtk_widget_modify_text(gtkWidget, GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |   ^~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/line-edit.cpp: In member function 'void hiro::pLineEdit::setText(const nall::string&)':
../hiro/core/../gtk/widget/line-edit.cpp:53:32: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   53 |   gtk_entry_set_text(GTK_ENTRY(gtkWidget), text);
      |                                ^~~~~~~~~
      |                                pWidget
../hiro/core/../gtk/widget/line-edit.cpp:53:22: error: 'GTK_ENTRY' was not declared in this scope; did you mean 'AT_ENTRY'?
   53 |   gtk_entry_set_text(GTK_ENTRY(gtkWidget), text);
      |                      ^~~~~~~~~
      |                      AT_ENTRY
../hiro/core/../gtk/widget/line-edit.cpp:53:3: error: 'gtk_entry_set_text' was not declared in this scope
   53 |   gtk_entry_set_text(GTK_ENTRY(gtkWidget), text);
      |   ^~~~~~~~~~~~~~~~~~
In file included from ../hiro/core/../gtk/platform.cpp:48:
../hiro/core/../gtk/widget/progress-bar.cpp: In member function 'virtual void hiro::pProgressBar::construct()':
../hiro/core/../gtk/widget/progress-bar.cpp:6:3: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
    6 |   gtkWidget = gtk_progress_bar_new();
      |   ^~~~~~~~~
      |   pWidget
../hiro/core/../gtk/widget/progress-bar.cpp:6:15: error: 'gtk_progress_bar_new' was not declared in this scope
    6 |   gtkWidget = gtk_progress_bar_new();
      |               ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/progress-bar.cpp: In member function 'virtual void hiro::pProgressBar::destruct()':
../hiro/core/../gtk/widget/progress-bar.cpp:14:22: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   14 |   gtk_widget_destroy(gtkWidget);
      |                      ^~~~~~~~~
      |                      pWidget
../ruby/input/mouse/xlib.cpp:53:7: error: 'XUngrabPointer' was not declared in this scope; did you mean 'XvUngrabPort'?
   53 |       XUngrabPointer(display, CurrentTime);
      |       ^~~~~~~~~~~~~~
      |       XvUngrabPort
../hiro/core/../gtk/widget/progress-bar.cpp:14:3: error: 'gtk_widget_destroy' was not declared in this scope
   14 |   gtk_widget_destroy(gtkWidget);
      |   ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/progress-bar.cpp: In member function 'void hiro::pProgressBar::setPosition(unsigned int)':
../hiro/core/../gtk/widget/progress-bar.cpp:23:50: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   23 |   gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(gtkWidget), (double)position / 100.0);
      |                                                  ^~~~~~~~~
      |                                                  pWidget
../hiro/core/../gtk/widget/progress-bar.cpp:23:33: error: 'GTK_PROGRESS_BAR' was not declared in this scope
   23 |   gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(gtkWidget), (double)position / 100.0);
      |                                 ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/progress-bar.cpp:23:3: error: 'gtk_progress_bar_set_fraction' was not declared in this scope
   23 |   gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(gtkWidget), (double)position / 100.0);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../ruby/input/mouse/xlib.cpp: In member function 'void InputMouseXlib::poll(nall::vector<nall::shared_pointer<nall::HID::Device> >&)':
../ruby/input/mouse/xlib.cpp:74:5: error: 'XQueryPointer' was not declared in this scope
   74 |     XQueryPointer(display, handle, &rootReturn, &childReturn, &rootXReturn, &rootYReturn, &windowXReturn, &windowYReturn, &maskReturn);
      |     ^~~~~~~~~~~~~
In file included from ../hiro/core/../gtk/platform.cpp:49:
../hiro/core/../gtk/widget/radio-button.cpp: At global scope:
../hiro/core/../gtk/widget/radio-button.cpp:5:34: error: 'GtkToggleButton' was not declared in this scope
    5 | static auto RadioButton_activate(GtkToggleButton*, pRadioButton* p) -> void {
      |                                  ^~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/radio-button.cpp:5:50: error: expected primary-expression before ',' token
    5 | static auto RadioButton_activate(GtkToggleButton*, pRadioButton* p) -> void {
      |                                                  ^
../hiro/core/../gtk/widget/radio-button.cpp:5:64: error: expected primary-expression before '*' token
    5 | static auto RadioButton_activate(GtkToggleButton*, pRadioButton* p) -> void {
      |                                                                ^
../hiro/core/../gtk/widget/radio-button.cpp:5:66: error: 'p' was not declared in this scope
    5 | static auto RadioButton_activate(GtkToggleButton*, pRadioButton* p) -> void {
      |                                                                  ^
../hiro/core/../gtk/widget/radio-button.cpp:5:67: error: expression list treated as compound expression in initializer [-fpermissive]
    5 | static auto RadioButton_activate(GtkToggleButton*, pRadioButton* p) -> void {
      |                                                                   ^
../hiro/core/../gtk/widget/radio-button.cpp:5:69: error: expected ',' or ';' before '->' token
    5 | static auto RadioButton_activate(GtkToggleButton*, pRadioButton* p) -> void {
      |                                                                     ^~
../hiro/core/../gtk/widget/radio-button.cpp: In member function 'virtual void hiro::pRadioButton::construct()':
../hiro/core/../gtk/widget/radio-button.cpp:13:3: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   13 |   gtkWidget = gtk_toggle_button_new();
      |   ^~~~~~~~~
      |   pWidget
../hiro/core/../gtk/widget/radio-button.cpp:13:15: error: 'gtk_toggle_button_new' was not declared in this scope
   13 |   gtkWidget = gtk_toggle_button_new();
      |               ^~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/radio-button.cpp:20:20: error: 'G_OBJECT' was not declared in this scope
   20 |   g_signal_connect(G_OBJECT(gtkWidget), "toggled", G_CALLBACK(RadioButton_activate), (gpointer)this);
      |                    ^~~~~~~~
../hiro/core/../gtk/widget/radio-button.cpp:20:52: error: 'G_CALLBACK' was not declared in this scope
   20 |   g_signal_connect(G_OBJECT(gtkWidget), "toggled", G_CALLBACK(RadioButton_activate), (gpointer)this);
      |                                                    ^~~~~~~~~~
../hiro/core/../gtk/widget/radio-button.cpp:20:87: error: 'gpointer' was not declared in this scope
   20 |   g_signal_connect(G_OBJECT(gtkWidget), "toggled", G_CALLBACK(RadioButton_activate), (gpointer)this);
      |                                                                                       ^~~~~~~~
../hiro/core/../gtk/widget/radio-button.cpp:20:3: error: 'g_signal_connect' was not declared in this scope
   20 |   g_signal_connect(G_OBJECT(gtkWidget), "toggled", G_CALLBACK(RadioButton_activate), (gpointer)this);
      |   ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/radio-button.cpp: In member function 'virtual void hiro::pRadioButton::destruct()':
../hiro/core/../gtk/widget/radio-button.cpp:26:22: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   26 |   gtk_widget_destroy(gtkWidget);
      |                      ^~~~~~~~~
      |                      pWidget
../hiro/core/../gtk/widget/radio-button.cpp:26:3: error: 'gtk_widget_destroy' was not declared in this scope
   26 |   gtk_widget_destroy(gtkWidget);
      |   ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/radio-button.cpp: In member function 'void hiro::pRadioButton::setBordered(bool)':
../hiro/core/../gtk/widget/radio-button.cpp:46:36: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   46 |   gtk_button_set_relief(GTK_BUTTON(gtkWidget), bordered ? GTK_RELIEF_NORMAL : GTK_RELIEF_NONE);
      |                                    ^~~~~~~~~
      |                                    pWidget
../ruby/input/mouse/xlib.cpp:77:7: error: 'XWindowAttributes' was not declared in this scope
   77 |       XWindowAttributes attributes;
      |       ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/radio-button.cpp:46:25: error: 'GTK_BUTTON' was not declared in this scope
   46 |   gtk_button_set_relief(GTK_BUTTON(gtkWidget), bordered ? GTK_RELIEF_NORMAL : GTK_RELIEF_NONE);
      |                         ^~~~~~~~~~
../hiro/core/../gtk/widget/radio-button.cpp:46:59: error: 'GTK_RELIEF_NORMAL' was not declared in this scope
   46 |   gtk_button_set_relief(GTK_BUTTON(gtkWidget), bordered ? GTK_RELIEF_NORMAL : GTK_RELIEF_NONE);
      |                                                           ^~~~~~~~~~~~~~~~~
../ruby/input/mouse/xlib.cpp:78:46: error: 'attributes' was not declared in this scope
   78 |       XGetWindowAttributes(display, handle, &attributes);
      |                                              ^~~~~~~~~~
../hiro/core/../gtk/widget/radio-button.cpp:46:79: error: 'GTK_RELIEF_NONE' was not declared in this scope
   46 |   gtk_button_set_relief(GTK_BUTTON(gtkWidget), bordered ? GTK_RELIEF_NORMAL : GTK_RELIEF_NONE);
      |                                                                               ^~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/radio-button.cpp:46:3: error: 'gtk_button_set_relief' was not declared in this scope
   46 |   gtk_button_set_relief(GTK_BUTTON(gtkWidget), bordered ? GTK_RELIEF_NORMAL : GTK_RELIEF_NONE);
      |   ^~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/radio-button.cpp: In member function 'void hiro::pRadioButton::setChecked()':
../hiro/core/../gtk/widget/radio-button.cpp:55:64: error: 'struct hiro::pRadioButton' has no member named 'gtkWidget'; did you mean 'pWidget'?
   55 |           gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(self->gtkWidget), radioButton->state.checked);
      |                                                                ^~~~~~~~~
      |                                                                pWidget
../hiro/core/../gtk/widget/radio-button.cpp:55:40: error: 'GTK_TOGGLE_BUTTON' was not declared in this scope
   55 |           gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(self->gtkWidget), radioButton->state.checked);
      |                                        ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/radio-button.cpp:55:11: error: 'gtk_toggle_button_set_active' was not declared in this scope
   55 |           gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(self->gtkWidget), radioButton->state.checked);
      |           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/radio-button.cpp: In member function 'void hiro::pRadioButton::setGroup(hiro::sGroup)':
../hiro/core/../gtk/widget/radio-button.cpp:70:64: error: 'struct hiro::pRadioButton' has no member named 'gtkWidget'; did you mean 'pWidget'?
   70 |           gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(self->gtkWidget), radioButton->state.checked = first);
      |                                                                ^~~~~~~~~
      |                                                                pWidget
../hiro/core/../gtk/widget/radio-button.cpp:70:40: error: 'GTK_TOGGLE_BUTTON' was not declared in this scope
   70 |           gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(self->gtkWidget), radioButton->state.checked = first);
      |                                        ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/radio-button.cpp:70:11: error: 'gtk_toggle_button_set_active' was not declared in this scope
   70 |           gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(self->gtkWidget), radioButton->state.checked = first);
      |           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/radio-button.cpp: In member function 'void hiro::pRadioButton::setIcon(const nall::image&)':
../hiro/core/../gtk/widget/radio-button.cpp:81:5: error: 'GtkImage' was not declared in this scope
   81 |     GtkImage* gtkImage = CreateImage(icon);
      |     ^~~~~~~~
../ruby/input/mouse/xlib.cpp:78:7: error: 'XGetWindowAttributes' was not declared in this scope
   78 |       XGetWindowAttributes(display, handle, &attributes);
      |       ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/radio-button.cpp:81:15: error: 'gtkImage' was not declared in this scope
   81 |     GtkImage* gtkImage = CreateImage(icon);
      |               ^~~~~~~~
../hiro/core/../gtk/widget/radio-button.cpp:81:26: error: 'CreateImage' was not declared in this scope
   81 |     GtkImage* gtkImage = CreateImage(icon);
      |                          ^~~~~~~~~~~
../hiro/core/../gtk/widget/radio-button.cpp:82:37: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   82 |     gtk_button_set_image(GTK_BUTTON(gtkWidget), (GtkWidget*)gtkImage);
      |                                     ^~~~~~~~~
      |                                     pWidget
../hiro/core/../gtk/widget/radio-button.cpp:82:26: error: 'GTK_BUTTON' was not declared in this scope
   82 |     gtk_button_set_image(GTK_BUTTON(gtkWidget), (GtkWidget*)gtkImage);
      |                          ^~~~~~~~~~
../hiro/core/../gtk/widget/radio-button.cpp:82:50: error: 'GtkWidget' was not declared in this scope; did you mean 'pWidget'?
   82 |     gtk_button_set_image(GTK_BUTTON(gtkWidget), (GtkWidget*)gtkImage);
      |                                                  ^~~~~~~~~
      |                                                  pWidget
../hiro/core/../gtk/widget/radio-button.cpp:82:60: error: expected primary-expression before ')' token
   82 |     gtk_button_set_image(GTK_BUTTON(gtkWidget), (GtkWidget*)gtkImage);
      |                                                            ^
../hiro/core/../gtk/widget/radio-button.cpp:82:5: error: 'gtk_button_set_image' was not declared in this scope
   82 |     gtk_button_set_image(GTK_BUTTON(gtkWidget), (GtkWidget*)gtkImage);
      |     ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/radio-button.cpp:84:37: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   84 |     gtk_button_set_image(GTK_BUTTON(gtkWidget), nullptr);
      |                                     ^~~~~~~~~
      |                                     pWidget
../hiro/core/../gtk/widget/radio-button.cpp:84:26: error: 'GTK_BUTTON' was not declared in this scope
   84 |     gtk_button_set_image(GTK_BUTTON(gtkWidget), nullptr);
      |                          ^~~~~~~~~~
../ruby/input/mouse/xlib.cpp:86:9: error: 'XWarpPointer' was not declared in this scope
   86 |         XWarpPointer(display, None, rootWindow, 0, 0, 0, 0, screenWidth / 2, screenHeight / 2);
      |         ^~~~~~~~~~~~
../hiro/core/../gtk/widget/radio-button.cpp:84:5: error: 'gtk_button_set_image' was not declared in this scope
   84 |     gtk_button_set_image(GTK_BUTTON(gtkWidget), nullptr);
      |     ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/radio-button.cpp: In member function 'void hiro::pRadioButton::setOrientation(hiro::Orientation)':
../hiro/core/../gtk/widget/radio-button.cpp:90:74: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   90 |   case Orientation::Horizontal: gtk_button_set_image_position(GTK_BUTTON(gtkWidget), GTK_POS_LEFT); break;
      |                                                                          ^~~~~~~~~
      |                                                                          pWidget
../hiro/core/../gtk/widget/radio-button.cpp:90:63: error: 'GTK_BUTTON' was not declared in this scope
   90 |   case Orientation::Horizontal: gtk_button_set_image_position(GTK_BUTTON(gtkWidget), GTK_POS_LEFT); break;
      |                                                               ^~~~~~~~~~
../hiro/core/../gtk/widget/radio-button.cpp:90:86: error: 'GTK_POS_LEFT' was not declared in this scope
   90 |   case Orientation::Horizontal: gtk_button_set_image_position(GTK_BUTTON(gtkWidget), GTK_POS_LEFT); break;
      |                                                                                      ^~~~~~~~~~~~
../hiro/core/../gtk/widget/radio-button.cpp:90:33: error: 'gtk_button_set_image_position' was not declared in this scope
   90 |   case Orientation::Horizontal: gtk_button_set_image_position(GTK_BUTTON(gtkWidget), GTK_POS_LEFT); break;
      |                                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/radio-button.cpp:91:86: error: 'GTK_POS_TOP' was not declared in this scope
   91 |   case Orientation::Vertical:   gtk_button_set_image_position(GTK_BUTTON(gtkWidget), GTK_POS_TOP);  break;
      |                                                                                      ^~~~~~~~~~~
../hiro/core/../gtk/widget/radio-button.cpp: In member function 'void hiro::pRadioButton::setText(const nall::string&)':
../hiro/core/../gtk/widget/radio-button.cpp:96:35: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   96 |   gtk_button_set_label(GTK_BUTTON(gtkWidget), text);
      |                                   ^~~~~~~~~
      |                                   pWidget
../hiro/core/../gtk/widget/radio-button.cpp:96:24: error: 'GTK_BUTTON' was not declared in this scope
   96 |   gtk_button_set_label(GTK_BUTTON(gtkWidget), text);
      |                        ^~~~~~~~~~
../hiro/core/../gtk/widget/radio-button.cpp:96:3: error: 'gtk_button_set_label' was not declared in this scope
   96 |   gtk_button_set_label(GTK_BUTTON(gtkWidget), text);
      |   ^~~~~~~~~~~~~~~~~~~~
In file included from ../hiro/core/../gtk/platform.cpp:50:
../hiro/core/../gtk/widget/radio-label.cpp: At global scope:
../hiro/core/../gtk/widget/radio-label.cpp:5:33: error: 'GtkToggleButton' was not declared in this scope
    5 | static auto RadioLabel_activate(GtkToggleButton*, pRadioLabel* p) -> void {
      |                                 ^~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/radio-label.cpp:5:49: error: expected primary-expression before ',' token
    5 | static auto RadioLabel_activate(GtkToggleButton*, pRadioLabel* p) -> void {
      |                                                 ^
../hiro/core/../gtk/widget/radio-label.cpp:5:62: error: expected primary-expression before '*' token
    5 | static auto RadioLabel_activate(GtkToggleButton*, pRadioLabel* p) -> void {
      |                                                              ^
../hiro/core/../gtk/widget/radio-label.cpp:5:64: error: 'p' was not declared in this scope
    5 | static auto RadioLabel_activate(GtkToggleButton*, pRadioLabel* p) -> void {
      |                                                                ^
../hiro/core/../gtk/widget/radio-label.cpp:5:65: error: expression list treated as compound expression in initializer [-fpermissive]
    5 | static auto RadioLabel_activate(GtkToggleButton*, pRadioLabel* p) -> void {
      |                                                                 ^
../hiro/core/../gtk/widget/radio-label.cpp:5:67: error: expected ',' or ';' before '->' token
    5 | static auto RadioLabel_activate(GtkToggleButton*, pRadioLabel* p) -> void {
      |                                                                   ^~
../hiro/core/../gtk/widget/radio-label.cpp: In member function 'virtual void hiro::pRadioLabel::construct()':
../hiro/core/../gtk/widget/radio-label.cpp:13:3: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   13 |   gtkWidget = gtk_radio_button_new_with_label(nullptr, "");
      |   ^~~~~~~~~
      |   pWidget
../ruby/input/mouse/xlib.cpp: In member function 'bool InputMouseXlib::initialize(uintptr)':
../ruby/input/mouse/xlib.cpp:110:15: error: 'XOpenDisplay' was not declared in this scope
  110 |     display = XOpenDisplay(0);
      |               ^~~~~~~~~~~~
../hiro/core/../gtk/widget/radio-label.cpp:13:15: error: 'gtk_radio_button_new_with_label' was not declared in this scope
   13 |   gtkWidget = gtk_radio_button_new_with_label(nullptr, "");
      |               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/radio-label.cpp:14:3: error: 'gtkToggleButton' was not declared in this scope
   14 |   gtkToggleButton = GTK_TOGGLE_BUTTON(gtkWidget);
      |   ^~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/radio-label.cpp:14:21: error: 'GTK_TOGGLE_BUTTON' was not declared in this scope
   14 |   gtkToggleButton = GTK_TOGGLE_BUTTON(gtkWidget);
      |                     ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/radio-label.cpp:15:3: error: 'gtkRadioButton' was not declared in this scope; did you mean 'wRadioButton'?
   15 |   gtkRadioButton = GTK_RADIO_BUTTON(gtkWidget);
      |   ^~~~~~~~~~~~~~
      |   wRadioButton
../hiro/core/../gtk/widget/radio-label.cpp:15:20: error: 'GTK_RADIO_BUTTON' was not declared in this scope
   15 |   gtkRadioButton = GTK_RADIO_BUTTON(gtkWidget);
      |                    ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/radio-label.cpp:20:20: error: 'G_OBJECT' was not declared in this scope
   20 |   g_signal_connect(G_OBJECT(gtkWidget), "toggled", G_CALLBACK(RadioLabel_activate), (gpointer)this);
      |                    ^~~~~~~~
../hiro/core/../gtk/widget/radio-label.cpp:20:52: error: 'G_CALLBACK' was not declared in this scope
   20 |   g_signal_connect(G_OBJECT(gtkWidget), "toggled", G_CALLBACK(RadioLabel_activate), (gpointer)this);
      |                                                    ^~~~~~~~~~
../ruby/input/mouse/xlib.cpp:111:18: error: 'DefaultRootWindow' was not declared in this scope
  111 |     rootWindow = DefaultRootWindow(display);
      |                  ^~~~~~~~~~~~~~~~~
../ruby/input/mouse/xlib.cpp:111:18: note: the macro 'DefaultRootWindow' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/Xlib.h:90: note: it was later defined here
   90 | #define DefaultRootWindow(dpy)  (ScreenOfDisplay(dpy,DefaultScreen(dpy))->root)
      | 
../hiro/core/../gtk/widget/radio-label.cpp:20:86: error: 'gpointer' was not declared in this scope
   20 |   g_signal_connect(G_OBJECT(gtkWidget), "toggled", G_CALLBACK(RadioLabel_activate), (gpointer)this);
      |                                                                                      ^~~~~~~~
../hiro/core/../gtk/widget/radio-label.cpp:20:3: error: 'g_signal_connect' was not declared in this scope
   20 |   g_signal_connect(G_OBJECT(gtkWidget), "toggled", G_CALLBACK(RadioLabel_activate), (gpointer)this);
      |   ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/radio-label.cpp: In member function 'virtual void hiro::pRadioLabel::destruct()':
../hiro/core/../gtk/widget/radio-label.cpp:26:22: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   26 |   gtk_widget_destroy(gtkWidget);
      |                      ^~~~~~~~~
      |                      pWidget
../hiro/core/../gtk/widget/radio-label.cpp:26:3: error: 'gtk_widget_destroy' was not declared in this scope
   26 |   gtk_widget_destroy(gtkWidget);
      |   ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/radio-label.cpp: In member function 'void hiro::pRadioLabel::setChecked()':
../hiro/core/../gtk/widget/radio-label.cpp:36:32: error: 'gtkToggleButton' was not declared in this scope
   36 |   gtk_toggle_button_set_active(gtkToggleButton, true);
      |                                ^~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/radio-label.cpp:36:3: error: 'gtk_toggle_button_set_active' was not declared in this scope
   36 |   gtk_toggle_button_set_active(gtkToggleButton, true);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../ruby/input/mouse/xlib.cpp:113:5: error: 'XWindowAttributes' was not declared in this scope
  113 |     XWindowAttributes attributes;
      |     ^~~~~~~~~~~~~~~~~
../ruby/input/mouse/xlib.cpp:114:48: error: 'attributes' was not declared in this scope
  114 |     XGetWindowAttributes(display, rootWindow, &attributes);
      |                                                ^~~~~~~~~~
../hiro/core/../gtk/widget/radio-label.cpp: In member function 'void hiro::pRadioLabel::setGroup(hiro::sGroup)':
../hiro/core/../gtk/widget/radio-label.cpp:40:9: error: 'GtkRadioButton' was not declared in this scope; did you mean 'wRadioButton'?
   40 |   maybe<GtkRadioButton*> gtkRadioButton;
      |         ^~~~~~~~~~~~~~
      |         wRadioButton
../hiro/core/../gtk/widget/radio-label.cpp:40:24: error: template argument 1 is invalid
   40 |   maybe<GtkRadioButton*> gtkRadioButton;
      |                        ^
../hiro/core/../gtk/widget/radio-label.cpp:46:44: error: 'struct hiro::pRadioLabel' has no member named 'gtkRadioButton'
   46 |           gtk_radio_button_set_group(self->gtkRadioButton, nullptr);
      |                                            ^~~~~~~~~~~~~~
../hiro/core/../gtk/widget/radio-label.cpp:46:11: error: 'gtk_radio_button_set_group' was not declared in this scope
   46 |           gtk_radio_button_set_group(self->gtkRadioButton, nullptr);
      |           ^~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/radio-label.cpp:48:36: error: 'struct hiro::pRadioLabel' has no member named 'gtkRadioButton'
   48 |             gtkRadioButton = self->gtkRadioButton;
      |                                    ^~~~~~~~~~~~~~
../hiro/core/../gtk/widget/radio-label.cpp:49:48: error: 'struct hiro::pRadioLabel' has no member named 'gtkToggleButton'
   49 |             gtk_toggle_button_set_active(self->gtkToggleButton, radioLabel->state.checked = true);
      |                                                ^~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/radio-label.cpp:49:13: error: 'gtk_toggle_button_set_active' was not declared in this scope
   49 |             gtk_toggle_button_set_active(self->gtkToggleButton, radioLabel->state.checked = true);
      |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/radio-label.cpp:51:46: error: 'struct hiro::pRadioLabel' has no member named 'gtkRadioButton'
   51 |             gtk_radio_button_set_group(self->gtkRadioButton, gtk_radio_button_get_group(*gtkRadioButton));
      |                                              ^~~~~~~~~~~~~~
../hiro/core/../gtk/widget/radio-label.cpp:51:89: error: invalid type argument of unary '*' (have 'int')
   51 |             gtk_radio_button_set_group(self->gtkRadioButton, gtk_radio_button_get_group(*gtkRadioButton));
      |                                                                                         ^~~~~~~~~~~~~~~
../ruby/input/mouse/xlib.cpp:114:5: error: 'XGetWindowAttributes' was not declared in this scope
  114 |     XGetWindowAttributes(display, rootWindow, &attributes);
      |     ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/radio-label.cpp:51:62: error: 'gtk_radio_button_get_group' was not declared in this scope
   51 |             gtk_radio_button_set_group(self->gtkRadioButton, gtk_radio_button_get_group(*gtkRadioButton));
      |                                                              ^~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/radio-label.cpp:52:48: error: 'struct hiro::pRadioLabel' has no member named 'gtkToggleButton'
   52 |             gtk_toggle_button_set_active(self->gtkToggleButton, radioLabel->state.checked = false);
      |                                                ^~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/radio-label.cpp:52:13: error: 'gtk_toggle_button_set_active' was not declared in this scope
   52 |             gtk_toggle_button_set_active(self->gtkToggleButton, radioLabel->state.checked = false);
      |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/radio-label.cpp: In member function 'void hiro::pRadioLabel::setText(const nall::string&)':
../hiro/core/../gtk/widget/radio-label.cpp:61:35: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   61 |   gtk_button_set_label(GTK_BUTTON(gtkWidget), text);
      |                                   ^~~~~~~~~
      |                                   pWidget
../ruby/input/mouse/xlib.cpp:121:5: error: 'XColor' was not declared in this scope
  121 |     XColor black, unused;
      |     ^~~~~~
../hiro/core/../gtk/widget/radio-label.cpp:61:24: error: 'GTK_BUTTON' was not declared in this scope
   61 |   gtk_button_set_label(GTK_BUTTON(gtkWidget), text);
      |                        ^~~~~~~~~~
../hiro/core/../gtk/widget/radio-label.cpp:61:3: error: 'gtk_button_set_label' was not declared in this scope
   61 |   gtk_button_set_label(GTK_BUTTON(gtkWidget), text);
      |   ^~~~~~~~~~~~~~~~~~~~
In file included from ../hiro/core/../gtk/platform.cpp:51:
../hiro/core/../gtk/widget/source-edit.cpp: At global scope:
../hiro/core/../gtk/widget/source-edit.cpp:5:31: error: 'GtkTextBuffer' was not declared in this scope
    5 | static auto SourceEdit_change(GtkTextBuffer*, pSourceEdit* p) -> void {
      |                               ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:5:45: error: expected primary-expression before ',' token
    5 | static auto SourceEdit_change(GtkTextBuffer*, pSourceEdit* p) -> void {
      |                                             ^
../hiro/core/../gtk/widget/source-edit.cpp:5:58: error: expected primary-expression before '*' token
    5 | static auto SourceEdit_change(GtkTextBuffer*, pSourceEdit* p) -> void {
      |                                                          ^
../hiro/core/../gtk/widget/source-edit.cpp:5:60: error: 'p' was not declared in this scope
    5 | static auto SourceEdit_change(GtkTextBuffer*, pSourceEdit* p) -> void {
      |                                                            ^
../hiro/core/../gtk/widget/source-edit.cpp:5:61: error: expression list treated as compound expression in initializer [-fpermissive]
    5 | static auto SourceEdit_change(GtkTextBuffer*, pSourceEdit* p) -> void {
      |                                                             ^
../hiro/core/../gtk/widget/source-edit.cpp:5:63: error: expected ',' or ';' before '->' token
    5 | static auto SourceEdit_change(GtkTextBuffer*, pSourceEdit* p) -> void {
      |                                                               ^~
../hiro/core/../gtk/widget/source-edit.cpp:9:29: error: 'GObject' was not declared in this scope; did you mean 'wObject'?
    9 | static auto SourceEdit_move(GObject*, GParamSpec*, pSourceEdit* p) -> void {
      |                             ^~~~~~~
      |                             wObject
../hiro/core/../gtk/widget/source-edit.cpp:9:37: error: expected primary-expression before ',' token
    9 | static auto SourceEdit_move(GObject*, GParamSpec*, pSourceEdit* p) -> void {
      |                                     ^
../ruby/input/mouse/xlib.cpp:123:50: error: 'DefaultScreen' was not declared in this scope
  123 |     Colormap colormap = DefaultColormap(display, DefaultScreen(display));
      |                                                  ^~~~~~~~~~~~~
../ruby/input/mouse/xlib.cpp:123:50: note: the macro 'DefaultScreen' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/Xlib.h:89: note: it was later defined here
   89 | #define DefaultScreen(dpy)      (((_XPrivDisplay)(dpy))->default_screen)
      | 
../hiro/core/../gtk/widget/source-edit.cpp:9:39: error: 'GParamSpec' was not declared in this scope
    9 | static auto SourceEdit_move(GObject*, GParamSpec*, pSourceEdit* p) -> void {
      |                                       ^~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:9:50: error: expected primary-expression before ',' token
    9 | static auto SourceEdit_move(GObject*, GParamSpec*, pSourceEdit* p) -> void {
      |                                                  ^
../hiro/core/../gtk/widget/source-edit.cpp:9:63: error: expected primary-expression before '*' token
    9 | static auto SourceEdit_move(GObject*, GParamSpec*, pSourceEdit* p) -> void {
      |                                                               ^
../hiro/core/../gtk/widget/source-edit.cpp:9:65: error: 'p' was not declared in this scope
    9 | static auto SourceEdit_move(GObject*, GParamSpec*, pSourceEdit* p) -> void {
      |                                                                 ^
../hiro/core/../gtk/widget/source-edit.cpp:9:66: error: expression list treated as compound expression in initializer [-fpermissive]
    9 | static auto SourceEdit_move(GObject*, GParamSpec*, pSourceEdit* p) -> void {
      |                                                                  ^
../hiro/core/../gtk/widget/source-edit.cpp:9:68: error: expected ',' or ';' before '->' token
    9 | static auto SourceEdit_move(GObject*, GParamSpec*, pSourceEdit* p) -> void {
      |                                                                    ^~
../hiro/core/../gtk/widget/source-edit.cpp: In member function 'virtual void hiro::pSourceEdit::construct()':
../hiro/core/../gtk/widget/source-edit.cpp:15:3: error: 'gtkScrolledWindow' was not declared in this scope
   15 |   gtkScrolledWindow = (GtkScrolledWindow*)gtk_scrolled_window_new(0, 0);
      |   ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:15:24: error: 'GtkScrolledWindow' was not declared in this scope
   15 |   gtkScrolledWindow = (GtkScrolledWindow*)gtk_scrolled_window_new(0, 0);
      |                        ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:15:42: error: expected primary-expression before ')' token
   15 |   gtkScrolledWindow = (GtkScrolledWindow*)gtk_scrolled_window_new(0, 0);
      |                                          ^
../hiro/core/../gtk/widget/source-edit.cpp:16:3: error: 'gtkContainer' was not declared in this scope
   16 |   gtkContainer = GTK_CONTAINER(gtkScrolledWindow);
      |   ^~~~~~~~~~~~
../ruby/input/mouse/xlib.cpp:123:25: error: 'DefaultColormap' was not declared in this scope
  123 |     Colormap colormap = DefaultColormap(display, DefaultScreen(display));
      |                         ^~~~~~~~~~~~~~~
../ruby/input/mouse/xlib.cpp:123:25: note: the macro 'DefaultColormap' had not yet been defined
/home/pbulk/build/emulators/bsnes/work/.buildlink/include/X11/Xlib.h:110: note: it was later defined here
  110 | #define DefaultColormap(dpy, scr)(ScreenOfDisplay(dpy,scr)->cmap)
      | 
../hiro/core/../gtk/widget/source-edit.cpp:16:18: error: 'GTK_CONTAINER' was not declared in this scope
   16 |   gtkContainer = GTK_CONTAINER(gtkScrolledWindow);
      |                  ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:17:3: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   17 |   gtkWidget = GTK_WIDGET(gtkScrolledWindow);
      |   ^~~~~~~~~
      |   pWidget
../ruby/input/mouse/xlib.cpp:124:51: error: 'black' was not declared in this scope
  124 |     XAllocNamedColor(display, colormap, "black", &black, &unused);
      |                                                   ^~~~~
../ruby/input/mouse/xlib.cpp:124:59: error: 'unused' was not declared in this scope
  124 |     XAllocNamedColor(display, colormap, "black", &black, &unused);
      |                                                           ^~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:17:15: error: 'GTK_WIDGET' was not declared in this scope
   17 |   gtkWidget = GTK_WIDGET(gtkScrolledWindow);
      |               ^~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:18:53: error: 'GTK_POLICY_AUTOMATIC' was not declared in this scope
   18 |   gtk_scrolled_window_set_policy(gtkScrolledWindow, GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
      |                                                     ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:18:3: error: 'gtk_scrolled_window_set_policy' was not declared in this scope
   18 |   gtk_scrolled_window_set_policy(gtkScrolledWindow, GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:19:58: error: 'GTK_SHADOW_ETCHED_IN' was not declared in this scope
   19 |   gtk_scrolled_window_set_shadow_type(gtkScrolledWindow, GTK_SHADOW_ETCHED_IN);
      |                                                          ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:19:3: error: 'gtk_scrolled_window_set_shadow_type' was not declared in this scope
   19 |   gtk_scrolled_window_set_shadow_type(gtkScrolledWindow, GTK_SHADOW_ETCHED_IN);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:21:3: error: 'gtkSourceLanguageManager' was not declared in this scope
   21 |   gtkSourceLanguageManager = gtk_source_language_manager_get_default();
      |   ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:21:30: error: 'gtk_source_language_manager_get_default' was not declared in this scope
   21 |   gtkSourceLanguageManager = gtk_source_language_manager_get_default();
      |                              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:22:3: error: 'gtkSourceLanguage' was not declared in this scope
   22 |   gtkSourceLanguage = gtk_source_language_manager_get_language(gtkSourceLanguageManager, "");
      |   ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:22:23: error: 'gtk_source_language_manager_get_language' was not declared in this scope
   22 |   gtkSourceLanguage = gtk_source_language_manager_get_language(gtkSourceLanguageManager, "");
      |                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:24:3: error: 'gtkSourceStyleSchemeManager' was not declared in this scope
   24 |   gtkSourceStyleSchemeManager = gtk_source_style_scheme_manager_get_default();
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:24:33: error: 'gtk_source_style_scheme_manager_get_default' was not declared in this scope
   24 |   gtkSourceStyleSchemeManager = gtk_source_style_scheme_manager_get_default();
      |                                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:25:3: error: 'gtkSourceStyleScheme' was not declared in this scope
   25 |   gtkSourceStyleScheme = gtk_source_style_scheme_manager_get_scheme(gtkSourceStyleSchemeManager, "classic");
      |   ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:25:26: error: 'gtk_source_style_scheme_manager_get_scheme' was not declared in this scope
   25 |   gtkSourceStyleScheme = gtk_source_style_scheme_manager_get_scheme(gtkSourceStyleSchemeManager, "classic");
      |                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:27:3: error: 'gtkSourceBuffer' was not declared in this scope
   27 |   gtkSourceBuffer = gtk_source_buffer_new(nullptr);
      |   ^~~~~~~~~~~~~~~
../ruby/input/mouse/xlib.cpp:124:5: error: 'XAllocNamedColor' was not declared in this scope
  124 |     XAllocNamedColor(display, colormap, "black", &black, &unused);
      |     ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:27:21: error: 'gtk_source_buffer_new' was not declared in this scope
   27 |   gtkSourceBuffer = gtk_source_buffer_new(nullptr);
      |                     ^~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:28:3: error: 'gtkTextBuffer' was not declared in this scope
   28 |   gtkTextBuffer = GTK_TEXT_BUFFER(gtkSourceBuffer);
      |   ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:28:19: error: 'GTK_TEXT_BUFFER' was not declared in this scope
   28 |   gtkTextBuffer = GTK_TEXT_BUFFER(gtkSourceBuffer);
      |                   ^~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:29:3: error: 'gtk_source_buffer_set_highlight_matching_brackets' was not declared in this scope
   29 |   gtk_source_buffer_set_highlight_matching_brackets(gtkSourceBuffer, true);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:30:3: error: 'gtk_source_buffer_set_highlight_syntax' was not declared in this scope
   30 |   gtk_source_buffer_set_highlight_syntax(gtkSourceBuffer, true);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:31:3: error: 'gtk_source_buffer_set_language' was not declared in this scope
   31 |   gtk_source_buffer_set_language(gtkSourceBuffer, gtkSourceLanguage);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:32:3: error: 'gtk_source_buffer_set_style_scheme' was not declared in this scope
   32 |   gtk_source_buffer_set_style_scheme(gtkSourceBuffer, gtkSourceStyleScheme);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:34:3: error: 'gtkSourceView' was not declared in this scope
   34 |   gtkSourceView = (GtkSourceView*)gtk_source_view_new_with_buffer(gtkSourceBuffer);
      |   ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:34:20: error: 'GtkSourceView' was not declared in this scope
   34 |   gtkSourceView = (GtkSourceView*)gtk_source_view_new_with_buffer(gtkSourceBuffer);
      |                    ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:34:34: error: expected primary-expression before ')' token
   34 |   gtkSourceView = (GtkSourceView*)gtk_source_view_new_with_buffer(gtkSourceBuffer);
      |                                  ^
../hiro/core/../gtk/widget/source-edit.cpp:35:3: error: 'gtkTextView' was not declared in this scope
   35 |   gtkTextView = GTK_TEXT_VIEW(gtkSourceView);
      |   ^~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:35:17: error: 'GTK_TEXT_VIEW' was not declared in this scope
   35 |   gtkTextView = GTK_TEXT_VIEW(gtkSourceView);
      |                 ^~~~~~~~~~~~~
../ruby/input/mouse/xlib.cpp:125:14: error: 'XCreateBitmapFromData' was not declared in this scope
  125 |     pixmap = XCreateBitmapFromData(display, handle, invisibleData, 8, 8);
      |              ^~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:36:3: error: 'gtkWidgetSourceView' was not declared in this scope
   36 |   gtkWidgetSourceView = GTK_WIDGET(gtkSourceView);
      |   ^~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:37:3: error: 'gtk_source_view_set_auto_indent' was not declared in this scope
   37 |   gtk_source_view_set_auto_indent(gtkSourceView, false);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:38:51: error: 'GtkSourceDrawSpacesFlags' was not declared in this scope
   38 |   gtk_source_view_set_draw_spaces(gtkSourceView, (GtkSourceDrawSpacesFlags)0);
      |                                                   ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:38:3: error: 'gtk_source_view_set_draw_spaces' was not declared in this scope
   38 |   gtk_source_view_set_draw_spaces(gtkSourceView, (GtkSourceDrawSpacesFlags)0);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:39:3: error: 'gtk_source_view_set_highlight_current_line' was not declared in this scope
   39 |   gtk_source_view_set_highlight_current_line(gtkSourceView, true);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:40:3: error: 'gtk_source_view_set_indent_on_tab' was not declared in this scope
   40 |   gtk_source_view_set_indent_on_tab(gtkSourceView, false);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:41:3: error: 'gtk_source_view_set_indent_width' was not declared in this scope
   41 |   gtk_source_view_set_indent_width(gtkSourceView, 4);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:42:3: error: 'gtk_source_view_set_insert_spaces_instead_of_tabs' was not declared in this scope
   42 |   gtk_source_view_set_insert_spaces_instead_of_tabs(gtkSourceView, false);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:43:3: error: 'gtk_source_view_set_right_margin_position' was not declared in this scope
   43 |   gtk_source_view_set_right_margin_position(gtkSourceView, 80);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:44:3: error: 'gtk_source_view_set_show_line_marks' was not declared in this scope
   44 |   gtk_source_view_set_show_line_marks(gtkSourceView, false);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:45:3: error: 'gtk_source_view_set_show_line_numbers' was not declared in this scope
   45 |   gtk_source_view_set_show_line_numbers(gtkSourceView, true);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:46:3: error: 'gtk_source_view_set_show_right_margin' was not declared in this scope
   46 |   gtk_source_view_set_show_right_margin(gtkSourceView, true);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../ruby/input/mouse/xlib.cpp:126:23: error: 'XCreatePixmapCursor' was not declared in this scope
  126 |     invisibleCursor = XCreatePixmapCursor(display, pixmap, pixmap, &black, &black, 0, 0);
      |                       ^~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:47:53: error: 'GTK_SOURCE_SMART_HOME_END_DISABLED' was not declared in this scope
   47 |   gtk_source_view_set_smart_home_end(gtkSourceView, GTK_SOURCE_SMART_HOME_END_DISABLED);
      |                                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:47:3: error: 'gtk_source_view_set_smart_home_end' was not declared in this scope
   47 |   gtk_source_view_set_smart_home_end(gtkSourceView, GTK_SOURCE_SMART_HOME_END_DISABLED);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:48:3: error: 'gtk_source_view_set_tab_width' was not declared in this scope
   48 |   gtk_source_view_set_tab_width(gtkSourceView, 4);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../ruby/input/mouse/xlib.cpp:127:5: error: 'XFreePixmap' was not declared in this scope; did you mean 'XYPixmap'?
  127 |     XFreePixmap(display, pixmap);
      |     ^~~~~~~~~~~
      |     XYPixmap
../hiro/core/../gtk/widget/source-edit.cpp:49:3: error: 'gtk_container_add' was not declared in this scope
   49 |   gtk_container_add(gtkContainer, gtkWidgetSourceView);
      |   ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:50:3: error: 'gtk_widget_show' was not declared in this scope
   50 |   gtk_widget_show(gtkWidgetSourceView);
      |   ^~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:60:20: error: 'G_OBJECT' was not declared in this scope
   60 |   g_signal_connect(G_OBJECT(gtkSourceBuffer), "changed", G_CALLBACK(SourceEdit_change), (gpointer)this);
      |                    ^~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:60:58: error: 'G_CALLBACK' was not declared in this scope
   60 |   g_signal_connect(G_OBJECT(gtkSourceBuffer), "changed", G_CALLBACK(SourceEdit_change), (gpointer)this);
      |                                                          ^~~~~~~~~~
../ruby/input/mouse/xlib.cpp:128:5: error: 'XFreeColors' was not declared in this scope; did you mean 'TrueColor'?
  128 |     XFreeColors(display, colormap, &black.pixel, 1, 0);
      |     ^~~~~~~~~~~
      |     TrueColor
../hiro/core/../gtk/widget/source-edit.cpp:60:90: error: 'gpointer' was not declared in this scope
   60 |   g_signal_connect(G_OBJECT(gtkSourceBuffer), "changed", G_CALLBACK(SourceEdit_change), (gpointer)this);
      |                                                                                          ^~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:60:3: error: 'g_signal_connect' was not declared in this scope
   60 |   g_signal_connect(G_OBJECT(gtkSourceBuffer), "changed", G_CALLBACK(SourceEdit_change), (gpointer)this);
      |   ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:61:113: error: expected ')' before 'this'
   61 |   g_signal_connect(G_OBJECT(gtkSourceBuffer), "notify::cursor-position", G_CALLBACK(SourceEdit_move), (gpointer)this);
      |                   ~                                                                                             ^~~~
      |                                                                                                                 )
../ruby/input/mouse/xlib.cpp: In member function 'void InputMouseXlib::terminate()':
../ruby/input/mouse/xlib.cpp:153:7: error: 'XFreeCursor' was not declared in this scope; did you mean 'SDL_FreeCursor'?
  153 |       XFreeCursor(display, invisibleCursor);
      |       ^~~~~~~~~~~
      |       SDL_FreeCursor
../hiro/core/../gtk/widget/source-edit.cpp: In member function 'virtual void hiro::pSourceEdit::destruct()':
../hiro/core/../gtk/widget/source-edit.cpp:68:22: error: 'gtkWidgetSourceView' was not declared in this scope
   68 |   gtk_widget_destroy(gtkWidgetSourceView);
      |                      ^~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:68:3: error: 'gtk_widget_destroy' was not declared in this scope
   68 |   gtk_widget_destroy(gtkWidgetSourceView);
      |   ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:69:22: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   69 |   gtk_widget_destroy(gtkWidget);
      |                      ^~~~~~~~~
      |                      pWidget
../hiro/core/../gtk/widget/source-edit.cpp: In member function 'void hiro::pSourceEdit::setEditable(bool)':
../hiro/core/../gtk/widget/source-edit.cpp:73:30: error: 'gtkTextView' was not declared in this scope
   73 |   gtk_text_view_set_editable(gtkTextView, editable);
      |                              ^~~~~~~~~~~
../ruby/input/mouse/xlib.cpp:157:7: error: 'XCloseDisplay' was not declared in this scope
  157 |       XCloseDisplay(display);
      |       ^~~~~~~~~~~~~
../ruby/input/mouse/xlib.cpp:158:15: error: assignment of function 'constexpr nall::DisplayServer nall::display()'
  158 |       display = nullptr;
      |       ~~~~~~~~^~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:73:3: error: 'gtk_text_view_set_editable' was not declared in this scope
   73 |   gtk_text_view_set_editable(gtkTextView, editable);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp: In member function 'virtual void hiro::pSourceEdit::setFocused()':
../hiro/core/../gtk/widget/source-edit.cpp:77:25: error: 'gtkWidgetSourceView' was not declared in this scope
   77 |   gtk_widget_grab_focus(gtkWidgetSourceView);
      |                         ^~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:77:3: error: 'gtk_widget_grab_focus' was not declared in this scope
   77 |   gtk_widget_grab_focus(gtkWidgetSourceView);
      |   ^~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp: In member function 'void hiro::pSourceEdit::setLanguage(const nall::string&)':
../hiro/core/../gtk/widget/source-edit.cpp:85:3: error: 'gtkSourceLanguage' was not declared in this scope
   85 |   gtkSourceLanguage = gtk_source_language_manager_get_language(gtkSourceLanguageManager, name);
      |   ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:85:64: error: 'gtkSourceLanguageManager' was not declared in this scope
   85 |   gtkSourceLanguage = gtk_source_language_manager_get_language(gtkSourceLanguageManager, name);
      |                                                                ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:85:23: error: 'gtk_source_language_manager_get_language' was not declared in this scope
   85 |   gtkSourceLanguage = gtk_source_language_manager_get_language(gtkSourceLanguageManager, name);
      |                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:86:34: error: 'gtkSourceBuffer' was not declared in this scope
   86 |   gtk_source_buffer_set_language(gtkSourceBuffer, gtkSourceLanguage);
      |                                  ^~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:86:3: error: 'gtk_source_buffer_set_language' was not declared in this scope
   86 |   gtk_source_buffer_set_language(gtkSourceBuffer, gtkSourceLanguage);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp: In member function 'void hiro::pSourceEdit::setNumbered(bool)':
../hiro/core/../gtk/widget/source-edit.cpp:90:41: error: 'gtkSourceView' was not declared in this scope
   90 |   gtk_source_view_set_show_line_numbers(gtkSourceView, numbered);
      |                                         ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:90:3: error: 'gtk_source_view_set_show_line_numbers' was not declared in this scope
   90 |   gtk_source_view_set_show_line_numbers(gtkSourceView, numbered);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp: In member function 'void hiro::pSourceEdit::setScheme(const nall::string&)':
../hiro/core/../gtk/widget/source-edit.cpp:95:3: error: 'gtkSourceStyleScheme' was not declared in this scope
   95 |   gtkSourceStyleScheme = gtk_source_style_scheme_manager_get_scheme(gtkSourceStyleSchemeManager, scheme.downcase());
      |   ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:95:69: error: 'gtkSourceStyleSchemeManager' was not declared in this scope
   95 |   gtkSourceStyleScheme = gtk_source_style_scheme_manager_get_scheme(gtkSourceStyleSchemeManager, scheme.downcase());
      |                                                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:95:26: error: 'gtk_source_style_scheme_manager_get_scheme' was not declared in this scope
   95 |   gtkSourceStyleScheme = gtk_source_style_scheme_manager_get_scheme(gtkSourceStyleSchemeManager, scheme.downcase());
      |                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:97:38: error: 'gtkSourceBuffer' was not declared in this scope
   97 |   gtk_source_buffer_set_style_scheme(gtkSourceBuffer, gtkSourceStyleScheme);
      |                                      ^~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:97:3: error: 'gtk_source_buffer_set_style_scheme' was not declared in this scope
   97 |   gtk_source_buffer_set_style_scheme(gtkSourceBuffer, gtkSourceStyleScheme);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp: In member function 'void hiro::pSourceEdit::setText(const nall::string&)':
../hiro/core/../gtk/widget/source-edit.cpp:104:47: error: 'gtkSourceBuffer' was not declared in this scope
  104 |   gtk_source_buffer_begin_not_undoable_action(gtkSourceBuffer);
      |                                               ^~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:104:3: error: 'gtk_source_buffer_begin_not_undoable_action' was not declared in this scope
  104 |   gtk_source_buffer_begin_not_undoable_action(gtkSourceBuffer);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:105:28: error: 'gtkTextBuffer' was not declared in this scope
  105 |   gtk_text_buffer_set_text(gtkTextBuffer, text, -1);
      |                            ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:105:3: error: 'gtk_text_buffer_set_text' was not declared in this scope
  105 |   gtk_text_buffer_set_text(gtkTextBuffer, text, -1);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:106:3: error: 'gtk_source_buffer_end_not_undoable_action' was not declared in this scope
  106 |   gtk_source_buffer_end_not_undoable_action(gtkSourceBuffer);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp: In member function 'void hiro::pSourceEdit::setTextCursor(hiro::TextCursor)':
../hiro/core/../gtk/widget/source-edit.cpp:112:3: error: 'GtkTextIter' was not declared in this scope
  112 |   GtkTextIter offset, length;
      |   ^~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:113:32: error: 'gtkTextBuffer' was not declared in this scope
  113 |   gtk_text_buffer_get_end_iter(gtkTextBuffer, &offset);
      |                                ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:113:48: error: 'offset' was not declared in this scope; did you mean 'offset_t'?
  113 |   gtk_text_buffer_get_end_iter(gtkTextBuffer, &offset);
      |                                                ^~~~~~
      |                                                offset_t
../hiro/core/../gtk/widget/source-edit.cpp:113:3: error: 'gtk_text_buffer_get_end_iter' was not declared in this scope
  113 |   gtk_text_buffer_get_end_iter(gtkTextBuffer, &offset);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:114:48: error: 'length' was not declared in this scope; did you mean 'len_t'?
  114 |   gtk_text_buffer_get_end_iter(gtkTextBuffer, &length);
      |                                                ^~~~~~
      |                                                len_t
../hiro/core/../gtk/widget/source-edit.cpp:115:16: error: 'gtk_text_iter_get_offset' was not declared in this scope
  115 |   signed end = gtk_text_iter_get_offset(&offset);
      |                ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:116:3: error: 'gtk_text_iter_set_offset' was not declared in this scope
  116 |   gtk_text_iter_set_offset(&offset, max(0, min(end, cursor.offset())));
      |   ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:118:3: error: 'gtk_text_buffer_select_range' was not declared in this scope
  118 |   gtk_text_buffer_select_range(gtkTextBuffer, &offset, &length);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:119:15: error: 'gtk_text_buffer_get_mark' was not declared in this scope
  119 |   auto mark = gtk_text_buffer_get_mark(gtkTextBuffer, "insert");
      |               ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:120:38: error: 'gtkTextView' was not declared in this scope
  120 |   gtk_text_view_scroll_mark_onscreen(gtkTextView, mark);
      |                                      ^~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:120:3: error: 'gtk_text_view_scroll_mark_onscreen' was not declared in this scope
  120 |   gtk_text_view_scroll_mark_onscreen(gtkTextView, mark);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp: In member function 'void hiro::pSourceEdit::setWordWrap(bool)':
../hiro/core/../gtk/widget/source-edit.cpp:125:31: error: 'gtkTextView' was not declared in this scope
  125 |   gtk_text_view_set_wrap_mode(gtkTextView, wordWrap ? GTK_WRAP_WORD_CHAR : GTK_WRAP_NONE);
      |                               ^~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:125:55: error: 'GTK_WRAP_WORD_CHAR' was not declared in this scope
  125 |   gtk_text_view_set_wrap_mode(gtkTextView, wordWrap ? GTK_WRAP_WORD_CHAR : GTK_WRAP_NONE);
      |                                                       ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:125:76: error: 'GTK_WRAP_NONE' was not declared in this scope
  125 |   gtk_text_view_set_wrap_mode(gtkTextView, wordWrap ? GTK_WRAP_WORD_CHAR : GTK_WRAP_NONE);
      |                                                                            ^~~~~~~~~~~~~
../ruby/input/mouse/xlib.cpp: In member function 'bool InputMouseXlib::acquire()':
../ruby/input/mouse/xlib.cpp:47:3: warning: control reaches end of non-void function [-Wreturn-type]
   47 |   }
      |   ^
../hiro/core/../gtk/widget/source-edit.cpp:125:3: error: 'gtk_text_view_set_wrap_mode' was not declared in this scope
  125 |   gtk_text_view_set_wrap_mode(gtkTextView, wordWrap ? GTK_WRAP_WORD_CHAR : GTK_WRAP_NONE);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:126:34: error: 'gtkScrolledWindow' was not declared in this scope
  126 |   gtk_scrolled_window_set_policy(gtkScrolledWindow, wordWrap ? GTK_POLICY_NEVER : GTK_POLICY_ALWAYS, GTK_POLICY_ALWAYS);
      |                                  ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:126:64: error: 'GTK_POLICY_NEVER' was not declared in this scope
  126 |   gtk_scrolled_window_set_policy(gtkScrolledWindow, wordWrap ? GTK_POLICY_NEVER : GTK_POLICY_ALWAYS, GTK_POLICY_ALWAYS);
      |                                                                ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:126:83: error: 'GTK_POLICY_ALWAYS' was not declared in this scope
  126 |   gtk_scrolled_window_set_policy(gtkScrolledWindow, wordWrap ? GTK_POLICY_NEVER : GTK_POLICY_ALWAYS, GTK_POLICY_ALWAYS);
      |                                                                                   ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:126:3: error: 'gtk_scrolled_window_set_policy' was not declared in this scope
  126 |   gtk_scrolled_window_set_policy(gtkScrolledWindow, wordWrap ? GTK_POLICY_NEVER : GTK_POLICY_ALWAYS, GTK_POLICY_ALWAYS);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp: In member function 'nall::string hiro::pSourceEdit::text() const':
../hiro/core/../gtk/widget/source-edit.cpp:130:3: error: 'GtkTextIter' was not declared in this scope
  130 |   GtkTextIter startIter;
      |   ^~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:131:34: error: 'gtkTextBuffer' was not declared in this scope
  131 |   gtk_text_buffer_get_start_iter(gtkTextBuffer, &startIter);
      |                                  ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:131:50: error: 'startIter' was not declared in this scope
  131 |   gtk_text_buffer_get_start_iter(gtkTextBuffer, &startIter);
      |                                                  ^~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:131:3: error: 'gtk_text_buffer_get_start_iter' was not declared in this scope
  131 |   gtk_text_buffer_get_start_iter(gtkTextBuffer, &startIter);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:133:14: error: expected ';' before 'endIter'
  133 |   GtkTextIter endIter;
      |              ^~~~~~~~
      |              ;
../hiro/core/../gtk/widget/source-edit.cpp:134:48: error: 'endIter' was not declared in this scope
  134 |   gtk_text_buffer_get_end_iter(gtkTextBuffer, &endIter);
      |                                                ^~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:134:3: error: 'gtk_text_buffer_get_end_iter' was not declared in this scope
  134 |   gtk_text_buffer_get_end_iter(gtkTextBuffer, &endIter);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:136:22: error: 'gtk_text_buffer_get_text' was not declared in this scope
  136 |   char* textBuffer = gtk_text_buffer_get_text(gtkTextBuffer, &startIter, &endIter, true);
      |                      ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:138:3: error: 'g_free' was not declared in this scope; did you mean 'free'?
  138 |   g_free(textBuffer);
      |   ^~~~~~
      |   free
../hiro/core/../gtk/widget/source-edit.cpp: In member function 'hiro::TextCursor hiro::pSourceEdit::textCursor() const':
../hiro/core/../gtk/widget/source-edit.cpp:145:25: error: 'gtkSourceBuffer' was not declared in this scope
  145 |   g_object_get(G_OBJECT(gtkSourceBuffer), "cursor-position", &offset, nullptr);
      |                         ^~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:145:16: error: 'G_OBJECT' was not declared in this scope
  145 |   g_object_get(G_OBJECT(gtkSourceBuffer), "cursor-position", &offset, nullptr);
      |                ^~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:145:3: error: 'g_object_get' was not declared in this scope
  145 |   g_object_get(G_OBJECT(gtkSourceBuffer), "cursor-position", &offset, nullptr);
      |   ^~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:147:3: error: 'GtkTextIter' was not declared in this scope
  147 |   GtkTextIter start, end;
      |   ^~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:148:43: error: 'gtkTextBuffer' was not declared in this scope
  148 |   if(gtk_text_buffer_get_selection_bounds(gtkTextBuffer, &start, &end)) {
      |                                           ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:148:59: error: 'start' was not declared in this scope; did you mean 'stat'?
  148 |   if(gtk_text_buffer_get_selection_bounds(gtkTextBuffer, &start, &end)) {
      |                                                           ^~~~~
      |                                                           stat
../hiro/core/../gtk/widget/source-edit.cpp:148:67: error: 'end' was not declared in this scope; did you mean 'std::end'?
  148 |   if(gtk_text_buffer_get_selection_bounds(gtkTextBuffer, &start, &end)) {
      |                                                                   ^~~
      |                                                                   std::end
/opt/tools/gcc13/include/c++/13.3.0/initializer_list:99:5: note: 'std::end' declared here
   99 |     end(initializer_list<_Tp> __ils) noexcept
      |     ^~~
../hiro/core/../gtk/widget/source-edit.cpp:148:6: error: 'gtk_text_buffer_get_selection_bounds' was not declared in this scope
  148 |   if(gtk_text_buffer_get_selection_bounds(gtkTextBuffer, &start, &end)) {
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/source-edit.cpp:151:18: error: 'gtk_text_iter_get_offset' was not declared in this scope
  151 |     int origin = gtk_text_iter_get_offset(&start);
      |                  ^~~~~~~~~~~~~~~~~~~~~~~~
In file included from ../hiro/core/../gtk/platform.cpp:52:
../hiro/core/../gtk/widget/tab-frame.cpp: At global scope:
../hiro/core/../gtk/widget/tab-frame.cpp:5:29: error: 'GtkNotebook' was not declared in this scope
    5 | static auto TabFrame_change(GtkNotebook* notebook, GtkWidget* page, unsigned position, pTabFrame* p) -> void {
      |                             ^~~~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:5:42: error: 'notebook' was not declared in this scope
    5 | static auto TabFrame_change(GtkNotebook* notebook, GtkWidget* page, unsigned position, pTabFrame* p) -> void {
      |                                          ^~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:5:52: error: 'GtkWidget' was not declared in this scope; did you mean 'wWidget'?
    5 | static auto TabFrame_change(GtkNotebook* notebook, GtkWidget* page, unsigned position, pTabFrame* p) -> void {
      |                                                    ^~~~~~~~~
      |                                                    wWidget
../hiro/core/../gtk/widget/tab-frame.cpp:5:63: error: 'page' was not declared in this scope
    5 | static auto TabFrame_change(GtkNotebook* notebook, GtkWidget* page, unsigned position, pTabFrame* p) -> void {
      |                                                               ^~~~
../hiro/core/../gtk/widget/tab-frame.cpp:5:69: error: expected primary-expression before 'unsigned'
    5 | static auto TabFrame_change(GtkNotebook* notebook, GtkWidget* page, unsigned position, pTabFrame* p) -> void {
      |                                                                     ^~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:5:97: error: expected primary-expression before '*' token
    5 | static auto TabFrame_change(GtkNotebook* notebook, GtkWidget* page, unsigned position, pTabFrame* p) -> void {
      |                                                                                                 ^
../hiro/core/../gtk/widget/tab-frame.cpp:5:99: error: 'p' was not declared in this scope
    5 | static auto TabFrame_change(GtkNotebook* notebook, GtkWidget* page, unsigned position, pTabFrame* p) -> void {
      |                                                                                                   ^
../hiro/core/../gtk/widget/tab-frame.cpp:5:100: error: expression list treated as compound expression in initializer [-fpermissive]
    5 | static auto TabFrame_change(GtkNotebook* notebook, GtkWidget* page, unsigned position, pTabFrame* p) -> void {
      |                                                                                                    ^
../hiro/core/../gtk/widget/tab-frame.cpp:5:102: error: expected ',' or ';' before '->' token
    5 | static auto TabFrame_change(GtkNotebook* notebook, GtkWidget* page, unsigned position, pTabFrame* p) -> void {
      |                                                                                                      ^~
../hiro/core/../gtk/widget/tab-frame.cpp:13:28: error: 'GtkButton' was not declared in this scope; did you mean 'wButton'?
   13 | static auto TabFrame_close(GtkButton* button, pTabFrame* p) -> void {
      |                            ^~~~~~~~~
      |                            wButton
../hiro/core/../gtk/widget/tab-frame.cpp:13:39: error: 'button' was not declared in this scope; did you mean 'Button'?
   13 | static auto TabFrame_close(GtkButton* button, pTabFrame* p) -> void {
      |                                       ^~~~~~
      |                                       Button
../hiro/core/../gtk/widget/tab-frame.cpp:13:56: error: expected primary-expression before '*' token
   13 | static auto TabFrame_close(GtkButton* button, pTabFrame* p) -> void {
      |                                                        ^
../hiro/core/../gtk/widget/tab-frame.cpp:13:58: error: 'p' was not declared in this scope
   13 | static auto TabFrame_close(GtkButton* button, pTabFrame* p) -> void {
      |                                                          ^
../hiro/core/../gtk/widget/tab-frame.cpp:13:59: error: expression list treated as compound expression in initializer [-fpermissive]
   13 | static auto TabFrame_close(GtkButton* button, pTabFrame* p) -> void {
      |                                                           ^
../hiro/core/../gtk/widget/tab-frame.cpp:13:61: error: expected ',' or ';' before '->' token
   13 | static auto TabFrame_close(GtkButton* button, pTabFrame* p) -> void {
      |                                                             ^~
../hiro/core/../gtk/widget/tab-frame.cpp:26:27: error: 'GtkNotebook' was not declared in this scope
   26 | static auto TabFrame_move(GtkNotebook* notebook, GtkWidget* page, unsigned moveTo, pTabFrame* p) -> void {
      |                           ^~~~~~~~~~~
gmake: *** [../ruby/GNUmakefile:76: obj/ruby.o] Error 1
../hiro/core/../gtk/widget/tab-frame.cpp:26:40: error: 'notebook' was not declared in this scope
   26 | static auto TabFrame_move(GtkNotebook* notebook, GtkWidget* page, unsigned moveTo, pTabFrame* p) -> void {
      |                                        ^~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:26:50: error: 'GtkWidget' was not declared in this scope; did you mean 'wWidget'?
   26 | static auto TabFrame_move(GtkNotebook* notebook, GtkWidget* page, unsigned moveTo, pTabFrame* p) -> void {
      |                                                  ^~~~~~~~~
      |                                                  wWidget
../hiro/core/../gtk/widget/tab-frame.cpp:26:61: error: 'page' was not declared in this scope
   26 | static auto TabFrame_move(GtkNotebook* notebook, GtkWidget* page, unsigned moveTo, pTabFrame* p) -> void {
      |                                                             ^~~~
../hiro/core/../gtk/widget/tab-frame.cpp:26:67: error: expected primary-expression before 'unsigned'
   26 | static auto TabFrame_move(GtkNotebook* notebook, GtkWidget* page, unsigned moveTo, pTabFrame* p) -> void {
      |                                                                   ^~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:26:93: error: expected primary-expression before '*' token
   26 | static auto TabFrame_move(GtkNotebook* notebook, GtkWidget* page, unsigned moveTo, pTabFrame* p) -> void {
      |                                                                                             ^
../hiro/core/../gtk/widget/tab-frame.cpp:26:95: error: 'p' was not declared in this scope
   26 | static auto TabFrame_move(GtkNotebook* notebook, GtkWidget* page, unsigned moveTo, pTabFrame* p) -> void {
      |                                                                                               ^
../hiro/core/../gtk/widget/tab-frame.cpp:26:96: error: expression list treated as compound expression in initializer [-fpermissive]
   26 | static auto TabFrame_move(GtkNotebook* notebook, GtkWidget* page, unsigned moveTo, pTabFrame* p) -> void {
      |                                                                                                ^
../hiro/core/../gtk/widget/tab-frame.cpp:26:98: error: expected ',' or ';' before '->' token
   26 | static auto TabFrame_move(GtkNotebook* notebook, GtkWidget* page, unsigned moveTo, pTabFrame* p) -> void {
      |                                                                                                  ^~
../hiro/core/../gtk/widget/tab-frame.cpp: In member function 'virtual void hiro::pTabFrame::construct()':
../hiro/core/../gtk/widget/tab-frame.cpp:46:3: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   46 |   gtkWidget = gtk_notebook_new();
      |   ^~~~~~~~~
      |   pWidget
../hiro/core/../gtk/widget/tab-frame.cpp:46:15: error: 'gtk_notebook_new' was not declared in this scope
   46 |   gtkWidget = gtk_notebook_new();
      |               ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:47:32: error: 'GTK_NOTEBOOK' was not declared in this scope
   47 |   gtk_notebook_set_show_border(GTK_NOTEBOOK(gtkWidget), false);
      |                                ^~~~~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:47:3: error: 'gtk_notebook_set_show_border' was not declared in this scope
   47 |   gtk_notebook_set_show_border(GTK_NOTEBOOK(gtkWidget), false);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:48:53: error: 'GTK_POS_TOP' was not declared in this scope
   48 |   gtk_notebook_set_tab_pos(GTK_NOTEBOOK(gtkWidget), GTK_POS_TOP);
      |                                                     ^~~~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:48:3: error: 'gtk_notebook_set_tab_pos' was not declared in this scope
   48 |   gtk_notebook_set_tab_pos(GTK_NOTEBOOK(gtkWidget), GTK_POS_TOP);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:54:20: error: 'G_OBJECT' was not declared in this scope
   54 |   g_signal_connect(G_OBJECT(gtkWidget), "page-reordered", G_CALLBACK(TabFrame_move), (gpointer)this);
      |                    ^~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:54:59: error: 'G_CALLBACK' was not declared in this scope
   54 |   g_signal_connect(G_OBJECT(gtkWidget), "page-reordered", G_CALLBACK(TabFrame_move), (gpointer)this);
      |                                                           ^~~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:54:87: error: 'gpointer' was not declared in this scope
   54 |   g_signal_connect(G_OBJECT(gtkWidget), "page-reordered", G_CALLBACK(TabFrame_move), (gpointer)this);
      |                                                                                       ^~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:54:3: error: 'g_signal_connect' was not declared in this scope
   54 |   g_signal_connect(G_OBJECT(gtkWidget), "page-reordered", G_CALLBACK(TabFrame_move), (gpointer)this);
      |   ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:55:95: error: expected ')' before 'this'
   55 |   g_signal_connect(G_OBJECT(gtkWidget), "switch-page", G_CALLBACK(TabFrame_change), (gpointer)this);
      |                   ~                                                                           ^~~~
      |                                                                                               )
../hiro/core/../gtk/widget/tab-frame.cpp: In member function 'virtual void hiro::pTabFrame::destruct()':
../hiro/core/../gtk/widget/tab-frame.cpp:61:22: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   61 |   gtk_widget_destroy(gtkWidget);
      |                      ^~~~~~~~~
      |                      pWidget
../hiro/core/../gtk/widget/tab-frame.cpp:61:3: error: 'gtk_widget_destroy' was not declared in this scope
   61 |   gtk_widget_destroy(gtkWidget);
      |   ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp: At global scope:
../hiro/core/../gtk/widget/tab-frame.cpp:74:47: error: 'GtkWidget' does not name a type; did you mean 'pWidget'?
   74 | auto pTabFrame::container(mWidget& widget) -> GtkWidget* {
      |                                               ^~~~~~~~~
      |                                               pWidget
../hiro/core/../gtk/widget/tab-frame.cpp:74:56: error: expected initializer before '*' token
   74 | auto pTabFrame::container(mWidget& widget) -> GtkWidget* {
      |                                                        ^
../hiro/core/../gtk/widget/tab-frame.cpp: In member function 'void hiro::pTabFrame::remove(hiro::sTabFrameItem)':
../hiro/core/../gtk/widget/tab-frame.cpp:98:67: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   98 |   if(item->offset() == gtk_notebook_get_current_page(GTK_NOTEBOOK(gtkWidget))) {
      |                                                                   ^~~~~~~~~
      |                                                                   pWidget
../hiro/core/../gtk/widget/tab-frame.cpp:98:54: error: 'GTK_NOTEBOOK' was not declared in this scope
   98 |   if(item->offset() == gtk_notebook_get_current_page(GTK_NOTEBOOK(gtkWidget))) {
      |                                                      ^~~~~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:98:24: error: 'gtk_notebook_get_current_page' was not declared in this scope
   98 |   if(item->offset() == gtk_notebook_get_current_page(GTK_NOTEBOOK(gtkWidget))) {
      |                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:109:41: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
  109 |   gtk_notebook_remove_page(GTK_NOTEBOOK(gtkWidget), item->offset());
      |                                         ^~~~~~~~~
      |                                         pWidget
../hiro/core/../gtk/widget/tab-frame.cpp:109:28: error: 'GTK_NOTEBOOK' was not declared in this scope
  109 |   gtk_notebook_remove_page(GTK_NOTEBOOK(gtkWidget), item->offset());
      |                            ^~~~~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:109:3: error: 'gtk_notebook_remove_page' was not declared in this scope
  109 |   gtk_notebook_remove_page(GTK_NOTEBOOK(gtkWidget), item->offset());
      |   ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:111:23: error: 'gtk_notebook_get_current_page' was not declared in this scope
  111 |   unsigned position = gtk_notebook_get_current_page(GTK_NOTEBOOK(gtkWidget));
      |                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp: In member function 'virtual void hiro::pTabFrame::setFont(const hiro::Font&)':
../hiro/core/../gtk/widget/tab-frame.cpp:119:28: error: 'struct hiro::pTabFrame::Tab' has no member named 'title'
  119 |     pFont::setFont(tabs[n].title, font);
      |                            ^~~~~
../hiro/core/../gtk/widget/tab-frame.cpp: In member function 'void hiro::pTabFrame::setItemMovable(unsigned int, bool)':
../hiro/core/../gtk/widget/tab-frame.cpp:153:49: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
  153 |   gtk_notebook_set_tab_reorderable(GTK_NOTEBOOK(gtkWidget), tabs[position].child, movable);
      |                                                 ^~~~~~~~~
      |                                                 pWidget
../hiro/core/../gtk/widget/tab-frame.cpp:153:36: error: 'GTK_NOTEBOOK' was not declared in this scope
  153 |   gtk_notebook_set_tab_reorderable(GTK_NOTEBOOK(gtkWidget), tabs[position].child, movable);
      |                                    ^~~~~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:153:76: error: 'struct hiro::pTabFrame::Tab' has no member named 'child'
  153 |   gtk_notebook_set_tab_reorderable(GTK_NOTEBOOK(gtkWidget), tabs[position].child, movable);
      |                                                                            ^~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:153:3: error: 'gtk_notebook_set_tab_reorderable' was not declared in this scope
  153 |   gtk_notebook_set_tab_reorderable(GTK_NOTEBOOK(gtkWidget), tabs[position].child, movable);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp: In member function 'void hiro::pTabFrame::setItemSelected(unsigned int)':
../hiro/core/../gtk/widget/tab-frame.cpp:159:46: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
  159 |   gtk_notebook_set_current_page(GTK_NOTEBOOK(gtkWidget), position);
      |                                              ^~~~~~~~~
      |                                              pWidget
../hiro/core/../gtk/widget/tab-frame.cpp:159:33: error: 'GTK_NOTEBOOK' was not declared in this scope
  159 |   gtk_notebook_set_current_page(GTK_NOTEBOOK(gtkWidget), position);
      |                                 ^~~~~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:159:3: error: 'gtk_notebook_set_current_page' was not declared in this scope
  159 |   gtk_notebook_set_current_page(GTK_NOTEBOOK(gtkWidget), position);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp: In member function 'void hiro::pTabFrame::setNavigation(hiro::Navigation)':
../hiro/core/../gtk/widget/tab-frame.cpp:172:3: error: 'GtkPositionType' was not declared in this scope
  172 |   GtkPositionType type;
      |   ^~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:174:25: error: 'type' was not declared in this scope; did you mean 'wctype'?
  174 |   case Navigation::Top: type = GTK_POS_TOP; break;
      |                         ^~~~
      |                         wctype
../hiro/core/../gtk/widget/tab-frame.cpp:174:32: error: 'GTK_POS_TOP' was not declared in this scope
  174 |   case Navigation::Top: type = GTK_POS_TOP; break;
      |                                ^~~~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:175:35: error: 'GTK_POS_BOTTOM' was not declared in this scope
  175 |   case Navigation::Bottom: type = GTK_POS_BOTTOM; break;
      |                                   ^~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:176:33: error: 'GTK_POS_LEFT' was not declared in this scope
  176 |   case Navigation::Left: type = GTK_POS_LEFT; break;
      |                                 ^~~~~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:177:34: error: 'GTK_POS_RIGHT' was not declared in this scope
  177 |   case Navigation::Right: type = GTK_POS_RIGHT; break;
      |                                  ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:179:41: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
  179 |   gtk_notebook_set_tab_pos(GTK_NOTEBOOK(gtkWidget), type);
      |                                         ^~~~~~~~~
      |                                         pWidget
../hiro/core/../gtk/widget/tab-frame.cpp:179:28: error: 'GTK_NOTEBOOK' was not declared in this scope
  179 |   gtk_notebook_set_tab_pos(GTK_NOTEBOOK(gtkWidget), type);
      |                            ^~~~~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:179:53: error: 'type' was not declared in this scope; did you mean 'wctype'?
  179 |   gtk_notebook_set_tab_pos(GTK_NOTEBOOK(gtkWidget), type);
      |                                                     ^~~~
      |                                                     wctype
../hiro/core/../gtk/widget/tab-frame.cpp:179:3: error: 'gtk_notebook_set_tab_pos' was not declared in this scope
  179 |   gtk_notebook_set_tab_pos(GTK_NOTEBOOK(gtkWidget), type);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp: In member function 'void hiro::pTabFrame::_append()':
../hiro/core/../gtk/widget/tab-frame.cpp:188:7: error: 'struct hiro::pTabFrame::Tab' has no member named 'child'
  188 |   tab.child = gtk_fixed_new();
      |       ^~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:188:15: error: 'gtk_fixed_new' was not declared in this scope
  188 |   tab.child = gtk_fixed_new();
      |               ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:192:7: error: 'struct hiro::pTabFrame::Tab' has no member named 'container'
  192 |   tab.container = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
      |       ^~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:192:31: error: 'GTK_ORIENTATION_HORIZONTAL' was not declared in this scope
  192 |   tab.container = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
      |                               ^~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:192:19: error: 'gtk_box_new' was not declared in this scope
  192 |   tab.container = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
      |                   ^~~~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:194:7: error: 'struct hiro::pTabFrame::Tab' has no member named 'image'
  194 |   tab.image = gtk_image_new();
      |       ^~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:194:15: error: 'gtk_image_new' was not declared in this scope
  194 |   tab.image = gtk_image_new();
      |               ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:195:7: error: 'struct hiro::pTabFrame::Tab' has no member named 'title'
  195 |   tab.title = gtk_label_new("");
      |       ^~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:195:15: error: 'gtk_label_new' was not declared in this scope
  195 |   tab.title = gtk_label_new("");
      |               ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:196:39: error: 'struct hiro::pTabFrame::Tab' has no member named 'title'
  196 |   gtk_misc_set_alignment(GTK_MISC(tab.title), 0.0, 0.5);
      |                                       ^~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:196:26: error: 'GTK_MISC' was not declared in this scope
  196 |   gtk_misc_set_alignment(GTK_MISC(tab.title), 0.0, 0.5);
      |                          ^~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:196:3: error: 'gtk_misc_set_alignment' was not declared in this scope
  196 |   gtk_misc_set_alignment(GTK_MISC(tab.title), 0.0, 0.5);
      |   ^~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:197:7: error: 'struct hiro::pTabFrame::Tab' has no member named 'close'
  197 |   tab.close = gtk_button_new_with_label("\u00d7");  //Unicode multiplication sign (looks better than 'X')
      |       ^~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:197:15: error: 'gtk_button_new_with_label' was not declared in this scope
  197 |   tab.close = gtk_button_new_with_label("\u00d7");  //Unicode multiplication sign (looks better than 'X')
      |               ^~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:198:48: error: 'struct hiro::pTabFrame::Tab' has no member named 'close'
  198 |   gtk_button_set_focus_on_click(GTK_BUTTON(tab.close), false);
      |                                                ^~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:198:33: error: 'GTK_BUTTON' was not declared in this scope
  198 |   gtk_button_set_focus_on_click(GTK_BUTTON(tab.close), false);
      |                                 ^~~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:198:3: error: 'gtk_button_set_focus_on_click' was not declared in this scope
  198 |   gtk_button_set_focus_on_click(GTK_BUTTON(tab.close), false);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:199:40: error: 'struct hiro::pTabFrame::Tab' has no member named 'close'
  199 |   gtk_button_set_relief(GTK_BUTTON(tab.close), GTK_RELIEF_NONE);
      |                                        ^~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:199:48: error: 'GTK_RELIEF_NONE' was not declared in this scope
  199 |   gtk_button_set_relief(GTK_BUTTON(tab.close), GTK_RELIEF_NONE);
      |                                                ^~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:199:3: error: 'gtk_button_set_relief' was not declared in this scope
  199 |   gtk_button_set_relief(GTK_BUTTON(tab.close), GTK_RELIEF_NONE);
      |   ^~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:200:22: error: 'struct hiro::pTabFrame::Tab' has no member named 'close'
  200 |   pFont::setFont(tab.close, Font("sans", 9).setBold());
      |                      ^~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:201:16: error: 'CreateColor' was not declared in this scope
  201 |   auto color = CreateColor({255, 0, 0});
      |                ^~~~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:202:54: error: 'struct hiro::pTabFrame::Tab' has no member named 'close'
  202 |   gtk_widget_modify_fg(gtk_bin_get_child(GTK_BIN(tab.close)), GTK_STATE_PRELIGHT, &color);
      |                                                      ^~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:202:42: error: 'GTK_BIN' was not declared in this scope
  202 |   gtk_widget_modify_fg(gtk_bin_get_child(GTK_BIN(tab.close)), GTK_STATE_PRELIGHT, &color);
      |                                          ^~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:202:24: error: 'gtk_bin_get_child' was not declared in this scope
  202 |   gtk_widget_modify_fg(gtk_bin_get_child(GTK_BIN(tab.close)), GTK_STATE_PRELIGHT, &color);
      |                        ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:202:63: error: 'GTK_STATE_PRELIGHT' was not declared in this scope
  202 |   gtk_widget_modify_fg(gtk_bin_get_child(GTK_BIN(tab.close)), GTK_STATE_PRELIGHT, &color);
      |                                                               ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:202:3: error: 'gtk_widget_modify_fg' was not declared in this scope
  202 |   gtk_widget_modify_fg(gtk_bin_get_child(GTK_BIN(tab.close)), GTK_STATE_PRELIGHT, &color);
      |   ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:205:23: error: 'struct hiro::pTabFrame::Tab' has no member named 'child'
  205 |   gtk_widget_show(tab.child);
      |                       ^~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:205:3: error: 'gtk_widget_show' was not declared in this scope
  205 |   gtk_widget_show(tab.child);
      |   ^~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:206:23: error: 'struct hiro::pTabFrame::Tab' has no member named 'container'
  206 |   gtk_widget_show(tab.container);
      |                       ^~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:207:23: error: 'struct hiro::pTabFrame::Tab' has no member named 'image'
  207 |   gtk_widget_show(tab.image);
      |                       ^~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:208:23: error: 'struct hiro::pTabFrame::Tab' has no member named 'title'
  208 |   gtk_widget_show(tab.title);
      |                       ^~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:209:23: error: 'struct hiro::pTabFrame::Tab' has no member named 'close'
  209 |   gtk_widget_show(tab.close);
      |                       ^~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:210:34: error: 'struct hiro::pTabFrame::Tab' has no member named 'container'
  210 |   gtk_box_pack_start(GTK_BOX(tab.container), tab.image, false, false, 0);
      |                                  ^~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:210:22: error: 'GTK_BOX' was not declared in this scope
  210 |   gtk_box_pack_start(GTK_BOX(tab.container), tab.image, false, false, 0);
      |                      ^~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:210:50: error: 'struct hiro::pTabFrame::Tab' has no member named 'image'
  210 |   gtk_box_pack_start(GTK_BOX(tab.container), tab.image, false, false, 0);
      |                                                  ^~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:210:3: error: 'gtk_box_pack_start' was not declared in this scope
  210 |   gtk_box_pack_start(GTK_BOX(tab.container), tab.image, false, false, 0);
      |   ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:211:34: error: 'struct hiro::pTabFrame::Tab' has no member named 'container'
  211 |   gtk_box_pack_start(GTK_BOX(tab.container), tab.title, true, true, 0);
      |                                  ^~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:211:50: error: 'struct hiro::pTabFrame::Tab' has no member named 'title'
  211 |   gtk_box_pack_start(GTK_BOX(tab.container), tab.title, true, true, 0);
      |                                                  ^~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:212:34: error: 'struct hiro::pTabFrame::Tab' has no member named 'container'
  212 |   gtk_box_pack_start(GTK_BOX(tab.container), tab.close, false, false, 0);
      |                                  ^~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:212:50: error: 'struct hiro::pTabFrame::Tab' has no member named 'close'
  212 |   gtk_box_pack_start(GTK_BOX(tab.container), tab.close, false, false, 0);
      |                                                  ^~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:214:33: error: 'struct hiro::pTabFrame::Tab' has no member named 'close'
  214 |   g_signal_connect(G_OBJECT(tab.close), "clicked", G_CALLBACK(TabFrame_close), (gpointer)this);
      |                                 ^~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:214:20: error: 'G_OBJECT' was not declared in this scope
  214 |   g_signal_connect(G_OBJECT(tab.close), "clicked", G_CALLBACK(TabFrame_close), (gpointer)this);
      |                    ^~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:214:52: error: 'G_CALLBACK' was not declared in this scope
  214 |   g_signal_connect(G_OBJECT(tab.close), "clicked", G_CALLBACK(TabFrame_close), (gpointer)this);
      |                                                    ^~~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:214:81: error: 'gpointer' was not declared in this scope
  214 |   g_signal_connect(G_OBJECT(tab.close), "clicked", G_CALLBACK(TabFrame_close), (gpointer)this);
      |                                                                                 ^~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:214:3: error: 'g_signal_connect' was not declared in this scope
  214 |   g_signal_connect(G_OBJECT(tab.close), "clicked", G_CALLBACK(TabFrame_close), (gpointer)this);
      |   ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:215:41: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
  215 |   gtk_notebook_append_page(GTK_NOTEBOOK(gtkWidget), tab.child, tab.container);
      |                                         ^~~~~~~~~
      |                                         pWidget
../hiro/core/../gtk/widget/tab-frame.cpp:215:28: error: 'GTK_NOTEBOOK' was not declared in this scope
  215 |   gtk_notebook_append_page(GTK_NOTEBOOK(gtkWidget), tab.child, tab.container);
      |                            ^~~~~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:215:57: error: 'struct hiro::pTabFrame::Tab' has no member named 'child'
  215 |   gtk_notebook_append_page(GTK_NOTEBOOK(gtkWidget), tab.child, tab.container);
      |                                                         ^~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:215:68: error: 'struct hiro::pTabFrame::Tab' has no member named 'container'
  215 |   gtk_notebook_append_page(GTK_NOTEBOOK(gtkWidget), tab.child, tab.container);
      |                                                                    ^~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:215:3: error: 'gtk_notebook_append_page' was not declared in this scope
  215 |   gtk_notebook_append_page(GTK_NOTEBOOK(gtkWidget), tab.child, tab.container);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp: In member function 'void hiro::pTabFrame::_synchronizeTab(unsigned int)':
../hiro/core/../gtk/widget/tab-frame.cpp:232:30: error: 'struct hiro::pTabFrame::Tab' has no member named 'close'
  232 |   gtk_widget_set_visible(tab.close, item->closable());
      |                              ^~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:232:3: error: 'gtk_widget_set_visible' was not declared in this scope
  232 |   gtk_widget_set_visible(tab.close, item->closable());
      |   ^~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:235:19: error: 'CreatePixbuf' was not declared in this scope
  235 |     auto pixbuf = CreatePixbuf(icon, true);
      |                   ^~~~~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:236:45: error: 'struct hiro::pTabFrame::Tab' has no member named 'image'
  236 |     gtk_image_set_from_pixbuf(GTK_IMAGE(tab.image), pixbuf);
      |                                             ^~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:236:31: error: 'GTK_IMAGE' was not declared in this scope
  236 |     gtk_image_set_from_pixbuf(GTK_IMAGE(tab.image), pixbuf);
      |                               ^~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:236:5: error: 'gtk_image_set_from_pixbuf' was not declared in this scope
  236 |     gtk_image_set_from_pixbuf(GTK_IMAGE(tab.image), pixbuf);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:238:35: error: 'struct hiro::pTabFrame::Tab' has no member named 'image'
  238 |     gtk_image_clear(GTK_IMAGE(tab.image));
      |                                   ^~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:238:21: error: 'GTK_IMAGE' was not declared in this scope
  238 |     gtk_image_clear(GTK_IMAGE(tab.image));
      |                     ^~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:238:5: error: 'gtk_image_clear' was not declared in this scope
  238 |     gtk_image_clear(GTK_IMAGE(tab.image));
      |     ^~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:245:36: error: 'struct hiro::pTabFrame::Tab' has no member named 'title'
  245 |   gtk_label_set_text(GTK_LABEL(tab.title), text);
      |                                    ^~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:245:22: error: 'GTK_LABEL' was not declared in this scope
  245 |   gtk_label_set_text(GTK_LABEL(tab.title), text);
      |                      ^~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:245:3: error: 'gtk_label_set_text' was not declared in this scope
  245 |   gtk_label_set_text(GTK_LABEL(tab.title), text);
      |   ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp: In member function 'unsigned int hiro::pTabFrame::_tabHeight()':
../hiro/core/../gtk/widget/tab-frame.cpp:253:5: error: 'GtkAllocation' was not declared in this scope
  253 |     GtkAllocation imageAllocation, titleAllocation, closeAllocation;
      |     ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:254:39: error: 'struct hiro::pTabFrame::Tab' has no member named 'image'
  254 |     gtk_widget_get_allocation(tabs[n].image, &imageAllocation);
      |                                       ^~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:254:47: error: 'imageAllocation' was not declared in this scope
  254 |     gtk_widget_get_allocation(tabs[n].image, &imageAllocation);
      |                                               ^~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:254:5: error: 'gtk_widget_get_allocation' was not declared in this scope
  254 |     gtk_widget_get_allocation(tabs[n].image, &imageAllocation);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:255:39: error: 'struct hiro::pTabFrame::Tab' has no member named 'title'
  255 |     gtk_widget_get_allocation(tabs[n].title, &titleAllocation);
      |                                       ^~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:255:47: error: 'titleAllocation' was not declared in this scope
  255 |     gtk_widget_get_allocation(tabs[n].title, &titleAllocation);
      |                                               ^~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:256:39: error: 'struct hiro::pTabFrame::Tab' has no member named 'close'
  256 |     gtk_widget_get_allocation(tabs[n].close, &closeAllocation);
      |                                       ^~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:256:47: error: 'closeAllocation' was not declared in this scope
  256 |     gtk_widget_get_allocation(tabs[n].close, &closeAllocation);
      |                                               ^~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp: In member function 'unsigned int hiro::pTabFrame::_tabWidth()':
../hiro/core/../gtk/widget/tab-frame.cpp:270:5: error: 'GtkAllocation' was not declared in this scope
  270 |     GtkAllocation imageAllocation, titleAllocation, closeAllocation;
      |     ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:271:39: error: 'struct hiro::pTabFrame::Tab' has no member named 'image'
  271 |     gtk_widget_get_allocation(tabs[n].image, &imageAllocation);
      |                                       ^~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:271:47: error: 'imageAllocation' was not declared in this scope
  271 |     gtk_widget_get_allocation(tabs[n].image, &imageAllocation);
      |                                               ^~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:271:5: error: 'gtk_widget_get_allocation' was not declared in this scope
  271 |     gtk_widget_get_allocation(tabs[n].image, &imageAllocation);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:272:39: error: 'struct hiro::pTabFrame::Tab' has no member named 'title'
  272 |     gtk_widget_get_allocation(tabs[n].title, &titleAllocation);
      |                                       ^~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:272:47: error: 'titleAllocation' was not declared in this scope
  272 |     gtk_widget_get_allocation(tabs[n].title, &titleAllocation);
      |                                               ^~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:273:39: error: 'struct hiro::pTabFrame::Tab' has no member named 'close'
  273 |     gtk_widget_get_allocation(tabs[n].close, &closeAllocation);
      |                                       ^~~~~
../hiro/core/../gtk/widget/tab-frame.cpp:273:47: error: 'closeAllocation' was not declared in this scope
  273 |     gtk_widget_get_allocation(tabs[n].close, &closeAllocation);
      |                                               ^~~~~~~~~~~~~~~
In file included from ../hiro/core/../gtk/platform.cpp:54:
../hiro/core/../gtk/widget/table-view.cpp: At global scope:
../hiro/core/../gtk/widget/table-view.cpp:5:32: error: 'GtkTreeView' was not declared in this scope; did you mean 'wTreeView'?
    5 | static auto TableView_activate(GtkTreeView*, GtkTreePath* gtkRow, GtkTreeViewColumn* gtkColumn, pTableView* p) -> void { return p->_doActivate(gtkRow, gtkColumn); }
      |                                ^~~~~~~~~~~
      |                                wTreeView
../hiro/core/../gtk/widget/table-view.cpp:5:44: error: expected primary-expression before ',' token
    5 | static auto TableView_activate(GtkTreeView*, GtkTreePath* gtkRow, GtkTreeViewColumn* gtkColumn, pTableView* p) -> void { return p->_doActivate(gtkRow, gtkColumn); }
      |                                            ^
../hiro/core/../gtk/widget/table-view.cpp:5:46: error: 'GtkTreePath' was not declared in this scope
    5 | static auto TableView_activate(GtkTreeView*, GtkTreePath* gtkRow, GtkTreeViewColumn* gtkColumn, pTableView* p) -> void { return p->_doActivate(gtkRow, gtkColumn); }
      |                                              ^~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:5:59: error: 'gtkRow' was not declared in this scope
    5 | static auto TableView_activate(GtkTreeView*, GtkTreePath* gtkRow, GtkTreeViewColumn* gtkColumn, pTableView* p) -> void { return p->_doActivate(gtkRow, gtkColumn); }
      |                                                           ^~~~~~
../hiro/core/../gtk/widget/table-view.cpp:5:67: error: 'GtkTreeViewColumn' was not declared in this scope
    5 | static auto TableView_activate(GtkTreeView*, GtkTreePath* gtkRow, GtkTreeViewColumn* gtkColumn, pTableView* p) -> void { return p->_doActivate(gtkRow, gtkColumn); }
      |                                                                   ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:5:86: error: 'gtkColumn' was not declared in this scope
    5 | static auto TableView_activate(GtkTreeView*, GtkTreePath* gtkRow, GtkTreeViewColumn* gtkColumn, pTableView* p) -> void { return p->_doActivate(gtkRow, gtkColumn); }
      |                                                                                      ^~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:5:107: error: expected primary-expression before '*' token
    5 | static auto TableView_activate(GtkTreeView*, GtkTreePath* gtkRow, GtkTreeViewColumn* gtkColumn, pTableView* p) -> void { return p->_doActivate(gtkRow, gtkColumn); }
      |                                                                                                           ^
../hiro/core/../gtk/widget/table-view.cpp:5:109: error: 'p' was not declared in this scope
    5 | static auto TableView_activate(GtkTreeView*, GtkTreePath* gtkRow, GtkTreeViewColumn* gtkColumn, pTableView* p) -> void { return p->_doActivate(gtkRow, gtkColumn); }
      |                                                                                                             ^
../hiro/core/../gtk/widget/table-view.cpp:5:110: error: expression list treated as compound expression in initializer [-fpermissive]
    5 | static auto TableView_activate(GtkTreeView*, GtkTreePath* gtkRow, GtkTreeViewColumn* gtkColumn, pTableView* p) -> void { return p->_doActivate(gtkRow, gtkColumn); }
      |                                                                                                              ^
../hiro/core/../gtk/widget/table-view.cpp:5:112: error: expected ',' or ';' before '->' token
    5 | static auto TableView_activate(GtkTreeView*, GtkTreePath* gtkRow, GtkTreeViewColumn* gtkColumn, pTableView* p) -> void { return p->_doActivate(gtkRow, gtkColumn); }
      |                                                                                                                ^~
../hiro/core/../gtk/widget/table-view.cpp:6:35: error: 'GtkTreeView' was not declared in this scope; did you mean 'wTreeView'?
    6 | static auto TableView_buttonEvent(GtkTreeView* treeView, GdkEventButton* event, pTableView* p) -> signed { return p->_doEvent(event); }
      |                                   ^~~~~~~~~~~
      |                                   wTreeView
../hiro/core/../gtk/widget/table-view.cpp:6:48: error: 'treeView' was not declared in this scope; did you mean 'TreeView'?
    6 | static auto TableView_buttonEvent(GtkTreeView* treeView, GdkEventButton* event, pTableView* p) -> signed { return p->_doEvent(event); }
      |                                                ^~~~~~~~
      |                                                TreeView
../hiro/core/../gtk/widget/table-view.cpp:6:58: error: 'GdkEventButton' was not declared in this scope
    6 | static auto TableView_buttonEvent(GtkTreeView* treeView, GdkEventButton* event, pTableView* p) -> signed { return p->_doEvent(event); }
      |                                                          ^~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:6:74: error: 'event' was not declared in this scope; did you mean 'servent'?
    6 | static auto TableView_buttonEvent(GtkTreeView* treeView, GdkEventButton* event, pTableView* p) -> signed { return p->_doEvent(event); }
      |                                                                          ^~~~~
      |                                                                          servent
../hiro/core/../gtk/widget/table-view.cpp:6:91: error: expected primary-expression before '*' token
    6 | static auto TableView_buttonEvent(GtkTreeView* treeView, GdkEventButton* event, pTableView* p) -> signed { return p->_doEvent(event); }
      |                                                                                           ^
../hiro/core/../gtk/widget/table-view.cpp:6:93: error: 'p' was not declared in this scope
    6 | static auto TableView_buttonEvent(GtkTreeView* treeView, GdkEventButton* event, pTableView* p) -> signed { return p->_doEvent(event); }
      |                                                                                             ^
../hiro/core/../gtk/widget/table-view.cpp:6:94: error: expression list treated as compound expression in initializer [-fpermissive]
    6 | static auto TableView_buttonEvent(GtkTreeView* treeView, GdkEventButton* event, pTableView* p) -> signed { return p->_doEvent(event); }
      |                                                                                              ^
../hiro/core/../gtk/widget/table-view.cpp:6:96: error: expected ',' or ';' before '->' token
    6 | static auto TableView_buttonEvent(GtkTreeView* treeView, GdkEventButton* event, pTableView* p) -> signed { return p->_doEvent(event); }
      |                                                                                                ^~
../hiro/core/../gtk/widget/table-view.cpp:7:30: error: 'GtkTreeSelection' was not declared in this scope
    7 | static auto TableView_change(GtkTreeSelection*, pTableView* p) -> void { return p->_doChange(); }
      |                              ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:7:47: error: expected primary-expression before ',' token
    7 | static auto TableView_change(GtkTreeSelection*, pTableView* p) -> void { return p->_doChange(); }
      |                                               ^
../hiro/core/../gtk/widget/table-view.cpp:7:59: error: expected primary-expression before '*' token
    7 | static auto TableView_change(GtkTreeSelection*, pTableView* p) -> void { return p->_doChange(); }
      |                                                           ^
../hiro/core/../gtk/widget/table-view.cpp:7:61: error: 'p' was not declared in this scope
    7 | static auto TableView_change(GtkTreeSelection*, pTableView* p) -> void { return p->_doChange(); }
      |                                                             ^
../hiro/core/../gtk/widget/table-view.cpp:7:62: error: expression list treated as compound expression in initializer [-fpermissive]
    7 | static auto TableView_change(GtkTreeSelection*, pTableView* p) -> void { return p->_doChange(); }
      |                                                              ^
../hiro/core/../gtk/widget/table-view.cpp:7:64: error: expected ',' or ';' before '->' token
    7 | static auto TableView_change(GtkTreeSelection*, pTableView* p) -> void { return p->_doChange(); }
      |                                                                ^~
../hiro/core/../gtk/widget/table-view.cpp:8:28: error: 'GtkCellRendererText' was not declared in this scope
    8 | static auto TableView_edit(GtkCellRendererText* renderer, const char* path, const char* text, pTableView* p) -> void { return p->_doEdit(renderer, path, text); }
      |                            ^~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:8:49: error: 'renderer' was not declared in this scope
    8 | static auto TableView_edit(GtkCellRendererText* renderer, const char* path, const char* text, pTableView* p) -> void { return p->_doEdit(renderer, path, text); }
      |                                                 ^~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:8:59: error: expected primary-expression before 'const'
    8 | static auto TableView_edit(GtkCellRendererText* renderer, const char* path, const char* text, pTableView* p) -> void { return p->_doEdit(renderer, path, text); }
      |                                                           ^~~~~
../hiro/core/../gtk/widget/table-view.cpp:8:77: error: expected primary-expression before 'const'
    8 | static auto TableView_edit(GtkCellRendererText* renderer, const char* path, const char* text, pTableView* p) -> void { return p->_doEdit(renderer, path, text); }
      |                                                                             ^~~~~
../hiro/core/../gtk/widget/table-view.cpp:8:105: error: expected primary-expression before '*' token
    8 | static auto TableView_edit(GtkCellRendererText* renderer, const char* path, const char* text, pTableView* p) -> void { return p->_doEdit(renderer, path, text); }
      |                                                                                                         ^
../hiro/core/../gtk/widget/table-view.cpp:8:107: error: 'p' was not declared in this scope
    8 | static auto TableView_edit(GtkCellRendererText* renderer, const char* path, const char* text, pTableView* p) -> void { return p->_doEdit(renderer, path, text); }
      |                                                                                                           ^
../hiro/core/../gtk/widget/table-view.cpp:8:108: error: expression list treated as compound expression in initializer [-fpermissive]
    8 | static auto TableView_edit(GtkCellRendererText* renderer, const char* path, const char* text, pTableView* p) -> void { return p->_doEdit(renderer, path, text); }
      |                                                                                                            ^
../hiro/core/../gtk/widget/table-view.cpp:8:110: error: expected ',' or ';' before '->' token
    8 | static auto TableView_edit(GtkCellRendererText* renderer, const char* path, const char* text, pTableView* p) -> void { return p->_doEdit(renderer, path, text); }
      |                                                                                                              ^~
../hiro/core/../gtk/widget/table-view.cpp:9:38: error: 'GtkTreeViewColumn' was not declared in this scope
    9 | static auto TableView_headerActivate(GtkTreeViewColumn* column, pTableView* p) -> void { return p->_doHeaderActivate(column); }
      |                                      ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:9:57: error: 'column' was not declared in this scope
    9 | static auto TableView_headerActivate(GtkTreeViewColumn* column, pTableView* p) -> void { return p->_doHeaderActivate(column); }
      |                                                         ^~~~~~
../hiro/core/../gtk/widget/table-view.cpp:9:75: error: expected primary-expression before '*' token
    9 | static auto TableView_headerActivate(GtkTreeViewColumn* column, pTableView* p) -> void { return p->_doHeaderActivate(column); }
      |                                                                           ^
../hiro/core/../gtk/widget/table-view.cpp:9:77: error: 'p' was not declared in this scope
    9 | static auto TableView_headerActivate(GtkTreeViewColumn* column, pTableView* p) -> void { return p->_doHeaderActivate(column); }
      |                                                                             ^
../hiro/core/../gtk/widget/table-view.cpp:9:78: error: expression list treated as compound expression in initializer [-fpermissive]
    9 | static auto TableView_headerActivate(GtkTreeViewColumn* column, pTableView* p) -> void { return p->_doHeaderActivate(column); }
      |                                                                              ^
../hiro/core/../gtk/widget/table-view.cpp:9:80: error: expected ',' or ';' before '->' token
    9 | static auto TableView_headerActivate(GtkTreeViewColumn* column, pTableView* p) -> void { return p->_doHeaderActivate(column); }
      |                                                                                ^~
../hiro/core/../gtk/widget/table-view.cpp:10:37: error: 'GtkTreeView' was not declared in this scope; did you mean 'wTreeView'?
   10 | static auto TableView_keyPressEvent(GtkTreeView* treeView, GdkEventKey* event, pTableView* p) -> bool { return p->_doKeyPress(event); }
      |                                     ^~~~~~~~~~~
      |                                     wTreeView
../hiro/core/../gtk/widget/table-view.cpp:10:50: error: 'treeView' was not declared in this scope; did you mean 'TreeView'?
   10 | static auto TableView_keyPressEvent(GtkTreeView* treeView, GdkEventKey* event, pTableView* p) -> bool { return p->_doKeyPress(event); }
      |                                                  ^~~~~~~~
      |                                                  TreeView
../hiro/core/../gtk/widget/table-view.cpp:10:60: error: 'GdkEventKey' was not declared in this scope
   10 | static auto TableView_keyPressEvent(GtkTreeView* treeView, GdkEventKey* event, pTableView* p) -> bool { return p->_doKeyPress(event); }
      |                                                            ^~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:10:73: error: 'event' was not declared in this scope; did you mean 'servent'?
   10 | static auto TableView_keyPressEvent(GtkTreeView* treeView, GdkEventKey* event, pTableView* p) -> bool { return p->_doKeyPress(event); }
      |                                                                         ^~~~~
      |                                                                         servent
../hiro/core/../gtk/widget/table-view.cpp:10:90: error: expected primary-expression before '*' token
   10 | static auto TableView_keyPressEvent(GtkTreeView* treeView, GdkEventKey* event, pTableView* p) -> bool { return p->_doKeyPress(event); }
      |                                                                                          ^
../hiro/core/../gtk/widget/table-view.cpp:10:92: error: 'p' was not declared in this scope
   10 | static auto TableView_keyPressEvent(GtkTreeView* treeView, GdkEventKey* event, pTableView* p) -> bool { return p->_doKeyPress(event); }
      |                                                                                            ^
../hiro/core/../gtk/widget/table-view.cpp:10:93: error: expression list treated as compound expression in initializer [-fpermissive]
   10 | static auto TableView_keyPressEvent(GtkTreeView* treeView, GdkEventKey* event, pTableView* p) -> bool { return p->_doKeyPress(event); }
      |                                                                                             ^
../hiro/core/../gtk/widget/table-view.cpp:10:95: error: expected ',' or ';' before '->' token
   10 | static auto TableView_keyPressEvent(GtkTreeView* treeView, GdkEventKey* event, pTableView* p) -> bool { return p->_doKeyPress(event); }
      |                                                                                               ^~
../hiro/core/../gtk/widget/table-view.cpp:11:38: error: 'GtkWidget' was not declared in this scope; did you mean 'wWidget'?
   11 | static auto TableView_mouseMoveEvent(GtkWidget*, GdkEvent*, pTableView* p) -> signed { return p->_doMouseMove(); }
      |                                      ^~~~~~~~~
      |                                      wWidget
../hiro/core/../gtk/widget/table-view.cpp:11:48: error: expected primary-expression before ',' token
   11 | static auto TableView_mouseMoveEvent(GtkWidget*, GdkEvent*, pTableView* p) -> signed { return p->_doMouseMove(); }
      |                                                ^
../hiro/core/../gtk/widget/table-view.cpp:11:50: error: 'GdkEvent' was not declared in this scope
   11 | static auto TableView_mouseMoveEvent(GtkWidget*, GdkEvent*, pTableView* p) -> signed { return p->_doMouseMove(); }
      |                                                  ^~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:11:59: error: expected primary-expression before ',' token
   11 | static auto TableView_mouseMoveEvent(GtkWidget*, GdkEvent*, pTableView* p) -> signed { return p->_doMouseMove(); }
      |                                                           ^
../hiro/core/../gtk/widget/table-view.cpp:11:71: error: expected primary-expression before '*' token
   11 | static auto TableView_mouseMoveEvent(GtkWidget*, GdkEvent*, pTableView* p) -> signed { return p->_doMouseMove(); }
      |                                                                       ^
../hiro/core/../gtk/widget/table-view.cpp:11:73: error: 'p' was not declared in this scope
   11 | static auto TableView_mouseMoveEvent(GtkWidget*, GdkEvent*, pTableView* p) -> signed { return p->_doMouseMove(); }
      |                                                                         ^
../hiro/core/../gtk/widget/table-view.cpp:11:74: error: expression list treated as compound expression in initializer [-fpermissive]
   11 | static auto TableView_mouseMoveEvent(GtkWidget*, GdkEvent*, pTableView* p) -> signed { return p->_doMouseMove(); }
      |                                                                          ^
../hiro/core/../gtk/widget/table-view.cpp:11:76: error: expected ',' or ';' before '->' token
   11 | static auto TableView_mouseMoveEvent(GtkWidget*, GdkEvent*, pTableView* p) -> signed { return p->_doMouseMove(); }
      |                                                                            ^~
../hiro/core/../gtk/widget/table-view.cpp:12:29: error: 'GtkTreeView' was not declared in this scope; did you mean 'wTreeView'?
   12 | static auto TableView_popup(GtkTreeView*, pTableView* p) -> void { return p->_doContext(); }
      |                             ^~~~~~~~~~~
      |                             wTreeView
../hiro/core/../gtk/widget/table-view.cpp:12:41: error: expected primary-expression before ',' token
   12 | static auto TableView_popup(GtkTreeView*, pTableView* p) -> void { return p->_doContext(); }
      |                                         ^
../hiro/core/../gtk/widget/table-view.cpp:12:53: error: expected primary-expression before '*' token
   12 | static auto TableView_popup(GtkTreeView*, pTableView* p) -> void { return p->_doContext(); }
      |                                                     ^
../hiro/core/../gtk/widget/table-view.cpp:12:55: error: 'p' was not declared in this scope
   12 | static auto TableView_popup(GtkTreeView*, pTableView* p) -> void { return p->_doContext(); }
      |                                                       ^
../hiro/core/../gtk/widget/table-view.cpp:12:56: error: expression list treated as compound expression in initializer [-fpermissive]
   12 | static auto TableView_popup(GtkTreeView*, pTableView* p) -> void { return p->_doContext(); }
      |                                                        ^
../hiro/core/../gtk/widget/table-view.cpp:12:58: error: expected ',' or ';' before '->' token
   12 | static auto TableView_popup(GtkTreeView*, pTableView* p) -> void { return p->_doContext(); }
      |                                                          ^~
../hiro/core/../gtk/widget/table-view.cpp:14:32: error: 'GtkTreeViewColumn' was not declared in this scope
   14 | static auto TableView_dataFunc(GtkTreeViewColumn* column, GtkCellRenderer* renderer, GtkTreeModel* model, GtkTreeIter* iter, pTableView* p) -> void { return p->_doDataFunc(column, renderer, iter); }
      |                                ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:14:51: error: 'column' was not declared in this scope
   14 | static auto TableView_dataFunc(GtkTreeViewColumn* column, GtkCellRenderer* renderer, GtkTreeModel* model, GtkTreeIter* iter, pTableView* p) -> void { return p->_doDataFunc(column, renderer, iter); }
      |                                                   ^~~~~~
../hiro/core/../gtk/widget/table-view.cpp:14:59: error: 'GtkCellRenderer' was not declared in this scope
   14 | static auto TableView_dataFunc(GtkTreeViewColumn* column, GtkCellRenderer* renderer, GtkTreeModel* model, GtkTreeIter* iter, pTableView* p) -> void { return p->_doDataFunc(column, renderer, iter); }
      |                                                           ^~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:14:76: error: 'renderer' was not declared in this scope
   14 | static auto TableView_dataFunc(GtkTreeViewColumn* column, GtkCellRenderer* renderer, GtkTreeModel* model, GtkTreeIter* iter, pTableView* p) -> void { return p->_doDataFunc(column, renderer, iter); }
      |                                                                            ^~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:14:86: error: 'GtkTreeModel' was not declared in this scope
   14 | static auto TableView_dataFunc(GtkTreeViewColumn* column, GtkCellRenderer* renderer, GtkTreeModel* model, GtkTreeIter* iter, pTableView* p) -> void { return p->_doDataFunc(column, renderer, iter); }
      |                                                                                      ^~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:14:100: error: 'model' was not declared in this scope; did you mean 'modfl'?
   14 | static auto TableView_dataFunc(GtkTreeViewColumn* column, GtkCellRenderer* renderer, GtkTreeModel* model, GtkTreeIter* iter, pTableView* p) -> void { return p->_doDataFunc(column, renderer, iter); }
      |                                                                                                    ^~~~~
      |                                                                                                    modfl
../hiro/core/../gtk/widget/table-view.cpp:14:107: error: 'GtkTreeIter' was not declared in this scope
   14 | static auto TableView_dataFunc(GtkTreeViewColumn* column, GtkCellRenderer* renderer, GtkTreeModel* model, GtkTreeIter* iter, pTableView* p) -> void { return p->_doDataFunc(column, renderer, iter); }
      |                                                                                                           ^~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:14:120: error: 'iter' was not declared in this scope
   14 | static auto TableView_dataFunc(GtkTreeViewColumn* column, GtkCellRenderer* renderer, GtkTreeModel* model, GtkTreeIter* iter, pTableView* p) -> void { return p->_doDataFunc(column, renderer, iter); }
      |                                                                                                                        ^~~~
../hiro/core/../gtk/widget/table-view.cpp:14:136: error: expected primary-expression before '*' token
   14 | static auto TableView_dataFunc(GtkTreeViewColumn* column, GtkCellRenderer* renderer, GtkTreeModel* model, GtkTreeIter* iter, pTableView* p) -> void { return p->_doDataFunc(column, renderer, iter); }
      |                                                                                                                                        ^
../hiro/core/../gtk/widget/table-view.cpp:14:138: error: 'p' was not declared in this scope
   14 | static auto TableView_dataFunc(GtkTreeViewColumn* column, GtkCellRenderer* renderer, GtkTreeModel* model, GtkTreeIter* iter, pTableView* p) -> void { return p->_doDataFunc(column, renderer, iter); }
      |                                                                                                                                          ^
../hiro/core/../gtk/widget/table-view.cpp:14:139: error: expression list treated as compound expression in initializer [-fpermissive]
   14 | static auto TableView_dataFunc(GtkTreeViewColumn* column, GtkCellRenderer* renderer, GtkTreeModel* model, GtkTreeIter* iter, pTableView* p) -> void { return p->_doDataFunc(column, renderer, iter); }
      |                                                                                                                                           ^
../hiro/core/../gtk/widget/table-view.cpp:14:141: error: expected ',' or ';' before '->' token
   14 | static auto TableView_dataFunc(GtkTreeViewColumn* column, GtkCellRenderer* renderer, GtkTreeModel* model, GtkTreeIter* iter, pTableView* p) -> void { return p->_doDataFunc(column, renderer, iter); }
      |                                                                                                                                             ^~
../hiro/core/../gtk/widget/table-view.cpp:15:30: error: 'GtkCellRendererToggle' was not declared in this scope
   15 | static auto TableView_toggle(GtkCellRendererToggle* toggle, const char* path, pTableView* p) -> void { return p->_doToggle(toggle, path); }
      |                              ^~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:15:53: error: 'toggle' was not declared in this scope
   15 | static auto TableView_toggle(GtkCellRendererToggle* toggle, const char* path, pTableView* p) -> void { return p->_doToggle(toggle, path); }
      |                                                     ^~~~~~
../hiro/core/../gtk/widget/table-view.cpp:15:61: error: expected primary-expression before 'const'
   15 | static auto TableView_toggle(GtkCellRendererToggle* toggle, const char* path, pTableView* p) -> void { return p->_doToggle(toggle, path); }
      |                                                             ^~~~~
../hiro/core/../gtk/widget/table-view.cpp:15:89: error: expected primary-expression before '*' token
   15 | static auto TableView_toggle(GtkCellRendererToggle* toggle, const char* path, pTableView* p) -> void { return p->_doToggle(toggle, path); }
      |                                                                                         ^
../hiro/core/../gtk/widget/table-view.cpp:15:91: error: 'p' was not declared in this scope
   15 | static auto TableView_toggle(GtkCellRendererToggle* toggle, const char* path, pTableView* p) -> void { return p->_doToggle(toggle, path); }
      |                                                                                           ^
../hiro/core/../gtk/widget/table-view.cpp:15:92: error: expression list treated as compound expression in initializer [-fpermissive]
   15 | static auto TableView_toggle(GtkCellRendererToggle* toggle, const char* path, pTableView* p) -> void { return p->_doToggle(toggle, path); }
      |                                                                                            ^
../hiro/core/../gtk/widget/table-view.cpp:15:94: error: expected ',' or ';' before '->' token
   15 | static auto TableView_toggle(GtkCellRendererToggle* toggle, const char* path, pTableView* p) -> void { return p->_doToggle(toggle, path); }
      |                                                                                              ^~
../hiro/core/../gtk/widget/table-view.cpp:17:31: error: 'GtkTreeView' was not declared in this scope; did you mean 'wTreeView'?
   17 | static auto TableView_realize(GtkTreeView*, pTableView* p) -> void {
      |                               ^~~~~~~~~~~
      |                               wTreeView
../hiro/core/../gtk/widget/table-view.cpp:17:43: error: expected primary-expression before ',' token
   17 | static auto TableView_realize(GtkTreeView*, pTableView* p) -> void {
      |                                           ^
../hiro/core/../gtk/widget/table-view.cpp:17:55: error: expected primary-expression before '*' token
   17 | static auto TableView_realize(GtkTreeView*, pTableView* p) -> void {
      |                                                       ^
../hiro/core/../gtk/widget/table-view.cpp:17:57: error: 'p' was not declared in this scope
   17 | static auto TableView_realize(GtkTreeView*, pTableView* p) -> void {
      |                                                         ^
../hiro/core/../gtk/widget/table-view.cpp:17:58: error: expression list treated as compound expression in initializer [-fpermissive]
   17 | static auto TableView_realize(GtkTreeView*, pTableView* p) -> void {
      |                                                          ^
../hiro/core/../gtk/widget/table-view.cpp:17:60: error: expected ',' or ';' before '->' token
   17 | static auto TableView_realize(GtkTreeView*, pTableView* p) -> void {
      |                                                            ^~
../hiro/core/../gtk/widget/table-view.cpp: In member function 'virtual void hiro::pTableView::construct()':
../hiro/core/../gtk/widget/table-view.cpp:27:3: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   27 |   gtkWidget = gtk_scrolled_window_new(0, 0);
      |   ^~~~~~~~~
      |   pWidget
../hiro/core/../gtk/widget/table-view.cpp:27:15: error: 'gtk_scrolled_window_new' was not declared in this scope
   27 |   gtkWidget = gtk_scrolled_window_new(0, 0);
      |               ^~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:28:3: error: 'gtkScrolledWindow' was not declared in this scope
   28 |   gtkScrolledWindow = GTK_SCROLLED_WINDOW(gtkWidget);
      |   ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:28:23: error: 'GTK_SCROLLED_WINDOW' was not declared in this scope
   28 |   gtkScrolledWindow = GTK_SCROLLED_WINDOW(gtkWidget);
      |                       ^~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:29:53: error: 'GTK_POLICY_AUTOMATIC' was not declared in this scope
   29 |   gtk_scrolled_window_set_policy(gtkScrolledWindow, GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
      |                                                     ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:29:3: error: 'gtk_scrolled_window_set_policy' was not declared in this scope
   29 |   gtk_scrolled_window_set_policy(gtkScrolledWindow, GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:30:58: error: 'GTK_SHADOW_ETCHED_IN' was not declared in this scope
   30 |   gtk_scrolled_window_set_shadow_type(gtkScrolledWindow, GTK_SHADOW_ETCHED_IN);
      |                                                          ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:30:3: error: 'gtk_scrolled_window_set_shadow_type' was not declared in this scope
   30 |   gtk_scrolled_window_set_shadow_type(gtkScrolledWindow, GTK_SHADOW_ETCHED_IN);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:32:3: error: 'gtkWidgetChild' was not declared in this scope
   32 |   gtkWidgetChild = gtk_tree_view_new();
      |   ^~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:32:20: error: 'gtk_tree_view_new' was not declared in this scope
   32 |   gtkWidgetChild = gtk_tree_view_new();
      |                    ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:33:3: error: 'gtkTreeView' was not declared in this scope; did you mean 'wTreeView'?
   33 |   gtkTreeView = GTK_TREE_VIEW(gtkWidgetChild);
      |   ^~~~~~~~~~~
      |   wTreeView
../hiro/core/../gtk/widget/table-view.cpp:33:17: error: 'GTK_TREE_VIEW' was not declared in this scope
   33 |   gtkTreeView = GTK_TREE_VIEW(gtkWidgetChild);
      |                 ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:34:3: error: 'gtkTreeSelection' was not declared in this scope
   34 |   gtkTreeSelection = gtk_tree_view_get_selection(gtkTreeView);
      |   ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:34:22: error: 'gtk_tree_view_get_selection' was not declared in this scope
   34 |   gtkTreeSelection = gtk_tree_view_get_selection(gtkTreeView);
      |                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:35:21: error: 'GTK_CONTAINER' was not declared in this scope
   35 |   gtk_container_add(GTK_CONTAINER(gtkWidget), gtkWidgetChild);
      |                     ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:35:3: error: 'gtk_container_add' was not declared in this scope
   35 |   gtk_container_add(GTK_CONTAINER(gtkWidget), gtkWidgetChild);
      |   ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:36:3: error: 'gtk_tree_view_set_rubber_banding' was not declared in this scope
   36 |   gtk_tree_view_set_rubber_banding(gtkTreeView, true);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:38:3: error: 'gtk_widget_show' was not declared in this scope
   38 |   gtk_widget_show(gtkWidgetChild);
      |   ^~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:48:20: error: 'G_OBJECT' was not declared in this scope
   48 |   g_signal_connect(G_OBJECT(gtkTreeView), "button-press-event", G_CALLBACK(TableView_buttonEvent), (gpointer)this);
      |                    ^~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:48:65: error: 'G_CALLBACK' was not declared in this scope
   48 |   g_signal_connect(G_OBJECT(gtkTreeView), "button-press-event", G_CALLBACK(TableView_buttonEvent), (gpointer)this);
      |                                                                 ^~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:48:101: error: 'gpointer' was not declared in this scope
   48 |   g_signal_connect(G_OBJECT(gtkTreeView), "button-press-event", G_CALLBACK(TableView_buttonEvent), (gpointer)this);
      |                                                                                                     ^~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:48:3: error: 'g_signal_connect' was not declared in this scope
   48 |   g_signal_connect(G_OBJECT(gtkTreeView), "button-press-event", G_CALLBACK(TableView_buttonEvent), (gpointer)this);
      |   ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:49:112: error: expected ')' before 'this'
   49 |   g_signal_connect(G_OBJECT(gtkTreeView), "button-release-event", G_CALLBACK(TableView_buttonEvent), (gpointer)this);
      |                   ~                                                                                            ^~~~
      |                                                                                                                )
../hiro/core/../gtk/widget/table-view.cpp:50:109: error: expected ')' before 'this'
   50 |   g_signal_connect(G_OBJECT(gtkTreeView), "key-press-event", G_CALLBACK(TableView_keyPressEvent), (gpointer)this);
      |                   ~                                                                                         ^~~~
      |                                                                                                             )
../hiro/core/../gtk/widget/table-view.cpp:51:114: error: expected ')' before 'this'
   51 |   g_signal_connect(G_OBJECT(gtkTreeView), "motion-notify-event", G_CALLBACK(TableView_mouseMoveEvent), (gpointer)this);
      |                   ~                                                                                              ^~~~
      |                                                                                                                  )
../hiro/core/../gtk/widget/table-view.cpp:52:96: error: expected ')' before 'this'
   52 |   g_signal_connect(G_OBJECT(gtkTreeView), "popup-menu", G_CALLBACK(TableView_popup), (gpointer)this);
      |                   ~                                                                            ^~~~
      |                                                                                                )
../hiro/core/../gtk/widget/table-view.cpp:53:95: error: expected ')' before 'this'
   53 |   g_signal_connect(G_OBJECT(gtkTreeView), "realize", G_CALLBACK(TableView_realize), (gpointer)this);
      |                   ~                                                                           ^~~~
      |                                                                                               )
../hiro/core/../gtk/widget/table-view.cpp:54:102: error: expected ')' before 'this'
   54 |   g_signal_connect(G_OBJECT(gtkTreeView), "row-activated", G_CALLBACK(TableView_activate), (gpointer)this);
      |                   ~                                                                                  ^~~~
      |                                                                                                      )
../hiro/core/../gtk/widget/table-view.cpp:55:99: error: expected ')' before 'this'
   55 |   g_signal_connect(G_OBJECT(gtkTreeSelection), "changed", G_CALLBACK(TableView_change), (gpointer)this);
      |                   ~                                                                               ^~~~
      |                                                                                                   )
../hiro/core/../gtk/widget/table-view.cpp:58:3: error: 'gtkEntry' was not declared in this scope
   58 |   gtkEntry = (GtkEntry*)gtk_entry_new();
      |   ^~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:58:15: error: 'GtkEntry' was not declared in this scope
   58 |   gtkEntry = (GtkEntry*)gtk_entry_new();
      |               ^~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:58:24: error: expected primary-expression before ')' token
   58 |   gtkEntry = (GtkEntry*)gtk_entry_new();
      |                        ^
../hiro/core/../gtk/widget/table-view.cpp:59:3: error: 'gtk_tree_view_set_search_entry' was not declared in this scope
   59 |   gtk_tree_view_set_search_entry(gtkTreeView, gtkEntry);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp: In member function 'virtual void hiro::pTableView::destruct()':
../hiro/core/../gtk/widget/table-view.cpp:65:33: error: 'gtkEntry' was not declared in this scope
   65 |   gtk_widget_destroy(GTK_WIDGET(gtkEntry));
      |                                 ^~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:65:22: error: 'GTK_WIDGET' was not declared in this scope
   65 |   gtk_widget_destroy(GTK_WIDGET(gtkEntry));
      |                      ^~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:65:3: error: 'gtk_widget_destroy' was not declared in this scope
   65 |   gtk_widget_destroy(GTK_WIDGET(gtkEntry));
      |   ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:66:22: error: 'gtkWidgetChild' was not declared in this scope
   66 |   gtk_widget_destroy(gtkWidgetChild);
      |                      ^~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:67:22: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   67 |   gtk_widget_destroy(gtkWidget);
      |                      ^~~~~~~~~
      |                      pWidget
../hiro/core/../gtk/widget/table-view.cpp: In member function 'virtual bool hiro::pTableView::focused() const':
../hiro/core/../gtk/widget/table-view.cpp:78:42: error: 'gtkTreeView' was not declared in this scope; did you mean 'wTreeView'?
   78 |   return gtk_widget_has_focus(GTK_WIDGET(gtkTreeView));
      |                                          ^~~~~~~~~~~
      |                                          wTreeView
../hiro/core/../gtk/widget/table-view.cpp:78:31: error: 'GTK_WIDGET' was not declared in this scope
   78 |   return gtk_widget_has_focus(GTK_WIDGET(gtkTreeView));
      |                               ^~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:78:10: error: 'gtk_widget_has_focus' was not declared in this scope
   78 |   return gtk_widget_has_focus(GTK_WIDGET(gtkTreeView));
      |          ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp: In member function 'void hiro::pTableView::resizeColumns()':
../hiro/core/../gtk/widget/table-view.cpp:102:58: error: 'gtkScrolledWindow' was not declared in this scope
  102 |   if(auto scrollBar = gtk_scrolled_window_get_vscrollbar(gtkScrolledWindow)) {
      |                                                          ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:102:23: error: 'gtk_scrolled_window_get_vscrollbar' was not declared in this scope
  102 |   if(auto scrollBar = gtk_scrolled_window_get_vscrollbar(gtkScrolledWindow)) {
      |                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:103:5: error: 'GtkAllocation' was not declared in this scope
  103 |     GtkAllocation allocation;
      |     ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:104:43: error: 'allocation' was not declared in this scope
  104 |     gtk_widget_get_allocation(scrollBar, &allocation);
      |                                           ^~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:104:5: error: 'gtk_widget_get_allocation' was not declared in this scope
  104 |     gtk_widget_get_allocation(scrollBar, &allocation);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:105:8: error: 'gtk_widget_get_visible' was not declared in this scope
  105 |     if(gtk_widget_get_visible(scrollBar)) maximumWidth -= allocation.width;
      |        ^~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:117:52: error: 'struct hiro::pTableViewColumn' has no member named 'gtkColumn'
  117 |       gtk_tree_view_column_set_fixed_width(column->gtkColumn, width);
      |                                                    ^~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:117:7: error: 'gtk_tree_view_column_set_fixed_width' was not declared in this scope
  117 |       gtk_tree_view_column_set_fixed_width(column->gtkColumn, width);
      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp: In member function 'void hiro::pTableView::setBackgroundColor(hiro::Color)':
../hiro/core/../gtk/widget/table-view.cpp:127:3: error: 'GdkColor' was not declared in this scope; did you mean 'Color'?
  127 |   GdkColor gdkColor = CreateColor(color);
      |   ^~~~~~~~
      |   Color
../hiro/core/../gtk/widget/table-view.cpp:128:26: error: 'gtkWidgetChild' was not declared in this scope
  128 |   gtk_widget_modify_base(gtkWidgetChild, GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |                          ^~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:128:42: error: 'GTK_STATE_NORMAL' was not declared in this scope
  128 |   gtk_widget_modify_base(gtkWidgetChild, GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |                                          ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:128:69: error: 'gdkColor' was not declared in this scope; did you mean 'Color'?
  128 |   gtk_widget_modify_base(gtkWidgetChild, GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |                                                                     ^~~~~~~~
      |                                                                     Color
../hiro/core/../gtk/widget/table-view.cpp:128:3: error: 'gtk_widget_modify_base' was not declared in this scope
  128 |   gtk_widget_modify_base(gtkWidgetChild, GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |   ^~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp: In member function 'void hiro::pTableView::setBatchable(bool)':
../hiro/core/../gtk/widget/table-view.cpp:133:31: error: 'gtkTreeSelection' was not declared in this scope
  133 |   gtk_tree_selection_set_mode(gtkTreeSelection, batchable ? GTK_SELECTION_MULTIPLE : GTK_SELECTION_SINGLE);
      |                               ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:133:61: error: 'GTK_SELECTION_MULTIPLE' was not declared in this scope
  133 |   gtk_tree_selection_set_mode(gtkTreeSelection, batchable ? GTK_SELECTION_MULTIPLE : GTK_SELECTION_SINGLE);
      |                                                             ^~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:133:86: error: 'GTK_SELECTION_SINGLE' was not declared in this scope
  133 |   gtk_tree_selection_set_mode(gtkTreeSelection, batchable ? GTK_SELECTION_MULTIPLE : GTK_SELECTION_SINGLE);
      |                                                                                      ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:133:3: error: 'gtk_tree_selection_set_mode' was not declared in this scope
  133 |   gtk_tree_selection_set_mode(gtkTreeSelection, batchable ? GTK_SELECTION_MULTIPLE : GTK_SELECTION_SINGLE);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp: In member function 'void hiro::pTableView::setBordered(bool)':
../hiro/core/../gtk/widget/table-view.cpp:137:32: error: 'gtkTreeView' was not declared in this scope; did you mean 'wTreeView'?
  137 |   gtk_tree_view_set_grid_lines(gtkTreeView, bordered ? GTK_TREE_VIEW_GRID_LINES_BOTH : GTK_TREE_VIEW_GRID_LINES_NONE);
      |                                ^~~~~~~~~~~
      |                                wTreeView
../hiro/core/../gtk/widget/table-view.cpp:137:56: error: 'GTK_TREE_VIEW_GRID_LINES_BOTH' was not declared in this scope
  137 |   gtk_tree_view_set_grid_lines(gtkTreeView, bordered ? GTK_TREE_VIEW_GRID_LINES_BOTH : GTK_TREE_VIEW_GRID_LINES_NONE);
      |                                                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:137:88: error: 'GTK_TREE_VIEW_GRID_LINES_NONE' was not declared in this scope
  137 |   gtk_tree_view_set_grid_lines(gtkTreeView, bordered ? GTK_TREE_VIEW_GRID_LINES_BOTH : GTK_TREE_VIEW_GRID_LINES_NONE);
      |                                                                                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:137:3: error: 'gtk_tree_view_set_grid_lines' was not declared in this scope
  137 |   gtk_tree_view_set_grid_lines(gtkTreeView, bordered ? GTK_TREE_VIEW_GRID_LINES_BOTH : GTK_TREE_VIEW_GRID_LINES_NONE);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp: In member function 'virtual void hiro::pTableView::setFocused()':
../hiro/core/../gtk/widget/table-view.cpp:146:53: error: 'gtkTreeSelection' was not declared in this scope
  146 |     bool selected = gtk_tree_selection_get_selected(gtkTreeSelection, nullptr, nullptr);
      |                                                     ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:146:21: error: 'gtk_tree_selection_get_selected' was not declared in this scope
  146 |     bool selected = gtk_tree_selection_get_selected(gtkTreeSelection, nullptr, nullptr);
      |                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:147:27: error: 'gtkWidgetChild' was not declared in this scope
  147 |     gtk_widget_grab_focus(gtkWidgetChild);
      |                           ^~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:147:5: error: 'gtk_widget_grab_focus' was not declared in this scope
  147 |     gtk_widget_grab_focus(gtkWidgetChild);
      |     ^~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:148:19: error: 'gtk_tree_selection_unselect_all' was not declared in this scope
  148 |     if(!selected) gtk_tree_selection_unselect_all(gtkTreeSelection);
      |                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:150:27: error: 'gtkWidgetChild' was not declared in this scope
  150 |     gtk_widget_grab_focus(gtkWidgetChild);
      |                           ^~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:150:5: error: 'gtk_widget_grab_focus' was not declared in this scope
  150 |     gtk_widget_grab_focus(gtkWidgetChild);
      |     ^~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp: In member function 'void hiro::pTableView::setForegroundColor(hiro::Color)':
../hiro/core/../gtk/widget/table-view.cpp:159:3: error: 'GdkColor' was not declared in this scope; did you mean 'Color'?
  159 |   GdkColor gdkColor = CreateColor(color);
      |   ^~~~~~~~
      |   Color
../hiro/core/../gtk/widget/table-view.cpp:160:26: error: 'gtkWidgetChild' was not declared in this scope
  160 |   gtk_widget_modify_text(gtkWidgetChild, GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |                          ^~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:160:42: error: 'GTK_STATE_NORMAL' was not declared in this scope
  160 |   gtk_widget_modify_text(gtkWidgetChild, GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |                                          ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:160:69: error: 'gdkColor' was not declared in this scope; did you mean 'Color'?
  160 |   gtk_widget_modify_text(gtkWidgetChild, GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |                                                                     ^~~~~~~~
      |                                                                     Color
../hiro/core/../gtk/widget/table-view.cpp:160:3: error: 'gtk_widget_modify_text' was not declared in this scope
  160 |   gtk_widget_modify_text(gtkWidgetChild, GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |   ^~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp: In member function 'void hiro::pTableView::setHeadered(bool)':
../hiro/core/../gtk/widget/table-view.cpp:175:37: error: 'gtkTreeView' was not declared in this scope; did you mean 'wTreeView'?
  175 |   gtk_tree_view_set_headers_visible(gtkTreeView, headered);
      |                                     ^~~~~~~~~~~
      |                                     wTreeView
../hiro/core/../gtk/widget/table-view.cpp:175:3: error: 'gtk_tree_view_set_headers_visible' was not declared in this scope
  175 |   gtk_tree_view_set_headers_visible(gtkTreeView, headered);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp: In member function 'void hiro::pTableView::setSortable(bool)':
../hiro/core/../gtk/widget/table-view.cpp:180:77: error: 'struct hiro::pTableViewColumn' has no member named 'gtkColumn'
  180 |     if(auto self = column->self()) gtk_tree_view_column_set_clickable(self->gtkColumn, sortable);
      |                                                                             ^~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:180:36: error: 'gtk_tree_view_column_set_clickable' was not declared in this scope
  180 |     if(auto self = column->self()) gtk_tree_view_column_set_clickable(self->gtkColumn, sortable);
      |                                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp: In member function 'void hiro::pTableView::_createModel()':
../hiro/core/../gtk/widget/table-view.cpp:221:27: error: 'gtkTreeView' was not declared in this scope; did you mean 'wTreeView'?
  221 |   gtk_tree_view_set_model(gtkTreeView, nullptr);
      |                           ^~~~~~~~~~~
      |                           wTreeView
../hiro/core/../gtk/widget/table-view.cpp:221:3: error: 'gtk_tree_view_set_model' was not declared in this scope
  221 |   gtk_tree_view_set_model(gtkTreeView, nullptr);
      |   ^~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:222:3: error: 'gtkListStore' was not declared in this scope
  222 |   gtkListStore = nullptr;
      |   ^~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:223:3: error: 'gtkTreeModel' was not declared in this scope
  223 |   gtkTreeModel = nullptr;
      |   ^~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:225:10: error: 'GType' was not declared in this scope
  225 |   vector<GType> types;
      |          ^~~~~
../hiro/core/../gtk/widget/table-view.cpp:225:15: error: template argument 1 is invalid
  225 |   vector<GType> types;
      |               ^
../hiro/core/../gtk/widget/table-view.cpp:228:17: error: 'struct hiro::pTableViewColumn' has no member named 'gtkColumn'
  228 |       if(!self->gtkColumn) continue;  //may not have been created yet; or recently destroyed
      |                 ^~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:229:13: error: request for member 'append' in 'types', which is of non-class type 'int'
  229 |       types.append(G_TYPE_BOOLEAN);
      |             ^~~~~~
../hiro/core/../gtk/widget/table-view.cpp:229:20: error: 'G_TYPE_BOOLEAN' was not declared in this scope
  229 |       types.append(G_TYPE_BOOLEAN);
      |                    ^~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:230:13: error: request for member 'append' in 'types', which is of non-class type 'int'
  230 |       types.append(GDK_TYPE_PIXBUF);
      |             ^~~~~~
../hiro/core/../gtk/widget/table-view.cpp:230:20: error: 'GDK_TYPE_PIXBUF' was not declared in this scope
  230 |       types.append(GDK_TYPE_PIXBUF);
      |                    ^~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:231:13: error: request for member 'append' in 'types', which is of non-class type 'int'
  231 |       types.append(G_TYPE_STRING);
      |             ^~~~~~
../hiro/core/../gtk/widget/table-view.cpp:231:20: error: 'G_TYPE_STRING' was not declared in this scope
  231 |       types.append(G_TYPE_STRING);
      |                    ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:236:44: error: request for member 'size' in 'types', which is of non-class type 'int'
  236 |   gtkListStore = gtk_list_store_newv(types.size(), types.data());
      |                                            ^~~~
../hiro/core/../gtk/widget/table-view.cpp:236:58: error: request for member 'data' in 'types', which is of non-class type 'int'
  236 |   gtkListStore = gtk_list_store_newv(types.size(), types.data());
      |                                                          ^~~~
../hiro/core/../gtk/widget/table-view.cpp:236:18: error: 'gtk_list_store_newv' was not declared in this scope
  236 |   gtkListStore = gtk_list_store_newv(types.size(), types.data());
      |                  ^~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:237:18: error: 'GTK_TREE_MODEL' was not declared in this scope
  237 |   gtkTreeModel = GTK_TREE_MODEL(gtkListStore);
      |                  ^~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp: At global scope:
../hiro/core/../gtk/widget/table-view.cpp:241:6: error: 'auto hiro::pTableView::_doActivate' is not a static data member of 'struct hiro::pTableView'
  241 | auto pTableView::_doActivate(GtkTreePath* gtkRow, GtkTreeViewColumn* gtkColumn) -> void {
      |      ^~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:241:30: error: 'GtkTreePath' was not declared in this scope
  241 | auto pTableView::_doActivate(GtkTreePath* gtkRow, GtkTreeViewColumn* gtkColumn) -> void {
      |                              ^~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:241:43: error: 'gtkRow' was not declared in this scope
  241 | auto pTableView::_doActivate(GtkTreePath* gtkRow, GtkTreeViewColumn* gtkColumn) -> void {
      |                                           ^~~~~~
../hiro/core/../gtk/widget/table-view.cpp:241:51: error: 'GtkTreeViewColumn' was not declared in this scope
  241 | auto pTableView::_doActivate(GtkTreePath* gtkRow, GtkTreeViewColumn* gtkColumn) -> void {
      |                                                   ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:241:70: error: 'gtkColumn' was not declared in this scope
  241 | auto pTableView::_doActivate(GtkTreePath* gtkRow, GtkTreeViewColumn* gtkColumn) -> void {
      |                                                                      ^~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:241:79: error: expression list treated as compound expression in initializer [-fpermissive]
  241 | auto pTableView::_doActivate(GtkTreePath* gtkRow, GtkTreeViewColumn* gtkColumn) -> void {
      |                                                                               ^
../hiro/core/../gtk/widget/table-view.cpp:241:81: error: expected ',' or ';' before '->' token
  241 | auto pTableView::_doActivate(GtkTreePath* gtkRow, GtkTreeViewColumn* gtkColumn) -> void {
      |                                                                                 ^~
../hiro/core/../gtk/widget/table-view.cpp:271:6: error: 'auto hiro::pTableView::_doDataFunc' is not a static data member of 'struct hiro::pTableView'
  271 | auto pTableView::_doDataFunc(GtkTreeViewColumn* gtkColumn, GtkCellRenderer* renderer, GtkTreeIter* iter) -> void {
      |      ^~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:271:30: error: 'GtkTreeViewColumn' was not declared in this scope
  271 | auto pTableView::_doDataFunc(GtkTreeViewColumn* gtkColumn, GtkCellRenderer* renderer, GtkTreeIter* iter) -> void {
      |                              ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:271:49: error: 'gtkColumn' was not declared in this scope
  271 | auto pTableView::_doDataFunc(GtkTreeViewColumn* gtkColumn, GtkCellRenderer* renderer, GtkTreeIter* iter) -> void {
      |                                                 ^~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:271:60: error: 'GtkCellRenderer' was not declared in this scope
  271 | auto pTableView::_doDataFunc(GtkTreeViewColumn* gtkColumn, GtkCellRenderer* renderer, GtkTreeIter* iter) -> void {
      |                                                            ^~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:271:77: error: 'renderer' was not declared in this scope
  271 | auto pTableView::_doDataFunc(GtkTreeViewColumn* gtkColumn, GtkCellRenderer* renderer, GtkTreeIter* iter) -> void {
      |                                                                             ^~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:271:87: error: 'GtkTreeIter' was not declared in this scope
  271 | auto pTableView::_doDataFunc(GtkTreeViewColumn* gtkColumn, GtkCellRenderer* renderer, GtkTreeIter* iter) -> void {
      |                                                                                       ^~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:271:100: error: 'iter' was not declared in this scope
  271 | auto pTableView::_doDataFunc(GtkTreeViewColumn* gtkColumn, GtkCellRenderer* renderer, GtkTreeIter* iter) -> void {
      |                                                                                                    ^~~~
../hiro/core/../gtk/widget/table-view.cpp:271:104: error: expression list treated as compound expression in initializer [-fpermissive]
  271 | auto pTableView::_doDataFunc(GtkTreeViewColumn* gtkColumn, GtkCellRenderer* renderer, GtkTreeIter* iter) -> void {
      |                                                                                                        ^
../hiro/core/../gtk/widget/table-view.cpp:271:106: error: expected ',' or ';' before '->' token
  271 | auto pTableView::_doDataFunc(GtkTreeViewColumn* gtkColumn, GtkCellRenderer* renderer, GtkTreeIter* iter) -> void {
      |                                                                                                          ^~
../hiro/core/../gtk/widget/table-view.cpp:319:6: error: 'auto hiro::pTableView::_doEdit' is not a static data member of 'struct hiro::pTableView'
  319 | auto pTableView::_doEdit(GtkCellRendererText* gtkCellRendererText, const char* path, const char* text) -> void {
      |      ^~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:319:26: error: 'GtkCellRendererText' was not declared in this scope
  319 | auto pTableView::_doEdit(GtkCellRendererText* gtkCellRendererText, const char* path, const char* text) -> void {
      |                          ^~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:319:47: error: 'gtkCellRendererText' was not declared in this scope
  319 | auto pTableView::_doEdit(GtkCellRendererText* gtkCellRendererText, const char* path, const char* text) -> void {
      |                                               ^~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:319:68: error: expected primary-expression before 'const'
  319 | auto pTableView::_doEdit(GtkCellRendererText* gtkCellRendererText, const char* path, const char* text) -> void {
      |                                                                    ^~~~~
../hiro/core/../gtk/widget/table-view.cpp:319:86: error: expected primary-expression before 'const'
  319 | auto pTableView::_doEdit(GtkCellRendererText* gtkCellRendererText, const char* path, const char* text) -> void {
      |                                                                                      ^~~~~
../hiro/core/../gtk/widget/table-view.cpp:319:102: error: expression list treated as compound expression in initializer [-fpermissive]
  319 | auto pTableView::_doEdit(GtkCellRendererText* gtkCellRendererText, const char* path, const char* text) -> void {
      |                                                                                                      ^
../hiro/core/../gtk/widget/table-view.cpp:319:104: error: expected ',' or ';' before '->' token
  319 | auto pTableView::_doEdit(GtkCellRendererText* gtkCellRendererText, const char* path, const char* text) -> void {
      |                                                                                                        ^~
../hiro/core/../gtk/widget/table-view.cpp:338:6: error: 'auto hiro::pTableView::_doEvent' is not a static data member of 'struct hiro::pTableView'
  338 | auto pTableView::_doEvent(GdkEventButton* gdkEvent) -> signed {
      |      ^~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:338:27: error: 'GdkEventButton' was not declared in this scope
  338 | auto pTableView::_doEvent(GdkEventButton* gdkEvent) -> signed {
      |                           ^~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:338:43: error: 'gdkEvent' was not declared in this scope; did you mean '_doEvent'?
  338 | auto pTableView::_doEvent(GdkEventButton* gdkEvent) -> signed {
      |                                           ^~~~~~~~
      |                                           _doEvent
../hiro/core/../gtk/widget/table-view.cpp:338:53: error: expected ',' or ';' before '->' token
  338 | auto pTableView::_doEvent(GdkEventButton* gdkEvent) -> signed {
      |                                                     ^~
../hiro/core/../gtk/widget/table-view.cpp:377:6: error: 'auto hiro::pTableView::_doHeaderActivate' is not a static data member of 'struct hiro::pTableView'
  377 | auto pTableView::_doHeaderActivate(GtkTreeViewColumn* gtkTreeViewColumn) -> void {
      |      ^~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:377:36: error: 'GtkTreeViewColumn' was not declared in this scope
  377 | auto pTableView::_doHeaderActivate(GtkTreeViewColumn* gtkTreeViewColumn) -> void {
      |                                    ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:377:55: error: 'gtkTreeViewColumn' was not declared in this scope
  377 | auto pTableView::_doHeaderActivate(GtkTreeViewColumn* gtkTreeViewColumn) -> void {
      |                                                       ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:377:74: error: expected ',' or ';' before '->' token
  377 | auto pTableView::_doHeaderActivate(GtkTreeViewColumn* gtkTreeViewColumn) -> void {
      |                                                                          ^~
../hiro/core/../gtk/widget/table-view.cpp:388:6: error: 'auto hiro::pTableView::_doKeyPress' is not a static data member of 'struct hiro::pTableView'
  388 | auto pTableView::_doKeyPress(GdkEventKey* event) -> bool {
      |      ^~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:388:30: error: 'GdkEventKey' was not declared in this scope
  388 | auto pTableView::_doKeyPress(GdkEventKey* event) -> bool {
      |                              ^~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:388:43: error: 'event' was not declared in this scope; did you mean 'servent'?
  388 | auto pTableView::_doKeyPress(GdkEventKey* event) -> bool {
      |                                           ^~~~~
      |                                           servent
../hiro/core/../gtk/widget/table-view.cpp:388:50: error: expected ',' or ';' before '->' token
  388 | auto pTableView::_doKeyPress(GdkEventKey* event) -> bool {
      |                                                  ^~
../hiro/core/../gtk/widget/table-view.cpp: In member function 'int hiro::pTableView::_doMouseMove()':
../hiro/core/../gtk/widget/table-view.cpp:413:45: error: 'gtkTreeView' was not declared in this scope; did you mean 'wTreeView'?
  413 |   if(gtk_tree_view_is_rubber_banding_active(gtkTreeView)) {
      |                                             ^~~~~~~~~~~
      |                                             wTreeView
../hiro/core/../gtk/widget/table-view.cpp:413:6: error: 'gtk_tree_view_is_rubber_banding_active' was not declared in this scope
  413 |   if(gtk_tree_view_is_rubber_banding_active(gtkTreeView)) {
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp: At global scope:
../hiro/core/../gtk/widget/table-view.cpp:419:6: error: 'auto hiro::pTableView::_doToggle' is not a static data member of 'struct hiro::pTableView'
  419 | auto pTableView::_doToggle(GtkCellRendererToggle* gtkCellRendererToggle, const char* path) -> void {
      |      ^~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:419:28: error: 'GtkCellRendererToggle' was not declared in this scope
  419 | auto pTableView::_doToggle(GtkCellRendererToggle* gtkCellRendererToggle, const char* path) -> void {
      |                            ^~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:419:51: error: 'gtkCellRendererToggle' was not declared in this scope
  419 | auto pTableView::_doToggle(GtkCellRendererToggle* gtkCellRendererToggle, const char* path) -> void {
      |                                                   ^~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:419:74: error: expected primary-expression before 'const'
  419 | auto pTableView::_doToggle(GtkCellRendererToggle* gtkCellRendererToggle, const char* path) -> void {
      |                                                                          ^~~~~
../hiro/core/../gtk/widget/table-view.cpp:419:90: error: expression list treated as compound expression in initializer [-fpermissive]
  419 | auto pTableView::_doToggle(GtkCellRendererToggle* gtkCellRendererToggle, const char* path) -> void {
      |                                                                                          ^
../hiro/core/../gtk/widget/table-view.cpp:419:92: error: expected ',' or ';' before '->' token
  419 | auto pTableView::_doToggle(GtkCellRendererToggle* gtkCellRendererToggle, const char* path) -> void {
      |                                                                                            ^~
../hiro/core/../gtk/widget/table-view.cpp: In member function 'void hiro::pTableView::_updateRulesHint()':
../hiro/core/../gtk/widget/table-view.cpp:444:32: error: 'gtkTreeView' was not declared in this scope; did you mean 'wTreeView'?
  444 |   gtk_tree_view_set_rules_hint(gtkTreeView, rules);
      |                                ^~~~~~~~~~~
      |                                wTreeView
../hiro/core/../gtk/widget/table-view.cpp:444:3: error: 'gtk_tree_view_set_rules_hint' was not declared in this scope
  444 |   gtk_tree_view_set_rules_hint(gtkTreeView, rules);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp: In member function 'void hiro::pTableView::_updateSelected()':
../hiro/core/../gtk/widget/table-view.cpp:454:37: error: 'gtkTreeSelection' was not declared in this scope
  454 |     gtk_tree_selection_unselect_all(gtkTreeSelection);
      |                                     ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:454:5: error: 'gtk_tree_selection_unselect_all' was not declared in this scope
  454 |     gtk_tree_selection_unselect_all(gtkTreeSelection);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:460:3: error: 'GList' was not declared in this scope
  460 |   GList* list = gtk_tree_selection_get_selected_rows(gtkTreeSelection, &gtkTreeModel);
      |   ^~~~~
../hiro/core/../gtk/widget/table-view.cpp:460:10: error: 'list' was not declared in this scope
  460 |   GList* list = gtk_tree_selection_get_selected_rows(gtkTreeSelection, &gtkTreeModel);
      |          ^~~~
../hiro/core/../gtk/widget/table-view.cpp:460:54: error: 'gtkTreeSelection' was not declared in this scope
  460 |   GList* list = gtk_tree_selection_get_selected_rows(gtkTreeSelection, &gtkTreeModel);
      |                                                      ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:460:73: error: 'gtkTreeModel' was not declared in this scope
  460 |   GList* list = gtk_tree_selection_get_selected_rows(gtkTreeSelection, &gtkTreeModel);
      |                                                                         ^~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:460:17: error: 'gtk_tree_selection_get_selected_rows' was not declared in this scope
  460 |   GList* list = gtk_tree_selection_get_selected_rows(gtkTreeSelection, &gtkTreeModel);
      |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:461:10: error: 'p' was not declared in this scope
  461 |   GList* p = list;
      |          ^
../hiro/core/../gtk/widget/table-view.cpp:464:5: error: 'GtkTreeIter' was not declared in this scope
  464 |     GtkTreeIter iter;
      |     ^~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:465:47: error: 'iter' was not declared in this scope
  465 |     if(gtk_tree_model_get_iter(gtkTreeModel, &iter, (GtkTreePath*)p->data)) {
      |                                               ^~~~
../hiro/core/../gtk/widget/table-view.cpp:465:54: error: 'GtkTreePath' was not declared in this scope
  465 |     if(gtk_tree_model_get_iter(gtkTreeModel, &iter, (GtkTreePath*)p->data)) {
      |                                                      ^~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:465:66: error: expected primary-expression before ')' token
  465 |     if(gtk_tree_model_get_iter(gtkTreeModel, &iter, (GtkTreePath*)p->data)) {
      |                                                                  ^
../hiro/core/../gtk/widget/table-view.cpp:465:8: error: 'gtk_tree_model_get_iter' was not declared in this scope
  465 |     if(gtk_tree_model_get_iter(gtkTreeModel, &iter, (GtkTreePath*)p->data)) {
      |        ^~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:466:24: error: 'gtk_tree_model_get_string_from_iter' was not declared in this scope
  466 |       char* pathname = gtk_tree_model_get_string_from_iter(gtkTreeModel, &iter);
      |                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:468:7: error: 'g_free' was not declared in this scope; did you mean 'free'?
  468 |       g_free(pathname);
      |       ^~~~~~
      |       free
../hiro/core/../gtk/widget/table-view.cpp:474:25: error: 'GFunc' was not declared in this scope
  474 |   g_list_foreach(list, (GFunc)gtk_tree_path_free, nullptr);
      |                         ^~~~~
../hiro/core/../gtk/widget/table-view.cpp:474:3: error: 'g_list_foreach' was not declared in this scope
  474 |   g_list_foreach(list, (GFunc)gtk_tree_path_free, nullptr);
      |   ^~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view.cpp:475:3: error: 'g_list_free' was not declared in this scope
  475 |   g_list_free(list);
      |   ^~~~~~~~~~~
In file included from ../hiro/core/../gtk/platform.cpp:55:
../hiro/core/../gtk/widget/table-view-column.cpp: In member function 'virtual void hiro::pTableViewColumn::construct()':
../hiro/core/../gtk/widget/table-view-column.cpp:13:5: error: 'gtkHeader' was not declared in this scope
   13 |     gtkHeader = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
      |     ^~~~~~~~~
../hiro/core/../gtk/widget/table-view-column.cpp:13:29: error: 'GTK_ORIENTATION_HORIZONTAL' was not declared in this scope
   13 |     gtkHeader = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
      |                             ^~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-column.cpp:13:17: error: 'gtk_box_new' was not declared in this scope
   13 |     gtkHeader = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
      |                 ^~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-column.cpp:16:5: error: 'gtkHeaderIcon' was not declared in this scope
   16 |     gtkHeaderIcon = gtk_image_new();
      |     ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-column.cpp:16:21: error: 'gtk_image_new' was not declared in this scope
   16 |     gtkHeaderIcon = gtk_image_new();
      |                     ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-column.cpp:17:24: error: 'GTK_BOX' was not declared in this scope
   17 |     gtk_box_pack_start(GTK_BOX(gtkHeader), gtkHeaderIcon, false, false, 0);
      |                        ^~~~~~~
../hiro/core/../gtk/widget/table-view-column.cpp:17:5: error: 'gtk_box_pack_start' was not declared in this scope
   17 |     gtk_box_pack_start(GTK_BOX(gtkHeader), gtkHeaderIcon, false, false, 0);
      |     ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-column.cpp:19:5: error: 'gtkHeaderText' was not declared in this scope
   19 |     gtkHeaderText = gtk_label_new("");
      |     ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-column.cpp:19:21: error: 'gtk_label_new' was not declared in this scope
   19 |     gtkHeaderText = gtk_label_new("");
      |                     ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-column.cpp:22:5: error: 'gtkHeaderSort' was not declared in this scope
   22 |     gtkHeaderSort = gtk_label_new("");
      |     ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-column.cpp:25:5: error: 'gtkColumn' was not declared in this scope
   25 |     gtkColumn = gtk_tree_view_column_new();
      |     ^~~~~~~~~
../hiro/core/../gtk/widget/table-view-column.cpp:25:17: error: 'gtk_tree_view_column_new' was not declared in this scope
   25 |     gtkColumn = gtk_tree_view_column_new();
      |                 ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-column.cpp:26:48: error: 'GTK_TREE_VIEW_COLUMN_FIXED' was not declared in this scope
   26 |     gtk_tree_view_column_set_sizing(gtkColumn, GTK_TREE_VIEW_COLUMN_FIXED);
      |                                                ^~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-column.cpp:26:5: error: 'gtk_tree_view_column_set_sizing' was not declared in this scope
   26 |     gtk_tree_view_column_set_sizing(gtkColumn, GTK_TREE_VIEW_COLUMN_FIXED);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-column.cpp:27:5: error: 'gtk_tree_view_column_set_title' was not declared in this scope
   27 |     gtk_tree_view_column_set_title(gtkColumn, "");
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-column.cpp:28:5: error: 'gtk_tree_view_column_set_widget' was not declared in this scope
   28 |     gtk_tree_view_column_set_widget(gtkColumn, gtkHeader);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-column.cpp:30:5: error: 'gtkCellToggle' was not declared in this scope
   30 |     gtkCellToggle = gtk_cell_renderer_toggle_new();
      |     ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-column.cpp:30:21: error: 'gtk_cell_renderer_toggle_new' was not declared in this scope
   30 |     gtkCellToggle = gtk_cell_renderer_toggle_new();
      |                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-column.cpp:31:5: error: 'gtk_tree_view_column_pack_start' was not declared in this scope
   31 |     gtk_tree_view_column_pack_start(gtkColumn, gtkCellToggle, false);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-column.cpp:32:5: error: 'gtk_tree_view_column_set_attributes' was not declared in this scope
   32 |     gtk_tree_view_column_set_attributes(gtkColumn, gtkCellToggle, "active", 3 * offset + 0, nullptr);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-column.cpp:33:56: error: 'GTK_CELL_RENDERER' was not declared in this scope
   33 |     gtk_tree_view_column_set_cell_data_func(gtkColumn, GTK_CELL_RENDERER(gtkCellToggle), (GtkTreeCellDataFunc)TableView_dataFunc, (gpointer)handle, nullptr);
      |                                                        ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-column.cpp:33:91: error: 'GtkTreeCellDataFunc' was not declared in this scope
   33 |     gtk_tree_view_column_set_cell_data_func(gtkColumn, GTK_CELL_RENDERER(gtkCellToggle), (GtkTreeCellDataFunc)TableView_dataFunc, (gpointer)handle, nullptr);
      |                                                                                           ^~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-column.cpp:33:132: error: 'gpointer' was not declared in this scope
   33 |     gtk_tree_view_column_set_cell_data_func(gtkColumn, GTK_CELL_RENDERER(gtkCellToggle), (GtkTreeCellDataFunc)TableView_dataFunc, (gpointer)handle, nullptr);
      |                                                                                                                                    ^~~~~~~~
../hiro/core/../gtk/widget/table-view-column.cpp:33:5: error: 'gtk_tree_view_column_set_cell_data_func' was not declared in this scope
   33 |     gtk_tree_view_column_set_cell_data_func(gtkColumn, GTK_CELL_RENDERER(gtkCellToggle), (GtkTreeCellDataFunc)TableView_dataFunc, (gpointer)handle, nullptr);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-column.cpp:35:5: error: 'gtkCellIcon' was not declared in this scope
   35 |     gtkCellIcon = gtk_cell_renderer_pixbuf_new();
      |     ^~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-column.cpp:35:19: error: 'gtk_cell_renderer_pixbuf_new' was not declared in this scope
   35 |     gtkCellIcon = gtk_cell_renderer_pixbuf_new();
      |                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-column.cpp:38:109: error: expected ')' before 'TableView_dataFunc'
   38 |     gtk_tree_view_column_set_cell_data_func(gtkColumn, GTK_CELL_RENDERER(gtkCellIcon), (GtkTreeCellDataFunc)TableView_dataFunc, (gpointer)handle, nullptr);
      |                                            ~                                                                ^~~~~~~~~~~~~~~~~~
      |                                                                                                             )
../hiro/core/../gtk/widget/table-view-column.cpp:38:139: error: expected ')' before 'handle'
   38 |     gtk_tree_view_column_set_cell_data_func(gtkColumn, GTK_CELL_RENDERER(gtkCellIcon), (GtkTreeCellDataFunc)TableView_dataFunc, (gpointer)handle, nullptr);
      |                                            ~                                                                                              ^~~~~~
      |                                                                                                                                           )
../hiro/core/../gtk/widget/table-view-column.cpp:40:5: error: 'gtkCellText' was not declared in this scope
   40 |     gtkCellText = gtk_cell_renderer_text_new();
      |     ^~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-column.cpp:40:19: error: 'gtk_cell_renderer_text_new' was not declared in this scope
   40 |     gtkCellText = gtk_cell_renderer_text_new();
      |                   ^~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-column.cpp:43:109: error: expected ')' before 'TableView_dataFunc'
   43 |     gtk_tree_view_column_set_cell_data_func(gtkColumn, GTK_CELL_RENDERER(gtkCellText), (GtkTreeCellDataFunc)TableView_dataFunc, (gpointer)handle, nullptr);
      |                                            ~                                                                ^~~~~~~~~~~~~~~~~~
      |                                                                                                             )
../hiro/core/../gtk/widget/table-view-column.cpp:43:139: error: expected ')' before 'handle'
   43 |     gtk_tree_view_column_set_cell_data_func(gtkColumn, GTK_CELL_RENDERER(gtkCellText), (GtkTreeCellDataFunc)TableView_dataFunc, (gpointer)handle, nullptr);
      |                                            ~                                                                                              ^~~~~~
      |                                                                                                                                           )
../hiro/core/../gtk/widget/table-view-column.cpp:45:22: error: 'G_OBJECT' was not declared in this scope
   45 |     g_signal_connect(G_OBJECT(gtkColumn), "clicked", G_CALLBACK(TableView_headerActivate), (gpointer)handle);
      |                      ^~~~~~~~
../hiro/core/../gtk/widget/table-view-column.cpp:45:54: error: 'G_CALLBACK' was not declared in this scope
   45 |     g_signal_connect(G_OBJECT(gtkColumn), "clicked", G_CALLBACK(TableView_headerActivate), (gpointer)handle);
      |                                                      ^~~~~~~~~~
../hiro/core/../gtk/widget/table-view-column.cpp:45:102: error: expected ')' before 'handle'
   45 |     g_signal_connect(G_OBJECT(gtkColumn), "clicked", G_CALLBACK(TableView_headerActivate), (gpointer)handle);
      |                     ~                                                                                ^~~~~~
      |                                                                                                      )
../hiro/core/../gtk/widget/table-view-column.cpp:45:5: error: 'g_signal_connect' was not declared in this scope
   45 |     g_signal_connect(G_OBJECT(gtkColumn), "clicked", G_CALLBACK(TableView_headerActivate), (gpointer)handle);
      |     ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-column.cpp:46:93: error: expected ')' before 'handle'
   46 |     g_signal_connect(G_OBJECT(gtkCellText), "edited", G_CALLBACK(TableView_edit), (gpointer)handle);
      |                     ~                                                                       ^~~~~~
      |                                                                                             )
../hiro/core/../gtk/widget/table-view-column.cpp:47:98: error: expected ')' before 'handle'
   47 |     g_signal_connect(G_OBJECT(gtkCellToggle), "toggled", G_CALLBACK(TableView_toggle), (gpointer)handle);
      |                     ~                                                                            ^~~~~~
      |                                                                                                  )
../hiro/core/../gtk/widget/table-view-column.cpp:49:41: error: 'struct hiro::pTableView' has no member named 'gtkTreeView'
   49 |     gtk_tree_view_append_column(parent->gtkTreeView, gtkColumn);
      |                                         ^~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-column.cpp:49:5: error: 'gtk_tree_view_append_column' was not declared in this scope
   49 |     gtk_tree_view_append_column(parent->gtkTreeView, gtkColumn);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-column.cpp:50:5: error: 'gtk_widget_show_all' was not declared in this scope
   50 |     gtk_widget_show_all(gtkHeader);
      |     ^~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-column.cpp:53:5: error: 'gtk_tree_view_column_set_clickable' was not declared in this scope
   53 |     gtk_tree_view_column_set_clickable(gtkColumn, parent->state().sortable);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-column.cpp: In member function 'virtual void hiro::pTableViewColumn::destruct()':
../hiro/core/../gtk/widget/table-view-column.cpp:67:41: error: 'struct hiro::pTableView' has no member named 'gtkTreeView'
   67 |     gtk_tree_view_remove_column(parent->gtkTreeView, gtkColumn);
      |                                         ^~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-column.cpp:67:54: error: 'gtkColumn' was not declared in this scope
   67 |     gtk_tree_view_remove_column(parent->gtkTreeView, gtkColumn);
      |                                                      ^~~~~~~~~
../hiro/core/../gtk/widget/table-view-column.cpp:67:5: error: 'gtk_tree_view_remove_column' was not declared in this scope
   67 |     gtk_tree_view_remove_column(parent->gtkTreeView, gtkColumn);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-column.cpp: In member function 'void hiro::pTableViewColumn::setActive()':
../hiro/core/../gtk/widget/table-view-column.cpp:75:45: error: 'struct hiro::pTableView' has no member named 'gtkTreeView'
   75 |     gtk_tree_view_set_search_column(parent->gtkTreeView, 3 * self().offset() + 2);
      |                                             ^~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-column.cpp:75:5: error: 'gtk_tree_view_set_search_column' was not declared in this scope
   75 |     gtk_tree_view_set_search_column(parent->gtkTreeView, 3 * self().offset() + 2);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-column.cpp: In member function 'void hiro::pTableViewColumn::setEditable(bool)':
../hiro/core/../gtk/widget/table-view-column.cpp:86:25: error: 'gtkCellText' was not declared in this scope
   86 |   g_object_set(G_OBJECT(gtkCellText), "editable", editable ? true : false, nullptr);
      |                         ^~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-column.cpp:86:16: error: 'G_OBJECT' was not declared in this scope
   86 |   g_object_set(G_OBJECT(gtkCellText), "editable", editable ? true : false, nullptr);
      |                ^~~~~~~~
../hiro/core/../gtk/widget/table-view-column.cpp:86:3: error: 'g_object_set' was not declared in this scope
   86 |   g_object_set(G_OBJECT(gtkCellText), "editable", editable ? true : false, nullptr);
      |   ^~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-column.cpp: In member function 'void hiro::pTableViewColumn::setIcon(const nall::image&)':
../hiro/core/../gtk/widget/table-view-column.cpp:103:41: error: 'gtkHeaderIcon' was not declared in this scope
  103 |     gtk_image_set_from_pixbuf(GTK_IMAGE(gtkHeaderIcon), CreatePixbuf(icon));
      |                                         ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-column.cpp:103:31: error: 'GTK_IMAGE' was not declared in this scope
  103 |     gtk_image_set_from_pixbuf(GTK_IMAGE(gtkHeaderIcon), CreatePixbuf(icon));
      |                               ^~~~~~~~~
../hiro/core/../gtk/widget/table-view-column.cpp:103:57: error: 'CreatePixbuf' was not declared in this scope
  103 |     gtk_image_set_from_pixbuf(GTK_IMAGE(gtkHeaderIcon), CreatePixbuf(icon));
      |                                                         ^~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-column.cpp:103:5: error: 'gtk_image_set_from_pixbuf' was not declared in this scope
  103 |     gtk_image_set_from_pixbuf(GTK_IMAGE(gtkHeaderIcon), CreatePixbuf(icon));
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-column.cpp:105:31: error: 'gtkHeaderIcon' was not declared in this scope
  105 |     gtk_image_clear(GTK_IMAGE(gtkHeaderIcon));
      |                               ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-column.cpp:105:21: error: 'GTK_IMAGE' was not declared in this scope
  105 |     gtk_image_clear(GTK_IMAGE(gtkHeaderIcon));
      |                     ^~~~~~~~~
../hiro/core/../gtk/widget/table-view-column.cpp:105:5: error: 'gtk_image_clear' was not declared in this scope
  105 |     gtk_image_clear(GTK_IMAGE(gtkHeaderIcon));
      |     ^~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-column.cpp: In member function 'void hiro::pTableViewColumn::setResizable(bool)':
../hiro/core/../gtk/widget/table-view-column.cpp:110:38: error: 'gtkColumn' was not declared in this scope
  110 |   gtk_tree_view_column_set_resizable(gtkColumn, resizable);
      |                                      ^~~~~~~~~
../hiro/core/../gtk/widget/table-view-column.cpp:110:3: error: 'gtk_tree_view_column_set_resizable' was not declared in this scope
  110 |   gtk_tree_view_column_set_resizable(gtkColumn, resizable);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-column.cpp: In member function 'void hiro::pTableViewColumn::setSorting(hiro::Sort)':
../hiro/core/../gtk/widget/table-view-column.cpp:117:32: error: 'gtkHeaderSort' was not declared in this scope
  117 |   gtk_label_set_text(GTK_LABEL(gtkHeaderSort), text);
      |                                ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-column.cpp:117:22: error: 'GTK_LABEL' was not declared in this scope
  117 |   gtk_label_set_text(GTK_LABEL(gtkHeaderSort), text);
      |                      ^~~~~~~~~
../hiro/core/../gtk/widget/table-view-column.cpp:117:3: error: 'gtk_label_set_text' was not declared in this scope
  117 |   gtk_label_set_text(GTK_LABEL(gtkHeaderSort), text);
      |   ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-column.cpp: In member function 'void hiro::pTableViewColumn::setText(const nall::string&)':
../hiro/core/../gtk/widget/table-view-column.cpp:121:32: error: 'gtkHeaderText' was not declared in this scope
  121 |   gtk_label_set_text(GTK_LABEL(gtkHeaderText), text);
      |                                ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-column.cpp:121:22: error: 'GTK_LABEL' was not declared in this scope
  121 |   gtk_label_set_text(GTK_LABEL(gtkHeaderText), text);
      |                      ^~~~~~~~~
../hiro/core/../gtk/widget/table-view-column.cpp:121:3: error: 'gtk_label_set_text' was not declared in this scope
  121 |   gtk_label_set_text(GTK_LABEL(gtkHeaderText), text);
      |   ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-column.cpp: In member function 'virtual void hiro::pTableViewColumn::setVisible(bool)':
../hiro/core/../gtk/widget/table-view-column.cpp:125:36: error: 'gtkColumn' was not declared in this scope
  125 |   gtk_tree_view_column_set_visible(gtkColumn, visible);
      |                                    ^~~~~~~~~
../hiro/core/../gtk/widget/table-view-column.cpp:125:3: error: 'gtk_tree_view_column_set_visible' was not declared in this scope
  125 |   gtk_tree_view_column_set_visible(gtkColumn, visible);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from ../hiro/core/../gtk/platform.cpp:56:
../hiro/core/../gtk/widget/table-view-item.cpp: In member function 'virtual void hiro::pTableViewItem::construct()':
../hiro/core/../gtk/widget/table-view-item.cpp:8:35: error: 'struct hiro::pTableView' has no member named 'gtkListStore'
    8 |     gtk_list_store_append(parent->gtkListStore, &gtkIter);
      |                                   ^~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-item.cpp:8:50: error: 'gtkIter' was not declared in this scope
    8 |     gtk_list_store_append(parent->gtkListStore, &gtkIter);
      |                                                  ^~~~~~~
../hiro/core/../gtk/widget/table-view-item.cpp:8:5: error: 'gtk_list_store_append' was not declared in this scope
    8 |     gtk_list_store_append(parent->gtkListStore, &gtkIter);
      |     ^~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-item.cpp: In member function 'virtual void hiro::pTableViewItem::destruct()':
../hiro/core/../gtk/widget/table-view-item.cpp:16:35: error: 'struct hiro::pTableView' has no member named 'gtkListStore'
   16 |     gtk_list_store_remove(parent->gtkListStore, &gtkIter);
      |                                   ^~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-item.cpp:16:50: error: 'gtkIter' was not declared in this scope
   16 |     gtk_list_store_remove(parent->gtkListStore, &gtkIter);
      |                                                  ^~~~~~~
../hiro/core/../gtk/widget/table-view-item.cpp:16:5: error: 'gtk_list_store_remove' was not declared in this scope
   16 |     gtk_list_store_remove(parent->gtkListStore, &gtkIter);
      |     ^~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-item.cpp: In member function 'virtual void hiro::pTableViewItem::setFocused()':
../hiro/core/../gtk/widget/table-view-item.cpp:39:5: error: 'GtkTreePath' was not declared in this scope
   39 |     GtkTreePath* path = gtk_tree_path_new_from_string(string{self().offset()});
      |     ^~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-item.cpp:39:18: error: 'path' was not declared in this scope; did you mean 'nall::Location::path'?
   39 |     GtkTreePath* path = gtk_tree_path_new_from_string(string{self().offset()});
      |                  ^~~~
      |                  nall::Location::path
../nall/location.hpp:9:13: note: 'nall::Location::path' declared here
    9 | inline auto path(string_view self) -> string {
      |             ^~~~
../hiro/core/../gtk/widget/table-view-item.cpp:39:25: error: 'gtk_tree_path_new_from_string' was not declared in this scope
   39 |     GtkTreePath* path = gtk_tree_path_new_from_string(string{self().offset()});
      |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-item.cpp:40:38: error: 'struct hiro::pTableView' has no member named 'gtkTreeView'
   40 |     gtk_tree_view_set_cursor(parent->gtkTreeView, path, nullptr, false);
      |                                      ^~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-item.cpp:40:5: error: 'gtk_tree_view_set_cursor' was not declared in this scope
   40 |     gtk_tree_view_set_cursor(parent->gtkTreeView, path, nullptr, false);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-item.cpp:41:42: error: 'struct hiro::pTableView' has no member named 'gtkTreeView'
   41 |     gtk_tree_view_scroll_to_cell(parent->gtkTreeView, path, nullptr, true, 0.5, 0.0);
      |                                          ^~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-item.cpp:41:5: error: 'gtk_tree_view_scroll_to_cell' was not declared in this scope
   41 |     gtk_tree_view_scroll_to_cell(parent->gtkTreeView, path, nullptr, true, 0.5, 0.0);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-item.cpp:42:5: error: 'gtk_tree_path_free' was not declared in this scope
   42 |     gtk_tree_path_free(path);
      |     ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-item.cpp: In member function 'void hiro::pTableViewItem::_setState()':
../hiro/core/../gtk/widget/table-view-item.cpp:64:46: error: 'struct hiro::pTableView' has no member named 'gtkTreeSelection'
   64 |       gtk_tree_selection_select_iter(parent->gtkTreeSelection, &gtkIter);
      |                                              ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-item.cpp:64:65: error: 'gtkIter' was not declared in this scope
   64 |       gtk_tree_selection_select_iter(parent->gtkTreeSelection, &gtkIter);
      |                                                                 ^~~~~~~
../hiro/core/../gtk/widget/table-view-item.cpp:64:7: error: 'gtk_tree_selection_select_iter' was not declared in this scope
   64 |       gtk_tree_selection_select_iter(parent->gtkTreeSelection, &gtkIter);
      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-item.cpp:66:48: error: 'struct hiro::pTableView' has no member named 'gtkTreeSelection'
   66 |       gtk_tree_selection_unselect_iter(parent->gtkTreeSelection, &gtkIter);
      |                                                ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-item.cpp:66:67: error: 'gtkIter' was not declared in this scope
   66 |       gtk_tree_selection_unselect_iter(parent->gtkTreeSelection, &gtkIter);
      |                                                                   ^~~~~~~
../hiro/core/../gtk/widget/table-view-item.cpp:66:7: error: 'gtk_tree_selection_unselect_iter' was not declared in this scope
   66 |       gtk_tree_selection_unselect_iter(parent->gtkTreeSelection, &gtkIter);
      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from ../hiro/core/../gtk/platform.cpp:57:
../hiro/core/../gtk/widget/table-view-cell.cpp: In member function 'void hiro::pTableViewCell::_setState()':
../hiro/core/../gtk/widget/table-view-cell.cpp:53:41: error: 'struct hiro::pTableView' has no member named 'gtkListStore'
   53 |         gtk_list_store_set(grandparent->gtkListStore, &parent->gtkIter, 3 * self().offset() + 0, state().checked, -1);
      |                                         ^~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-cell.cpp:53:64: error: 'struct hiro::pTableViewItem' has no member named 'gtkIter'
   53 |         gtk_list_store_set(grandparent->gtkListStore, &parent->gtkIter, 3 * self().offset() + 0, state().checked, -1);
      |                                                                ^~~~~~~
../hiro/core/../gtk/widget/table-view-cell.cpp:53:9: error: 'gtk_list_store_set' was not declared in this scope
   53 |         gtk_list_store_set(grandparent->gtkListStore, &parent->gtkIter, 3 * self().offset() + 0, state().checked, -1);
      |         ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-cell.cpp:54:41: error: 'struct hiro::pTableView' has no member named 'gtkListStore'
   54 |         gtk_list_store_set(grandparent->gtkListStore, &parent->gtkIter, 3 * self().offset() + 1, CreatePixbuf(state().icon), -1);
      |                                         ^~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-cell.cpp:54:64: error: 'struct hiro::pTableViewItem' has no member named 'gtkIter'
   54 |         gtk_list_store_set(grandparent->gtkListStore, &parent->gtkIter, 3 * self().offset() + 1, CreatePixbuf(state().icon), -1);
      |                                                                ^~~~~~~
../hiro/core/../gtk/widget/table-view-cell.cpp:54:98: error: 'CreatePixbuf' was not declared in this scope
   54 |         gtk_list_store_set(grandparent->gtkListStore, &parent->gtkIter, 3 * self().offset() + 1, CreatePixbuf(state().icon), -1);
      |                                                                                                  ^~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-cell.cpp:55:41: error: 'struct hiro::pTableView' has no member named 'gtkListStore'
   55 |         gtk_list_store_set(grandparent->gtkListStore, &parent->gtkIter, 3 * self().offset() + 2, state().text.data(), -1);
      |                                         ^~~~~~~~~~~~
../hiro/core/../gtk/widget/table-view-cell.cpp:55:64: error: 'struct hiro::pTableViewItem' has no member named 'gtkIter'
   55 |         gtk_list_store_set(grandparent->gtkListStore, &parent->gtkIter, 3 * self().offset() + 2, state().text.data(), -1);
      |                                                                ^~~~~~~
In file included from ../hiro/core/../gtk/platform.cpp:58:
../hiro/core/../gtk/widget/text-edit.cpp: At global scope:
../hiro/core/../gtk/widget/text-edit.cpp:5:29: error: 'GtkTextBuffer' was not declared in this scope
    5 | static auto TextEdit_change(GtkTextBuffer* textBuffer, pTextEdit* p) -> void {
      |                             ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/text-edit.cpp:5:44: error: 'textBuffer' was not declared in this scope; did you mean 'setbuffer'?
    5 | static auto TextEdit_change(GtkTextBuffer* textBuffer, pTextEdit* p) -> void {
      |                                            ^~~~~~~~~~
      |                                            setbuffer
../hiro/core/../gtk/widget/text-edit.cpp:5:65: error: expected primary-expression before '*' token
    5 | static auto TextEdit_change(GtkTextBuffer* textBuffer, pTextEdit* p) -> void {
      |                                                                 ^
../hiro/core/../gtk/widget/text-edit.cpp:5:67: error: 'p' was not declared in this scope
    5 | static auto TextEdit_change(GtkTextBuffer* textBuffer, pTextEdit* p) -> void {
      |                                                                   ^
../hiro/core/../gtk/widget/text-edit.cpp:5:68: error: expression list treated as compound expression in initializer [-fpermissive]
    5 | static auto TextEdit_change(GtkTextBuffer* textBuffer, pTextEdit* p) -> void {
      |                                                                    ^
../hiro/core/../gtk/widget/text-edit.cpp:5:70: error: expected ',' or ';' before '->' token
    5 | static auto TextEdit_change(GtkTextBuffer* textBuffer, pTextEdit* p) -> void {
      |                                                                      ^~
../hiro/core/../gtk/widget/text-edit.cpp:9:27: error: 'GObject' was not declared in this scope; did you mean 'wObject'?
    9 | static auto TextEdit_move(GObject* object, GParamSpec* spec, pTextEdit* p) -> void {
      |                           ^~~~~~~
      |                           wObject
../hiro/core/../gtk/widget/text-edit.cpp:9:36: error: 'object' was not declared in this scope; did you mean 'Object'?
    9 | static auto TextEdit_move(GObject* object, GParamSpec* spec, pTextEdit* p) -> void {
      |                                    ^~~~~~
      |                                    Object
../hiro/core/../gtk/widget/text-edit.cpp:9:44: error: 'GParamSpec' was not declared in this scope
    9 | static auto TextEdit_move(GObject* object, GParamSpec* spec, pTextEdit* p) -> void {
      |                                            ^~~~~~~~~~
../hiro/core/../gtk/widget/text-edit.cpp:9:56: error: 'spec' was not declared in this scope
    9 | static auto TextEdit_move(GObject* object, GParamSpec* spec, pTextEdit* p) -> void {
      |                                                        ^~~~
../hiro/core/../gtk/widget/text-edit.cpp:9:71: error: expected primary-expression before '*' token
    9 | static auto TextEdit_move(GObject* object, GParamSpec* spec, pTextEdit* p) -> void {
      |                                                                       ^
../hiro/core/../gtk/widget/text-edit.cpp:9:73: error: 'p' was not declared in this scope
    9 | static auto TextEdit_move(GObject* object, GParamSpec* spec, pTextEdit* p) -> void {
      |                                                                         ^
../hiro/core/../gtk/widget/text-edit.cpp:9:74: error: expression list treated as compound expression in initializer [-fpermissive]
    9 | static auto TextEdit_move(GObject* object, GParamSpec* spec, pTextEdit* p) -> void {
      |                                                                          ^
../hiro/core/../gtk/widget/text-edit.cpp:9:76: error: expected ',' or ';' before '->' token
    9 | static auto TextEdit_move(GObject* object, GParamSpec* spec, pTextEdit* p) -> void {
      |                                                                            ^~
../hiro/core/../gtk/widget/text-edit.cpp: In member function 'virtual void hiro::pTextEdit::construct()':
../hiro/core/../gtk/widget/text-edit.cpp:15:3: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   15 |   gtkWidget = gtk_scrolled_window_new(0, 0);
      |   ^~~~~~~~~
      |   pWidget
../hiro/core/../gtk/widget/text-edit.cpp:15:15: error: 'gtk_scrolled_window_new' was not declared in this scope
   15 |   gtkWidget = gtk_scrolled_window_new(0, 0);
      |               ^~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/text-edit.cpp:16:34: error: 'GTK_SCROLLED_WINDOW' was not declared in this scope
   16 |   gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(gtkWidget), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
      |                                  ^~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/text-edit.cpp:16:66: error: 'GTK_POLICY_AUTOMATIC' was not declared in this scope
   16 |   gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(gtkWidget), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
      |                                                                  ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/text-edit.cpp:16:3: error: 'gtk_scrolled_window_set_policy' was not declared in this scope
   16 |   gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(gtkWidget), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/text-edit.cpp:17:71: error: 'GTK_SHADOW_ETCHED_IN' was not declared in this scope
   17 |   gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(gtkWidget), GTK_SHADOW_ETCHED_IN);
      |                                                                       ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/text-edit.cpp:17:3: error: 'gtk_scrolled_window_set_shadow_type' was not declared in this scope
   17 |   gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(gtkWidget), GTK_SHADOW_ETCHED_IN);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/text-edit.cpp:19:3: error: 'subWidget' was not declared in this scope; did you mean 'sWidget'?
   19 |   subWidget = gtk_text_view_new();
      |   ^~~~~~~~~
      |   sWidget
../hiro/core/../gtk/widget/text-edit.cpp:19:15: error: 'gtk_text_view_new' was not declared in this scope
   19 |   subWidget = gtk_text_view_new();
      |               ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/text-edit.cpp:20:3: error: 'gtk_widget_show' was not declared in this scope
   20 |   gtk_widget_show(subWidget);
      |   ^~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/text-edit.cpp:21:31: error: 'GTK_TEXT_VIEW' was not declared in this scope
   21 |   gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(subWidget), GTK_WRAP_WORD_CHAR);
      |                               ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/text-edit.cpp:21:57: error: 'GTK_WRAP_WORD_CHAR' was not declared in this scope
   21 |   gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(subWidget), GTK_WRAP_WORD_CHAR);
      |                                                         ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/text-edit.cpp:21:3: error: 'gtk_text_view_set_wrap_mode' was not declared in this scope
   21 |   gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(subWidget), GTK_WRAP_WORD_CHAR);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/text-edit.cpp:22:21: error: 'GTK_CONTAINER' was not declared in this scope
   22 |   gtk_container_add(GTK_CONTAINER(gtkWidget), subWidget);
      |                     ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/text-edit.cpp:22:3: error: 'gtk_container_add' was not declared in this scope
   22 |   gtk_container_add(GTK_CONTAINER(gtkWidget), subWidget);
      |   ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/text-edit.cpp:24:3: error: 'textBuffer' was not declared in this scope; did you mean 'setbuffer'?
   24 |   textBuffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(subWidget));
      |   ^~~~~~~~~~
      |   setbuffer
../hiro/core/../gtk/widget/text-edit.cpp:24:16: error: 'gtk_text_view_get_buffer' was not declared in this scope
   24 |   textBuffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(subWidget));
      |                ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/text-edit.cpp:33:20: error: 'G_OBJECT' was not declared in this scope
   33 |   g_signal_connect(G_OBJECT(textBuffer), "changed", G_CALLBACK(TextEdit_change), (gpointer)this);
      |                    ^~~~~~~~
../hiro/core/../gtk/widget/text-edit.cpp:33:53: error: 'G_CALLBACK' was not declared in this scope
   33 |   g_signal_connect(G_OBJECT(textBuffer), "changed", G_CALLBACK(TextEdit_change), (gpointer)this);
      |                                                     ^~~~~~~~~~
../hiro/core/../gtk/widget/text-edit.cpp:33:83: error: 'gpointer' was not declared in this scope
   33 |   g_signal_connect(G_OBJECT(textBuffer), "changed", G_CALLBACK(TextEdit_change), (gpointer)this);
      |                                                                                   ^~~~~~~~
../hiro/core/../gtk/widget/text-edit.cpp:33:3: error: 'g_signal_connect' was not declared in this scope
   33 |   g_signal_connect(G_OBJECT(textBuffer), "changed", G_CALLBACK(TextEdit_change), (gpointer)this);
      |   ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/text-edit.cpp:34:106: error: expected ')' before 'this'
   34 |   g_signal_connect(G_OBJECT(textBuffer), "notify::cursor-position", G_CALLBACK(TextEdit_move), (gpointer)this);
      |                   ~                                                                                      ^~~~
      |                                                                                                          )
../hiro/core/../gtk/widget/text-edit.cpp: In member function 'virtual void hiro::pTextEdit::destruct()':
../hiro/core/../gtk/widget/text-edit.cpp:41:22: error: 'subWidget' was not declared in this scope; did you mean 'sWidget'?
   41 |   gtk_widget_destroy(subWidget);
      |                      ^~~~~~~~~
      |                      sWidget
../hiro/core/../gtk/widget/text-edit.cpp:41:3: error: 'gtk_widget_destroy' was not declared in this scope
   41 |   gtk_widget_destroy(subWidget);
      |   ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/text-edit.cpp:42:22: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   42 |   gtk_widget_destroy(gtkWidget);
      |                      ^~~~~~~~~
      |                      pWidget
../hiro/core/../gtk/widget/text-edit.cpp: In member function 'virtual bool hiro::pTextEdit::focused() const':
../hiro/core/../gtk/widget/text-edit.cpp:46:31: error: 'subWidget' was not declared in this scope; did you mean 'sWidget'?
   46 |   return gtk_widget_has_focus(subWidget);
      |                               ^~~~~~~~~
      |                               sWidget
../hiro/core/../gtk/widget/text-edit.cpp:46:10: error: 'gtk_widget_has_focus' was not declared in this scope
   46 |   return gtk_widget_has_focus(subWidget);
      |          ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/text-edit.cpp: In member function 'void hiro::pTextEdit::setBackgroundColor(hiro::Color)':
../hiro/core/../gtk/widget/text-edit.cpp:50:3: error: 'GdkColor' was not declared in this scope; did you mean 'Color'?
   50 |   GdkColor gdkColor = CreateColor(color);
      |   ^~~~~~~~
      |   Color
../hiro/core/../gtk/widget/text-edit.cpp:51:26: error: 'subWidget' was not declared in this scope; did you mean 'sWidget'?
   51 |   gtk_widget_modify_base(subWidget, GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |                          ^~~~~~~~~
      |                          sWidget
../hiro/core/../gtk/widget/text-edit.cpp:51:37: error: 'GTK_STATE_NORMAL' was not declared in this scope
   51 |   gtk_widget_modify_base(subWidget, GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |                                     ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/text-edit.cpp:51:64: error: 'gdkColor' was not declared in this scope; did you mean 'Color'?
   51 |   gtk_widget_modify_base(subWidget, GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |                                                                ^~~~~~~~
      |                                                                Color
../hiro/core/../gtk/widget/text-edit.cpp:51:3: error: 'gtk_widget_modify_base' was not declared in this scope
   51 |   gtk_widget_modify_base(subWidget, GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |   ^~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/text-edit.cpp: In member function 'void hiro::pTextEdit::setEditable(bool)':
../hiro/core/../gtk/widget/text-edit.cpp:55:44: error: 'subWidget' was not declared in this scope; did you mean 'sWidget'?
   55 |   gtk_text_view_set_editable(GTK_TEXT_VIEW(subWidget), editable);
      |                                            ^~~~~~~~~
      |                                            sWidget
../hiro/core/../gtk/widget/text-edit.cpp:55:30: error: 'GTK_TEXT_VIEW' was not declared in this scope
   55 |   gtk_text_view_set_editable(GTK_TEXT_VIEW(subWidget), editable);
      |                              ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/text-edit.cpp:55:3: error: 'gtk_text_view_set_editable' was not declared in this scope
   55 |   gtk_text_view_set_editable(GTK_TEXT_VIEW(subWidget), editable);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/text-edit.cpp: In member function 'virtual void hiro::pTextEdit::setFocused()':
../hiro/core/../gtk/widget/text-edit.cpp:59:25: error: 'subWidget' was not declared in this scope; did you mean 'sWidget'?
   59 |   gtk_widget_grab_focus(subWidget);
      |                         ^~~~~~~~~
      |                         sWidget
../hiro/core/../gtk/widget/text-edit.cpp:59:3: error: 'gtk_widget_grab_focus' was not declared in this scope
   59 |   gtk_widget_grab_focus(subWidget);
      |   ^~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/text-edit.cpp: In member function 'void hiro::pTextEdit::setForegroundColor(hiro::Color)':
../hiro/core/../gtk/widget/text-edit.cpp:63:3: error: 'GdkColor' was not declared in this scope; did you mean 'Color'?
   63 |   GdkColor gdkColor = CreateColor(color);
      |   ^~~~~~~~
      |   Color
../hiro/core/../gtk/widget/text-edit.cpp:64:26: error: 'subWidget' was not declared in this scope; did you mean 'sWidget'?
   64 |   gtk_widget_modify_text(subWidget, GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |                          ^~~~~~~~~
      |                          sWidget
../hiro/core/../gtk/widget/text-edit.cpp:64:37: error: 'GTK_STATE_NORMAL' was not declared in this scope
   64 |   gtk_widget_modify_text(subWidget, GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |                                     ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/text-edit.cpp:64:64: error: 'gdkColor' was not declared in this scope; did you mean 'Color'?
   64 |   gtk_widget_modify_text(subWidget, GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |                                                                ^~~~~~~~
      |                                                                Color
../hiro/core/../gtk/widget/text-edit.cpp:64:3: error: 'gtk_widget_modify_text' was not declared in this scope
   64 |   gtk_widget_modify_text(subWidget, GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |   ^~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/text-edit.cpp: In member function 'void hiro::pTextEdit::setText(const nall::string&)':
../hiro/core/../gtk/widget/text-edit.cpp:69:3: error: 'textBuffer' was not declared in this scope; did you mean 'setbuffer'?
   69 |   textBuffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(subWidget));
      |   ^~~~~~~~~~
      |   setbuffer
../hiro/core/../gtk/widget/text-edit.cpp:69:55: error: 'subWidget' was not declared in this scope; did you mean 'sWidget'?
   69 |   textBuffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(subWidget));
      |                                                       ^~~~~~~~~
      |                                                       sWidget
../hiro/core/../gtk/widget/text-edit.cpp:69:41: error: 'GTK_TEXT_VIEW' was not declared in this scope
   69 |   textBuffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(subWidget));
      |                                         ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/text-edit.cpp:69:16: error: 'gtk_text_view_get_buffer' was not declared in this scope
   69 |   textBuffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(subWidget));
      |                ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/text-edit.cpp:70:3: error: 'gtk_text_buffer_set_text' was not declared in this scope
   70 |   gtk_text_buffer_set_text(textBuffer, text, -1);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/text-edit.cpp: In member function 'void hiro::pTextEdit::setTextCursor(hiro::TextCursor)':
../hiro/core/../gtk/widget/text-edit.cpp:76:3: error: 'GtkTextIter' was not declared in this scope
   76 |   GtkTextIter offset, length;
      |   ^~~~~~~~~~~
../hiro/core/../gtk/widget/text-edit.cpp:77:32: error: 'textBuffer' was not declared in this scope; did you mean 'setbuffer'?
   77 |   gtk_text_buffer_get_end_iter(textBuffer, &offset);
      |                                ^~~~~~~~~~
      |                                setbuffer
../hiro/core/../gtk/widget/text-edit.cpp:77:45: error: 'offset' was not declared in this scope; did you mean 'offset_t'?
   77 |   gtk_text_buffer_get_end_iter(textBuffer, &offset);
      |                                             ^~~~~~
      |                                             offset_t
../hiro/core/../gtk/widget/text-edit.cpp:77:3: error: 'gtk_text_buffer_get_end_iter' was not declared in this scope
   77 |   gtk_text_buffer_get_end_iter(textBuffer, &offset);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/text-edit.cpp:78:45: error: 'length' was not declared in this scope; did you mean 'len_t'?
   78 |   gtk_text_buffer_get_end_iter(textBuffer, &length);
      |                                             ^~~~~~
      |                                             len_t
../hiro/core/../gtk/widget/text-edit.cpp:79:16: error: 'gtk_text_iter_get_offset' was not declared in this scope
   79 |   signed end = gtk_text_iter_get_offset(&offset);
      |                ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/text-edit.cpp:80:3: error: 'gtk_text_iter_set_offset' was not declared in this scope
   80 |   gtk_text_iter_set_offset(&offset, max(0, min(end, cursor.offset())));
      |   ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/text-edit.cpp:82:3: error: 'gtk_text_buffer_select_range' was not declared in this scope
   82 |   gtk_text_buffer_select_range(textBuffer, &offset, &length);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/text-edit.cpp:83:15: error: 'gtk_text_buffer_get_mark' was not declared in this scope
   83 |   auto mark = gtk_text_buffer_get_mark(textBuffer, "insert");
      |               ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/text-edit.cpp:84:52: error: 'subWidget' was not declared in this scope; did you mean 'sWidget'?
   84 |   gtk_text_view_scroll_mark_onscreen(GTK_TEXT_VIEW(subWidget), mark);
      |                                                    ^~~~~~~~~
      |                                                    sWidget
../hiro/core/../gtk/widget/text-edit.cpp:84:38: error: 'GTK_TEXT_VIEW' was not declared in this scope
   84 |   gtk_text_view_scroll_mark_onscreen(GTK_TEXT_VIEW(subWidget), mark);
      |                                      ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/text-edit.cpp:84:3: error: 'gtk_text_view_scroll_mark_onscreen' was not declared in this scope
   84 |   gtk_text_view_scroll_mark_onscreen(GTK_TEXT_VIEW(subWidget), mark);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/text-edit.cpp: In member function 'void hiro::pTextEdit::setWordWrap(bool)':
../hiro/core/../gtk/widget/text-edit.cpp:89:45: error: 'subWidget' was not declared in this scope; did you mean 'sWidget'?
   89 |   gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(subWidget), wordWrap ? GTK_WRAP_WORD_CHAR : GTK_WRAP_NONE);
      |                                             ^~~~~~~~~
      |                                             sWidget
../hiro/core/../gtk/widget/text-edit.cpp:89:31: error: 'GTK_TEXT_VIEW' was not declared in this scope
   89 |   gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(subWidget), wordWrap ? GTK_WRAP_WORD_CHAR : GTK_WRAP_NONE);
      |                               ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/text-edit.cpp:89:68: error: 'GTK_WRAP_WORD_CHAR' was not declared in this scope
   89 |   gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(subWidget), wordWrap ? GTK_WRAP_WORD_CHAR : GTK_WRAP_NONE);
      |                                                                    ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/text-edit.cpp:89:89: error: 'GTK_WRAP_NONE' was not declared in this scope
   89 |   gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(subWidget), wordWrap ? GTK_WRAP_WORD_CHAR : GTK_WRAP_NONE);
      |                                                                                         ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/text-edit.cpp:89:3: error: 'gtk_text_view_set_wrap_mode' was not declared in this scope
   89 |   gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(subWidget), wordWrap ? GTK_WRAP_WORD_CHAR : GTK_WRAP_NONE);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/text-edit.cpp:90:54: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   90 |   gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(gtkWidget),
      |                                                      ^~~~~~~~~
      |                                                      pWidget
../hiro/core/../gtk/widget/text-edit.cpp:90:34: error: 'GTK_SCROLLED_WINDOW' was not declared in this scope
   90 |   gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(gtkWidget),
      |                                  ^~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/text-edit.cpp:91:16: error: 'GTK_POLICY_NEVER' was not declared in this scope
   91 |     wordWrap ? GTK_POLICY_NEVER : GTK_POLICY_ALWAYS,
      |                ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/text-edit.cpp:91:35: error: 'GTK_POLICY_ALWAYS' was not declared in this scope
   91 |     wordWrap ? GTK_POLICY_NEVER : GTK_POLICY_ALWAYS,
      |                                   ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/text-edit.cpp:90:3: error: 'gtk_scrolled_window_set_policy' was not declared in this scope
   90 |   gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(gtkWidget),
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/text-edit.cpp: In member function 'nall::string hiro::pTextEdit::text() const':
../hiro/core/../gtk/widget/text-edit.cpp:96:3: error: 'GtkTextIter' was not declared in this scope
   96 |   GtkTextIter start, end;
      |   ^~~~~~~~~~~
../hiro/core/../gtk/widget/text-edit.cpp:97:34: error: 'textBuffer' was not declared in this scope; did you mean 'setbuffer'?
   97 |   gtk_text_buffer_get_start_iter(textBuffer, &start);
      |                                  ^~~~~~~~~~
      |                                  setbuffer
../hiro/core/../gtk/widget/text-edit.cpp:97:47: error: 'start' was not declared in this scope; did you mean 'stat'?
   97 |   gtk_text_buffer_get_start_iter(textBuffer, &start);
      |                                               ^~~~~
      |                                               stat
../hiro/core/../gtk/widget/text-edit.cpp:97:3: error: 'gtk_text_buffer_get_start_iter' was not declared in this scope
   97 |   gtk_text_buffer_get_start_iter(textBuffer, &start);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/text-edit.cpp:98:45: error: 'end' was not declared in this scope; did you mean 'std::end'?
   98 |   gtk_text_buffer_get_end_iter(textBuffer, &end);
      |                                             ^~~
      |                                             std::end
/opt/tools/gcc13/include/c++/13.3.0/initializer_list:99:5: note: 'std::end' declared here
   99 |     end(initializer_list<_Tp> __ils) noexcept
      |     ^~~
../hiro/core/../gtk/widget/text-edit.cpp:98:3: error: 'gtk_text_buffer_get_end_iter' was not declared in this scope
   98 |   gtk_text_buffer_get_end_iter(textBuffer, &end);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/text-edit.cpp:99:16: error: 'gtk_text_buffer_get_text' was not declared in this scope
   99 |   char* temp = gtk_text_buffer_get_text(textBuffer, &start, &end, true);
      |                ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/text-edit.cpp:101:3: error: 'g_free' was not declared in this scope; did you mean 'free'?
  101 |   g_free(temp);
      |   ^~~~~~
      |   free
../hiro/core/../gtk/widget/text-edit.cpp: In member function 'hiro::TextCursor hiro::pTextEdit::textCursor() const':
../hiro/core/../gtk/widget/text-edit.cpp:108:25: error: 'textBuffer' was not declared in this scope; did you mean 'setbuffer'?
  108 |   g_object_get(G_OBJECT(textBuffer), "cursor-position", &offset, nullptr);
      |                         ^~~~~~~~~~
      |                         setbuffer
../hiro/core/../gtk/widget/text-edit.cpp:108:16: error: 'G_OBJECT' was not declared in this scope
  108 |   g_object_get(G_OBJECT(textBuffer), "cursor-position", &offset, nullptr);
      |                ^~~~~~~~
../hiro/core/../gtk/widget/text-edit.cpp:108:3: error: 'g_object_get' was not declared in this scope
  108 |   g_object_get(G_OBJECT(textBuffer), "cursor-position", &offset, nullptr);
      |   ^~~~~~~~~~~~
../hiro/core/../gtk/widget/text-edit.cpp:110:3: error: 'GtkTextIter' was not declared in this scope
  110 |   GtkTextIter start, end;
      |   ^~~~~~~~~~~
../hiro/core/../gtk/widget/text-edit.cpp:111:56: error: 'start' was not declared in this scope; did you mean 'stat'?
  111 |   if(gtk_text_buffer_get_selection_bounds(textBuffer, &start, &end)) {
      |                                                        ^~~~~
      |                                                        stat
../hiro/core/../gtk/widget/text-edit.cpp:111:64: error: 'end' was not declared in this scope; did you mean 'std::end'?
  111 |   if(gtk_text_buffer_get_selection_bounds(textBuffer, &start, &end)) {
      |                                                                ^~~
      |                                                                std::end
/opt/tools/gcc13/include/c++/13.3.0/initializer_list:99:5: note: 'std::end' declared here
   99 |     end(initializer_list<_Tp> __ils) noexcept
      |     ^~~
../hiro/core/../gtk/widget/text-edit.cpp:111:6: error: 'gtk_text_buffer_get_selection_bounds' was not declared in this scope
  111 |   if(gtk_text_buffer_get_selection_bounds(textBuffer, &start, &end)) {
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/text-edit.cpp:114:18: error: 'gtk_text_iter_get_offset' was not declared in this scope
  114 |     int origin = gtk_text_iter_get_offset(&start);
      |                  ^~~~~~~~~~~~~~~~~~~~~~~~
In file included from ../hiro/core/../gtk/platform.cpp:59:
../hiro/core/../gtk/widget/tree-view.cpp: At global scope:
../hiro/core/../gtk/widget/tree-view.cpp:10:31: error: 'GtkTreeView' was not declared in this scope; did you mean 'wTreeView'?
   10 | static auto TreeView_activate(GtkTreeView*, GtkTreePath* gtkPath, GtkTreeViewColumn*, pTreeView* p) -> void { p->_activatePath(gtkPath); }
      |                               ^~~~~~~~~~~
      |                               wTreeView
../hiro/core/../gtk/widget/tree-view.cpp:10:43: error: expected primary-expression before ',' token
   10 | static auto TreeView_activate(GtkTreeView*, GtkTreePath* gtkPath, GtkTreeViewColumn*, pTreeView* p) -> void { p->_activatePath(gtkPath); }
      |                                           ^
../hiro/core/../gtk/widget/tree-view.cpp:10:45: error: 'GtkTreePath' was not declared in this scope
   10 | static auto TreeView_activate(GtkTreeView*, GtkTreePath* gtkPath, GtkTreeViewColumn*, pTreeView* p) -> void { p->_activatePath(gtkPath); }
      |                                             ^~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:10:58: error: 'gtkPath' was not declared in this scope
   10 | static auto TreeView_activate(GtkTreeView*, GtkTreePath* gtkPath, GtkTreeViewColumn*, pTreeView* p) -> void { p->_activatePath(gtkPath); }
      |                                                          ^~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:10:67: error: 'GtkTreeViewColumn' was not declared in this scope
   10 | static auto TreeView_activate(GtkTreeView*, GtkTreePath* gtkPath, GtkTreeViewColumn*, pTreeView* p) -> void { p->_activatePath(gtkPath); }
      |                                                                   ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:10:85: error: expected primary-expression before ',' token
   10 | static auto TreeView_activate(GtkTreeView*, GtkTreePath* gtkPath, GtkTreeViewColumn*, pTreeView* p) -> void { p->_activatePath(gtkPath); }
      |                                                                                     ^
../hiro/core/../gtk/widget/tree-view.cpp:10:96: error: expected primary-expression before '*' token
   10 | static auto TreeView_activate(GtkTreeView*, GtkTreePath* gtkPath, GtkTreeViewColumn*, pTreeView* p) -> void { p->_activatePath(gtkPath); }
      |                                                                                                ^
../hiro/core/../gtk/widget/tree-view.cpp:10:98: error: 'p' was not declared in this scope
   10 | static auto TreeView_activate(GtkTreeView*, GtkTreePath* gtkPath, GtkTreeViewColumn*, pTreeView* p) -> void { p->_activatePath(gtkPath); }
      |                                                                                                  ^
../hiro/core/../gtk/widget/tree-view.cpp:10:99: error: expression list treated as compound expression in initializer [-fpermissive]
   10 | static auto TreeView_activate(GtkTreeView*, GtkTreePath* gtkPath, GtkTreeViewColumn*, pTreeView* p) -> void { p->_activatePath(gtkPath); }
      |                                                                                                   ^
../hiro/core/../gtk/widget/tree-view.cpp:10:101: error: expected ',' or ';' before '->' token
   10 | static auto TreeView_activate(GtkTreeView*, GtkTreePath* gtkPath, GtkTreeViewColumn*, pTreeView* p) -> void { p->_activatePath(gtkPath); }
      |                                                                                                     ^~
../hiro/core/../gtk/widget/tree-view.cpp:11:34: error: 'GtkTreeView' was not declared in this scope; did you mean 'wTreeView'?
   11 | static auto TreeView_buttonEvent(GtkTreeView*, GdkEventButton* gdkEvent, pTreeView* p) -> signed { return p->_buttonEvent(gdkEvent); }
      |                                  ^~~~~~~~~~~
      |                                  wTreeView
../hiro/core/../gtk/widget/tree-view.cpp:11:46: error: expected primary-expression before ',' token
   11 | static auto TreeView_buttonEvent(GtkTreeView*, GdkEventButton* gdkEvent, pTreeView* p) -> signed { return p->_buttonEvent(gdkEvent); }
      |                                              ^
../hiro/core/../gtk/widget/tree-view.cpp:11:48: error: 'GdkEventButton' was not declared in this scope
   11 | static auto TreeView_buttonEvent(GtkTreeView*, GdkEventButton* gdkEvent, pTreeView* p) -> signed { return p->_buttonEvent(gdkEvent); }
      |                                                ^~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:11:64: error: 'gdkEvent' was not declared in this scope
   11 | static auto TreeView_buttonEvent(GtkTreeView*, GdkEventButton* gdkEvent, pTreeView* p) -> signed { return p->_buttonEvent(gdkEvent); }
      |                                                                ^~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:11:83: error: expected primary-expression before '*' token
   11 | static auto TreeView_buttonEvent(GtkTreeView*, GdkEventButton* gdkEvent, pTreeView* p) -> signed { return p->_buttonEvent(gdkEvent); }
      |                                                                                   ^
../hiro/core/../gtk/widget/tree-view.cpp:11:85: error: 'p' was not declared in this scope
   11 | static auto TreeView_buttonEvent(GtkTreeView*, GdkEventButton* gdkEvent, pTreeView* p) -> signed { return p->_buttonEvent(gdkEvent); }
      |                                                                                     ^
../hiro/core/../gtk/widget/tree-view.cpp:11:86: error: expression list treated as compound expression in initializer [-fpermissive]
   11 | static auto TreeView_buttonEvent(GtkTreeView*, GdkEventButton* gdkEvent, pTreeView* p) -> signed { return p->_buttonEvent(gdkEvent); }
      |                                                                                      ^
../hiro/core/../gtk/widget/tree-view.cpp:11:88: error: expected ',' or ';' before '->' token
   11 | static auto TreeView_buttonEvent(GtkTreeView*, GdkEventButton* gdkEvent, pTreeView* p) -> signed { return p->_buttonEvent(gdkEvent); }
      |                                                                                        ^~
../hiro/core/../gtk/widget/tree-view.cpp:12:29: error: 'GtkTreeSelection' was not declared in this scope
   12 | static auto TreeView_change(GtkTreeSelection*, pTreeView* p) -> void { p->_updateSelected(); }
      |                             ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:12:46: error: expected primary-expression before ',' token
   12 | static auto TreeView_change(GtkTreeSelection*, pTreeView* p) -> void { p->_updateSelected(); }
      |                                              ^
../hiro/core/../gtk/widget/tree-view.cpp:12:57: error: expected primary-expression before '*' token
   12 | static auto TreeView_change(GtkTreeSelection*, pTreeView* p) -> void { p->_updateSelected(); }
      |                                                         ^
../hiro/core/../gtk/widget/tree-view.cpp:12:59: error: 'p' was not declared in this scope
   12 | static auto TreeView_change(GtkTreeSelection*, pTreeView* p) -> void { p->_updateSelected(); }
      |                                                           ^
../hiro/core/../gtk/widget/tree-view.cpp:12:60: error: expression list treated as compound expression in initializer [-fpermissive]
   12 | static auto TreeView_change(GtkTreeSelection*, pTreeView* p) -> void { p->_updateSelected(); }
      |                                                            ^
../hiro/core/../gtk/widget/tree-view.cpp:12:62: error: expected ',' or ';' before '->' token
   12 | static auto TreeView_change(GtkTreeSelection*, pTreeView* p) -> void { p->_updateSelected(); }
      |                                                              ^~
../hiro/core/../gtk/widget/tree-view.cpp:13:30: error: 'GtkTreeView' was not declared in this scope; did you mean 'wTreeView'?
   13 | static auto TreeView_context(GtkTreeView*, pTreeView* p) -> void { p->self().doContext(); }
      |                              ^~~~~~~~~~~
      |                              wTreeView
../hiro/core/../gtk/widget/tree-view.cpp:13:42: error: expected primary-expression before ',' token
   13 | static auto TreeView_context(GtkTreeView*, pTreeView* p) -> void { p->self().doContext(); }
      |                                          ^
../hiro/core/../gtk/widget/tree-view.cpp:13:53: error: expected primary-expression before '*' token
   13 | static auto TreeView_context(GtkTreeView*, pTreeView* p) -> void { p->self().doContext(); }
      |                                                     ^
../hiro/core/../gtk/widget/tree-view.cpp:13:55: error: 'p' was not declared in this scope
   13 | static auto TreeView_context(GtkTreeView*, pTreeView* p) -> void { p->self().doContext(); }
      |                                                       ^
../hiro/core/../gtk/widget/tree-view.cpp:13:56: error: expression list treated as compound expression in initializer [-fpermissive]
   13 | static auto TreeView_context(GtkTreeView*, pTreeView* p) -> void { p->self().doContext(); }
      |                                                        ^
../hiro/core/../gtk/widget/tree-view.cpp:13:58: error: expected ',' or ';' before '->' token
   13 | static auto TreeView_context(GtkTreeView*, pTreeView* p) -> void { p->self().doContext(); }
      |                                                          ^~
../hiro/core/../gtk/widget/tree-view.cpp:14:31: error: 'GtkTreeViewColumn' was not declared in this scope
   14 | static auto TreeView_dataFunc(GtkTreeViewColumn* column, GtkCellRenderer* renderer, GtkTreeModel* model, GtkTreeIter* iter, pTreeView* p) -> void { return p->_doDataFunc(column, renderer, iter); }
      |                               ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:14:50: error: 'column' was not declared in this scope
   14 | static auto TreeView_dataFunc(GtkTreeViewColumn* column, GtkCellRenderer* renderer, GtkTreeModel* model, GtkTreeIter* iter, pTreeView* p) -> void { return p->_doDataFunc(column, renderer, iter); }
      |                                                  ^~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:14:58: error: 'GtkCellRenderer' was not declared in this scope
   14 | static auto TreeView_dataFunc(GtkTreeViewColumn* column, GtkCellRenderer* renderer, GtkTreeModel* model, GtkTreeIter* iter, pTreeView* p) -> void { return p->_doDataFunc(column, renderer, iter); }
      |                                                          ^~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:14:75: error: 'renderer' was not declared in this scope
   14 | static auto TreeView_dataFunc(GtkTreeViewColumn* column, GtkCellRenderer* renderer, GtkTreeModel* model, GtkTreeIter* iter, pTreeView* p) -> void { return p->_doDataFunc(column, renderer, iter); }
      |                                                                           ^~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:14:85: error: 'GtkTreeModel' was not declared in this scope
   14 | static auto TreeView_dataFunc(GtkTreeViewColumn* column, GtkCellRenderer* renderer, GtkTreeModel* model, GtkTreeIter* iter, pTreeView* p) -> void { return p->_doDataFunc(column, renderer, iter); }
      |                                                                                     ^~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:14:99: error: 'model' was not declared in this scope; did you mean 'modfl'?
   14 | static auto TreeView_dataFunc(GtkTreeViewColumn* column, GtkCellRenderer* renderer, GtkTreeModel* model, GtkTreeIter* iter, pTreeView* p) -> void { return p->_doDataFunc(column, renderer, iter); }
      |                                                                                                   ^~~~~
      |                                                                                                   modfl
../hiro/core/../gtk/widget/tree-view.cpp:14:106: error: 'GtkTreeIter' was not declared in this scope
   14 | static auto TreeView_dataFunc(GtkTreeViewColumn* column, GtkCellRenderer* renderer, GtkTreeModel* model, GtkTreeIter* iter, pTreeView* p) -> void { return p->_doDataFunc(column, renderer, iter); }
      |                                                                                                          ^~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:14:119: error: 'iter' was not declared in this scope
   14 | static auto TreeView_dataFunc(GtkTreeViewColumn* column, GtkCellRenderer* renderer, GtkTreeModel* model, GtkTreeIter* iter, pTreeView* p) -> void { return p->_doDataFunc(column, renderer, iter); }
      |                                                                                                                       ^~~~
../hiro/core/../gtk/widget/tree-view.cpp:14:134: error: expected primary-expression before '*' token
   14 | static auto TreeView_dataFunc(GtkTreeViewColumn* column, GtkCellRenderer* renderer, GtkTreeModel* model, GtkTreeIter* iter, pTreeView* p) -> void { return p->_doDataFunc(column, renderer, iter); }
      |                                                                                                                                      ^
../hiro/core/../gtk/widget/tree-view.cpp:14:136: error: 'p' was not declared in this scope
   14 | static auto TreeView_dataFunc(GtkTreeViewColumn* column, GtkCellRenderer* renderer, GtkTreeModel* model, GtkTreeIter* iter, pTreeView* p) -> void { return p->_doDataFunc(column, renderer, iter); }
      |                                                                                                                                        ^
../hiro/core/../gtk/widget/tree-view.cpp:14:137: error: expression list treated as compound expression in initializer [-fpermissive]
   14 | static auto TreeView_dataFunc(GtkTreeViewColumn* column, GtkCellRenderer* renderer, GtkTreeModel* model, GtkTreeIter* iter, pTreeView* p) -> void { return p->_doDataFunc(column, renderer, iter); }
      |                                                                                                                                         ^
../hiro/core/../gtk/widget/tree-view.cpp:14:139: error: expected ',' or ';' before '->' token
   14 | static auto TreeView_dataFunc(GtkTreeViewColumn* column, GtkCellRenderer* renderer, GtkTreeModel* model, GtkTreeIter* iter, pTreeView* p) -> void { return p->_doDataFunc(column, renderer, iter); }
      |                                                                                                                                           ^~
../hiro/core/../gtk/widget/tree-view.cpp:15:31: error: 'GtkWidget' was not declared in this scope; did you mean 'wWidget'?
   15 | static auto TreeView_keyPress(GtkWidget*, GdkEventKey*, pTreeView* p) -> int { p->suppressActivate = false; return false; }
      |                               ^~~~~~~~~
      |                               wWidget
../hiro/core/../gtk/widget/tree-view.cpp:15:41: error: expected primary-expression before ',' token
   15 | static auto TreeView_keyPress(GtkWidget*, GdkEventKey*, pTreeView* p) -> int { p->suppressActivate = false; return false; }
      |                                         ^
../hiro/core/../gtk/widget/tree-view.cpp:15:43: error: 'GdkEventKey' was not declared in this scope
   15 | static auto TreeView_keyPress(GtkWidget*, GdkEventKey*, pTreeView* p) -> int { p->suppressActivate = false; return false; }
      |                                           ^~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:15:55: error: expected primary-expression before ',' token
   15 | static auto TreeView_keyPress(GtkWidget*, GdkEventKey*, pTreeView* p) -> int { p->suppressActivate = false; return false; }
      |                                                       ^
../hiro/core/../gtk/widget/tree-view.cpp:15:66: error: expected primary-expression before '*' token
   15 | static auto TreeView_keyPress(GtkWidget*, GdkEventKey*, pTreeView* p) -> int { p->suppressActivate = false; return false; }
      |                                                                  ^
../hiro/core/../gtk/widget/tree-view.cpp:15:68: error: 'p' was not declared in this scope
   15 | static auto TreeView_keyPress(GtkWidget*, GdkEventKey*, pTreeView* p) -> int { p->suppressActivate = false; return false; }
      |                                                                    ^
../hiro/core/../gtk/widget/tree-view.cpp:15:69: error: expression list treated as compound expression in initializer [-fpermissive]
   15 | static auto TreeView_keyPress(GtkWidget*, GdkEventKey*, pTreeView* p) -> int { p->suppressActivate = false; return false; }
      |                                                                     ^
../hiro/core/../gtk/widget/tree-view.cpp:15:71: error: expected ',' or ';' before '->' token
   15 | static auto TreeView_keyPress(GtkWidget*, GdkEventKey*, pTreeView* p) -> int { p->suppressActivate = false; return false; }
      |                                                                       ^~
../hiro/core/../gtk/widget/tree-view.cpp:16:29: error: 'GtkCellRendererToggle' was not declared in this scope
   16 | static auto TreeView_toggle(GtkCellRendererToggle*, char* path, pTreeView* p) -> void { p->_togglePath(path); }
      |                             ^~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:16:51: error: expected primary-expression before ',' token
   16 | static auto TreeView_toggle(GtkCellRendererToggle*, char* path, pTreeView* p) -> void { p->_togglePath(path); }
      |                                                   ^
../hiro/core/../gtk/widget/tree-view.cpp:16:53: error: expected primary-expression before 'char'
   16 | static auto TreeView_toggle(GtkCellRendererToggle*, char* path, pTreeView* p) -> void { p->_togglePath(path); }
      |                                                     ^~~~
../hiro/core/../gtk/widget/tree-view.cpp:16:74: error: expected primary-expression before '*' token
   16 | static auto TreeView_toggle(GtkCellRendererToggle*, char* path, pTreeView* p) -> void { p->_togglePath(path); }
      |                                                                          ^
../hiro/core/../gtk/widget/tree-view.cpp:16:76: error: 'p' was not declared in this scope
   16 | static auto TreeView_toggle(GtkCellRendererToggle*, char* path, pTreeView* p) -> void { p->_togglePath(path); }
      |                                                                            ^
../hiro/core/../gtk/widget/tree-view.cpp:16:77: error: expression list treated as compound expression in initializer [-fpermissive]
   16 | static auto TreeView_toggle(GtkCellRendererToggle*, char* path, pTreeView* p) -> void { p->_togglePath(path); }
      |                                                                             ^
../hiro/core/../gtk/widget/tree-view.cpp:16:79: error: expected ',' or ';' before '->' token
   16 | static auto TreeView_toggle(GtkCellRendererToggle*, char* path, pTreeView* p) -> void { p->_togglePath(path); }
      |                                                                               ^~
../hiro/core/../gtk/widget/tree-view.cpp: In member function 'virtual void hiro::pTreeView::construct()':
../hiro/core/../gtk/widget/tree-view.cpp:19:3: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   19 |   gtkWidget = gtk_scrolled_window_new(0, 0);
      |   ^~~~~~~~~
      |   pWidget
../hiro/core/../gtk/widget/tree-view.cpp:19:15: error: 'gtk_scrolled_window_new' was not declared in this scope
   19 |   gtkWidget = gtk_scrolled_window_new(0, 0);
      |               ^~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:20:3: error: 'gtkScrolledWindow' was not declared in this scope
   20 |   gtkScrolledWindow = GTK_SCROLLED_WINDOW(gtkWidget);
      |   ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:20:23: error: 'GTK_SCROLLED_WINDOW' was not declared in this scope
   20 |   gtkScrolledWindow = GTK_SCROLLED_WINDOW(gtkWidget);
      |                       ^~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:21:53: error: 'GTK_POLICY_AUTOMATIC' was not declared in this scope
   21 |   gtk_scrolled_window_set_policy(gtkScrolledWindow, GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
      |                                                     ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:21:3: error: 'gtk_scrolled_window_set_policy' was not declared in this scope
   21 |   gtk_scrolled_window_set_policy(gtkScrolledWindow, GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:22:58: error: 'GTK_SHADOW_ETCHED_IN' was not declared in this scope
   22 |   gtk_scrolled_window_set_shadow_type(gtkScrolledWindow, GTK_SHADOW_ETCHED_IN);
      |                                                          ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:22:3: error: 'gtk_scrolled_window_set_shadow_type' was not declared in this scope
   22 |   gtk_scrolled_window_set_shadow_type(gtkScrolledWindow, GTK_SHADOW_ETCHED_IN);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:24:3: error: 'gtkTreeStore' was not declared in this scope
   24 |   gtkTreeStore = gtk_tree_store_new(3, G_TYPE_BOOLEAN, GDK_TYPE_PIXBUF, G_TYPE_STRING);
      |   ^~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:24:40: error: 'G_TYPE_BOOLEAN' was not declared in this scope
   24 |   gtkTreeStore = gtk_tree_store_new(3, G_TYPE_BOOLEAN, GDK_TYPE_PIXBUF, G_TYPE_STRING);
      |                                        ^~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:24:56: error: 'GDK_TYPE_PIXBUF' was not declared in this scope
   24 |   gtkTreeStore = gtk_tree_store_new(3, G_TYPE_BOOLEAN, GDK_TYPE_PIXBUF, G_TYPE_STRING);
      |                                                        ^~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:24:73: error: 'G_TYPE_STRING' was not declared in this scope
   24 |   gtkTreeStore = gtk_tree_store_new(3, G_TYPE_BOOLEAN, GDK_TYPE_PIXBUF, G_TYPE_STRING);
      |                                                                         ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:24:18: error: 'gtk_tree_store_new' was not declared in this scope
   24 |   gtkTreeStore = gtk_tree_store_new(3, G_TYPE_BOOLEAN, GDK_TYPE_PIXBUF, G_TYPE_STRING);
      |                  ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:25:3: error: 'gtkTreeModel' was not declared in this scope
   25 |   gtkTreeModel = GTK_TREE_MODEL(gtkTreeStore);
      |   ^~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:25:18: error: 'GTK_TREE_MODEL' was not declared in this scope
   25 |   gtkTreeModel = GTK_TREE_MODEL(gtkTreeStore);
      |                  ^~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:27:3: error: 'gtkWidgetChild' was not declared in this scope
   27 |   gtkWidgetChild = gtk_tree_view_new_with_model(gtkTreeModel);
      |   ^~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:27:20: error: 'gtk_tree_view_new_with_model' was not declared in this scope
   27 |   gtkWidgetChild = gtk_tree_view_new_with_model(gtkTreeModel);
      |                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:28:3: error: 'gtkTreeView' was not declared in this scope; did you mean 'pTreeView'?
   28 |   gtkTreeView = GTK_TREE_VIEW(gtkWidgetChild);
      |   ^~~~~~~~~~~
      |   pTreeView
../hiro/core/../gtk/widget/tree-view.cpp:28:17: error: 'GTK_TREE_VIEW' was not declared in this scope
   28 |   gtkTreeView = GTK_TREE_VIEW(gtkWidgetChild);
      |                 ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:29:3: error: 'gtkTreeSelection' was not declared in this scope
   29 |   gtkTreeSelection = gtk_tree_view_get_selection(gtkTreeView);
      |   ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:29:22: error: 'gtk_tree_view_get_selection' was not declared in this scope
   29 |   gtkTreeSelection = gtk_tree_view_get_selection(gtkTreeView);
      |                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:30:3: error: 'gtk_tree_view_set_headers_visible' was not declared in this scope
   30 |   gtk_tree_view_set_headers_visible(gtkTreeView, false);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:31:3: error: 'gtk_tree_view_set_show_expanders' was not declared in this scope
   31 |   gtk_tree_view_set_show_expanders(gtkTreeView, false);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:32:3: error: 'gtk_tree_view_set_level_indentation' was not declared in this scope
   32 |   gtk_tree_view_set_level_indentation(gtkTreeView, TreeViewIndentation);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:33:21: error: 'GTK_CONTAINER' was not declared in this scope
   33 |   gtk_container_add(GTK_CONTAINER(gtkWidget), gtkWidgetChild);
      |                     ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:33:3: error: 'gtk_container_add' was not declared in this scope
   33 |   gtk_container_add(GTK_CONTAINER(gtkWidget), gtkWidgetChild);
      |   ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:34:3: error: 'gtk_widget_show' was not declared in this scope
   34 |   gtk_widget_show(gtkWidgetChild);
      |   ^~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:36:3: error: 'gtkTreeViewColumn' was not declared in this scope
   36 |   gtkTreeViewColumn = gtk_tree_view_column_new();
      |   ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:36:23: error: 'gtk_tree_view_column_new' was not declared in this scope
   36 |   gtkTreeViewColumn = gtk_tree_view_column_new();
      |                       ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:38:3: error: 'gtkCellToggle' was not declared in this scope
   38 |   gtkCellToggle = gtk_cell_renderer_toggle_new();
      |   ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:38:19: error: 'gtk_cell_renderer_toggle_new' was not declared in this scope
   38 |   gtkCellToggle = gtk_cell_renderer_toggle_new();
      |                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:39:3: error: 'gtk_tree_view_column_pack_start' was not declared in this scope
   39 |   gtk_tree_view_column_pack_start(gtkTreeViewColumn, gtkCellToggle, false);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:40:3: error: 'gtk_tree_view_column_set_attributes' was not declared in this scope
   40 |   gtk_tree_view_column_set_attributes(gtkTreeViewColumn, gtkCellToggle, "active", 0, nullptr);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:41:62: error: 'GTK_CELL_RENDERER' was not declared in this scope
   41 |   gtk_tree_view_column_set_cell_data_func(gtkTreeViewColumn, GTK_CELL_RENDERER(gtkCellToggle), (GtkTreeCellDataFunc)TreeView_dataFunc, (gpointer)this, nullptr);
      |                                                              ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:41:97: error: 'GtkTreeCellDataFunc' was not declared in this scope
   41 |   gtk_tree_view_column_set_cell_data_func(gtkTreeViewColumn, GTK_CELL_RENDERER(gtkCellToggle), (GtkTreeCellDataFunc)TreeView_dataFunc, (gpointer)this, nullptr);
      |                                                                                                 ^~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:41:137: error: 'gpointer' was not declared in this scope
   41 |   gtk_tree_view_column_set_cell_data_func(gtkTreeViewColumn, GTK_CELL_RENDERER(gtkCellToggle), (GtkTreeCellDataFunc)TreeView_dataFunc, (gpointer)this, nullptr);
      |                                                                                                                                         ^~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:41:3: error: 'gtk_tree_view_column_set_cell_data_func' was not declared in this scope
   41 |   gtk_tree_view_column_set_cell_data_func(gtkTreeViewColumn, GTK_CELL_RENDERER(gtkCellToggle), (GtkTreeCellDataFunc)TreeView_dataFunc, (gpointer)this, nullptr);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:43:3: error: 'gtkCellPixbuf' was not declared in this scope
   43 |   gtkCellPixbuf = gtk_cell_renderer_pixbuf_new();
      |   ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:43:19: error: 'gtk_cell_renderer_pixbuf_new' was not declared in this scope
   43 |   gtkCellPixbuf = gtk_cell_renderer_pixbuf_new();
      |                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:46:117: error: expected ')' before 'TreeView_dataFunc'
   46 |   gtk_tree_view_column_set_cell_data_func(gtkTreeViewColumn, GTK_CELL_RENDERER(gtkCellPixbuf), (GtkTreeCellDataFunc)TreeView_dataFunc, (gpointer)this, nullptr);
      |                                          ~                                                                          ^~~~~~~~~~~~~~~~~
      |                                                                                                                     )
../hiro/core/../gtk/widget/tree-view.cpp:46:146: error: expected ')' before 'this'
   46 |   gtk_tree_view_column_set_cell_data_func(gtkTreeViewColumn, GTK_CELL_RENDERER(gtkCellPixbuf), (GtkTreeCellDataFunc)TreeView_dataFunc, (gpointer)this, nullptr);
      |                                          ~                                                                                                       ^~~~
      |                                                                                                                                                  )
../hiro/core/../gtk/widget/tree-view.cpp:48:3: error: 'gtkCellText' was not declared in this scope
   48 |   gtkCellText = gtk_cell_renderer_text_new();
      |   ^~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:48:17: error: 'gtk_cell_renderer_text_new' was not declared in this scope
   48 |   gtkCellText = gtk_cell_renderer_text_new();
      |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:51:115: error: expected ')' before 'TreeView_dataFunc'
   51 |   gtk_tree_view_column_set_cell_data_func(gtkTreeViewColumn, GTK_CELL_RENDERER(gtkCellText), (GtkTreeCellDataFunc)TreeView_dataFunc, (gpointer)this, nullptr);
      |                                          ~                                                                        ^~~~~~~~~~~~~~~~~
      |                                                                                                                   )
../hiro/core/../gtk/widget/tree-view.cpp:51:144: error: expected ')' before 'this'
   51 |   gtk_tree_view_column_set_cell_data_func(gtkTreeViewColumn, GTK_CELL_RENDERER(gtkCellText), (GtkTreeCellDataFunc)TreeView_dataFunc, (gpointer)this, nullptr);
      |                                          ~                                                                                                     ^~~~
      |                                                                                                                                                )
../hiro/core/../gtk/widget/tree-view.cpp:53:3: error: 'gtk_tree_view_append_column' was not declared in this scope
   53 |   gtk_tree_view_append_column(gtkTreeView, gtkTreeViewColumn);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:54:3: error: 'gtk_tree_view_set_search_column' was not declared in this scope
   54 |   gtk_tree_view_set_search_column(gtkTreeView, 2);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:60:20: error: 'G_OBJECT' was not declared in this scope
   60 |   g_signal_connect(G_OBJECT(gtkWidgetChild), "button-press-event", G_CALLBACK(TreeView_buttonEvent), (gpointer)this);
      |                    ^~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:60:68: error: 'G_CALLBACK' was not declared in this scope
   60 |   g_signal_connect(G_OBJECT(gtkWidgetChild), "button-press-event", G_CALLBACK(TreeView_buttonEvent), (gpointer)this);
      |                                                                    ^~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:60:112: error: expected ')' before 'this'
   60 |   g_signal_connect(G_OBJECT(gtkWidgetChild), "button-press-event", G_CALLBACK(TreeView_buttonEvent), (gpointer)this);
      |                   ~                                                                                            ^~~~
      |                                                                                                                )
../hiro/core/../gtk/widget/tree-view.cpp:60:3: error: 'g_signal_connect' was not declared in this scope
   60 |   g_signal_connect(G_OBJECT(gtkWidgetChild), "button-press-event", G_CALLBACK(TreeView_buttonEvent), (gpointer)this);
      |   ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:61:114: error: expected ')' before 'this'
   61 |   g_signal_connect(G_OBJECT(gtkWidgetChild), "button-release-event", G_CALLBACK(TreeView_buttonEvent), (gpointer)this);
      |                   ~                                                                                              ^~~~
      |                                                                                                                  )
../hiro/core/../gtk/widget/tree-view.cpp:62:106: error: expected ')' before 'this'
   62 |   g_signal_connect(G_OBJECT(gtkWidgetChild), "key-press-event", G_CALLBACK(TreeView_keyPress), (gpointer)this);
      |                   ~                                                                                      ^~~~
      |                                                                                                          )
../hiro/core/../gtk/widget/tree-view.cpp:63:100: error: expected ')' before 'this'
   63 |   g_signal_connect(G_OBJECT(gtkWidgetChild), "popup-menu", G_CALLBACK(TreeView_context), (gpointer)this);
      |                   ~                                                                                ^~~~
      |                                                                                                    )
../hiro/core/../gtk/widget/tree-view.cpp:64:104: error: expected ')' before 'this'
   64 |   g_signal_connect(G_OBJECT(gtkWidgetChild), "row-activated", G_CALLBACK(TreeView_activate), (gpointer)this);
      |                   ~                                                                                    ^~~~
      |                                                                                                        )
../hiro/core/../gtk/widget/tree-view.cpp:65:98: error: expected ')' before 'this'
   65 |   g_signal_connect(G_OBJECT(gtkTreeSelection), "changed", G_CALLBACK(TreeView_change), (gpointer)this);
      |                   ~                                                                              ^~~~
      |                                                                                                  )
../hiro/core/../gtk/widget/tree-view.cpp:66:95: error: expected ')' before 'this'
   66 |   g_signal_connect(G_OBJECT(gtkCellToggle), "toggled", G_CALLBACK(TreeView_toggle), (gpointer)this);
      |                   ~                                                                           ^~~~
      |                                                                                               )
../hiro/core/../gtk/widget/tree-view.cpp:73:3: error: 'gtkEntry' was not declared in this scope
   73 |   gtkEntry = (GtkEntry*)gtk_entry_new();
      |   ^~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:73:15: error: 'GtkEntry' was not declared in this scope
   73 |   gtkEntry = (GtkEntry*)gtk_entry_new();
      |               ^~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:73:24: error: expected primary-expression before ')' token
   73 |   gtkEntry = (GtkEntry*)gtk_entry_new();
      |                        ^
../hiro/core/../gtk/widget/tree-view.cpp:74:3: error: 'gtk_tree_view_set_search_entry' was not declared in this scope
   74 |   gtk_tree_view_set_search_entry(gtkTreeView, gtkEntry);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp: In member function 'virtual void hiro::pTreeView::destruct()':
../hiro/core/../gtk/widget/tree-view.cpp:80:33: error: 'gtkEntry' was not declared in this scope
   80 |   gtk_widget_destroy(GTK_WIDGET(gtkEntry));
      |                                 ^~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:80:22: error: 'GTK_WIDGET' was not declared in this scope
   80 |   gtk_widget_destroy(GTK_WIDGET(gtkEntry));
      |                      ^~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:80:3: error: 'gtk_widget_destroy' was not declared in this scope
   80 |   gtk_widget_destroy(GTK_WIDGET(gtkEntry));
      |   ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:81:22: error: 'gtkWidgetChild' was not declared in this scope
   81 |   gtk_widget_destroy(gtkWidgetChild);
      |                      ^~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:82:22: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   82 |   gtk_widget_destroy(gtkWidget);
      |                      ^~~~~~~~~
      |                      pWidget
../hiro/core/../gtk/widget/tree-view.cpp: In member function 'void hiro::pTreeView::setBackgroundColor(hiro::Color)':
../hiro/core/../gtk/widget/tree-view.cpp:98:19: error: 'CreateColor' was not declared in this scope
   98 |   auto gdkColor = CreateColor(color);
      |                   ^~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:99:26: error: 'gtkWidgetChild' was not declared in this scope
   99 |   gtk_widget_modify_base(gtkWidgetChild, GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |                          ^~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:99:42: error: 'GTK_STATE_NORMAL' was not declared in this scope
   99 |   gtk_widget_modify_base(gtkWidgetChild, GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |                                          ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:99:3: error: 'gtk_widget_modify_base' was not declared in this scope
   99 |   gtk_widget_modify_base(gtkWidgetChild, GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |   ^~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp: In member function 'virtual void hiro::pTreeView::setFocused()':
../hiro/core/../gtk/widget/tree-view.cpp:106:51: error: 'gtkTreeSelection' was not declared in this scope
  106 |   bool selected = gtk_tree_selection_get_selected(gtkTreeSelection, nullptr, nullptr);
      |                                                   ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:106:19: error: 'gtk_tree_selection_get_selected' was not declared in this scope
  106 |   bool selected = gtk_tree_selection_get_selected(gtkTreeSelection, nullptr, nullptr);
      |                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:107:25: error: 'gtkWidgetChild' was not declared in this scope
  107 |   gtk_widget_grab_focus(gtkWidgetChild);
      |                         ^~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:107:3: error: 'gtk_widget_grab_focus' was not declared in this scope
  107 |   gtk_widget_grab_focus(gtkWidgetChild);
      |   ^~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:108:17: error: 'gtk_tree_selection_unselect_all' was not declared in this scope
  108 |   if(!selected) gtk_tree_selection_unselect_all(gtkTreeSelection);
      |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp: In member function 'void hiro::pTreeView::setForegroundColor(hiro::Color)':
../hiro/core/../gtk/widget/tree-view.cpp:113:19: error: 'CreateColor' was not declared in this scope
  113 |   auto gdkColor = CreateColor(color);
      |                   ^~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:114:26: error: 'gtkWidgetChild' was not declared in this scope
  114 |   gtk_widget_modify_text(gtkWidgetChild, GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |                          ^~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:114:42: error: 'GTK_STATE_NORMAL' was not declared in this scope
  114 |   gtk_widget_modify_text(gtkWidgetChild, GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |                                          ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:114:3: error: 'gtk_widget_modify_text' was not declared in this scope
  114 |   gtk_widget_modify_text(gtkWidgetChild, GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
      |   ^~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp: At global scope:
../hiro/core/../gtk/widget/tree-view.cpp:124:6: error: 'auto hiro::pTreeView::_activatePath' is not a static data member of 'struct hiro::pTreeView'
  124 | auto pTreeView::_activatePath(GtkTreePath* gtkPath) -> void {
      |      ^~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:124:31: error: 'GtkTreePath' was not declared in this scope
  124 | auto pTreeView::_activatePath(GtkTreePath* gtkPath) -> void {
      |                               ^~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:124:44: error: 'gtkPath' was not declared in this scope
  124 | auto pTreeView::_activatePath(GtkTreePath* gtkPath) -> void {
      |                                            ^~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:124:53: error: expected ',' or ';' before '->' token
  124 | auto pTreeView::_activatePath(GtkTreePath* gtkPath) -> void {
      |                                                     ^~
../hiro/core/../gtk/widget/tree-view.cpp:137:6: error: 'auto hiro::pTreeView::_buttonEvent' is not a static data member of 'struct hiro::pTreeView'
  137 | auto pTreeView::_buttonEvent(GdkEventButton* gdkEvent) -> signed {
      |      ^~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:137:30: error: 'GdkEventButton' was not declared in this scope
  137 | auto pTreeView::_buttonEvent(GdkEventButton* gdkEvent) -> signed {
      |                              ^~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:137:46: error: 'gdkEvent' was not declared in this scope
  137 | auto pTreeView::_buttonEvent(GdkEventButton* gdkEvent) -> signed {
      |                                              ^~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:137:56: error: expected ',' or ';' before '->' token
  137 | auto pTreeView::_buttonEvent(GdkEventButton* gdkEvent) -> signed {
      |                                                        ^~
../hiro/core/../gtk/widget/tree-view.cpp:195:6: error: 'auto hiro::pTreeView::_doDataFunc' is not a static data member of 'struct hiro::pTreeView'
  195 | auto pTreeView::_doDataFunc(GtkTreeViewColumn* column, GtkCellRenderer* renderer, GtkTreeIter* iter) -> void {
      |      ^~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:195:29: error: 'GtkTreeViewColumn' was not declared in this scope
  195 | auto pTreeView::_doDataFunc(GtkTreeViewColumn* column, GtkCellRenderer* renderer, GtkTreeIter* iter) -> void {
      |                             ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:195:48: error: 'column' was not declared in this scope
  195 | auto pTreeView::_doDataFunc(GtkTreeViewColumn* column, GtkCellRenderer* renderer, GtkTreeIter* iter) -> void {
      |                                                ^~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:195:56: error: 'GtkCellRenderer' was not declared in this scope
  195 | auto pTreeView::_doDataFunc(GtkTreeViewColumn* column, GtkCellRenderer* renderer, GtkTreeIter* iter) -> void {
      |                                                        ^~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:195:73: error: 'renderer' was not declared in this scope
  195 | auto pTreeView::_doDataFunc(GtkTreeViewColumn* column, GtkCellRenderer* renderer, GtkTreeIter* iter) -> void {
      |                                                                         ^~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:195:83: error: 'GtkTreeIter' was not declared in this scope
  195 | auto pTreeView::_doDataFunc(GtkTreeViewColumn* column, GtkCellRenderer* renderer, GtkTreeIter* iter) -> void {
      |                                                                                   ^~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:195:96: error: 'iter' was not declared in this scope
  195 | auto pTreeView::_doDataFunc(GtkTreeViewColumn* column, GtkCellRenderer* renderer, GtkTreeIter* iter) -> void {
      |                                                                                                ^~~~
../hiro/core/../gtk/widget/tree-view.cpp:195:100: error: expression list treated as compound expression in initializer [-fpermissive]
  195 | auto pTreeView::_doDataFunc(GtkTreeViewColumn* column, GtkCellRenderer* renderer, GtkTreeIter* iter) -> void {
      |                                                                                                    ^
../hiro/core/../gtk/widget/tree-view.cpp:195:102: error: expected ',' or ';' before '->' token
  195 | auto pTreeView::_doDataFunc(GtkTreeViewColumn* column, GtkCellRenderer* renderer, GtkTreeIter* iter) -> void {
      |                                                                                                      ^~
../hiro/core/../gtk/widget/tree-view.cpp: In member function 'void hiro::pTreeView::_togglePath(nall::string)':
../hiro/core/../gtk/widget/tree-view.cpp:233:24: error: 'gtkTreeStore' was not declared in this scope
  233 |     gtk_tree_store_set(gtkTreeStore, &item->self()->gtkIter, 0, checked, -1);
      |                        ^~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:233:53: error: 'struct hiro::pTreeViewItem' has no member named 'gtkIter'
  233 |     gtk_tree_store_set(gtkTreeStore, &item->self()->gtkIter, 0, checked, -1);
      |                                                     ^~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:233:5: error: 'gtk_tree_store_set' was not declared in this scope
  233 |     gtk_tree_store_set(gtkTreeStore, &item->self()->gtkIter, 0, checked, -1);
      |     ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp: In member function 'void hiro::pTreeView::_updateScrollBars()':
../hiro/core/../gtk/widget/tree-view.cpp:250:58: error: 'gtkScrolledWindow' was not declared in this scope
  250 |   if(auto scrollBar = gtk_scrolled_window_get_vscrollbar(gtkScrolledWindow)) {
      |                                                          ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:250:23: error: 'gtk_scrolled_window_get_vscrollbar' was not declared in this scope
  250 |   if(auto scrollBar = gtk_scrolled_window_get_vscrollbar(gtkScrolledWindow)) {
      |                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:251:5: error: 'GtkAllocation' was not declared in this scope
  251 |     GtkAllocation allocation;
      |     ^~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:252:43: error: 'allocation' was not declared in this scope
  252 |     gtk_widget_get_allocation(scrollBar, &allocation);
      |                                           ^~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:252:5: error: 'gtk_widget_get_allocation' was not declared in this scope
  252 |     gtk_widget_get_allocation(scrollBar, &allocation);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:253:8: error: 'gtk_widget_get_visible' was not declared in this scope
  253 |     if(gtk_widget_get_visible(scrollBar)) maximumWidth -= allocation.width;
      |        ^~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:263:34: error: 'gtkScrolledWindow' was not declared in this scope
  263 |   gtk_scrolled_window_set_policy(gtkScrolledWindow,
      |                                  ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:264:36: error: 'GTK_POLICY_ALWAYS' was not declared in this scope
  264 |     minimumWidth >= maximumWidth ? GTK_POLICY_ALWAYS : GTK_POLICY_NEVER,
      |                                    ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:264:56: error: 'GTK_POLICY_NEVER' was not declared in this scope
  264 |     minimumWidth >= maximumWidth ? GTK_POLICY_ALWAYS : GTK_POLICY_NEVER,
      |                                                        ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:265:5: error: 'GTK_POLICY_AUTOMATIC' was not declared in this scope
  265 |     GTK_POLICY_AUTOMATIC);
      |     ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:263:3: error: 'gtk_scrolled_window_set_policy' was not declared in this scope
  263 |   gtk_scrolled_window_set_policy(gtkScrolledWindow,
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp: In member function 'void hiro::pTreeView::_updateSelected()':
../hiro/core/../gtk/widget/tree-view.cpp:271:37: error: 'gtkTreeSelection' was not declared in this scope
  271 |     gtk_tree_selection_unselect_all(gtkTreeSelection);
      |                                     ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:271:5: error: 'gtk_tree_selection_unselect_all' was not declared in this scope
  271 |     gtk_tree_selection_unselect_all(gtkTreeSelection);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:275:3: error: 'GtkTreeIter' was not declared in this scope
  275 |   GtkTreeIter iter;
      |   ^~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:276:38: error: 'gtkTreeSelection' was not declared in this scope
  276 |   if(gtk_tree_selection_get_selected(gtkTreeSelection, &gtkTreeModel, &iter)) {
      |                                      ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:276:57: error: 'gtkTreeModel' was not declared in this scope
  276 |   if(gtk_tree_selection_get_selected(gtkTreeSelection, &gtkTreeModel, &iter)) {
      |                                                         ^~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:276:72: error: 'iter' was not declared in this scope
  276 |   if(gtk_tree_selection_get_selected(gtkTreeSelection, &gtkTreeModel, &iter)) {
      |                                                                        ^~~~
../hiro/core/../gtk/widget/tree-view.cpp:276:6: error: 'gtk_tree_selection_get_selected' was not declared in this scope
  276 |   if(gtk_tree_selection_get_selected(gtkTreeSelection, &gtkTreeModel, &iter)) {
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:277:21: error: 'gtk_tree_model_get_string_from_iter' was not declared in this scope
  277 |     char* gtkPath = gtk_tree_model_get_string_from_iter(gtkTreeModel, &iter);
      |                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view.cpp:279:5: error: 'g_free' was not declared in this scope; did you mean 'free'?
  279 |     g_free(gtkPath);
      |     ^~~~~~
      |     free
In file included from ../hiro/core/../gtk/platform.cpp:60:
../hiro/core/../gtk/widget/tree-view-item.cpp: In member function 'virtual void hiro::pTreeViewItem::construct()':
../hiro/core/../gtk/widget/tree-view-item.cpp:8:43: error: 'struct hiro::pTreeView' has no member named 'gtkTreeStore'
    8 |       gtk_tree_store_append(parentWidget->gtkTreeStore, &gtkIter, &parentItem->gtkIter);
      |                                           ^~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view-item.cpp:8:58: error: 'gtkIter' was not declared in this scope
    8 |       gtk_tree_store_append(parentWidget->gtkTreeStore, &gtkIter, &parentItem->gtkIter);
      |                                                          ^~~~~~~
../hiro/core/../gtk/widget/tree-view-item.cpp:8:80: error: 'struct hiro::pTreeViewItem' has no member named 'gtkIter'
    8 |       gtk_tree_store_append(parentWidget->gtkTreeStore, &gtkIter, &parentItem->gtkIter);
      |                                                                                ^~~~~~~
../hiro/core/../gtk/widget/tree-view-item.cpp:8:7: error: 'gtk_tree_store_append' was not declared in this scope
    8 |       gtk_tree_store_append(parentWidget->gtkTreeStore, &gtkIter, &parentItem->gtkIter);
      |       ^~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view-item.cpp:10:43: error: 'struct hiro::pTreeView' has no member named 'gtkTreeStore'
   10 |       gtk_tree_store_append(parentWidget->gtkTreeStore, &gtkIter, nullptr);
      |                                           ^~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view-item.cpp:10:58: error: 'gtkIter' was not declared in this scope
   10 |       gtk_tree_store_append(parentWidget->gtkTreeStore, &gtkIter, nullptr);
      |                                                          ^~~~~~~
../hiro/core/../gtk/widget/tree-view-item.cpp:10:7: error: 'gtk_tree_store_append' was not declared in this scope
   10 |       gtk_tree_store_append(parentWidget->gtkTreeStore, &gtkIter, nullptr);
      |       ^~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view-item.cpp: In member function 'virtual void hiro::pTreeViewItem::destruct()':
../hiro/core/../gtk/widget/tree-view-item.cpp:20:35: error: 'struct hiro::pTreeView' has no member named 'gtkTreeStore'
   20 |     gtk_tree_store_remove(parent->gtkTreeStore, &gtkIter);
      |                                   ^~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view-item.cpp:20:50: error: 'gtkIter' was not declared in this scope
   20 |     gtk_tree_store_remove(parent->gtkTreeStore, &gtkIter);
      |                                                  ^~~~~~~
../hiro/core/../gtk/widget/tree-view-item.cpp:20:5: error: 'gtk_tree_store_remove' was not declared in this scope
   20 |     gtk_tree_store_remove(parent->gtkTreeStore, &gtkIter);
      |     ^~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view-item.cpp: In member function 'void hiro::pTreeViewItem::setChecked(bool)':
../hiro/core/../gtk/widget/tree-view-item.cpp:41:38: error: 'struct hiro::pTreeView' has no member named 'gtkTreeStore'
   41 |     gtk_tree_store_set(parentWidget->gtkTreeStore, &gtkIter, 0, checked, -1);
      |                                      ^~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view-item.cpp:41:53: error: 'gtkIter' was not declared in this scope
   41 |     gtk_tree_store_set(parentWidget->gtkTreeStore, &gtkIter, 0, checked, -1);
      |                                                     ^~~~~~~
../hiro/core/../gtk/widget/tree-view-item.cpp:41:5: error: 'gtk_tree_store_set' was not declared in this scope
   41 |     gtk_tree_store_set(parentWidget->gtkTreeStore, &gtkIter, 0, checked, -1);
      |     ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view-item.cpp: In member function 'void hiro::pTreeViewItem::setExpanded(bool)':
../hiro/core/../gtk/widget/tree-view-item.cpp:47:55: error: 'struct hiro::pTreeView' has no member named 'gtkTreeModel'
   47 |     auto path = gtk_tree_model_get_path(parentWidget->gtkTreeModel, &gtkIter);
      |                                                       ^~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view-item.cpp:47:70: error: 'gtkIter' was not declared in this scope
   47 |     auto path = gtk_tree_model_get_path(parentWidget->gtkTreeModel, &gtkIter);
      |                                                                      ^~~~~~~
../hiro/core/../gtk/widget/tree-view-item.cpp:47:17: error: 'gtk_tree_model_get_path' was not declared in this scope
   47 |     auto path = gtk_tree_model_get_path(parentWidget->gtkTreeModel, &gtkIter);
      |                 ^~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view-item.cpp:49:46: error: 'struct hiro::pTreeView' has no member named 'gtkTreeView'; did you mean 'pTreeView'?
   49 |       gtk_tree_view_expand_row(parentWidget->gtkTreeView, path, false);
      |                                              ^~~~~~~~~~~
      |                                              pTreeView
../hiro/core/../gtk/widget/tree-view-item.cpp:49:7: error: 'gtk_tree_view_expand_row' was not declared in this scope
   49 |       gtk_tree_view_expand_row(parentWidget->gtkTreeView, path, false);
      |       ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view-item.cpp:56:48: error: 'struct hiro::pTreeView' has no member named 'gtkTreeView'; did you mean 'pTreeView'?
   56 |       gtk_tree_view_collapse_row(parentWidget->gtkTreeView, path);
      |                                                ^~~~~~~~~~~
      |                                                pTreeView
../hiro/core/../gtk/widget/tree-view-item.cpp:56:7: error: 'gtk_tree_view_collapse_row' was not declared in this scope
   56 |       gtk_tree_view_collapse_row(parentWidget->gtkTreeView, path);
      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view-item.cpp:58:5: error: 'gtk_tree_path_free' was not declared in this scope
   58 |     gtk_tree_path_free(path);
      |     ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view-item.cpp: In member function 'virtual void hiro::pTreeViewItem::setFocused()':
../hiro/core/../gtk/widget/tree-view-item.cpp:64:5: error: 'GtkTreePath' was not declared in this scope
   64 |     GtkTreePath* path = gtk_tree_path_new_from_string(self().path().transform("/", ":"));
      |     ^~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view-item.cpp:64:18: error: 'path' was not declared in this scope; did you mean 'nall::Location::path'?
   64 |     GtkTreePath* path = gtk_tree_path_new_from_string(self().path().transform("/", ":"));
      |                  ^~~~
      |                  nall::Location::path
../nall/location.hpp:9:13: note: 'nall::Location::path' declared here
    9 | inline auto path(string_view self) -> string {
      |             ^~~~
../hiro/core/../gtk/widget/tree-view-item.cpp:64:25: error: 'gtk_tree_path_new_from_string' was not declared in this scope
   64 |     GtkTreePath* path = gtk_tree_path_new_from_string(self().path().transform("/", ":"));
      |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view-item.cpp:65:44: error: 'struct hiro::pTreeView' has no member named 'gtkTreeView'; did you mean 'pTreeView'?
   65 |     gtk_tree_view_set_cursor(parentWidget->gtkTreeView, path, nullptr, false);
      |                                            ^~~~~~~~~~~
      |                                            pTreeView
../hiro/core/../gtk/widget/tree-view-item.cpp:65:5: error: 'gtk_tree_view_set_cursor' was not declared in this scope
   65 |     gtk_tree_view_set_cursor(parentWidget->gtkTreeView, path, nullptr, false);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view-item.cpp:66:48: error: 'struct hiro::pTreeView' has no member named 'gtkTreeView'; did you mean 'pTreeView'?
   66 |     gtk_tree_view_scroll_to_cell(parentWidget->gtkTreeView, path, nullptr, true, 0.5, 0.0);
      |                                                ^~~~~~~~~~~
      |                                                pTreeView
../hiro/core/../gtk/widget/tree-view-item.cpp:66:5: error: 'gtk_tree_view_scroll_to_cell' was not declared in this scope
   66 |     gtk_tree_view_scroll_to_cell(parentWidget->gtkTreeView, path, nullptr, true, 0.5, 0.0);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view-item.cpp:67:5: error: 'gtk_tree_path_free' was not declared in this scope
   67 |     gtk_tree_path_free(path);
      |     ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view-item.cpp: In member function 'void hiro::pTreeViewItem::setIcon(const nall::image&)':
../hiro/core/../gtk/widget/tree-view-item.cpp:77:21: error: 'CreatePixbuf' was not declared in this scope
   77 |       auto pixbuf = CreatePixbuf(icon);
      |                     ^~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view-item.cpp:78:40: error: 'struct hiro::pTreeView' has no member named 'gtkTreeStore'
   78 |       gtk_tree_store_set(parentWidget->gtkTreeStore, &gtkIter, 1, pixbuf, -1);
      |                                        ^~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view-item.cpp:78:55: error: 'gtkIter' was not declared in this scope
   78 |       gtk_tree_store_set(parentWidget->gtkTreeStore, &gtkIter, 1, pixbuf, -1);
      |                                                       ^~~~~~~
../hiro/core/../gtk/widget/tree-view-item.cpp:78:7: error: 'gtk_tree_store_set' was not declared in this scope
   78 |       gtk_tree_store_set(parentWidget->gtkTreeStore, &gtkIter, 1, pixbuf, -1);
      |       ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view-item.cpp:80:40: error: 'struct hiro::pTreeView' has no member named 'gtkTreeStore'
   80 |       gtk_tree_store_set(parentWidget->gtkTreeStore, &gtkIter, 1, nullptr, -1);
      |                                        ^~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view-item.cpp:80:55: error: 'gtkIter' was not declared in this scope
   80 |       gtk_tree_store_set(parentWidget->gtkTreeStore, &gtkIter, 1, nullptr, -1);
      |                                                       ^~~~~~~
../hiro/core/../gtk/widget/tree-view-item.cpp:80:7: error: 'gtk_tree_store_set' was not declared in this scope
   80 |       gtk_tree_store_set(parentWidget->gtkTreeStore, &gtkIter, 1, nullptr, -1);
      |       ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view-item.cpp: In member function 'void hiro::pTreeViewItem::setSelected()':
../hiro/core/../gtk/widget/tree-view-item.cpp:90:58: error: 'struct hiro::pTreeView' has no member named 'gtkTreeModel'
   90 |     auto gtkPath = gtk_tree_model_get_path(parentWidget->gtkTreeModel, &gtkIter);
      |                                                          ^~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view-item.cpp:90:73: error: 'gtkIter' was not declared in this scope
   90 |     auto gtkPath = gtk_tree_model_get_path(parentWidget->gtkTreeModel, &gtkIter);
      |                                                                         ^~~~~~~
../hiro/core/../gtk/widget/tree-view-item.cpp:90:20: error: 'gtk_tree_model_get_path' was not declared in this scope
   90 |     auto gtkPath = gtk_tree_model_get_path(parentWidget->gtkTreeModel, &gtkIter);
      |                    ^~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view-item.cpp:91:48: error: 'struct hiro::pTreeView' has no member named 'gtkTreeView'; did you mean 'pTreeView'?
   91 |     gtk_tree_view_expand_to_path(parentWidget->gtkTreeView, gtkPath);
      |                                                ^~~~~~~~~~~
      |                                                pTreeView
../hiro/core/../gtk/widget/tree-view-item.cpp:91:5: error: 'gtk_tree_view_expand_to_path' was not declared in this scope
   91 |     gtk_tree_view_expand_to_path(parentWidget->gtkTreeView, gtkPath);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view-item.cpp:92:5: error: 'gtk_tree_path_free' was not declared in this scope
   92 |     gtk_tree_path_free(gtkPath);
      |     ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view-item.cpp:93:50: error: 'struct hiro::pTreeView' has no member named 'gtkTreeSelection'
   93 |     gtk_tree_selection_select_iter(parentWidget->gtkTreeSelection, &gtkIter);
      |                                                  ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view-item.cpp:93:5: error: 'gtk_tree_selection_select_iter' was not declared in this scope
   93 |     gtk_tree_selection_select_iter(parentWidget->gtkTreeSelection, &gtkIter);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view-item.cpp: In member function 'void hiro::pTreeViewItem::setText(const nall::string&)':
../hiro/core/../gtk/widget/tree-view-item.cpp:100:38: error: 'struct hiro::pTreeView' has no member named 'gtkTreeStore'
  100 |     gtk_tree_store_set(parentWidget->gtkTreeStore, &gtkIter, 2, (const char*)text, -1);
      |                                      ^~~~~~~~~~~~
../hiro/core/../gtk/widget/tree-view-item.cpp:100:53: error: 'gtkIter' was not declared in this scope
  100 |     gtk_tree_store_set(parentWidget->gtkTreeStore, &gtkIter, 2, (const char*)text, -1);
      |                                                     ^~~~~~~
../hiro/core/../gtk/widget/tree-view-item.cpp:100:5: error: 'gtk_tree_store_set' was not declared in this scope
  100 |     gtk_tree_store_set(parentWidget->gtkTreeStore, &gtkIter, 2, (const char*)text, -1);
      |     ^~~~~~~~~~~~~~~~~~
In file included from ../hiro/core/../gtk/platform.cpp:61:
../hiro/core/../gtk/widget/vertical-scroll-bar.cpp: At global scope:
../hiro/core/../gtk/widget/vertical-scroll-bar.cpp:5:38: error: 'GtkRange' was not declared in this scope
    5 | static auto VerticalScrollBar_change(GtkRange* gtkRange, pVerticalScrollBar* p) -> void {
      |                                      ^~~~~~~~
../hiro/core/../gtk/widget/vertical-scroll-bar.cpp:5:48: error: 'gtkRange' was not declared in this scope
    5 | static auto VerticalScrollBar_change(GtkRange* gtkRange, pVerticalScrollBar* p) -> void {
      |                                                ^~~~~~~~
../hiro/core/../gtk/widget/vertical-scroll-bar.cpp:5:76: error: expected primary-expression before '*' token
    5 | static auto VerticalScrollBar_change(GtkRange* gtkRange, pVerticalScrollBar* p) -> void {
      |                                                                            ^
../hiro/core/../gtk/widget/vertical-scroll-bar.cpp:5:78: error: 'p' was not declared in this scope
    5 | static auto VerticalScrollBar_change(GtkRange* gtkRange, pVerticalScrollBar* p) -> void {
      |                                                                              ^
../hiro/core/../gtk/widget/vertical-scroll-bar.cpp:5:79: error: expression list treated as compound expression in initializer [-fpermissive]
    5 | static auto VerticalScrollBar_change(GtkRange* gtkRange, pVerticalScrollBar* p) -> void {
      |                                                                               ^
../hiro/core/../gtk/widget/vertical-scroll-bar.cpp:5:81: error: expected ',' or ';' before '->' token
    5 | static auto VerticalScrollBar_change(GtkRange* gtkRange, pVerticalScrollBar* p) -> void {
      |                                                                                 ^~
../hiro/core/../gtk/widget/vertical-scroll-bar.cpp: In member function 'virtual void hiro::pVerticalScrollBar::construct()':
../hiro/core/../gtk/widget/vertical-scroll-bar.cpp:16:3: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   16 |   gtkWidget = gtk_scrollbar_new(GTK_ORIENTATION_VERTICAL, nullptr);
      |   ^~~~~~~~~
      |   pWidget
../hiro/core/../gtk/widget/vertical-scroll-bar.cpp:16:33: error: 'GTK_ORIENTATION_VERTICAL' was not declared in this scope
   16 |   gtkWidget = gtk_scrollbar_new(GTK_ORIENTATION_VERTICAL, nullptr);
      |                                 ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/vertical-scroll-bar.cpp:16:15: error: 'gtk_scrollbar_new' was not declared in this scope
   16 |   gtkWidget = gtk_scrollbar_new(GTK_ORIENTATION_VERTICAL, nullptr);
      |               ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/vertical-scroll-bar.cpp:22:20: error: 'G_OBJECT' was not declared in this scope
   22 |   g_signal_connect(G_OBJECT(gtkWidget), "value-changed", G_CALLBACK(VerticalScrollBar_change), (gpointer)this);
      |                    ^~~~~~~~
../hiro/core/../gtk/widget/vertical-scroll-bar.cpp:22:58: error: 'G_CALLBACK' was not declared in this scope
   22 |   g_signal_connect(G_OBJECT(gtkWidget), "value-changed", G_CALLBACK(VerticalScrollBar_change), (gpointer)this);
      |                                                          ^~~~~~~~~~
../hiro/core/../gtk/widget/vertical-scroll-bar.cpp:22:97: error: 'gpointer' was not declared in this scope
   22 |   g_signal_connect(G_OBJECT(gtkWidget), "value-changed", G_CALLBACK(VerticalScrollBar_change), (gpointer)this);
      |                                                                                                 ^~~~~~~~
../hiro/core/../gtk/widget/vertical-scroll-bar.cpp:22:3: error: 'g_signal_connect' was not declared in this scope
   22 |   g_signal_connect(G_OBJECT(gtkWidget), "value-changed", G_CALLBACK(VerticalScrollBar_change), (gpointer)this);
      |   ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/vertical-scroll-bar.cpp: In member function 'virtual void hiro::pVerticalScrollBar::destruct()':
../hiro/core/../gtk/widget/vertical-scroll-bar.cpp:28:22: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   28 |   gtk_widget_destroy(gtkWidget);
      |                      ^~~~~~~~~
      |                      pWidget
../hiro/core/../gtk/widget/vertical-scroll-bar.cpp:28:3: error: 'gtk_widget_destroy' was not declared in this scope
   28 |   gtk_widget_destroy(gtkWidget);
      |   ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/vertical-scroll-bar.cpp: In member function 'void hiro::pVerticalScrollBar::setLength(unsigned int)':
../hiro/core/../gtk/widget/vertical-scroll-bar.cpp:38:33: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   38 |   gtk_range_set_range(GTK_RANGE(gtkWidget), 0, max(1u, length - 1));
      |                                 ^~~~~~~~~
      |                                 pWidget
../hiro/core/../gtk/widget/vertical-scroll-bar.cpp:38:23: error: 'GTK_RANGE' was not declared in this scope
   38 |   gtk_range_set_range(GTK_RANGE(gtkWidget), 0, max(1u, length - 1));
      |                       ^~~~~~~~~
../hiro/core/../gtk/widget/vertical-scroll-bar.cpp:38:3: error: 'gtk_range_set_range' was not declared in this scope
   38 |   gtk_range_set_range(GTK_RANGE(gtkWidget), 0, max(1u, length - 1));
      |   ^~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/vertical-scroll-bar.cpp:39:3: error: 'gtk_range_set_increments' was not declared in this scope
   39 |   gtk_range_set_increments(GTK_RANGE(gtkWidget), 1, length >> 3);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/vertical-scroll-bar.cpp: In member function 'void hiro::pVerticalScrollBar::setPosition(unsigned int)':
../hiro/core/../gtk/widget/vertical-scroll-bar.cpp:43:33: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   43 |   gtk_range_set_value(GTK_RANGE(gtkWidget), position);
      |                                 ^~~~~~~~~
      |                                 pWidget
../hiro/core/../gtk/widget/vertical-scroll-bar.cpp:43:23: error: 'GTK_RANGE' was not declared in this scope
   43 |   gtk_range_set_value(GTK_RANGE(gtkWidget), position);
      |                       ^~~~~~~~~
../hiro/core/../gtk/widget/vertical-scroll-bar.cpp:43:3: error: 'gtk_range_set_value' was not declared in this scope
   43 |   gtk_range_set_value(GTK_RANGE(gtkWidget), position);
      |   ^~~~~~~~~~~~~~~~~~~
In file included from ../hiro/core/../gtk/platform.cpp:62:
../hiro/core/../gtk/widget/vertical-slider.cpp: At global scope:
../hiro/core/../gtk/widget/vertical-slider.cpp:5:35: error: 'GtkRange' was not declared in this scope
    5 | static auto VerticalSlider_change(GtkRange* gtkRange, pVerticalSlider* p) -> void {
      |                                   ^~~~~~~~
../hiro/core/../gtk/widget/vertical-slider.cpp:5:45: error: 'gtkRange' was not declared in this scope
    5 | static auto VerticalSlider_change(GtkRange* gtkRange, pVerticalSlider* p) -> void {
      |                                             ^~~~~~~~
../hiro/core/../gtk/widget/vertical-slider.cpp:5:70: error: expected primary-expression before '*' token
    5 | static auto VerticalSlider_change(GtkRange* gtkRange, pVerticalSlider* p) -> void {
      |                                                                      ^
../hiro/core/../gtk/widget/vertical-slider.cpp:5:72: error: 'p' was not declared in this scope
    5 | static auto VerticalSlider_change(GtkRange* gtkRange, pVerticalSlider* p) -> void {
      |                                                                        ^
../hiro/core/../gtk/widget/vertical-slider.cpp:5:73: error: expression list treated as compound expression in initializer [-fpermissive]
    5 | static auto VerticalSlider_change(GtkRange* gtkRange, pVerticalSlider* p) -> void {
      |                                                                         ^
../hiro/core/../gtk/widget/vertical-slider.cpp:5:75: error: expected ',' or ';' before '->' token
    5 | static auto VerticalSlider_change(GtkRange* gtkRange, pVerticalSlider* p) -> void {
      |                                                                           ^~
../hiro/core/../gtk/widget/vertical-slider.cpp: In member function 'virtual void hiro::pVerticalSlider::construct()':
../hiro/core/../gtk/widget/vertical-slider.cpp:16:3: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   16 |   gtkWidget = gtk_scale_new_with_range(GTK_ORIENTATION_VERTICAL, 0, 100, 1);
      |   ^~~~~~~~~
      |   pWidget
../hiro/core/../gtk/widget/vertical-slider.cpp:16:40: error: 'GTK_ORIENTATION_VERTICAL' was not declared in this scope
   16 |   gtkWidget = gtk_scale_new_with_range(GTK_ORIENTATION_VERTICAL, 0, 100, 1);
      |                                        ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/vertical-slider.cpp:16:15: error: 'gtk_scale_new_with_range' was not declared in this scope
   16 |   gtkWidget = gtk_scale_new_with_range(GTK_ORIENTATION_VERTICAL, 0, 100, 1);
      |               ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/vertical-slider.cpp:18:28: error: 'GTK_SCALE' was not declared in this scope
   18 |   gtk_scale_set_draw_value(GTK_SCALE(gtkWidget), false);
      |                            ^~~~~~~~~
../hiro/core/../gtk/widget/vertical-slider.cpp:18:3: error: 'gtk_scale_set_draw_value' was not declared in this scope
   18 |   gtk_scale_set_draw_value(GTK_SCALE(gtkWidget), false);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/vertical-slider.cpp:23:20: error: 'G_OBJECT' was not declared in this scope
   23 |   g_signal_connect(G_OBJECT(gtkWidget), "value-changed", G_CALLBACK(VerticalSlider_change), (gpointer)this);
      |                    ^~~~~~~~
../hiro/core/../gtk/widget/vertical-slider.cpp:23:58: error: 'G_CALLBACK' was not declared in this scope
   23 |   g_signal_connect(G_OBJECT(gtkWidget), "value-changed", G_CALLBACK(VerticalSlider_change), (gpointer)this);
      |                                                          ^~~~~~~~~~
../hiro/core/../gtk/widget/vertical-slider.cpp:23:94: error: 'gpointer' was not declared in this scope
   23 |   g_signal_connect(G_OBJECT(gtkWidget), "value-changed", G_CALLBACK(VerticalSlider_change), (gpointer)this);
      |                                                                                              ^~~~~~~~
../hiro/core/../gtk/widget/vertical-slider.cpp:23:3: error: 'g_signal_connect' was not declared in this scope
   23 |   g_signal_connect(G_OBJECT(gtkWidget), "value-changed", G_CALLBACK(VerticalSlider_change), (gpointer)this);
      |   ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/vertical-slider.cpp: In member function 'virtual void hiro::pVerticalSlider::destruct()':
../hiro/core/../gtk/widget/vertical-slider.cpp:29:22: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   29 |   gtk_widget_destroy(gtkWidget);
      |                      ^~~~~~~~~
      |                      pWidget
../hiro/core/../gtk/widget/vertical-slider.cpp:29:3: error: 'gtk_widget_destroy' was not declared in this scope
   29 |   gtk_widget_destroy(gtkWidget);
      |   ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/vertical-slider.cpp: In member function 'void hiro::pVerticalSlider::setLength(unsigned int)':
../hiro/core/../gtk/widget/vertical-slider.cpp:38:33: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   38 |   gtk_range_set_range(GTK_RANGE(gtkWidget), 0, max(1u, length - 1));
      |                                 ^~~~~~~~~
      |                                 pWidget
../hiro/core/../gtk/widget/vertical-slider.cpp:38:23: error: 'GTK_RANGE' was not declared in this scope
   38 |   gtk_range_set_range(GTK_RANGE(gtkWidget), 0, max(1u, length - 1));
      |                       ^~~~~~~~~
../hiro/core/../gtk/widget/vertical-slider.cpp:38:3: error: 'gtk_range_set_range' was not declared in this scope
   38 |   gtk_range_set_range(GTK_RANGE(gtkWidget), 0, max(1u, length - 1));
      |   ^~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/vertical-slider.cpp:39:3: error: 'gtk_range_set_increments' was not declared in this scope
   39 |   gtk_range_set_increments(GTK_RANGE(gtkWidget), 1, length >> 3);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/vertical-slider.cpp: In member function 'void hiro::pVerticalSlider::setPosition(unsigned int)':
../hiro/core/../gtk/widget/vertical-slider.cpp:43:33: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   43 |   gtk_range_set_value(GTK_RANGE(gtkWidget), position);
      |                                 ^~~~~~~~~
      |                                 pWidget
../hiro/core/../gtk/widget/vertical-slider.cpp:43:23: error: 'GTK_RANGE' was not declared in this scope
   43 |   gtk_range_set_value(GTK_RANGE(gtkWidget), position);
      |                       ^~~~~~~~~
../hiro/core/../gtk/widget/vertical-slider.cpp:43:3: error: 'gtk_range_set_value' was not declared in this scope
   43 |   gtk_range_set_value(GTK_RANGE(gtkWidget), position);
      |   ^~~~~~~~~~~~~~~~~~~
In file included from ../hiro/core/../gtk/platform.cpp:63:
../hiro/core/../gtk/widget/viewport.cpp: At global scope:
../hiro/core/../gtk/widget/viewport.cpp:6:27: error: 'GtkWidget' was not declared in this scope; did you mean 'wWidget'?
    6 | static auto Viewport_draw(GtkWidget* widget, cairo_t* context, pViewport* p) -> signed {
      |                           ^~~~~~~~~
      |                           wWidget
../hiro/core/../gtk/widget/viewport.cpp:6:38: error: 'widget' was not declared in this scope; did you mean 'Widget'?
    6 | static auto Viewport_draw(GtkWidget* widget, cairo_t* context, pViewport* p) -> signed {
      |                                      ^~~~~~
      |                                      Widget
../hiro/core/../gtk/widget/viewport.cpp:6:46: error: 'cairo_t' was not declared in this scope
    6 | static auto Viewport_draw(GtkWidget* widget, cairo_t* context, pViewport* p) -> signed {
      |                                              ^~~~~~~
../hiro/core/../gtk/widget/viewport.cpp:6:55: error: 'context' was not declared in this scope; did you mean 'ucontext'?
    6 | static auto Viewport_draw(GtkWidget* widget, cairo_t* context, pViewport* p) -> signed {
      |                                                       ^~~~~~~
      |                                                       ucontext
../hiro/core/../gtk/widget/viewport.cpp:6:73: error: expected primary-expression before '*' token
    6 | static auto Viewport_draw(GtkWidget* widget, cairo_t* context, pViewport* p) -> signed {
      |                                                                         ^
../hiro/core/../gtk/widget/viewport.cpp:6:75: error: 'p' was not declared in this scope
    6 | static auto Viewport_draw(GtkWidget* widget, cairo_t* context, pViewport* p) -> signed {
      |                                                                           ^
../hiro/core/../gtk/widget/viewport.cpp:6:76: error: expression list treated as compound expression in initializer [-fpermissive]
    6 | static auto Viewport_draw(GtkWidget* widget, cairo_t* context, pViewport* p) -> signed {
      |                                                                            ^
../hiro/core/../gtk/widget/viewport.cpp:6:78: error: expected ',' or ';' before '->' token
    6 | static auto Viewport_draw(GtkWidget* widget, cairo_t* context, pViewport* p) -> signed {
      |                                                                              ^~
../hiro/core/../gtk/widget/viewport.cpp:12:29: error: 'GtkWidget' was not declared in this scope; did you mean 'wWidget'?
   12 | static auto Viewport_expose(GtkWidget* widget, GdkEventExpose* event, pViewport* p) -> signed {
      |                             ^~~~~~~~~
      |                             wWidget
../hiro/core/../gtk/widget/viewport.cpp:12:40: error: 'widget' was not declared in this scope; did you mean 'Widget'?
   12 | static auto Viewport_expose(GtkWidget* widget, GdkEventExpose* event, pViewport* p) -> signed {
      |                                        ^~~~~~
      |                                        Widget
../hiro/core/../gtk/widget/viewport.cpp:12:48: error: 'GdkEventExpose' was not declared in this scope
   12 | static auto Viewport_expose(GtkWidget* widget, GdkEventExpose* event, pViewport* p) -> signed {
      |                                                ^~~~~~~~~~~~~~
../hiro/core/../gtk/widget/viewport.cpp:12:64: error: 'event' was not declared in this scope; did you mean 'servent'?
   12 | static auto Viewport_expose(GtkWidget* widget, GdkEventExpose* event, pViewport* p) -> signed {
      |                                                                ^~~~~
      |                                                                servent
../hiro/core/../gtk/widget/viewport.cpp:12:80: error: expected primary-expression before '*' token
   12 | static auto Viewport_expose(GtkWidget* widget, GdkEventExpose* event, pViewport* p) -> signed {
      |                                                                                ^
../hiro/core/../gtk/widget/viewport.cpp:12:82: error: 'p' was not declared in this scope
   12 | static auto Viewport_expose(GtkWidget* widget, GdkEventExpose* event, pViewport* p) -> signed {
      |                                                                                  ^
../hiro/core/../gtk/widget/viewport.cpp:12:83: error: expression list treated as compound expression in initializer [-fpermissive]
   12 | static auto Viewport_expose(GtkWidget* widget, GdkEventExpose* event, pViewport* p) -> signed {
      |                                                                                   ^
../hiro/core/../gtk/widget/viewport.cpp:12:85: error: expected ',' or ';' before '->' token
   12 | static auto Viewport_expose(GtkWidget* widget, GdkEventExpose* event, pViewport* p) -> signed {
      |                                                                                     ^~
../hiro/core/../gtk/widget/viewport.cpp:17:31: error: 'GtkWidget' was not declared in this scope; did you mean 'wWidget'?
   17 | static auto Viewport_keyPress(GtkWidget* widget, GdkEventKey* event, pViewport* p) -> signed {
      |                               ^~~~~~~~~
      |                               wWidget
../hiro/core/../gtk/widget/viewport.cpp:17:42: error: 'widget' was not declared in this scope; did you mean 'Widget'?
   17 | static auto Viewport_keyPress(GtkWidget* widget, GdkEventKey* event, pViewport* p) -> signed {
      |                                          ^~~~~~
      |                                          Widget
../hiro/core/../gtk/widget/viewport.cpp:17:50: error: 'GdkEventKey' was not declared in this scope
   17 | static auto Viewport_keyPress(GtkWidget* widget, GdkEventKey* event, pViewport* p) -> signed {
      |                                                  ^~~~~~~~~~~
../hiro/core/../gtk/widget/viewport.cpp:17:63: error: 'event' was not declared in this scope; did you mean 'servent'?
   17 | static auto Viewport_keyPress(GtkWidget* widget, GdkEventKey* event, pViewport* p) -> signed {
      |                                                               ^~~~~
      |                                                               servent
../hiro/core/../gtk/widget/viewport.cpp:17:79: error: expected primary-expression before '*' token
   17 | static auto Viewport_keyPress(GtkWidget* widget, GdkEventKey* event, pViewport* p) -> signed {
      |                                                                               ^
../hiro/core/../gtk/widget/viewport.cpp:17:81: error: 'p' was not declared in this scope
   17 | static auto Viewport_keyPress(GtkWidget* widget, GdkEventKey* event, pViewport* p) -> signed {
      |                                                                                 ^
../hiro/core/../gtk/widget/viewport.cpp:17:82: error: expression list treated as compound expression in initializer [-fpermissive]
   17 | static auto Viewport_keyPress(GtkWidget* widget, GdkEventKey* event, pViewport* p) -> signed {
      |                                                                                  ^
../hiro/core/../gtk/widget/viewport.cpp:17:84: error: expected ',' or ';' before '->' token
   17 | static auto Viewport_keyPress(GtkWidget* widget, GdkEventKey* event, pViewport* p) -> signed {
      |                                                                                    ^~
../hiro/core/../gtk/widget/viewport.cpp:26:33: error: 'GtkWidget' was not declared in this scope; did you mean 'wWidget'?
   26 | static auto Viewport_mousePress(GtkWidget* widget, GdkEventButton* event, pViewport* p) -> signed {
      |                                 ^~~~~~~~~
      |                                 wWidget
../hiro/core/../gtk/widget/viewport.cpp:26:44: error: 'widget' was not declared in this scope; did you mean 'Widget'?
   26 | static auto Viewport_mousePress(GtkWidget* widget, GdkEventButton* event, pViewport* p) -> signed {
      |                                            ^~~~~~
      |                                            Widget
../hiro/core/../gtk/widget/viewport.cpp:26:52: error: 'GdkEventButton' was not declared in this scope
   26 | static auto Viewport_mousePress(GtkWidget* widget, GdkEventButton* event, pViewport* p) -> signed {
      |                                                    ^~~~~~~~~~~~~~
../hiro/core/../gtk/widget/viewport.cpp:26:68: error: 'event' was not declared in this scope; did you mean 'servent'?
   26 | static auto Viewport_mousePress(GtkWidget* widget, GdkEventButton* event, pViewport* p) -> signed {
      |                                                                    ^~~~~
      |                                                                    servent
../hiro/core/../gtk/widget/viewport.cpp:26:84: error: expected primary-expression before '*' token
   26 | static auto Viewport_mousePress(GtkWidget* widget, GdkEventButton* event, pViewport* p) -> signed {
      |                                                                                    ^
../hiro/core/../gtk/widget/viewport.cpp:26:86: error: 'p' was not declared in this scope
   26 | static auto Viewport_mousePress(GtkWidget* widget, GdkEventButton* event, pViewport* p) -> signed {
      |                                                                                      ^
../hiro/core/../gtk/widget/viewport.cpp:26:87: error: expression list treated as compound expression in initializer [-fpermissive]
   26 | static auto Viewport_mousePress(GtkWidget* widget, GdkEventButton* event, pViewport* p) -> signed {
      |                                                                                       ^
../hiro/core/../gtk/widget/viewport.cpp:26:89: error: expected ',' or ';' before '->' token
   26 | static auto Viewport_mousePress(GtkWidget* widget, GdkEventButton* event, pViewport* p) -> signed {
      |                                                                                         ^~
../hiro/core/../gtk/widget/viewport.cpp: In member function 'virtual void hiro::pViewport::construct()':
../hiro/core/../gtk/widget/viewport.cpp:35:3: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   35 |   gtkWidget = gtk_drawing_area_new();
      |   ^~~~~~~~~
      |   pWidget
../hiro/core/../gtk/widget/viewport.cpp:35:15: error: 'gtk_drawing_area_new' was not declared in this scope
   35 |   gtkWidget = gtk_drawing_area_new();
      |               ^~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/viewport.cpp:37:5: error: 'GDK_BUTTON_PRESS_MASK' was not declared in this scope
   37 |     GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_EXPOSURE_MASK | GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_POINTER_MOTION_MASK);
      |     ^~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/viewport.cpp:37:29: error: 'GDK_BUTTON_RELEASE_MASK' was not declared in this scope
   37 |     GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_EXPOSURE_MASK | GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_POINTER_MOTION_MASK);
      |                             ^~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/viewport.cpp:37:55: error: 'GDK_EXPOSURE_MASK' was not declared in this scope
   37 |     GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_EXPOSURE_MASK | GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_POINTER_MOTION_MASK);
      |                                                       ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/viewport.cpp:37:75: error: 'GDK_ENTER_NOTIFY_MASK' was not declared in this scope
   37 |     GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_EXPOSURE_MASK | GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_POINTER_MOTION_MASK);
      |                                                                           ^~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/viewport.cpp:37:99: error: 'GDK_LEAVE_NOTIFY_MASK' was not declared in this scope
   37 |     GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_EXPOSURE_MASK | GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_POINTER_MOTION_MASK);
      |                                                                                                   ^~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/viewport.cpp:37:123: error: 'GDK_POINTER_MOTION_MASK' was not declared in this scope
   37 |     GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_EXPOSURE_MASK | GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_POINTER_MOTION_MASK);
      |                                                                                                                           ^~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/viewport.cpp:36:3: error: 'gtk_widget_add_events' was not declared in this scope
   36 |   gtk_widget_add_events(gtkWidget,
      |   ^~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/viewport.cpp:39:20: error: 'G_OBJECT' was not declared in this scope
   39 |   g_signal_connect(G_OBJECT(gtkWidget), "button-press-event", G_CALLBACK(Viewport_mousePress), (gpointer)this);
      |                    ^~~~~~~~
../hiro/core/../gtk/widget/viewport.cpp:39:63: error: 'G_CALLBACK' was not declared in this scope
   39 |   g_signal_connect(G_OBJECT(gtkWidget), "button-press-event", G_CALLBACK(Viewport_mousePress), (gpointer)this);
      |                                                               ^~~~~~~~~~
../hiro/core/../gtk/widget/viewport.cpp:39:97: error: 'gpointer' was not declared in this scope
   39 |   g_signal_connect(G_OBJECT(gtkWidget), "button-press-event", G_CALLBACK(Viewport_mousePress), (gpointer)this);
      |                                                                                                 ^~~~~~~~
../hiro/core/../gtk/widget/viewport.cpp:39:3: error: 'g_signal_connect' was not declared in this scope
   39 |   g_signal_connect(G_OBJECT(gtkWidget), "button-press-event", G_CALLBACK(Viewport_mousePress), (gpointer)this);
      |   ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/viewport.cpp:40:108: error: expected ')' before 'this'
   40 |   g_signal_connect(G_OBJECT(gtkWidget), "button-release-event", G_CALLBACK(Widget_mouseRelease), (gpointer)this);
      |                   ~                                                                                        ^~~~
      |                                                                                                            )
../hiro/core/../gtk/widget/viewport.cpp:41:98: error: expected ')' before 'this'
   41 |   g_signal_connect(G_OBJECT(gtkWidget), "drag-data-received", G_CALLBACK(Widget_drop), (gpointer)this);
      |                   ~                                                                              ^~~~
      |                                                                                                  )
../hiro/core/../gtk/widget/viewport.cpp:45:86: error: expected ')' before 'this'
   45 |   g_signal_connect(G_OBJECT(gtkWidget), "draw", G_CALLBACK(Viewport_draw), (gpointer)this);
      |                   ~                                                                  ^~~~
      |                                                                                      )
../hiro/core/../gtk/widget/viewport.cpp:47:101: error: expected ')' before 'this'
   47 |   g_signal_connect(G_OBJECT(gtkWidget), "key-press-event", G_CALLBACK(Viewport_keyPress), (gpointer)this);
      |                   ~                                                                                 ^~~~
      |                                                                                                     )
../hiro/core/../gtk/widget/viewport.cpp:48:104: error: expected ')' before 'this'
   48 |   g_signal_connect(G_OBJECT(gtkWidget), "enter-notify-event", G_CALLBACK(Widget_mouseEnter), (gpointer)this);
      |                   ~                                                                                    ^~~~
      |                                                                                                        )
../hiro/core/../gtk/widget/viewport.cpp:49:104: error: expected ')' before 'this'
   49 |   g_signal_connect(G_OBJECT(gtkWidget), "leave-notify-event", G_CALLBACK(Widget_mouseLeave), (gpointer)this);
      |                   ~                                                                                    ^~~~
      |                                                                                                        )
../hiro/core/../gtk/widget/viewport.cpp:50:104: error: expected ')' before 'this'
   50 |   g_signal_connect(G_OBJECT(gtkWidget), "motion-notify-event", G_CALLBACK(Widget_mouseMove), (gpointer)this);
      |                   ~                                                                                    ^~~~
      |                                                                                                        )
../hiro/core/../gtk/widget/viewport.cpp: In member function 'virtual void hiro::pViewport::destruct()':
../hiro/core/../gtk/widget/viewport.cpp:56:6: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   56 |   if(gtkWidget) gtk_widget_destroy(gtkWidget), gtkWidget = nullptr;
      |      ^~~~~~~~~
      |      pWidget
../hiro/core/../gtk/widget/viewport.cpp:56:17: error: 'gtk_widget_destroy' was not declared in this scope
   56 |   if(gtkWidget) gtk_widget_destroy(gtkWidget), gtkWidget = nullptr;
      |                 ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/viewport.cpp:57:3: error: 'gtkParent' was not declared in this scope
   57 |   gtkParent = nullptr;
      |   ^~~~~~~~~
../hiro/core/../gtk/widget/viewport.cpp: In member function 'virtual void hiro::pViewport::setFocusable(bool)':
../hiro/core/../gtk/widget/viewport.cpp:73:28: error: 'gtkWidget' was not declared in this scope; did you mean 'pWidget'?
   73 |   gtk_widget_set_can_focus(gtkWidget, focusable);
      |                            ^~~~~~~~~
      |                            pWidget
../hiro/core/../gtk/widget/viewport.cpp:73:3: error: 'gtk_widget_set_can_focus' was not declared in this scope
   73 |   gtk_widget_set_can_focus(gtkWidget, focusable);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/widget/viewport.cpp: At global scope:
../hiro/core/../gtk/widget/viewport.cpp:76:6: error: 'auto hiro::pViewport::_onDraw' is not a static data member of 'struct hiro::pViewport'
   76 | auto pViewport::_onDraw(cairo_t* context) -> void {
      |      ^~~~~~~~~
../hiro/core/../gtk/widget/viewport.cpp:76:25: error: 'cairo_t' was not declared in this scope
   76 | auto pViewport::_onDraw(cairo_t* context) -> void {
      |                         ^~~~~~~
../hiro/core/../gtk/widget/viewport.cpp:76:34: error: 'context' was not declared in this scope; did you mean 'ucontext'?
   76 | auto pViewport::_onDraw(cairo_t* context) -> void {
      |                                  ^~~~~~~
      |                                  ucontext
../hiro/core/../gtk/widget/viewport.cpp:76:43: error: expected ',' or ';' before '->' token
   76 | auto pViewport::_onDraw(cairo_t* context) -> void {
      |                                           ^~
../hiro/core/../gtk/widget/viewport.cpp:81:6: error: 'auto hiro::pViewport::_onExpose' is not a static data member of 'struct hiro::pViewport'
   81 | auto pViewport::_onExpose(GdkEventExpose* expose) -> void {
      |      ^~~~~~~~~
../hiro/core/../gtk/widget/viewport.cpp:81:27: error: 'GdkEventExpose' was not declared in this scope
   81 | auto pViewport::_onExpose(GdkEventExpose* expose) -> void {
      |                           ^~~~~~~~~~~~~~
../hiro/core/../gtk/widget/viewport.cpp:81:43: error: 'expose' was not declared in this scope; did you mean 'export'?
   81 | auto pViewport::_onExpose(GdkEventExpose* expose) -> void {
      |                                           ^~~~~~
      |                                           export
../hiro/core/../gtk/widget/viewport.cpp:81:51: error: expected ',' or ';' before '->' token
   81 | auto pViewport::_onExpose(GdkEventExpose* expose) -> void {
      |                                                   ^~
In file included from ../hiro/core/../gtk/platform.cpp:65:
../hiro/core/../gtk/application.cpp:7:40: error: 'GLogLevelFlags' has not been declared
    7 | auto Log_Ignore(const char* logDomain, GLogLevelFlags logLevel, const char* message, void* userData) -> void {
      |                                        ^~~~~~~~~~~~~~
../hiro/core/../gtk/application.cpp:10:40: error: 'GLogLevelFlags' has not been declared
   10 | auto Log_Filter(const char* logDomain, GLogLevelFlags logLevel, const char* message, void* userData) -> void {
      |                                        ^~~~~~~~~~~~~~
../hiro/core/../gtk/application.cpp: In static member function 'static bool hiro::pApplication::pendingEvents()':
../hiro/core/../gtk/application.cpp:38:10: error: 'gtk_events_pending' was not declared in this scope
   38 |   return gtk_events_pending();
      |          ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/application.cpp: In static member function 'static void hiro::pApplication::processEvents()':
../hiro/core/../gtk/application.cpp:47:5: error: 'gtk_main_iteration_do' was not declared in this scope
   47 |     gtk_main_iteration_do(false);
      |     ^~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/application.cpp: In static member function 'static void hiro::pApplication::quit()':
../hiro/core/../gtk/application.cpp:54:6: error: 'gtk_main_level' was not declared in this scope
   54 |   if(gtk_main_level()) gtk_main_quit();
      |      ^~~~~~~~~~~~~~
../hiro/core/../gtk/application.cpp:54:24: error: 'gtk_main_quit' was not declared in this scope
   54 |   if(gtk_main_level()) gtk_main_quit();
      |                        ^~~~~~~~~~~~~
../hiro/core/../gtk/application.cpp: In static member function 'static void hiro::pApplication::initialize()':
../hiro/core/../gtk/application.cpp:109:49: error: 'G_LOG_LEVEL_MASK' was not declared in this scope
  109 |   g_log_set_handler("GVFS-RemoteVolumeMonitor", G_LOG_LEVEL_MASK, Log_Ignore, nullptr);
      |                                                 ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/application.cpp:109:3: error: 'g_log_set_handler' was not declared in this scope
  109 |   g_log_set_handler("GVFS-RemoteVolumeMonitor", G_LOG_LEVEL_MASK, Log_Ignore, nullptr);
      |   ^~~~~~~~~~~~~~~~~
../hiro/core/../gtk/application.cpp:115:3: error: 'gdk_set_program_class' was not declared in this scope
  115 |   gdk_set_program_class(name);
      |   ^~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/application.cpp:131:3: error: 'gtk_init' was not declared in this scope
  131 |   gtk_init(&argc, &argvp);
      |   ^~~~~~~~
../hiro/core/../gtk/application.cpp:132:3: error: 'GtkSettings' was not declared in this scope; did you mean 'Settings'?
  132 |   GtkSettings* gtkSettings = gtk_settings_get_default();
      |   ^~~~~~~~~~~
      |   Settings
../hiro/core/../gtk/application.cpp:132:16: error: 'gtkSettings' was not declared in this scope; did you mean 'Settings'?
  132 |   GtkSettings* gtkSettings = gtk_settings_get_default();
      |                ^~~~~~~~~~~
      |                Settings
../hiro/core/../gtk/application.cpp:132:30: error: 'gtk_settings_get_default' was not declared in this scope
  132 |   GtkSettings* gtkSettings = gtk_settings_get_default();
      |                              ^~~~~~~~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/application.cpp:135:39: error: 'GTK_TYPE_BUTTON' was not declared in this scope
  135 |   g_type_class_unref(g_type_class_ref(GTK_TYPE_BUTTON));
      |                                       ^~~~~~~~~~~~~~~
../hiro/core/../gtk/application.cpp:135:22: error: 'g_type_class_ref' was not declared in this scope
  135 |   g_type_class_unref(g_type_class_ref(GTK_TYPE_BUTTON));
      |                      ^~~~~~~~~~~~~~~~
../hiro/core/../gtk/application.cpp:135:3: error: 'g_type_class_unref' was not declared in this scope
  135 |   g_type_class_unref(g_type_class_ref(GTK_TYPE_BUTTON));
      |   ^~~~~~~~~~~~~~~~~~
../hiro/core/../gtk/application.cpp:136:3: error: 'g_object_set' was not declared in this scope
  136 |   g_object_set(gtkSettings, "gtk-button-images", true, nullptr);
      |   ^~~~~~~~~~~~
gmake: *** [../hiro/GNUmakefile:73: obj/hiro-gtk3.o] Error 1
*** Error code 2

Stop.
bmake[1]: stopped making "all" in /data/jenkins/workspace/pkgsrc-upstream-trunk/emulators/bsnes
*** Error code 1

Stop.
bmake: stopped making "all" in /data/jenkins/workspace/pkgsrc-upstream-trunk/emulators/bsnes