From 56433308db5715fec88e595601222bb49bf41c76 Mon Sep 17 00:00:00 2001 From: Seth Kingsley Date: Wed, 3 Oct 2018 20:23:31 -0700 Subject: [PATCH] Add some RAII wrappers for ImGui calls --- extract_raii.rb | 106 ++++++++++++++++++++++++++++++++++++++++++++++++ imgui_raii.h | 74 +++++++++++++++++++++++++++++++++ 2 files changed, 180 insertions(+) create mode 100644 extract_raii.rb create mode 100644 imgui_raii.h diff --git a/extract_raii.rb b/extract_raii.rb new file mode 100644 index 000000000..d3a705724 --- /dev/null +++ b/extract_raii.rb @@ -0,0 +1,106 @@ +#!/usr/bin/env ruby + +$VERBOSE = 2 + +INDENT = ' ' * 4 + +puts <[\w\s]+\w)\s+(?\w*)\((?[^)]+)\)(?[^;]*);(?.*)$/) do |m| + next unless m[:name].match(/^(Begin|Push|Open|Tree|Column)/) + next unless m[:name].match(/^TreeNode|PushID|Begin$/) + + argnames = m[:args].split(/,\s*/).map do |arg| + arg = arg.split(/\s*=\s*/, 2).first + arg.split(/[ \*]/).last + end + + # Check for obsolete + if m[:name] == 'Begin' && + (argnames == %w{name p_open size_on_first_use bg_alpha_override flags} || + argnames == %w{items_count items_height}) + next + end + + $stderr.puts m.inspect if $-d + + fail "Return value #{m[:type]} is not bool or void" unless %w{bool void}.include?(m[:type]) + + if !$current_match || $current_match[:name] != m[:name] + if $current_match + close_class + puts + end + + $current_match = m + $class_name = case m[:name] + when 'Begin' then 'ImWindow' + else "Im#{m[:name]}" + end + + puts <