efl/src/examples/efl_mono/FunctionPointer01.cs

61 lines
1.5 KiB
C#

/*
* Copyright 2019 by its authors. See AUTHORS.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
using static System.Console;
public class ExampleFunctionPointer01
{
private static bool static_called = false;
private static int twiceCb(int n)
{
static_called = true;
return n * 2;
}
public static void Main()
{
Eina.Config.Init();
Efl.Eo.Config.Init();
var obj = new Example.Numberwrapper();
// Set internal value
obj.SetNumber(12);
// With static method
obj.SetNumberCallback(twiceCb);
var ret = obj.CallCallback();
WriteLine($"Callback called? {static_called}.");
WriteLine($"Returned value: {ret}.\n");
// With lambda
bool lamda_called = false;
obj.SetNumberCallback(n => {
lamda_called = true;
return n * 3;
});
ret = obj.CallCallback();
WriteLine($"Lambda called? {lamda_called}.");
WriteLine($"Returned value: {ret}.\n");
}
}