Made the last two features actually cooperate.

This commit is contained in:
Mark VanderVoord
2026-06-18 20:25:31 -04:00
parent de4e53cd7b
commit 990954c548
4 changed files with 11 additions and 11 deletions
+4 -4
View File
@@ -38,12 +38,12 @@ class CMockGeneratorPluginArray
# Short macro params: paired ptrs (before OR after) omit _Depth (auto-filled from paired size arg)
# string? args always need an explicit _Depth
args_call_i = function[:args].map do |m|
(m[:ptr?] && !m[:array_size_name]) || m[:string?] ? "#{m[:name]}, #{m[:name]}_Depth" : m[:name].to_s
(m[:ptr?] || m[:string?]) && !m[:array_size_name] ? "#{m[:name]}, #{m[:name]}_Depth" : m[:name].to_s
end.join(', ')
# Short macro call: paired ptrs pass paired size name as depth automatically
args_call_o = function[:args].map do |m|
if m[:ptr?] && m[:array_size_name]
if (m[:ptr?] || m[:string?]) && m[:array_size_name]
"#{m[:name]}, (#{m[:array_size_name]})"
elsif m[:ptr?] || m[:string?]
"#{m[:name]}, (#{m[:name]}_Depth)"
@@ -99,7 +99,7 @@ class CMockGeneratorPluginArray
# Call to CMockExpectParameters_: :before-paired ptrs pass only ptr name (their depth is set from paired size arg)
# string? args always pass their depth explicitly
call_string = function[:args].map do |m|
(m[:ptr?] && m[:array_size_order] != :before) || m[:string?] ? "#{m[:name]}, #{m[:name]}_Depth" : m[:name]
(m[:ptr?] || m[:string?]) && m[:array_size_order] != :before ? "#{m[:name]}, #{m[:name]}_Depth" : m[:name]
end.join(', ')
lines << if function[:return][:void?]
@@ -113,7 +113,7 @@ class CMockGeneratorPluginArray
# Override depths for :before-paired pointers. CMockExpectParameters_ sets these from the paired
# size arg; the explicit _Depth param here allows _ExpectWithArrayExtended to override that value.
function[:args].each do |arg|
lines << " cmock_call_instance->Expected_#{arg[:name]}_Depth = #{arg[:name]}_Depth;\n" if arg[:ptr?] && arg[:array_size_order] == :before
lines << " cmock_call_instance->Expected_#{arg[:name]}_Depth = #{arg[:name]}_Depth;\n" if (arg[:ptr?] || arg[:string?]) && arg[:array_size_order] == :before
end
lines << " cmock_call_instance->ReturnVal = cmock_to_return;\n" unless function[:return][:void?]
lines << "}\n\n"
+4 -4
View File
@@ -105,7 +105,7 @@ class CMockGeneratorUtils
if function[:args_string] != 'void'
if @arrays
args_string = function[:args].map do |m|
if m[:ptr?] && m[:array_size_order] == :before
if (m[:ptr?] || m[:string?]) && m[:array_size_order] == :before
arg_declaration(m)
elsif m[:ptr?] || m[:string?]
"#{arg_declaration(m)}, int #{m[:name]}_Depth"
@@ -114,7 +114,7 @@ class CMockGeneratorUtils
end
end.join(', ')
body = function[:args].inject('') do |all, arg|
depth = if arg[:ptr?] && arg[:array_size_order] == :before
depth = if (arg[:ptr?] || arg[:string?]) && arg[:array_size_order] == :before
arg[:array_size_name]
elsif arg[:ptr?] || arg[:string?]
"#{arg[:name]}_Depth"
@@ -141,9 +141,9 @@ class CMockGeneratorUtils
def code_call_argument_loader(function)
if function[:args_string] != 'void'
args = function[:args].map do |m|
if @arrays && m[:ptr?] && m[:array_size_order] == :after
if @arrays && (m[:ptr?] || m[:string?]) && m[:array_size_order] == :after
"#{m[:name]}, #{m[:array_size_name]}"
elsif @arrays && m[:ptr?] && m[:array_size_order] == :before
elsif @arrays && (m[:ptr?] || m[:string?]) && m[:array_size_order] == :before
m[:name]
elsif @arrays && m[:ptr?]
"#{m[:name]}, 1"
+1 -1
View File
@@ -469,7 +469,7 @@ class CMockHeaderParser
best_ptr_idx = nil
args.each_with_index do |ptr_arg, ptr_idx|
next unless ptr_arg[:ptr?] && !ptr_arg[:array_data?]
next unless (ptr_arg[:ptr?] || ptr_arg[:string?]) && !ptr_arg[:array_data?]
score = array_size_name_affinity(ptr_arg[:name], args[size_idx][:name])
score += 2 if ptr_idx + 1 == size_idx
@@ -99,7 +99,7 @@
:code: |
test()
{
process_command_ExpectWithArrayAndReturn("hello", 5, 5, 42);
process_command_ExpectWithArrayAndReturn("hello", 5, 42);
TEST_ASSERT_EQUAL(42, function_d());
}
@@ -108,6 +108,6 @@
:code: |
test()
{
process_command_ExpectWithArrayAndReturn("world", 5, 5, 42);
process_command_ExpectWithArrayAndReturn("world", 5, 42);
TEST_ASSERT_EQUAL(42, function_e());
}