// +build windows,cgo

package main

// #include <windows.h>
// typedef void(*callmeBackFunc)();
// static void bridgeCallback(callmeBackFunc callback) {
//	callback();
//}
import "C"

// CallMeBack call backs C code.
//export CallMeBack
func CallMeBack(callback C.callmeBackFunc) {
	C.bridgeCallback(callback)
}

// Dummy is called by the C code before registering the exception/continue handlers simulating a debugger.
// This makes sure that the Go runtime's lastcontinuehandler is reached before the C continue handler and thus,
// validate that it does not crash the program before another handler could take an action.
// The idea here is to reproduce what happens when you attach a debugger to a running program.
// It also simulate the behavior of the .Net debugger, which register its exception/continue handlers lazily.
//export Dummy
func Dummy() int {
	return 42
}

func main() {}
