casbin/util/built_in_functions.cpp
ReturnType KeyMatch2(Scope scope) {
    std::string key1 = GetString(scope, 0);
    std::string key2 = GetString(scope, 1);

    PushBooleanValue(scope, KeyMatch2(key1, key2));
    return RETURN_RESULT;
}
// KeyMatch2 determines whether key1 matches the pattern of key2 (similar to RESTful path), key2 can contain a *.
// For example, "/foo/bar" matches "/foo/*", "/resource1" matches "/:resource"
KeyMatch2 determines whether key1 matches the pattern of key2 (similar to RESTful path), key2 can contain a *.
KeyMatch2 determines whether key1 matches the pattern of key2 ( similar to RESTful path ) key2 can contain a * .
ReturnType KeyMatch2(Scope scope) {
    std::string key1 = GetString(scope, 0);
    std::string key2 = GetString(scope, 1);
    PushBooleanValue(scope, KeyMatch2(key1, key2));
    return RETURN_RESULT;
}
ReturnType KeyMatch2 ( Scope scope ) { std :: string key1 = GetString ( scope , 0 ) ; std :: string key2 = GetString ( scope , 1 ) ; PushBooleanValue ( scope , KeyMatch2 ( key1 , key2 ) ) ; return RETURN_RESULT ; }
KeyMatch2 determines whether key1 matches the pattern of key2 (similar to RESTful path), key2 can contain a *.
KeyMatch2 determines whether key1 matches the pattern of key2 ( similar to RESTful path ) key2 can contain a * .