PageRenderTime 26ms CodeModel.GetById 21ms app.highlight 2ms RepoModel.GetById 1ms app.codeStats 0ms

/luabind/luabind/detail/find_best_match.hpp

http://luaboost.googlecode.com/
C++ Header | 59 lines | 16 code | 14 blank | 29 comment | 0 complexity | 69995076c3b53173dc164add6e2bbe2a MD5 | raw file
 1// Copyright (c) 2003 Daniel Wallin and Arvid Norberg
 2
 3// Permission is hereby granted, free of charge, to any person obtaining a
 4// copy of this software and associated documentation files (the "Software"),
 5// to deal in the Software without restriction, including without limitation
 6// the rights to use, copy, modify, merge, publish, distribute, sublicense,
 7// and/or sell copies of the Software, and to permit persons to whom the
 8// Software is furnished to do so, subject to the following conditions:
 9
10// The above copyright notice and this permission notice shall be included
11// in all copies or substantial portions of the Software.
12
13// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
14// ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
15// TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
16// PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
17// SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
18// ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
19// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
21// OR OTHER DEALINGS IN THE SOFTWARE.
22
23
24#ifndef LUABIND_FIND_BEST_MATCH_HPP_INCLUDED
25#define LUABIND_FIND_BEST_MATCH_HPP_INCLUDED
26
27#include <luabind/config.hpp>
28
29#include <boost/limits.hpp>
30
31namespace luabind { namespace detail
32{
33
34	// expects that a match function can be accesed through the iterator
35	// as int match_fun(lua_State*)
36	// returns true if it found a match better than the given. If it finds a
37	// better match match_index is updated to contain the new index to the best
38	// match (this index now refers to the list given to this call).
39	// orep_size is supposed to tell the size of the actual structures that
40	// start and end points to ambiguous is set to true if the match was
41	// ambiguous min_match should be initialized to the currently best match
42	// value (the number of implicit casts to get a perfect match). If there
43	// are no previous matches, set min_match to
44	// std::numeric_limits<int>::max()
45
46	LUABIND_API bool find_best_match(lua_State* L
47		, detail::overload_rep_base const* start, int num_overloads
48		, size_t orep_size, bool& ambiguous, int& min_match, int& match_index
49		, int num_params);
50
51	LUABIND_API void find_exact_match(lua_State* L
52		, detail::overload_rep_base const* start, int num_overloads
53		, size_t orep_size, int cmp_match, int num_params
54		, std::vector<overload_rep_base const*>& dest);
55
56}}
57
58#endif // LUABIND_FIND_BEST_MATCH_HPP_INCLUDED
59