github.com/gotranspile/cxgo@v0.3.8-0.20240118201721-29871598a6a2/libs/glfw3.go (about)

     1  package libs
     2  
     3  import (
     4  	"github.com/gotranspile/cxgo/types"
     5  )
     6  
     7  const (
     8  	glfw3H = "GLFW/glfw3.h"
     9  )
    10  
    11  func init() {
    12  	RegisterLibrary(glfw3H, func(env *Env) *Library {
    13  		intPtrT := env.PtrT(env.Go().Int())
    14  		hintT := types.NamedTGo("Hint", "glfw.Hint", env.Go().Int())
    15  		actionT := types.NamedTGo("Action", "glfw.Action", env.Go().Int())
    16  		joystickHatStateT := types.NamedTGo("JoystickHatState", "glfw.JoystickHatState", env.Go().Int())
    17  		keyT := types.NamedTGo("_GLFWKey", "glfw.Key", env.Go().Byte())
    18  		mouseButtonT := types.NamedTGo("MouseButton", "glfw.MouseButton", env.Go().Int())
    19  		modKeyT := types.NamedTGo("ModifierKey", "glfw.ModifierKey", env.Go().Int())
    20  		inputModeT := types.NamedTGo("InputMode", "glfw.InputMode", env.Go().Int())
    21  		perEventT := types.NamedTGo("PeripheralEvent", "glfw.PeripheralEvent", env.Go().Int())
    22  		windowPtrT := env.PtrT(nil)
    23  		keyCbT := types.NamedTGo("GLFWkeyfun", "glfw.KeyCallback", env.FuncTT(nil, windowPtrT, keyT, env.Go().Int(), actionT, modKeyT))
    24  		charCbT := types.NamedTGo("GLFWcharfun", "glfw.CharCallback", env.FuncTT(nil, windowPtrT, env.Go().Rune()))
    25  		frameBufCb := types.NamedTGo("GLFWframebuffersizefun", "glfw.FramebufferSizeCallback", env.FuncTT(nil, windowPtrT, env.Go().Rune()))
    26  		errorCb := types.NamedTGo("GLFWerrorfun", "glfw.ErrorCallback", env.FuncTT(nil, env.Go().Int(), env.Go().String()))
    27  		videoModeT := types.NamedTGo("GLFWvidmode", "glfw.VidMode", types.StructT([]*types.Field{
    28  			{Name: types.NewIdentGo("width", "Width", env.Go().Int())},
    29  			{Name: types.NewIdentGo("height", "Height", env.Go().Int())},
    30  			{Name: types.NewIdentGo("redBits", "RedBits", env.Go().Int())},
    31  			{Name: types.NewIdentGo("greenBits", "GreenBits", env.Go().Int())},
    32  			{Name: types.NewIdentGo("blueBits", "BlueBits", env.Go().Int())},
    33  			{Name: types.NewIdentGo("refreshRate", "RefreshRate", env.Go().Int())},
    34  		}))
    35  		monitorT := types.NamedTGo("GLFWmonitor", "glfw.Monitor", env.MethStructT(map[string]*types.FuncType{
    36  			"GetVideoMode":    env.FuncTT(env.PtrT(videoModeT), nil),
    37  			"GetPos":          env.FuncTT(nil, env.PtrT(env.Go().Int()), env.PtrT(env.Go().Int())),
    38  			"GetPhysicalSize": env.FuncTT(nil, env.PtrT(env.Go().Int()), env.PtrT(env.Go().Int())),
    39  			"GetName":         env.FuncTT(env.Go().String(), nil),
    40  		}))
    41  		monitorCb := types.NamedTGo("GLFWmonitorfun", "glfw.MonitorCallback", env.FuncTT(nil, env.PtrT(monitorT), perEventT))
    42  		joystickT := types.NamedTGo("_GLFWJoystick", "glfw.Joystick", env.MethStructT(map[string]*types.FuncType{
    43  			"GetAxes":        env.FuncTT(types.SliceT(types.FloatT(4)), env.PtrT(env.Go().Int())),
    44  			"GetButtons":     env.FuncTT(types.SliceT(actionT), env.PtrT(env.Go().Int())),
    45  			"GetHats":        env.FuncTT(types.SliceT(joystickHatStateT), env.PtrT(env.Go().Int())),
    46  			"GetName":        env.FuncTT(env.Go().String(), nil),
    47  			"GetGamepadName": env.FuncTT(env.Go().String(), nil),
    48  			"IsGamepad":      env.FuncTT(env.Go().Bool(), nil),
    49  			"GetGUID":        env.FuncTT(env.Go().String(), nil),
    50  		}))
    51  		joystickCb := types.NamedTGo("GLFWjoystickfun", "glfw.JoystickCallback", env.FuncTT(nil, joystickT, perEventT))
    52  		posCb := types.NamedTGo("GLFWwindowposfun", "glfw.PosCallback", env.FuncTT(nil, windowPtrT, env.Go().Int(), env.Go().Int()))
    53  		sizeCb := types.NamedTGo("GLFWwindowsizefun", "glfw.SizeCallback", env.FuncTT(nil, windowPtrT, env.Go().Int(), env.Go().Int()))
    54  		scaleCb := types.NamedTGo("GLFWwindowcontentscalefun", "glfw.ContentScaleCallback", env.FuncTT(nil, windowPtrT, env.C().Float(), env.C().Float()))
    55  		closeCb := types.NamedTGo("GLFWwindowclosefun", "glfw.CloseCallback", env.FuncTT(nil, windowPtrT))
    56  		refreshCb := types.NamedTGo("GLFWwindowrefreshfun", "glfw.RefreshCallback", env.FuncTT(nil, windowPtrT))
    57  		focusCb := types.NamedTGo("GLFWwindowfocusfun", "glfw.FocusCallback", env.FuncTT(nil, windowPtrT, env.Go().Bool()))
    58  		windowT := types.NamedTGo("GLFWwindow", "glfw.Window", env.MethStructT(map[string]*types.FuncType{
    59  			"MakeContextCurrent": env.FuncTT(nil, nil),
    60  			"ShouldClose":        env.FuncTT(env.Go().Bool(), nil),
    61  			"SwapBuffers":        env.FuncTT(nil, nil),
    62  			"GetKey":             env.FuncTT(actionT, keyT),
    63  			"GetInputMode":       env.FuncTT(env.Go().Int(), inputModeT),
    64  			"SetInputMode":       env.FuncTT(nil, inputModeT, env.Go().Int()),
    65  			"SetShouldClose":     env.FuncTT(nil, env.Go().Bool()),
    66  			"GetFramebufferSize": env.FuncTT(nil, intPtrT, intPtrT),
    67  			"Destroy":            env.FuncTT(nil, nil),
    68  			"Focus":              env.FuncTT(nil, nil),
    69  			"Maximize":           env.FuncTT(nil, nil),
    70  			"Show":               env.FuncTT(nil, nil),
    71  			"Hide":               env.FuncTT(nil, nil),
    72  			"Iconify":            env.FuncTT(nil, nil),
    73  			"Restore":            env.FuncTT(nil, nil),
    74  			"SetTitle":           env.FuncTT(nil, env.C().String()),
    75  			"SetSize":            env.FuncTT(nil, env.Go().Int(), env.Go().Int()),
    76  			"GetSize":            env.FuncTT(nil, env.PtrT(env.Go().Int()), env.PtrT(env.Go().Int())),
    77  			"SetPos":             env.FuncTT(nil, env.Go().Int(), env.Go().Int()),
    78  			"GetPos":             env.FuncTT(nil, env.PtrT(env.Go().Int()), env.PtrT(env.Go().Int())),
    79  			"GetUserPointer":     env.FuncTT(env.PtrT(nil), nil),
    80  			"SetUserPointer":     env.FuncTT(nil, env.PtrT(nil)),
    81  			"GetAttrib":          env.FuncTT(env.Go().Int(), env.Go().Int()),
    82  			"SetAttrib":          env.FuncTT(nil, env.Go().Int(), env.Go().Int()),
    83  			"GetMonitor":         env.FuncTT(env.PtrT(monitorT)),
    84  			"SetMonitor":         env.FuncTT(nil, windowPtrT, env.PtrT(monitorT), env.Go().Int(), env.Go().Int(), env.Go().Int(), env.Go().Int(), env.Go().Int()),
    85  			// callbacks
    86  			"SetKeyCallback":             env.FuncTT(keyCbT, keyCbT),
    87  			"SetCharCallback":            env.FuncTT(charCbT, charCbT),
    88  			"SetFramebufferSizeCallback": env.FuncTT(frameBufCb, frameBufCb),
    89  			"SetPosCallback":             env.FuncTT(posCb, posCb),
    90  			"SetSizeCallback":            env.FuncTT(sizeCb, sizeCb),
    91  			"SetContentScaleCallback":    env.FuncTT(scaleCb, scaleCb),
    92  			"SetCloseCallback":           env.FuncTT(closeCb, closeCb),
    93  			"SetRefreshCallback":         env.FuncTT(refreshCb, refreshCb),
    94  			"SetFocusCallback":           env.FuncTT(focusCb, focusCb),
    95  		}))
    96  		windowPtrT.SetElem(windowT)
    97  		l := &Library{
    98  			Imports: map[string]string{
    99  				"glfw": RuntimeOrg + "/glfw",
   100  			},
   101  			Types: map[string]types.Type{
   102  				"_GLFWkey":      keyT,
   103  				"GLFWwindow":    windowT,
   104  				"GLFWmonitor":   monitorT,
   105  				"GLFWvidmode":   videoModeT,
   106  				"_GLFWjoystick": joystickT,
   107  				"_Action":       actionT,
   108  			},
   109  			Idents: map[string]*types.Ident{
   110  				// functions
   111  				"glfwWindowHint": types.NewIdentGo("glfwWindowHint", "glfw.WindowHint", env.FuncTT(nil, hintT, env.Go().Int())),
   112  				"glfwGetKeyName": types.NewIdentGo("glfwGetKeyName", "glfw.GetKeyName", env.FuncTT(env.Go().String(), keyT, env.Go().Int())),
   113  				// constants
   114  				"GLFW_OPENGL_CORE_PROFILE":   types.NewIdentGo("GLFW_OPENGL_CORE_PROFILE", "glfw.OpenGLCoreProfile", env.Go().Int()),
   115  				"GLFW_OPENGL_ANY_PROFILE":    types.NewIdentGo("GLFW_OPENGL_ANY_PROFILE", "glfw.OpenGLAnyProfile", env.Go().Int()),
   116  				"GLFW_OPENGL_COMPAT_PROFILE": types.NewIdentGo("GLFW_OPENGL_COMPAT_PROFILE", "glfw.OpenGLCompatProfile", env.Go().Int()),
   117  				"GLFW_TRUE":                  types.NewIdentGo("GLFW_TRUE", "glfw.True", env.Go().Int()),
   118  				"GLFW_FALSE":                 types.NewIdentGo("GLFW_FALSE", "glfw.False", env.Go().Int()),
   119  				// key and button actions
   120  				"GLFW_PRESS":   types.NewIdentGo("GLFW_PRESS", "glfw.Press", actionT),
   121  				"GLFW_RELEASE": types.NewIdentGo("GLFW_RELEASE", "glfw.Release", actionT),
   122  				"GLFW_REPEAT":  types.NewIdentGo("GLFW_REPEAT", "glfw.Repeat", actionT),
   123  				/* The unknown key */
   124  				"GLFW_KEY_UNKNOWN": types.NewIdentGo("GLFW_KEY_UNKNOWN", "glfw.KeyUnknown", keyT),
   125  				/* Printable keys */
   126  				"GLFW_KEY_SPACE":         types.NewIdentGo("GLFW_KEY_SPACE", "glfw.KeySpace", keyT),
   127  				"GLFW_KEY_APOSTROPHE":    types.NewIdentGo("GLFW_KEY_APOSTROPHE", "glfw.KeyApostrophe", keyT),
   128  				"GLFW_KEY_COMMA":         types.NewIdentGo("GLFW_KEY_COMMA", "glfw.KeyComma", keyT),
   129  				"GLFW_KEY_MINUS":         types.NewIdentGo("GLFW_KEY_MINUS", "glfw.KeyMinus", keyT),
   130  				"GLFW_KEY_PERIOD":        types.NewIdentGo("GLFW_KEY_PERIOD", "glfw.KeyPeriod", keyT),
   131  				"GLFW_KEY_SLASH":         types.NewIdentGo("GLFW_KEY_SLASH", "glfw.KeySlash", keyT),
   132  				"GLFW_KEY_0":             types.NewIdentGo("GLFW_KEY_0", "glfw.Key0", keyT),
   133  				"GLFW_KEY_1":             types.NewIdentGo("GLFW_KEY_1", "glfw.Key1", keyT),
   134  				"GLFW_KEY_2":             types.NewIdentGo("GLFW_KEY_2", "glfw.Key2", keyT),
   135  				"GLFW_KEY_3":             types.NewIdentGo("GLFW_KEY_3", "glfw.Key3", keyT),
   136  				"GLFW_KEY_4":             types.NewIdentGo("GLFW_KEY_4", "glfw.Key4", keyT),
   137  				"GLFW_KEY_5":             types.NewIdentGo("GLFW_KEY_5", "glfw.Key5", keyT),
   138  				"GLFW_KEY_6":             types.NewIdentGo("GLFW_KEY_6", "glfw.Key6", keyT),
   139  				"GLFW_KEY_7":             types.NewIdentGo("GLFW_KEY_7", "glfw.Key7", keyT),
   140  				"GLFW_KEY_8":             types.NewIdentGo("GLFW_KEY_8", "glfw.Key8", keyT),
   141  				"GLFW_KEY_9":             types.NewIdentGo("GLFW_KEY_9", "glfw.Key9", keyT),
   142  				"GLFW_KEY_SEMICOLON":     types.NewIdentGo("GLFW_KEY_SEMICOLON", "glfw.KeySemicolon", keyT),
   143  				"GLFW_KEY_EQUAL":         types.NewIdentGo("GLFW_KEY_EQUAL", "glfw.KeyEqual", keyT),
   144  				"GLFW_KEY_A":             types.NewIdentGo("GLFW_KEY_A", "glfw.KeyA", keyT),
   145  				"GLFW_KEY_B":             types.NewIdentGo("GLFW_KEY_B", "glfw.KeyB", keyT),
   146  				"GLFW_KEY_C":             types.NewIdentGo("GLFW_KEY_C", "glfw.KeyC", keyT),
   147  				"GLFW_KEY_D":             types.NewIdentGo("GLFW_KEY_D", "glfw.KeyD", keyT),
   148  				"GLFW_KEY_E":             types.NewIdentGo("GLFW_KEY_E", "glfw.KeyE", keyT),
   149  				"GLFW_KEY_F":             types.NewIdentGo("GLFW_KEY_F", "glfw.KeyF", keyT),
   150  				"GLFW_KEY_G":             types.NewIdentGo("GLFW_KEY_G", "glfw.KeyG", keyT),
   151  				"GLFW_KEY_H":             types.NewIdentGo("GLFW_KEY_H", "glfw.KeyH", keyT),
   152  				"GLFW_KEY_I":             types.NewIdentGo("GLFW_KEY_I", "glfw.KeyI", keyT),
   153  				"GLFW_KEY_J":             types.NewIdentGo("GLFW_KEY_J", "glfw.KeyJ", keyT),
   154  				"GLFW_KEY_K":             types.NewIdentGo("GLFW_KEY_K", "glfw.KeyK", keyT),
   155  				"GLFW_KEY_L":             types.NewIdentGo("GLFW_KEY_L", "glfw.KeyL", keyT),
   156  				"GLFW_KEY_M":             types.NewIdentGo("GLFW_KEY_M", "glfw.KeyM", keyT),
   157  				"GLFW_KEY_N":             types.NewIdentGo("GLFW_KEY_N", "glfw.KeyN", keyT),
   158  				"GLFW_KEY_O":             types.NewIdentGo("GLFW_KEY_O", "glfw.KeyO", keyT),
   159  				"GLFW_KEY_P":             types.NewIdentGo("GLFW_KEY_P", "glfw.KeyP", keyT),
   160  				"GLFW_KEY_Q":             types.NewIdentGo("GLFW_KEY_Q", "glfw.KeyQ", keyT),
   161  				"GLFW_KEY_R":             types.NewIdentGo("GLFW_KEY_R", "glfw.KeyR", keyT),
   162  				"GLFW_KEY_S":             types.NewIdentGo("GLFW_KEY_S", "glfw.KeyS", keyT),
   163  				"GLFW_KEY_T":             types.NewIdentGo("GLFW_KEY_T", "glfw.KeyT", keyT),
   164  				"GLFW_KEY_U":             types.NewIdentGo("GLFW_KEY_U", "glfw.KeyU", keyT),
   165  				"GLFW_KEY_V":             types.NewIdentGo("GLFW_KEY_V", "glfw.KeyV", keyT),
   166  				"GLFW_KEY_W":             types.NewIdentGo("GLFW_KEY_W", "glfw.KeyW", keyT),
   167  				"GLFW_KEY_X":             types.NewIdentGo("GLFW_KEY_X", "glfw.KeyX", keyT),
   168  				"GLFW_KEY_Y":             types.NewIdentGo("GLFW_KEY_Y", "glfw.KeyY", keyT),
   169  				"GLFW_KEY_Z":             types.NewIdentGo("GLFW_KEY_Z", "glfw.KeyZ", keyT),
   170  				"GLFW_KEY_LEFT_BRACKET":  types.NewIdentGo("GLFW_KEY_LEFT_BRACKET", "glfw.KeyLeftBracket", keyT),
   171  				"GLFW_KEY_BACKSLASH":     types.NewIdentGo("GLFW_KEY_BACKSLASH", "glfw.KeyBackslash", keyT),
   172  				"GLFW_KEY_RIGHT_BRACKET": types.NewIdentGo("GLFW_KEY_RIGHT_BRACKET", "glfw.KeyRightBracket", keyT),
   173  				"GLFW_KEY_GRAVE_ACCENT":  types.NewIdentGo("GLFW_KEY_GRAVE_ACCENT", "glfw.KeyGraveAccent", keyT),
   174  				"GLFW_KEY_WORLD_1":       types.NewIdentGo("GLFW_KEY_WORLD_1", "glfw.KeyWorld1", keyT),
   175  				"GLFW_KEY_WORLD_2":       types.NewIdentGo("GLFW_KEY_WORLD_2", "glfw.KeyWorld2", keyT),
   176  				// function key constants
   177  				"GLFW_KEY_ESCAPE":        types.NewIdentGo("GLFW_KEY_ESCAPE", "glfw.KeyEscape", keyT),
   178  				"GLFW_KEY_ENTER":         types.NewIdentGo("GLFW_KEY_ENTER", "glfw.KeyEnter", keyT),
   179  				"GLFW_KEY_TAB":           types.NewIdentGo("GLFW_KEY_TAB", "glfw.KeyTab", keyT),
   180  				"GLFW_KEY_BACKSPACE":     types.NewIdentGo("GLFW_KEY_BACKSPACE", "glfw.KeyBackspace", keyT),
   181  				"GLFW_KEY_INSERT":        types.NewIdentGo("GLFW_KEY_INSERT", "glfw.KeyInsert", keyT),
   182  				"GLFW_KEY_DELETE":        types.NewIdentGo("GLFW_KEY_DELETE", "glfw.KeyDelete", keyT),
   183  				"GLFW_KEY_RIGHT":         types.NewIdentGo("GLFW_KEY_RIGHT", "glfw.KeyRight", keyT),
   184  				"GLFW_KEY_LEFT":          types.NewIdentGo("GLFW_KEY_LEFT", "glfw.KeyLeft", keyT),
   185  				"GLFW_KEY_DOWN":          types.NewIdentGo("GLFW_KEY_DOWN", "glfw.KeyDown", keyT),
   186  				"GLFW_KEY_UP":            types.NewIdentGo("GLFW_KEY_UP", "glfw.KeyUp", keyT),
   187  				"GLFW_KEY_PAGE_UP":       types.NewIdentGo("GLFW_KEY_PAGE_UP", "glfw.KeyPageUp", keyT),
   188  				"GLFW_KEY_PAGE_DOWN":     types.NewIdentGo("GLFW_KEY_PAGE_DOWN", "glfw.KeyPageDown", keyT),
   189  				"GLFW_KEY_HOME":          types.NewIdentGo("GLFW_KEY_HOME", "glfw.KeyHome", keyT),
   190  				"GLFW_KEY_END":           types.NewIdentGo("GLFW_KEY_END", "glfw.KeyEnd", keyT),
   191  				"GLFW_KEY_CAPS_LOCK":     types.NewIdentGo("GLFW_KEY_CAPS_LOCK", "glfw.KeyCapsLock", keyT),
   192  				"GLFW_KEY_SCROLL_LOCK":   types.NewIdentGo("GLFW_KEY_SCROLL_LOCK", "glfw.KeyScrollLock", keyT),
   193  				"GLFW_KEY_NUM_LOCK":      types.NewIdentGo("GLFW_KEY_NUM_LOCK", "glfw.KeyNumLock", keyT),
   194  				"GLFW_KEY_PRINT_SCREEN":  types.NewIdentGo("GLFW_KEY_PRINT_SCREEN", "glfw.KeyPrintScreen", keyT),
   195  				"GLFW_KEY_PAUSE":         types.NewIdentGo("GLFW_KEY_PAUSE", "glfw.KeyPause", keyT),
   196  				"GLFW_KEY_F1":            types.NewIdentGo("GLFW_KEY_F1", "glfw.KeyF1", keyT),
   197  				"GLFW_KEY_F2":            types.NewIdentGo("GLFW_KEY_F2", "glfw.KeyF2", keyT),
   198  				"GLFW_KEY_F3":            types.NewIdentGo("GLFW_KEY_F3", "glfw.KeyF3", keyT),
   199  				"GLFW_KEY_F4":            types.NewIdentGo("GLFW_KEY_F4", "glfw.KeyF4", keyT),
   200  				"GLFW_KEY_F5":            types.NewIdentGo("GLFW_KEY_F5", "glfw.KeyF5", keyT),
   201  				"GLFW_KEY_F6":            types.NewIdentGo("GLFW_KEY_F6", "glfw.KeyF6", keyT),
   202  				"GLFW_KEY_F7":            types.NewIdentGo("GLFW_KEY_F7", "glfw.KeyF7", keyT),
   203  				"GLFW_KEY_F8":            types.NewIdentGo("GLFW_KEY_F8", "glfw.KeyF8", keyT),
   204  				"GLFW_KEY_F9":            types.NewIdentGo("GLFW_KEY_F9", "glfw.KeyF9", keyT),
   205  				"GLFW_KEY_F10":           types.NewIdentGo("GLFW_KEY_F10", "glfw.KeyF10", keyT),
   206  				"GLFW_KEY_F11":           types.NewIdentGo("GLFW_KEY_F11", "glfw.KeyF11", keyT),
   207  				"GLFW_KEY_F12":           types.NewIdentGo("GLFW_KEY_F12", "glfw.KeyF12", keyT),
   208  				"GLFW_KEY_F13":           types.NewIdentGo("GLFW_KEY_F13", "glfw.KeyF13", keyT),
   209  				"GLFW_KEY_F14":           types.NewIdentGo("GLFW_KEY_F14", "glfw.KeyF14", keyT),
   210  				"GLFW_KEY_F15":           types.NewIdentGo("GLFW_KEY_F15", "glfw.KeyF15", keyT),
   211  				"GLFW_KEY_F16":           types.NewIdentGo("GLFW_KEY_F16", "glfw.KeyF16", keyT),
   212  				"GLFW_KEY_F17":           types.NewIdentGo("GLFW_KEY_F17", "glfw.KeyF17", keyT),
   213  				"GLFW_KEY_F18":           types.NewIdentGo("GLFW_KEY_F18", "glfw.KeyF18", keyT),
   214  				"GLFW_KEY_F19":           types.NewIdentGo("GLFW_KEY_F19", "glfw.KeyF19", keyT),
   215  				"GLFW_KEY_F20":           types.NewIdentGo("GLFW_KEY_F20", "glfw.KeyF20", keyT),
   216  				"GLFW_KEY_F21":           types.NewIdentGo("GLFW_KEY_F21", "glfw.KeyF21", keyT),
   217  				"GLFW_KEY_F22":           types.NewIdentGo("GLFW_KEY_F22", "glfw.KeyF22", keyT),
   218  				"GLFW_KEY_F23":           types.NewIdentGo("GLFW_KEY_F23", "glfw.KeyF23", keyT),
   219  				"GLFW_KEY_F24":           types.NewIdentGo("GLFW_KEY_F24", "glfw.KeyF24", keyT),
   220  				"GLFW_KEY_F25":           types.NewIdentGo("GLFW_KEY_F25", "glfw.KeyF25", keyT),
   221  				"GLFW_KEY_KP_0":          types.NewIdentGo("GLFW_KEY_KP_0", "glfw.KeyKP0", keyT),
   222  				"GLFW_KEY_KP_1":          types.NewIdentGo("GLFW_KEY_KP_1", "glfw.KeyKP1", keyT),
   223  				"GLFW_KEY_KP_2":          types.NewIdentGo("GLFW_KEY_KP_2", "glfw.KeyKP2", keyT),
   224  				"GLFW_KEY_KP_3":          types.NewIdentGo("GLFW_KEY_KP_3", "glfw.KeyKP3", keyT),
   225  				"GLFW_KEY_KP_4":          types.NewIdentGo("GLFW_KEY_KP_4", "glfw.KeyKP4", keyT),
   226  				"GLFW_KEY_KP_5":          types.NewIdentGo("GLFW_KEY_KP_5", "glfw.KeyKP5", keyT),
   227  				"GLFW_KEY_KP_6":          types.NewIdentGo("GLFW_KEY_KP_6", "glfw.KeyKP6", keyT),
   228  				"GLFW_KEY_KP_7":          types.NewIdentGo("GLFW_KEY_KP_7", "glfw.KeyKP7", keyT),
   229  				"GLFW_KEY_KP_8":          types.NewIdentGo("GLFW_KEY_KP_8", "glfw.KeyKP8", keyT),
   230  				"GLFW_KEY_KP_9":          types.NewIdentGo("GLFW_KEY_KP_9", "glfw.KeyKP9", keyT),
   231  				"GLFW_KEY_KP_DECIMAL":    types.NewIdentGo("GLFW_KEY_KP_DECIMAL", "glfw.KeyKPDecimal", keyT),
   232  				"GLFW_KEY_KP_DIVIDE":     types.NewIdentGo("GLFW_KEY_KP_DIVIDE", "glfw.KeyKPDivide", keyT),
   233  				"GLFW_KEY_KP_MULTIPLY":   types.NewIdentGo("GLFW_KEY_KP_MULTIPLY", "glfw.KeyKPMultiply", keyT),
   234  				"GLFW_KEY_KP_SUBTRACT":   types.NewIdentGo("GLFW_KEY_KP_SUBTRACT", "glfw.KeyKPSubtract", keyT),
   235  				"GLFW_KEY_KP_ADD":        types.NewIdentGo("GLFW_KEY_KP_ADD", "glfw.KeyKPAdd", keyT),
   236  				"GLFW_KEY_KP_ENTER":      types.NewIdentGo("GLFW_KEY_KP_ENTER", "glfw.KeyKPEnter", keyT),
   237  				"GLFW_KEY_KP_EQUAL":      types.NewIdentGo("GLFW_KEY_KP_EQUAL", "glfw.KeyKPEqual", keyT),
   238  				"GLFW_KEY_LEFT_SHIFT":    types.NewIdentGo("GLFW_KEY_LEFT_SHIFT", "glfw.KeyLeftShift", keyT),
   239  				"GLFW_KEY_LEFT_CONTROL":  types.NewIdentGo("GLFW_KEY_LEFT_CONTROL", "glfw.KeyLeftControl", keyT),
   240  				"GLFW_KEY_LEFT_ALT":      types.NewIdentGo("GLFW_KEY_LEFT_ALT", "glfw.KeyLeftAlt", keyT),
   241  				"GLFW_KEY_LEFT_SUPER":    types.NewIdentGo("GLFW_KEY_LEFT_SUPER", "glfw.KeyLeftSuper", keyT),
   242  				"GLFW_KEY_RIGHT_SHIFT":   types.NewIdentGo("GLFW_KEY_RIGHT_SHIFT", "glfw.KeyRightShift", keyT),
   243  				"GLFW_KEY_RIGHT_CONTROL": types.NewIdentGo("GLFW_KEY_RIGHT_CONTROL", "glfw.KeyRightControl", keyT),
   244  				"GLFW_KEY_RIGHT_ALT":     types.NewIdentGo("GLFW_KEY_RIGHT_ALT", "glfw.KeyRightAlt", keyT),
   245  				"GLFW_KEY_RIGHT_SUPER":   types.NewIdentGo("GLFW_KEY_RIGHT_SUPER", "glfw.KeyRightSuper", keyT),
   246  				"GLFW_KEY_MENU":          types.NewIdentGo("GLFW_KEY_MENU", "glfw.KeyMenu", keyT),
   247  				"GLFW_KEY_LAST":          types.NewIdentGo("GLFW_KEY_LAST", "glfw.KeyLast", keyT),
   248  				// mouse buttons
   249  				"GLFW_MOUSE_BUTTON_1":      types.NewIdentGo("GLFW_MOUSE_BUTTON_1", "glfw.MouseButton1", mouseButtonT),
   250  				"GLFW_MOUSE_BUTTON_2":      types.NewIdentGo("GLFW_MOUSE_BUTTON_2", "glfw.MouseButton2", mouseButtonT),
   251  				"GLFW_MOUSE_BUTTON_3":      types.NewIdentGo("GLFW_MOUSE_BUTTON_3", "glfw.MouseButton3", mouseButtonT),
   252  				"GLFW_MOUSE_BUTTON_4":      types.NewIdentGo("GLFW_MOUSE_BUTTON_4", "glfw.MouseButton4", mouseButtonT),
   253  				"GLFW_MOUSE_BUTTON_5":      types.NewIdentGo("GLFW_MOUSE_BUTTON_5", "glfw.MouseButton5", mouseButtonT),
   254  				"GLFW_MOUSE_BUTTON_6":      types.NewIdentGo("GLFW_MOUSE_BUTTON_6", "glfw.MouseButton6", mouseButtonT),
   255  				"GLFW_MOUSE_BUTTON_7":      types.NewIdentGo("GLFW_MOUSE_BUTTON_7", "glfw.MouseButton7", mouseButtonT),
   256  				"GLFW_MOUSE_BUTTON_8":      types.NewIdentGo("GLFW_MOUSE_BUTTON_8", "glfw.MouseButton8", mouseButtonT),
   257  				"GLFW_MOUSE_BUTTON_LAST":   types.NewIdentGo("GLFW_MOUSE_BUTTON_LAST", "glfw.MouseButtonLast", mouseButtonT),
   258  				"GLFW_MOUSE_BUTTON_LEFT":   types.NewIdentGo("GLFW_MOUSE_BUTTON_LEFT", "glfw.MouseButtonLeft", mouseButtonT),
   259  				"GLFW_MOUSE_BUTTON_RIGHT":  types.NewIdentGo("GLFW_MOUSE_BUTTON_RIGHT", "glfw.MouseButtonRight", mouseButtonT),
   260  				"GLFW_MOUSE_BUTTON_MIDDLE": types.NewIdentGo("GLFW_MOUSE_BUTTON_MIDDLE", "glfw.MouseButtonMiddle", mouseButtonT),
   261  				// modifier keys
   262  				"GLFW_MOD_SHIFT":     types.NewIdentGo("GLFW_MOD_SHIFT", "glfw.ModShift", modKeyT),
   263  				"GLFW_MOD_CONTROL":   types.NewIdentGo("GLFW_MOD_CONTROL", "glfw.ModControl", modKeyT),
   264  				"GLFW_MOD_ALT":       types.NewIdentGo("GLFW_MOD_ALT", "glfw.ModAlt", modKeyT),
   265  				"GLFW_MOD_SUPER":     types.NewIdentGo("GLFW_MOD_SUPER", "glfw.ModSuper", modKeyT),
   266  				"GLFW_MOD_CAPS_LOCK": types.NewIdentGo("GLFW_MOD_CAPS_LOCK", "glfw.ModCapsLock", modKeyT),
   267  				"GLFW_MOD_NUM_LOCK":  types.NewIdentGo("GLFW_MOD_NUM_LOCK", "glfw.ModNumLock", modKeyT),
   268  				// input mode
   269  				"GLFW_CURSOR":               types.NewIdentGo("GLFW_CURSOR", "glfw.Cursor", inputModeT),
   270  				"GLFW_STICKY_KEYS":          types.NewIdentGo("GLFW_STICKY_KEYS", "glfw.StickyKeys", inputModeT),
   271  				"GLFW_STICKY_MOUSE_BUTTONS": types.NewIdentGo("GLFW_STICKY_MOUSE_BUTTONS", "glfw.StickyMouseButtons", inputModeT),
   272  				"GLFW_LOCK_KEY_MODS":        types.NewIdentGo("GLFW_LOCK_KEY_MODS", "glfw.LockKeyMods", inputModeT),
   273  				"GLFW_RAW_MOUSE_MOTION":     types.NewIdentGo("GLFW_RAW_MOUSE_MOTION", "glfw.RawMouseMotion", inputModeT),
   274  				// peripheral events
   275  				"GLFW_CONNECTED":    types.NewIdentGo("GLFW_CONNECTED", "glfw.Connected", perEventT),
   276  				"GLFW_DISCONNECTED": types.NewIdentGo("GLFW_DISCONNECTED", "glfw.Disconnected", perEventT),
   277  				// hints
   278  				"GLFW_FOCUSED":                  types.NewIdentGo("GLFW_FOCUSED", "glfw.Focused", hintT),
   279  				"GLFW_ICONIFIED":                types.NewIdentGo("GLFW_ICONIFIED", "glfw.Iconified", hintT),
   280  				"GLFW_RESIZABLE":                types.NewIdentGo("GLFW_RESIZABLE", "glfw.Resizable", hintT),
   281  				"GLFW_VISIBLE":                  types.NewIdentGo("GLFW_VISIBLE", "glfw.Visible", hintT),
   282  				"GLFW_DECORATED":                types.NewIdentGo("GLFW_DECORATED", "glfw.Decorated", hintT),
   283  				"GLFW_AUTO_ICONIFY":             types.NewIdentGo("GLFW_AUTO_ICONIFY", "glfw.AutoIconify", hintT),
   284  				"GLFW_FLOATING":                 types.NewIdentGo("GLFW_FLOATING", "glfw.Floating", hintT),
   285  				"GLFW_MAXIMIZED":                types.NewIdentGo("GLFW_MAXIMIZED", "glfw.Maximized", hintT),
   286  				"GLFW_CENTER_CURSOR":            types.NewIdentGo("GLFW_CENTER_CURSOR", "glfw.CenterCursor", hintT),
   287  				"GLFW_TRANSPARENT_FRAMEBUFFER":  types.NewIdentGo("GLFW_TRANSPARENT_FRAMEBUFFER", "glfw.TransparentFramebuffer", hintT),
   288  				"GLFW_HOVERED":                  types.NewIdentGo("GLFW_HOVERED", "glfw.Hovered", hintT),
   289  				"GLFW_FOCUS_ON_SHOW":            types.NewIdentGo("GLFW_FOCUS_ON_SHOW", "glfw.FocusOnShow", hintT),
   290  				"GLFW_MOUSE_PASSTHROUGH":        types.NewIdentGo("GLFW_MOUSE_PASSTHROUGH", "glfw.MousePassthrough", hintT),
   291  				"GLFW_RED_BITS":                 types.NewIdentGo("GLFW_RED_BITS", "glfw.RedBits", hintT),
   292  				"GLFW_GREEN_BITS":               types.NewIdentGo("GLFW_GREEN_BITS", "glfw.GreenBits", hintT),
   293  				"GLFW_BLUE_BITS":                types.NewIdentGo("GLFW_BLUE_BITS", "glfw.BlueBits", hintT),
   294  				"GLFW_ALPHA_BITS":               types.NewIdentGo("GLFW_ALPHA_BITS", "glfw.AlphaBits", hintT),
   295  				"GLFW_DEPTH_BITS":               types.NewIdentGo("GLFW_DEPTH_BITS", "glfw.DepthBits", hintT),
   296  				"GLFW_STENCIL_BITS":             types.NewIdentGo("GLFW_STENCIL_BITS", "glfw.StencilBits", hintT),
   297  				"GLFW_ACCUM_RED_BITS":           types.NewIdentGo("GLFW_ACCUM_RED_BITS", "glfw.AccumRedBits", hintT),
   298  				"GLFW_ACCUM_GREEN_BITS":         types.NewIdentGo("GLFW_ACCUM_GREEN_BITS", "glfw.AccumGreenBits", hintT),
   299  				"GLFW_ACCUM_BLUE_BITS":          types.NewIdentGo("GLFW_ACCUM_BLUE_BITS", "glfw.AccumBlueBits", hintT),
   300  				"GLFW_ACCUM_ALPHA_BITS":         types.NewIdentGo("GLFW_ACCUM_ALPHA_BITS", "glfw.AccumAlphaBits", hintT),
   301  				"GLFW_AUX_BUFFERS":              types.NewIdentGo("GLFW_AUX_BUFFERS", "glfw.AuxBuffers", hintT),
   302  				"GLFW_STEREO":                   types.NewIdentGo("GLFW_STEREO", "glfw.Stereo", hintT),
   303  				"GLFW_SAMPLES":                  types.NewIdentGo("GLFW_SAMPLES", "glfw.Samples", hintT),
   304  				"GLFW_SRGB_CAPABLE":             types.NewIdentGo("GLFW_SRGB_CAPABLE", "glfw.SrgbCapable", hintT),
   305  				"GLFW_REFRESH_RATE":             types.NewIdentGo("GLFW_REFRESH_RATE", "glfw.RefreshRate", hintT),
   306  				"GLFW_DOUBLEBUFFER":             types.NewIdentGo("GLFW_DOUBLEBUFFER", "glfw.Doublebuffer", hintT),
   307  				"GLFW_CLIENT_API":               types.NewIdentGo("GLFW_CLIENT_API", "glfw.ClientApi", hintT),
   308  				"GLFW_CONTEXT_VERSION_MAJOR":    types.NewIdentGo("GLFW_CONTEXT_VERSION_MAJOR", "glfw.ContextVersionMajor", hintT),
   309  				"GLFW_CONTEXT_VERSION_MINOR":    types.NewIdentGo("GLFW_CONTEXT_VERSION_MINOR", "glfw.ContextVersionMinor", hintT),
   310  				"GLFW_CONTEXT_REVISION":         types.NewIdentGo("GLFW_CONTEXT_REVISION", "glfw.ContextRevision", hintT),
   311  				"GLFW_CONTEXT_ROBUSTNESS":       types.NewIdentGo("GLFW_CONTEXT_ROBUSTNESS", "glfw.ContextRobustness", hintT),
   312  				"GLFW_OPENGL_FORWARD_COMPAT":    types.NewIdentGo("GLFW_OPENGL_FORWARD_COMPAT", "glfw.OpenglForwardCompat", hintT),
   313  				"GLFW_CONTEXT_DEBUG":            types.NewIdentGo("GLFW_CONTEXT_DEBUG", "glfw.ContextDebug", hintT),
   314  				"GLFW_OPENGL_DEBUG_CONTEXT":     types.NewIdentGo("GLFW_OPENGL_DEBUG_CONTEXT", "glfw.OpenglDebugContext", hintT),
   315  				"GLFW_OPENGL_PROFILE":           types.NewIdentGo("GLFW_OPENGL_PROFILE", "glfw.OpenglProfile", hintT),
   316  				"GLFW_CONTEXT_RELEASE_BEHAVIOR": types.NewIdentGo("GLFW_CONTEXT_RELEASE_BEHAVIOR", "glfw.ContextReleaseBehavior", hintT),
   317  				"GLFW_CONTEXT_NO_ERROR":         types.NewIdentGo("GLFW_CONTEXT_NO_ERROR", "glfw.ContextNoError", hintT),
   318  				"GLFW_CONTEXT_CREATION_API":     types.NewIdentGo("GLFW_CONTEXT_CREATION_API", "glfw.ContextCreationApi", hintT),
   319  				"GLFW_SCALE_TO_MONITOR":         types.NewIdentGo("GLFW_SCALE_TO_MONITOR", "glfw.ScaleToMonitor", hintT),
   320  				"GLFW_COCOA_RETINA_FRAMEBUFFER": types.NewIdentGo("GLFW_COCOA_RETINA_FRAMEBUFFER", "glfw.CocoaRetinaFramebuffer", hintT),
   321  				"GLFW_COCOA_FRAME_NAME":         types.NewIdentGo("GLFW_COCOA_FRAME_NAME", "glfw.CocoaFrameName", hintT),
   322  				"GLFW_COCOA_GRAPHICS_SWITCHING": types.NewIdentGo("GLFW_COCOA_GRAPHICS_SWITCHING", "glfw.CocoaGraphicsSwitching", hintT),
   323  				"GLFW_X11_CLASS_NAME":           types.NewIdentGo("GLFW_X11_CLASS_NAME", "glfw.X11ClassName", hintT),
   324  				"GLFW_X11_INSTANCE_NAME":        types.NewIdentGo("GLFW_X11_INSTANCE_NAME", "glfw.X11InstanceName", hintT),
   325  				"GLFW_WIN32_KEYBOARD_MENU":      types.NewIdentGo("GLFW_WIN32_KEYBOARD_MENU", "glfw.Win32KeyboardMenu", hintT),
   326  			},
   327  		}
   328  		l.Declare(
   329  			// functions
   330  			types.NewIdentGo("glfwInit", "glfw.Init", env.FuncTT(env.C().Int(), nil)),
   331  			types.NewIdentGo("glfwTerminate", "glfw.Terminate", env.FuncTT(nil, nil)),
   332  			types.NewIdentGo("glfwCreateWindow", "glfw.CreateWindow", env.FuncTT(env.PtrT(windowT), env.Go().Int(), env.Go().Int(), env.Go().String(), env.PtrT(monitorT), env.PtrT(windowT))),
   333  			types.NewIdentGo("glfwGetProcAddress", "glfw.GetProcAddress", env.FuncTT(env.PtrT(nil), env.Go().String())),
   334  			types.NewIdentGo("glfwPollEvents", "glfw.PollEvents", env.FuncTT(nil, nil)),
   335  			types.NewIdentGo("glfwSwapInterval", "glfw.SwapInterval", env.FuncTT(nil, env.Go().Int())),
   336  			types.NewIdentGo("glfwGetTime", "glfw.GetTime", env.FuncTT(env.C().Float(), nil)),
   337  			types.NewIdentGo("glfwGetCurrentContext", "glfw.GetCurrentContext", env.FuncTT(env.PtrT(windowT), nil)),
   338  			types.NewIdentGo("glfwSetClipboardString", "glfw.SetClipboardString", env.FuncTT(nil, env.Go().String())),
   339  			types.NewIdentGo("glfwSetJoystickCallback", "glfw.SetJoystickCallback", env.FuncTT(joystickCb, joystickCb)),
   340  			types.NewIdentGo("glfwSetErrorCallback", "glfw.SetErrorCallback", env.FuncTT(errorCb, errorCb)),
   341  			types.NewIdentGo("glfwWaitEvents", "glfw.WaitEvents", env.FuncTT(nil, nil)),
   342  			types.NewIdentGo("glfwSetMonitorCallback", "glfw.SetMonitorCallback", env.FuncTT(monitorCb, monitorCb)),
   343  			types.NewIdentGo("glfwGetPrimaryMonitor", "glfw.GetPrimaryMonitor", env.FuncTT(env.PtrT(monitorT), nil)),
   344  			types.NewIdentGo("glfwGetMonitors", "glfw.GetMonitors", env.FuncTT(env.PtrT(env.PtrT(monitorT)), env.PtrT(env.Go().Int()))),
   345  		)
   346  		return l
   347  	})
   348  }