Attempting to be smarter about recognizing pointer placement in the return values (though we're not going to officially system test some of the illegal combinations)

This commit is contained in:
Mark VanderVoord
2016-06-05 14:12:37 -04:00
parent fe693146e5
commit 2f0a44d7ce
3 changed files with 155 additions and 81 deletions
+25 -7
View File
@@ -141,10 +141,8 @@ class CMockHeaderParser
arg_array = arg.split arg_array = arg.split
arg_elements = arg_array - @c_attributes # split up words and remove known attributes arg_elements = arg_array - @c_attributes # split up words and remove known attributes
args << { :type => (arg_type = arg_elements[0..-2].join(' ')), args << { :type => (arg_type = arg_elements[0..-2].join(' ')),
:name => arg_elements[-1], :name => arg_elements[-1]
:ptr? => divine_ptr(arg_type), }.merge(divine_ptr_and_const(arg))
:const? => divine_const(arg)
}
end end
return args return args
end end
@@ -162,6 +160,28 @@ class CMockHeaderParser
return true return true
end end
def divine_ptr_and_const(arg)
divination = { :ptr? => false, :const? => false, :const_ptr? => false }
#first check if there is a pointer present and that it's not part of a C string or function definition
#divination[:ptr?] = (arg.split[0..-2].join.include?('*') && !arg.gsub(/(const|char|\*|\s)+/,'').empty?)
divination[:ptr?] = (arg.include?('*') && !arg.gsub(/(const|char|\*|\s)+/,'').empty?)
#if there isn't a const that isn't part of a larger word, we're done
return divination if !(/(?:^|\s|\*)const(?:\*|\s|$)/ =~ arg)
divination[:const?] = true
# check const comes after * indicating const ptr
if (/\*\s*const/ =~ arg)
divination[:const_ptr?] = true
#check const comes before * indicating also const data
divination[:const?] = (/const(?:\w|\s)*\*/ =~ arg) ? true : false
end
return divination
end
def clean_args(arg_list) def clean_args(arg_list)
if ((@local_as_void.include?(arg_list.strip)) or (arg_list.empty?)) if ((@local_as_void.include?(arg_list.strip)) or (arg_list.empty?))
return 'void' return 'void'
@@ -236,11 +256,9 @@ class CMockHeaderParser
rettype = 'void' if (@local_as_void.include?(rettype.strip)) rettype = 'void' if (@local_as_void.include?(rettype.strip))
decl[:return] = { :type => rettype, decl[:return] = { :type => rettype,
:name => 'cmock_to_return', :name => 'cmock_to_return',
:ptr? => divine_ptr(rettype),
:const? => divine_const(full_retval),
:str => "#{rettype} cmock_to_return", :str => "#{rettype} cmock_to_return",
:void? => (rettype == 'void') :void? => (rettype == 'void')
} }.merge(divine_ptr_and_const(full_retval))
#remove default argument statements from mock definitions #remove default argument statements from mock definitions
args.gsub!(/=\s*[a-zA-Z0-9_\.]+\s*/, ' ') args.gsub!(/=\s*[a-zA-Z0-9_\.]+\s*/, ' ')
+15
View File
@@ -20,3 +20,18 @@ void const_variants2(
struct _DUMMY_T const * const param1, struct _DUMMY_T const * const param1,
const unsigned long int const * const param2, const unsigned long int const * const param2,
const struct _DUMMY_T const * param3 ); const struct _DUMMY_T const * param3 );
const int * const_retval1(void); /* nicety version for pointer to constant int */
int const * const_retval2(void); /* formal version for pointer to constant int */
//int * const const_retval3(void); /* formal version for constant pointer to int */
//int const * const const_retval4(void); /* formal version for constant pointer to constant int */
const int* const_retval5(void); /* sticky-left nicety version for pointer to constant int */
int const* const_retval6(void); /* sticky-left formal version for pointer to constant int */
//int* const const_retval7(void); /* sticky-left formal version for constant pointer to int */
//int const* const const_retval8(void); /* sticky-left formal version for constant pointer to constant int */
const int *const_retval9(void); /* sticky-right nicety version for pointer to constant int */
int const *const_retvalA(void); /* sticky-right formal version for pointer to constant int */
//int *const const_retvalB(void); /* sticky-right formal version for constant pointer to int */
//int const *const const_retvalC(void); /* sticky-right formal version for constant pointer to constant int */
+115 -74
View File
@@ -478,12 +478,13 @@ describe CMockHeaderParser, "Verify CMockHeaderParser Module" do
:name => 'cmock_to_return', :name => 'cmock_to_return',
:ptr? => false, :ptr? => false,
:const? => false, :const? => false,
:const_ptr? => false,
:str => "void cmock_to_return", :str => "void cmock_to_return",
:void? => true :void? => true
}, },
:modifier=>"", :modifier=>"",
:contains_ptr? => false, :contains_ptr? => false,
:args=>[{:type=>"int", :name=>"a", :ptr? => false, :const? => false}], :args=>[{:type=>"int", :name=>"a", :ptr? => false, :const? => false, :const_ptr? => false}],
:args_string=>"int a", :args_string=>"int a",
:args_call=>"a"} :args_call=>"a"}
assert_equal(expected, @parser.parse_declaration(source)) assert_equal(expected, @parser.parse_declaration(source))
@@ -497,6 +498,7 @@ describe CMockHeaderParser, "Verify CMockHeaderParser Module" do
:name => 'cmock_to_return', :name => 'cmock_to_return',
:ptr? => false, :ptr? => false,
:const? => false, :const? => false,
:const_ptr? => false,
:str => "int cmock_to_return", :str => "int cmock_to_return",
:void? => false :void? => false
}, },
@@ -516,12 +518,13 @@ describe CMockHeaderParser, "Verify CMockHeaderParser Module" do
:name => 'cmock_to_return', :name => 'cmock_to_return',
:ptr? => false, :ptr? => false,
:const? => false, :const? => false,
:const_ptr? => false,
:str => "char cmock_to_return", :str => "char cmock_to_return",
:void? => false :void? => false
}, },
:modifier=>"", :modifier=>"",
:contains_ptr? => true, :contains_ptr? => true,
:args=>[{:type=>"MY_FUNKY_VOID*", :name=>"bluh", :ptr? => true, :const? => false}], :args=>[{:type=>"MY_FUNKY_VOID*", :name=>"bluh", :ptr? => true, :const? => false, :const_ptr? => false}],
:args_string=>"MY_FUNKY_VOID* bluh", :args_string=>"MY_FUNKY_VOID* bluh",
:args_call=>"bluh" } :args_call=>"bluh" }
assert_equal(expected, @parser.parse_declaration(source)) assert_equal(expected, @parser.parse_declaration(source))
@@ -614,13 +617,14 @@ describe CMockHeaderParser, "Verify CMockHeaderParser Module" do
:name => 'cmock_to_return', :name => 'cmock_to_return',
:ptr? => false, :ptr? => false,
:const? => false, :const? => false,
:const_ptr? => false,
:str => "int cmock_to_return", :str => "int cmock_to_return",
:void? => false :void? => false
}, },
:modifier=>"", :modifier=>"",
:contains_ptr? => false, :contains_ptr? => false,
:args=>[ {:type=>"int", :name=>"a", :ptr? => false, :const? => false}, :args=>[ {:type=>"int", :name=>"a", :ptr? => false, :const? => false, :const_ptr? => false},
{:type=>"unsigned int", :name=>"b", :ptr? => false, :const? => false} {:type=>"unsigned int", :name=>"b", :ptr? => false, :const? => false, :const_ptr? => false}
], ],
:args_string=>"int a, unsigned int b", :args_string=>"int a, unsigned int b",
:args_call=>"a, b" } :args_call=>"a, b" }
@@ -635,15 +639,16 @@ describe CMockHeaderParser, "Verify CMockHeaderParser Module" do
:name => 'cmock_to_return', :name => 'cmock_to_return',
:ptr? => false, :ptr? => false,
:const? => false, :const? => false,
:const_ptr? => false,
:str => "void cmock_to_return", :str => "void cmock_to_return",
:void? => true :void? => true
}, },
:name=>"FunkyChicken", :name=>"FunkyChicken",
:modifier=>"", :modifier=>"",
:contains_ptr? => false, :contains_ptr? => false,
:args=>[ {:type=>"uint", :name=>"la", :ptr? => false, :const? => false}, :args=>[ {:type=>"uint", :name=>"la", :ptr? => false, :const? => false, :const_ptr? => false},
{:type=>"int", :name=>"de", :ptr? => false, :const? => false}, {:type=>"int", :name=>"de", :ptr? => false, :const? => false, :const_ptr? => false},
{:type=>"bool", :name=>"da", :ptr? => false, :const? => false} {:type=>"bool", :name=>"da", :ptr? => false, :const? => false, :const_ptr? => false}
], ],
:args_string=>"uint la, int de, bool da", :args_string=>"uint la, int de, bool da",
:args_call=>"la, de, da" } :args_call=>"la, de, da" }
@@ -658,6 +663,7 @@ describe CMockHeaderParser, "Verify CMockHeaderParser Module" do
:name => 'cmock_to_return', :name => 'cmock_to_return',
:ptr? => false, :ptr? => false,
:const? => false, :const? => false,
:const_ptr? => false,
:str => "void cmock_to_return", :str => "void cmock_to_return",
:void? => true :void? => true
}, },
@@ -678,14 +684,15 @@ describe CMockHeaderParser, "Verify CMockHeaderParser Module" do
:name => 'cmock_to_return', :name => 'cmock_to_return',
:ptr? => false, :ptr? => false,
:const? => true, :const? => true,
:const_ptr? => false,
:str => "int cmock_to_return", :str => "int cmock_to_return",
:void? => false :void? => false
}, },
:name=>"TheMatrix", :name=>"TheMatrix",
:modifier=>"const", :modifier=>"const",
:contains_ptr? => true, :contains_ptr? => true,
:args=>[ {:type=>"int", :name=>"Trinity", :ptr? => false, :const? => false}, :args=>[ {:type=>"int", :name=>"Trinity", :ptr? => false, :const? => false, :const_ptr? => false},
{:type=>"unsigned int*", :name=>"Neo", :ptr? => true, :const? => false} {:type=>"unsigned int*", :name=>"Neo", :ptr? => true, :const? => false, :const_ptr? => false}
], ],
:args_string=>"int Trinity, unsigned int* Neo", :args_string=>"int Trinity, unsigned int* Neo",
:args_call=>"Trinity, Neo" } :args_call=>"Trinity, Neo" }
@@ -700,6 +707,7 @@ describe CMockHeaderParser, "Verify CMockHeaderParser Module" do
:name => 'cmock_to_return', :name => 'cmock_to_return',
:ptr? => false, :ptr? => false,
:const? => true, :const? => true,
:const_ptr? => false,
:str => "int cmock_to_return", :str => "int cmock_to_return",
:void? => false :void? => false
}, },
@@ -707,8 +715,8 @@ describe CMockHeaderParser, "Verify CMockHeaderParser Module" do
:modifier=>"const", :modifier=>"const",
:c_calling_convention=>"__stdcall", :c_calling_convention=>"__stdcall",
:contains_ptr? => true, :contains_ptr? => true,
:args=>[ {:type=>"int", :name=>"Trinity", :ptr? => false, :const? => false}, :args=>[ {:type=>"int", :name=>"Trinity", :ptr? => false, :const? => false, :const_ptr? => false},
{:type=>"unsigned int*", :name=>"Neo", :ptr? => true, :const? => false} {:type=>"unsigned int*", :name=>"Neo", :ptr? => true, :const? => false, :const_ptr? => false}
], ],
:args_string=>"int Trinity, unsigned int* Neo", :args_string=>"int Trinity, unsigned int* Neo",
:args_call=>"Trinity, Neo" } :args_call=>"Trinity, Neo" }
@@ -725,14 +733,15 @@ describe CMockHeaderParser, "Verify CMockHeaderParser Module" do
:name => 'cmock_to_return', :name => 'cmock_to_return',
:ptr? => false, :ptr? => false,
:const? => true, :const? => true,
:const_ptr? => false,
:str => "int cmock_to_return", :str => "int cmock_to_return",
:void? => false :void? => false
}, },
:name=>"TheMatrix", :name=>"TheMatrix",
:modifier=>"const", :modifier=>"const",
:contains_ptr? => true, :contains_ptr? => true,
:args=>[ {:type=>"int", :name=>"Trinity", :ptr? => false, :const? => false}, :args=>[ {:type=>"int", :name=>"Trinity", :ptr? => false, :const? => false, :const_ptr? => false},
{:type=>"unsigned int*", :name=>"Neo", :ptr? => true, :const? => false} {:type=>"unsigned int*", :name=>"Neo", :ptr? => true, :const? => false, :const_ptr? => false}
], ],
:args_string=>"int Trinity, unsigned int* Neo", :args_string=>"int Trinity, unsigned int* Neo",
:args_call=>"Trinity, Neo" }, :args_call=>"Trinity, Neo" },
@@ -741,14 +750,15 @@ describe CMockHeaderParser, "Verify CMockHeaderParser Module" do
:name => 'cmock_to_return', :name => 'cmock_to_return',
:ptr? => false, :ptr? => false,
:const? => false, :const? => false,
:const_ptr? => false,
:str => "int cmock_to_return", :str => "int cmock_to_return",
:void? => false :void? => false
}, },
:name=>"Morpheus", :name=>"Morpheus",
:modifier=>"", :modifier=>"",
:contains_ptr? => true, :contains_ptr? => true,
:args=>[ {:type=>"int", :name=>"cmock_arg1", :ptr? => false, :const? => false}, :args=>[ {:type=>"int", :name=>"cmock_arg1", :ptr? => false, :const? => false, :const_ptr? => false},
{:type=>"unsigned int*", :name=>"cmock_arg2", :ptr? => true, :const? => false} {:type=>"unsigned int*", :name=>"cmock_arg2", :ptr? => true, :const? => false, :const_ptr? => false}
], ],
:args_string=>"int cmock_arg1, unsigned int* cmock_arg2", :args_string=>"int cmock_arg1, unsigned int* cmock_arg2",
:args_call=>"cmock_arg1, cmock_arg2" :args_call=>"cmock_arg1, cmock_arg2"
@@ -767,13 +777,14 @@ describe CMockHeaderParser, "Verify CMockHeaderParser Module" do
:name => 'cmock_to_return', :name => 'cmock_to_return',
:ptr? => false, :ptr? => false,
:const? => true, :const? => true,
:const_ptr? => false,
:str => "int cmock_to_return", :str => "int cmock_to_return",
:void? => false :void? => false
}, },
:modifier=>"const", :modifier=>"const",
:contains_ptr? => true, :contains_ptr? => true,
:args=>[ {:type=>"int", :name=>"Trinity", :ptr? => false, :const? => false}, :args=>[ {:type=>"int", :name=>"Trinity", :ptr? => false, :const? => false, :const_ptr? => false},
{:type=>"unsigned int*", :name=>"Neo", :ptr? => true, :const? => false} {:type=>"unsigned int*", :name=>"Neo", :ptr? => true, :const? => false, :const_ptr? => false}
], ],
:args_string=>"int Trinity, unsigned int* Neo", :args_string=>"int Trinity, unsigned int* Neo",
:args_call=>"Trinity, Neo" :args_call=>"Trinity, Neo"
@@ -781,7 +792,7 @@ describe CMockHeaderParser, "Verify CMockHeaderParser Module" do
assert_equal(expected, @parser.parse("module", source)[:functions]) assert_equal(expected, @parser.parse("module", source)[:functions])
end end
it "should properly handle const applied after asterisk in return type" do it "should properly handle const applied after asterisk in return type (not legal C, but sometimes used)" do
source = "int * const PorkRoast(void);\n" source = "int * const PorkRoast(void);\n"
@@ -791,6 +802,7 @@ describe CMockHeaderParser, "Verify CMockHeaderParser Module" do
:name => 'cmock_to_return', :name => 'cmock_to_return',
:ptr? => true, :ptr? => true,
:const? => false, :const? => false,
:const_ptr? => true,
:str => "int* cmock_to_return", :str => "int* cmock_to_return",
:void? => false :void? => false
}, },
@@ -816,12 +828,13 @@ describe CMockHeaderParser, "Verify CMockHeaderParser Module" do
:name => 'cmock_to_return', :name => 'cmock_to_return',
:ptr? => false, :ptr? => false,
:const? => false, :const? => false,
:const_ptr? => false,
:str => "void cmock_to_return", :str => "void cmock_to_return",
:void? => true :void? => true
}, },
:modifier=>"", :modifier=>"",
:contains_ptr? => false, :contains_ptr? => false,
:args=>[ {:type=>"int", :name=>"SingAlong", :ptr? => false, :const? => false} ], :args=>[ {:type=>"int", :name=>"SingAlong", :ptr? => false, :const? => false, :const_ptr? => false} ],
:args_string=>"int SingAlong", :args_string=>"int SingAlong",
:args_call=>"SingAlong" :args_call=>"SingAlong"
}, },
@@ -830,6 +843,7 @@ describe CMockHeaderParser, "Verify CMockHeaderParser Module" do
:name => 'cmock_to_return', :name => 'cmock_to_return',
:ptr? => false, :ptr? => false,
:const? => false, :const? => false,
:const_ptr? => false,
:str => "int cmock_to_return", :str => "int cmock_to_return",
:void? => false :void? => false
}, },
@@ -854,13 +868,14 @@ describe CMockHeaderParser, "Verify CMockHeaderParser Module" do
:name => 'cmock_to_return', :name => 'cmock_to_return',
:ptr? => false, :ptr? => false,
:const? => false, :const? => false,
:const_ptr? => false,
:str => "int cmock_to_return", :str => "int cmock_to_return",
:void? => false :void? => false
}, },
:name=>"DrHorrible", :name=>"DrHorrible",
:modifier=>"", :modifier=>"",
:contains_ptr? => false, :contains_ptr? => false,
:args=>[ {:type=>"struct SingAlong", :name=>"Blog", :ptr? => false, :const? => false} ], :args=>[ {:type=>"struct SingAlong", :name=>"Blog", :ptr? => false, :const? => false, :const_ptr? => false} ],
:args_string=>"struct SingAlong Blog", :args_string=>"struct SingAlong Blog",
:args_call=>"Blog" :args_call=>"Blog"
}, },
@@ -869,13 +884,14 @@ describe CMockHeaderParser, "Verify CMockHeaderParser Module" do
:name => 'cmock_to_return', :name => 'cmock_to_return',
:ptr? => false, :ptr? => false,
:const? => false, :const? => false,
:const_ptr? => false,
:str => "void cmock_to_return", :str => "void cmock_to_return",
:void? => true :void? => true
}, },
:name=>"Penny", :name=>"Penny",
:modifier=>"", :modifier=>"",
:contains_ptr? => true, :contains_ptr? => true,
:args=>[ {:type=>"struct _KeepYourHeadUp_*", :name=>"BillyBuddy", :ptr? => true, :const? => true} ], :args=>[ {:type=>"struct _KeepYourHeadUp_*", :name=>"BillyBuddy", :ptr? => true, :const? => true, :const_ptr? => true} ],
:args_string=>"struct const _KeepYourHeadUp_* const BillyBuddy", :args_string=>"struct const _KeepYourHeadUp_* const BillyBuddy",
:args_call=>"BillyBuddy" :args_call=>"BillyBuddy"
}, },
@@ -884,6 +900,7 @@ describe CMockHeaderParser, "Verify CMockHeaderParser Module" do
:name => 'cmock_to_return', :name => 'cmock_to_return',
:ptr? => false, :ptr? => false,
:const? => false, :const? => false,
:const_ptr? => false,
:str => "struct TheseArentTheHammer cmock_to_return", :str => "struct TheseArentTheHammer cmock_to_return",
:void? => false :void? => false
}, },
@@ -904,14 +921,15 @@ describe CMockHeaderParser, "Verify CMockHeaderParser Module" do
:name => 'cmock_to_return', :name => 'cmock_to_return',
:ptr? => false, :ptr? => false,
:const? => false, :const? => false,
:const_ptr? => false,
:str => "void cmock_to_return", :str => "void cmock_to_return",
:void? => true :void? => true
}, },
:name=>"OrangePeel", :name=>"OrangePeel",
:modifier=>"", :modifier=>"",
:contains_ptr? => true, :contains_ptr? => true,
:args=>[ {:type=>"union STARS_AND_STRIPES*", :name=>"a", :ptr? => true, :const? => false}, :args=>[ {:type=>"union STARS_AND_STRIPES*", :name=>"a", :ptr? => true, :const? => false, :const_ptr? => false},
{:type=>"union AFL_CIO", :name=>"b", :ptr? => false, :const? => false} {:type=>"union AFL_CIO", :name=>"b", :ptr? => false, :const? => false, :const_ptr? => false}
], ],
:args_string=>"union STARS_AND_STRIPES* a, union AFL_CIO b", :args_string=>"union STARS_AND_STRIPES* a, union AFL_CIO b",
:args_call=>"a, b" }] :args_call=>"a, b" }]
@@ -926,17 +944,18 @@ describe CMockHeaderParser, "Verify CMockHeaderParser Module" do
:name => 'cmock_to_return', :name => 'cmock_to_return',
:ptr? => false, :ptr? => false,
:const? => false, :const? => false,
:const_ptr? => false,
:str => "void cmock_to_return", :str => "void cmock_to_return",
:void? => true :void? => true
}, },
:name=>"ApplePeel", :name=>"ApplePeel",
:modifier=>"", :modifier=>"",
:contains_ptr? => true, :contains_ptr? => true,
:args=>[ {:type=> "unsigned int", :name=>"const_param", :ptr? => false, :const? => true}, :args=>[ {:type=> "unsigned int", :name=>"const_param", :ptr? => false, :const? => true, :const_ptr? => false},
{:type=>"int", :name=>"int_param", :ptr? => false, :const? => false}, {:type=>"int", :name=>"int_param", :ptr? => false, :const? => false, :const_ptr? => false},
{:type=>"int", :name=>"integer", :ptr? => false, :const? => false}, {:type=>"int", :name=>"integer", :ptr? => false, :const? => false, :const_ptr? => false},
{:type=>"char", :name=>"character", :ptr? => false, :const? => false}, {:type=>"char", :name=>"character", :ptr? => false, :const? => false, :const_ptr? => false},
{:type=>"int*", :name=>"constant", :ptr? => true, :const? => false} {:type=>"int*", :name=>"constant", :ptr? => true, :const? => false, :const_ptr? => true}
], ],
:args_string=>"const unsigned int const_param, int int_param, int integer, char character, int* const constant", :args_string=>"const unsigned int const_param, int int_param, int integer, char character, int* const constant",
:args_call=>"const_param, int_param, integer, character, constant" }] :args_call=>"const_param, int_param, integer, character, constant" }]
@@ -951,17 +970,18 @@ describe CMockHeaderParser, "Verify CMockHeaderParser Module" do
:name => 'cmock_to_return', :name => 'cmock_to_return',
:ptr? => false, :ptr? => false,
:const? => false, :const? => false,
:const_ptr? => false,
:str => "void cmock_to_return", :str => "void cmock_to_return",
:void? => true :void? => true
}, },
:name=>"LemonPeel", :name=>"LemonPeel",
:modifier=>"", :modifier=>"",
:contains_ptr? => true, :contains_ptr? => true,
:args=>[ {:type=>"integer", :name=>"param", :ptr? => false, :const? => false}, :args=>[ {:type=>"integer", :name=>"param", :ptr? => false, :const? => false, :const_ptr? => false},
{:type=>"character", :name=>"thing", :ptr? => false, :const? => false}, {:type=>"character", :name=>"thing", :ptr? => false, :const? => false, :const_ptr? => false},
{:type=>"longint*", :name=>"junk", :ptr? => true, :const? => false}, {:type=>"longint*", :name=>"junk", :ptr? => true, :const? => false, :const_ptr? => false},
{:type=>"constant", :name=>"value", :ptr? => false, :const? => false}, {:type=>"constant", :name=>"value", :ptr? => false, :const? => false, :const_ptr? => false},
{:type=>"int32_t", :name=>"number", :ptr? => false, :const? => true} {:type=>"int32_t", :name=>"number", :ptr? => false, :const? => true, :const_ptr? => false}
], ],
:args_string=>"integer param, character thing, longint* junk, constant value, int32_t const number", :args_string=>"integer param, character thing, longint* junk, constant value, int32_t const number",
:args_call=>"param, thing, junk, value, number" }] :args_call=>"param, thing, junk, value, number" }]
@@ -976,16 +996,17 @@ describe CMockHeaderParser, "Verify CMockHeaderParser Module" do
:name => 'cmock_to_return', :name => 'cmock_to_return',
:ptr? => false, :ptr? => false,
:const? => false, :const? => false,
:const_ptr? => false,
:str => "void cmock_to_return", :str => "void cmock_to_return",
:void? => true :void? => true
}, },
:name=>"CoinOperated", :name=>"CoinOperated",
:modifier=>"", :modifier=>"",
:contains_ptr? => false, :contains_ptr? => false,
:args=>[ {:type=>"signed char", :name=>"abc", :ptr? => false, :const? => false}, :args=>[ {:type=>"signed char", :name=>"abc", :ptr? => false, :const? => false, :const_ptr? => false},
{:type=>"unsigned long int", :name=>"xyz_123", :ptr? => false, :const? => true}, {:type=>"unsigned long int", :name=>"xyz_123", :ptr? => false, :const? => true, :const_ptr? => false},
{:type=>"unsigned int", :name=>"abc_123", :ptr? => false, :const? => true}, {:type=>"unsigned int", :name=>"abc_123", :ptr? => false, :const? => true, :const_ptr? => false},
{:type=>"long long", :name=>"arm_of_the_law", :ptr? => false, :const? => false} {:type=>"long long", :name=>"arm_of_the_law", :ptr? => false, :const? => false, :const_ptr? => false}
], ],
:args_string=>"signed char abc, const unsigned long int xyz_123, unsigned int const abc_123, long long arm_of_the_law", :args_string=>"signed char abc, const unsigned long int xyz_123, unsigned int const abc_123, long long arm_of_the_law",
:args_call=>"abc, xyz_123, abc_123, arm_of_the_law" }] :args_call=>"abc, xyz_123, abc_123, arm_of_the_law" }]
@@ -1000,16 +1021,17 @@ describe CMockHeaderParser, "Verify CMockHeaderParser Module" do
:name => 'cmock_to_return', :name => 'cmock_to_return',
:ptr? => false, :ptr? => false,
:const? => false, :const? => false,
:const_ptr? => false,
:str => "void cmock_to_return", :str => "void cmock_to_return",
:void? => true :void? => true
}, },
:name=>"CardOperated", :name=>"CardOperated",
:modifier=>"", :modifier=>"",
:contains_ptr? => true, :contains_ptr? => true,
:args=>[ {:type=>"CUSTOM_TYPE", :name=>"abc", :ptr? => false, :const? => false}, :args=>[ {:type=>"CUSTOM_TYPE", :name=>"abc", :ptr? => false, :const? => false, :const_ptr? => false},
{:type=>"CUSTOM_TYPE*", :name=>"xyz_123", :ptr? => true, :const? => false}, {:type=>"CUSTOM_TYPE*", :name=>"xyz_123", :ptr? => true, :const? => false, :const_ptr? => false},
{:type=>"CUSTOM_TYPE", :name=>"abcxyz", :ptr? => false, :const? => true}, {:type=>"CUSTOM_TYPE", :name=>"abcxyz", :ptr? => false, :const? => true, :const_ptr? => false},
{:type=>"struct CUSTOM_TYPE const*", :name=>"abc123", :ptr? => true, :const? => true} {:type=>"struct CUSTOM_TYPE const*", :name=>"abc123", :ptr? => true, :const? => true, :const_ptr? => true}
], ],
:args_string=>"CUSTOM_TYPE abc, CUSTOM_TYPE* xyz_123, CUSTOM_TYPE const abcxyz, struct CUSTOM_TYPE const* const abc123", :args_string=>"CUSTOM_TYPE abc, CUSTOM_TYPE* xyz_123, CUSTOM_TYPE const abcxyz, struct CUSTOM_TYPE const* const abc123",
:args_call=>"abc, xyz_123, abcxyz, abc123" }] :args_call=>"abc, xyz_123, abcxyz, abc123" }]
@@ -1024,16 +1046,17 @@ describe CMockHeaderParser, "Verify CMockHeaderParser Module" do
:name => 'cmock_to_return', :name => 'cmock_to_return',
:ptr? => false, :ptr? => false,
:const? => false, :const? => false,
:const_ptr? => false,
:str => "void cmock_to_return", :str => "void cmock_to_return",
:void? => true :void? => true
}, },
:name=>"KeyOperated", :name=>"KeyOperated",
:modifier=>"", :modifier=>"",
:contains_ptr? => true, :contains_ptr? => true,
:args=>[ {:type=>"CUSTOM_TYPE*", :name=>"thing1", :ptr? => true, :const? => false}, :args=>[ {:type=>"CUSTOM_TYPE*", :name=>"thing1", :ptr? => true, :const? => false, :const_ptr? => false},
{:type=>"int*", :name=>"thing2", :ptr? => true, :const? => false}, {:type=>"int*", :name=>"thing2", :ptr? => true, :const? => false, :const_ptr? => false},
{:type=>"char*", :name=>"thing3", :ptr? => false, :const? => false}, #THIS one will likely change in the future when we improve multidimensional array support {:type=>"char*", :name=>"thing3", :ptr? => true, :const? => false, :const_ptr? => false}, #THIS one will likely change in the future when we improve multidimensional array support
{:type=>"int**", :name=>"thing4", :ptr? => true, :const? => false} #THIS one will likely change in the future when we improve multidimensional array support {:type=>"int**", :name=>"thing4", :ptr? => true, :const? => false, :const_ptr? => false} #THIS one will likely change in the future when we improve multidimensional array support
], ],
:args_string=>"CUSTOM_TYPE* thing1, int* thing2, char* thing3, int** thing4", :args_string=>"CUSTOM_TYPE* thing1, int* thing2, char* thing3, int** thing4",
:args_call=>"thing1, thing2, thing3, thing4" }] :args_call=>"thing1, thing2, thing3, thing4" }]
@@ -1048,15 +1071,16 @@ describe CMockHeaderParser, "Verify CMockHeaderParser Module" do
:name => 'cmock_to_return', :name => 'cmock_to_return',
:ptr? => false, :ptr? => false,
:const? => false, :const? => false,
:const_ptr? => false,
:str => "void cmock_to_return", :str => "void cmock_to_return",
:void? => true :void? => true
}, },
:name=>"Cheese", :name=>"Cheese",
:modifier=>"", :modifier=>"",
:contains_ptr? => false, :contains_ptr? => false,
:args=>[ {:type=>"unsigned CUSTOM_TYPE", :name=>"abc", :ptr? => false, :const? => false}, :args=>[ {:type=>"unsigned CUSTOM_TYPE", :name=>"abc", :ptr? => false, :const? => false, :const_ptr? => false},
{:type=>"unsigned", :name=>"xyz", :ptr? => false, :const? => false}, {:type=>"unsigned", :name=>"xyz", :ptr? => false, :const? => false, :const_ptr? => false},
{:type=>"CUSTOM_TYPE1 CUSTOM_TYPE2", :name=>"pdq", :ptr? => false, :const? => false} {:type=>"CUSTOM_TYPE1 CUSTOM_TYPE2", :name=>"pdq", :ptr? => false, :const? => false, :const_ptr? => false}
], ],
:args_string=>"unsigned CUSTOM_TYPE abc, unsigned xyz, CUSTOM_TYPE1 CUSTOM_TYPE2 pdq", :args_string=>"unsigned CUSTOM_TYPE abc, unsigned xyz, CUSTOM_TYPE1 CUSTOM_TYPE2 pdq",
:args_call=>"abc, xyz, pdq" }] :args_call=>"abc, xyz, pdq" }]
@@ -1071,13 +1095,14 @@ describe CMockHeaderParser, "Verify CMockHeaderParser Module" do
:name => 'cmock_to_return', :name => 'cmock_to_return',
:ptr? => false, :ptr? => false,
:const? => false, :const? => false,
:const_ptr? => false,
:str => "void cmock_to_return", :str => "void cmock_to_return",
:void? => true :void? => true
}, },
:name=>"FunkyTurkey", :name=>"FunkyTurkey",
:modifier=>"", :modifier=>"",
:contains_ptr? => false, :contains_ptr? => false,
:args=>[ {:type=>"cmock_module_func_ptr1", :name=>"func_ptr", :ptr? => false, :const? => false} :args=>[ {:type=>"cmock_module_func_ptr1", :name=>"func_ptr", :ptr? => false, :const? => false, :const_ptr? => false}
], ],
:args_string=>"cmock_module_func_ptr1 func_ptr", :args_string=>"cmock_module_func_ptr1 func_ptr",
:args_call=>"func_ptr" }] :args_call=>"func_ptr" }]
@@ -1094,13 +1119,14 @@ describe CMockHeaderParser, "Verify CMockHeaderParser Module" do
:name => 'cmock_to_return', :name => 'cmock_to_return',
:ptr? => false, :ptr? => false,
:const? => false, :const? => false,
:const_ptr? => false,
:str => "void cmock_to_return", :str => "void cmock_to_return",
:void? => true :void? => true
}, },
:name=>"FunkyTurkey", :name=>"FunkyTurkey",
:modifier=>"", :modifier=>"",
:contains_ptr? => false, :contains_ptr? => false,
:args=>[ {:type=>"cmock_module_func_ptr1", :name=>"func_ptr", :ptr? => false, :const? => false} :args=>[ {:type=>"cmock_module_func_ptr1", :name=>"func_ptr", :ptr? => false, :const? => false, :const_ptr? => false}
], ],
:args_string=>"cmock_module_func_ptr1 func_ptr", :args_string=>"cmock_module_func_ptr1 func_ptr",
:args_call=>"func_ptr" }] :args_call=>"func_ptr" }]
@@ -1117,13 +1143,14 @@ describe CMockHeaderParser, "Verify CMockHeaderParser Module" do
:name => 'cmock_to_return', :name => 'cmock_to_return',
:ptr? => false, :ptr? => false,
:const? => false, :const? => false,
:const_ptr? => false,
:str => "void cmock_to_return", :str => "void cmock_to_return",
:void? => true :void? => true
}, },
:name=>"FunkyTurkey", :name=>"FunkyTurkey",
:modifier=>"", :modifier=>"",
:contains_ptr? => false, :contains_ptr? => false,
:args=>[ {:type=>"cmock_module_func_ptr1", :name=>"func_ptr", :ptr? => false, :const? => false} :args=>[ {:type=>"cmock_module_func_ptr1", :name=>"func_ptr", :ptr? => false, :const? => false, :const_ptr? => false}
], ],
:args_string=>"cmock_module_func_ptr1 func_ptr", :args_string=>"cmock_module_func_ptr1 func_ptr",
:args_call=>"func_ptr" }] :args_call=>"func_ptr" }]
@@ -1140,13 +1167,14 @@ describe CMockHeaderParser, "Verify CMockHeaderParser Module" do
:name => 'cmock_to_return', :name => 'cmock_to_return',
:ptr? => false, :ptr? => false,
:const? => false, :const? => false,
:const_ptr? => false,
:str => "void cmock_to_return", :str => "void cmock_to_return",
:void? => true :void? => true
}, },
:name=>"FunkyChicken", :name=>"FunkyChicken",
:modifier=>"", :modifier=>"",
:contains_ptr? => false, :contains_ptr? => false,
:args=>[ {:type=>"cmock_module_func_ptr1", :name=>"func_ptr", :ptr? => false, :const? => true} :args=>[ {:type=>"cmock_module_func_ptr1", :name=>"func_ptr", :ptr? => false, :const? => true, :const_ptr? => false}
], ],
:args_string=>"cmock_module_func_ptr1 const func_ptr", :args_string=>"cmock_module_func_ptr1 const func_ptr",
:args_call=>"func_ptr" }] :args_call=>"func_ptr" }]
@@ -1163,13 +1191,14 @@ describe CMockHeaderParser, "Verify CMockHeaderParser Module" do
# :name => 'cmock_to_return', # :name => 'cmock_to_return',
# :ptr? => false, # :ptr? => false,
# :const? => false, # :const? => false,
# :const_ptr? => false,
# :str => "void cmock_to_return", # :str => "void cmock_to_return",
# :void? => true # :void? => true
# }, # },
# :name=>"FunkyParrot", # :name=>"FunkyParrot",
# :modifier=>"", # :modifier=>"",
# :contains_ptr? => false, # :contains_ptr? => false,
# :args=>[ {:type=>"cmock_module_func_ptr1", :name=>"func_ptr", :ptr? => false, :const? => false} # :args=>[ {:type=>"cmock_module_func_ptr1", :name=>"func_ptr", :ptr? => false, :const? => false, :const_ptr? => false}
# ], # ],
# :args_string=>"cmock_module_func_ptr1 func_ptr", # :args_string=>"cmock_module_func_ptr1 func_ptr",
# :args_call=>"func_ptr" }] # :args_call=>"func_ptr" }]
@@ -1186,14 +1215,15 @@ describe CMockHeaderParser, "Verify CMockHeaderParser Module" do
:name => 'cmock_to_return', :name => 'cmock_to_return',
:ptr? => false, :ptr? => false,
:const? => false, :const? => false,
:const_ptr? => false,
:str => "void cmock_to_return", :str => "void cmock_to_return",
:void? => true :void? => true
}, },
:name=>"FunkyBudgie", :name=>"FunkyBudgie",
:modifier=>"", :modifier=>"",
:contains_ptr? => false, :contains_ptr? => false,
:args=>[ {:type=>"cmock_module_func_ptr1", :name=>"func_ptr1", :ptr? => false, :const? => false}, :args=>[ {:type=>"cmock_module_func_ptr1", :name=>"func_ptr1", :ptr? => false, :const? => false, :const_ptr? => false},
{:type=>"cmock_module_func_ptr2", :name=>"func_ptr2", :ptr? => false, :const? => false} {:type=>"cmock_module_func_ptr2", :name=>"func_ptr2", :ptr? => false, :const? => false, :const_ptr? => false}
], ],
:args_string=>"cmock_module_func_ptr1 func_ptr1, cmock_module_func_ptr2 func_ptr2", :args_string=>"cmock_module_func_ptr1 func_ptr1, cmock_module_func_ptr2 func_ptr2",
:args_call=>"func_ptr1, func_ptr2" }] :args_call=>"func_ptr1, func_ptr2" }]
@@ -1210,15 +1240,16 @@ describe CMockHeaderParser, "Verify CMockHeaderParser Module" do
:name => 'cmock_to_return', :name => 'cmock_to_return',
:ptr? => true, :ptr? => true,
:const? => false, :const? => false,
:const_ptr? => false,
:str => "struct mytype* cmock_to_return", :str => "struct mytype* cmock_to_return",
:void? => false :void? => false
}, },
:name=>"FunkyRobin", :name=>"FunkyRobin",
:modifier=>"", :modifier=>"",
:contains_ptr? => false, :contains_ptr? => false,
:args=>[ {:type=>"uint16_t", :name=>"num1", :ptr? => false, :const? => false}, :args=>[ {:type=>"uint16_t", :name=>"num1", :ptr? => false, :const? => false, :const_ptr? => false},
{:type=>"uint16_t", :name=>"num2", :ptr? => false, :const? => false}, {:type=>"uint16_t", :name=>"num2", :ptr? => false, :const? => false, :const_ptr? => false},
{:type=>"cmock_module_func_ptr1", :name=>"func_ptr1", :ptr? => false, :const? => false} {:type=>"cmock_module_func_ptr1", :name=>"func_ptr1", :ptr? => false, :const? => false, :const_ptr? => false}
], ],
:args_string=>"uint16_t num1, uint16_t num2, cmock_module_func_ptr1 func_ptr1", :args_string=>"uint16_t num1, uint16_t num2, cmock_module_func_ptr1 func_ptr1",
:args_call=>"num1, num2, func_ptr1" }] :args_call=>"num1, num2, func_ptr1" }]
@@ -1235,13 +1266,14 @@ describe CMockHeaderParser, "Verify CMockHeaderParser Module" do
:name => 'cmock_to_return', :name => 'cmock_to_return',
:ptr? => false, :ptr? => false,
:const? => false, :const? => false,
:const_ptr? => false,
:str => "void cmock_to_return", :str => "void cmock_to_return",
:void? => true :void? => true
}, },
:name=>"FunkyFowl", :name=>"FunkyFowl",
:modifier=>"", :modifier=>"",
:contains_ptr? => false, :contains_ptr? => false,
:args=>[ {:type=>"cmock_module_func_ptr1", :name=>"cmock_arg1", :ptr? => false, :const? => true} :args=>[ {:type=>"cmock_module_func_ptr1", :name=>"cmock_arg1", :ptr? => false, :const? => true, :const_ptr? => false}
], ],
:args_string=>"cmock_module_func_ptr1 const cmock_arg1", :args_string=>"cmock_module_func_ptr1 const cmock_arg1",
:args_call=>"cmock_arg1" }] :args_call=>"cmock_arg1" }]
@@ -1258,13 +1290,14 @@ describe CMockHeaderParser, "Verify CMockHeaderParser Module" do
:name => 'cmock_to_return', :name => 'cmock_to_return',
:ptr? => false, :ptr? => false,
:const? => false, :const? => false,
:const_ptr? => false,
:str => "cmock_module_func_ptr1 cmock_to_return", :str => "cmock_module_func_ptr1 cmock_to_return",
:void? => false :void? => false
}, },
:name=>"FunkyPidgeon", :name=>"FunkyPidgeon",
:modifier=>"", :modifier=>"",
:contains_ptr? => false, :contains_ptr? => false,
:args=>[ {:type=>"char", :name=>"op_code", :ptr? => false, :const? => true} :args=>[ {:type=>"char", :name=>"op_code", :ptr? => false, :const? => true, :const_ptr? => false}
], ],
:args_string=>"const char op_code", :args_string=>"const char op_code",
:args_call=>"op_code" }] :args_call=>"op_code" }]
@@ -1281,6 +1314,7 @@ describe CMockHeaderParser, "Verify CMockHeaderParser Module" do
:name => 'cmock_to_return', :name => 'cmock_to_return',
:ptr? => false, :ptr? => false,
:const? => false, :const? => false,
:const_ptr? => false,
:str => "cmock_module_func_ptr1 cmock_to_return", :str => "cmock_module_func_ptr1 cmock_to_return",
:void? => false :void? => false
}, },
@@ -1303,6 +1337,7 @@ describe CMockHeaderParser, "Verify CMockHeaderParser Module" do
:name => 'cmock_to_return', :name => 'cmock_to_return',
:ptr? => false, :ptr? => false,
:const? => false, :const? => false,
:const_ptr? => false,
:str => "cmock_module_func_ptr1 cmock_to_return", :str => "cmock_module_func_ptr1 cmock_to_return",
:void? => false :void? => false
}, },
@@ -1325,14 +1360,15 @@ describe CMockHeaderParser, "Verify CMockHeaderParser Module" do
:name => 'cmock_to_return', :name => 'cmock_to_return',
:ptr? => false, :ptr? => false,
:const? => false, :const? => false,
:const_ptr? => false,
:str => "cmock_module_func_ptr1 cmock_to_return", :str => "cmock_module_func_ptr1 cmock_to_return",
:void? => false :void? => false
}, },
:name=>"FunkyMacaw", :name=>"FunkyMacaw",
:modifier=>"", :modifier=>"",
:contains_ptr? => true, :contains_ptr? => true,
:args=>[ {:type=>"double*", :name=>"foo", :ptr? => true, :const? => false}, :args=>[ {:type=>"double*", :name=>"foo", :ptr? => true, :const? => false, :const_ptr? => false},
{:type=>"THING*", :name=>"bar", :ptr? => true, :const? => false} {:type=>"THING*", :name=>"bar", :ptr? => true, :const? => false, :const_ptr? => false}
], ],
:args_string=>"double* foo, THING* bar", :args_string=>"double* foo, THING* bar",
:args_call=>"foo, bar" }] :args_call=>"foo, bar" }]
@@ -1349,17 +1385,18 @@ describe CMockHeaderParser, "Verify CMockHeaderParser Module" do
:name => "cmock_to_return", :name => "cmock_to_return",
:ptr? => false, :ptr? => false,
:const? => false, :const? => false,
:const_ptr? => false,
:str => "int cmock_to_return", :str => "int cmock_to_return",
:void? => false :void? => false
}, },
:name=>"sqlite3_bind_text", :name=>"sqlite3_bind_text",
:modifier=>"SQLITE_API", :modifier=>"SQLITE_API",
:contains_ptr? => true, :contains_ptr? => true,
:args=>[ {:type=>"sqlite3_stmt*", :name=>"cmock_arg2", :ptr? => true, :const? => false}, :args=>[ {:type=>"sqlite3_stmt*", :name=>"cmock_arg2", :ptr? => true, :const? => false, :const_ptr? => false},
{:type=>"int", :name=>"cmock_arg3", :ptr? => false, :const? => false}, {:type=>"int", :name=>"cmock_arg3", :ptr? => false, :const? => false, :const_ptr? => false},
{:type=>"char*", :name=>"cmock_arg4", :ptr? => false, :const? => true}, {:type=>"char*", :name=>"cmock_arg4", :ptr? => true, :const? => true, :const_ptr? => false},
{:type=>"int", :name=>"n", :ptr? => false, :const? => false}, {:type=>"int", :name=>"n", :ptr? => false, :const? => false, :const_ptr? => false},
{:type=>"cmock_module_func_ptr1", :name=>"cmock_arg1", :ptr? => false, :const? => false} {:type=>"cmock_module_func_ptr1", :name=>"cmock_arg1", :ptr? => false, :const? => false, :const_ptr? => false}
], ],
:args_string=>"sqlite3_stmt* cmock_arg2, int cmock_arg3, const char* cmock_arg4, int n, cmock_module_func_ptr1 cmock_arg1", :args_string=>"sqlite3_stmt* cmock_arg2, int cmock_arg3, const char* cmock_arg4, int n, cmock_module_func_ptr1 cmock_arg1",
:args_call=>"cmock_arg2, cmock_arg3, cmock_arg4, n, cmock_arg1" }] :args_call=>"cmock_arg2, cmock_arg3, cmock_arg4, n, cmock_arg1" }]
@@ -1376,14 +1413,15 @@ describe CMockHeaderParser, "Verify CMockHeaderParser Module" do
:name => 'cmock_to_return', :name => 'cmock_to_return',
:ptr? => false, :ptr? => false,
:const? => false, :const? => false,
:const_ptr? => false,
:str => "int cmock_to_return", :str => "int cmock_to_return",
:void? => false :void? => false
}, },
:name=>"XFiles", :name=>"XFiles",
:modifier=>"", :modifier=>"",
:contains_ptr? => false, :contains_ptr? => false,
:args=>[ {:type=>"int", :name=>"Scully", :ptr? => false, :const? => false}, :args=>[ {:type=>"int", :name=>"Scully", :ptr? => false, :const? => false, :const_ptr? => false},
{:type=>"int", :name=>"Mulder", :ptr? => false, :const? => false} {:type=>"int", :name=>"Mulder", :ptr? => false, :const? => false, :const_ptr? => false}
], ],
:args_string=>"int Scully, int Mulder", :args_string=>"int Scully, int Mulder",
:args_call=>"Scully, Mulder" :args_call=>"Scully, Mulder"
@@ -1398,13 +1436,14 @@ describe CMockHeaderParser, "Verify CMockHeaderParser Module" do
:name => 'cmock_to_return', :name => 'cmock_to_return',
:ptr? => true, :ptr? => true,
:const? => false, :const? => false,
:const_ptr? => false,
:str => "void* cmock_to_return", :str => "void* cmock_to_return",
:void? => false :void? => false
}, },
:name=>"MoreSillySongs", :name=>"MoreSillySongs",
:modifier=>"", :modifier=>"",
:contains_ptr? => true, :contains_ptr? => true,
:args=>[ {:type=>"void*", :name=>"stuff", :ptr? => true, :const? => false} :args=>[ {:type=>"void*", :name=>"stuff", :ptr? => true, :const? => false, :const_ptr? => false}
], ],
:args_string=>"void* stuff", :args_string=>"void* stuff",
:args_call=>"stuff" :args_call=>"stuff"
@@ -1419,14 +1458,15 @@ describe CMockHeaderParser, "Verify CMockHeaderParser Module" do
:name => 'cmock_to_return', :name => 'cmock_to_return',
:ptr? => false, :ptr? => false,
:const? => false, :const? => false,
:const_ptr? => false,
:str => "int cmock_to_return", :str => "int cmock_to_return",
:void? => false :void? => false
}, },
:name=>"LaverneAndShirley", :name=>"LaverneAndShirley",
:modifier=>"", :modifier=>"",
:contains_ptr? => false, :contains_ptr? => false,
:args=>[ {:type=>"int", :name=>"Lenny", :ptr? => false, :const? => false}, :args=>[ {:type=>"int", :name=>"Lenny", :ptr? => false, :const? => false, :const_ptr? => false},
{:type=>"int", :name=>"Squiggy", :ptr? => false, :const? => false} {:type=>"int", :name=>"Squiggy", :ptr? => false, :const? => false, :const_ptr? => false}
], ],
:args_string=>"int Lenny, int Squiggy", :args_string=>"int Lenny, int Squiggy",
:args_call=>"Lenny, Squiggy" :args_call=>"Lenny, Squiggy"
@@ -1441,14 +1481,15 @@ describe CMockHeaderParser, "Verify CMockHeaderParser Module" do
:name => 'cmock_to_return', :name => 'cmock_to_return',
:ptr? => false, :ptr? => false,
:const? => false, :const? => false,
:const_ptr? => false,
:str => "int cmock_to_return", :str => "int cmock_to_return",
:void? => false :void? => false
}, },
:name=>"TheCosbyShow", :name=>"TheCosbyShow",
:modifier=>"", :modifier=>"",
:contains_ptr? => false, :contains_ptr? => false,
:args=>[ {:type=>"int", :name=>"Cliff", :ptr? => false, :const? => false}, :args=>[ {:type=>"int", :name=>"Cliff", :ptr? => false, :const? => false, :const_ptr? => false},
{:type=>"int", :name=>"Claire", :ptr? => false, :const? => false} {:type=>"int", :name=>"Claire", :ptr? => false, :const? => false, :const_ptr? => false}
], ],
:args_string=>"int Cliff, int Claire", :args_string=>"int Cliff, int Claire",
:args_call=>"Cliff, Claire" :args_call=>"Cliff, Claire"