xref: /freebsd/contrib/lyaml/ext/yaml/yaml.c (revision 2bc180ef045e5911cce0cea1c2a139cffd2b577a)
1 /*
2  * yaml.c, LibYAML binding for Lua
3  * Written by Andrew Danforth, 2009
4  *
5  * Copyright (C) 2014-2022 Gary V. Vaughan
6  * Copyright (C) 2009 Andrew Danforth
7  *
8  * Permission is hereby granted, free of charge, to any person obtaining a copy
9  * of this software and associated documentation files (the "Software"), to deal
10  * in the Software without restriction, including without limitation the rights
11  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12  * copies of the Software, and to permit persons to whom the Software is
13  * furnished to do so, subject to the following conditions:
14  *
15  * The above copyright notice and this permission notice shall be included in
16  * all copies or substantial portions of the Software.
17  *
18  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24  * THE SOFTWARE.
25  *
26  * Portions of this software were inspired by Perl's YAML::LibYAML module by
27  * Ingy d�t Net <ingy@cpan.org>
28  *
29  */
30 
31 #include <string.h>
32 #include <stdlib.h>
33 
34 #include <lualib.h>
35 
36 #include "lyaml.h"
37 
38 #define MYNAME		"yaml"
39 #define MYVERSION	MYNAME " library for " LUA_VERSION " / " VERSION
40 
41 #define LYAML__STR_1(_s)	(#_s + 1)
42 #define LYAML_STR_1(_s)		LYAML__STR_1(_s)
43 
44 static const luaL_Reg R[] =
45 {
46 #define MENTRY(_s) {LYAML_STR_1(_s), (_s)}
47 	MENTRY( Pemitter	),
48 	MENTRY( Pparser		),
49 	MENTRY( Pscanner	),
50 #undef MENTRY
51 	{NULL, NULL}
52 };
53 
54 LUALIB_API int
luaopen_yaml(lua_State * L)55 luaopen_yaml (lua_State *L)
56 {
57    parser_init (L);
58    scanner_init (L);
59 
60    luaL_register(L, "yaml", R);
61 
62    lua_pushliteral(L, MYVERSION);
63    lua_setfield(L, -2, "version");
64 
65    return 1;
66 }
67