stdlib/strings: Detached the Text block from Collection.
[nit.git] / lib / json / jsonable.nit
1 # This file is part of NIT ( http://www.nitlanguage.org ).
2 #
3 # Copyright 2012-2013 Alexis Laferrière <alexis.laf@xymus.net>
4 #
5 # Licensed under the Apache License, Version 2.0 (the "License");
6 # you may not use this file except in compliance with the License.
7 # You may obtain a copy of the License at
8 #
9 # http://www.apache.org/licenses/LICENSE-2.0
10 #
11 # Unless required by applicable law or agreed to in writing, software
12 # distributed under the License is distributed on an "AS IS" BASIS,
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 # See the License for the specific language governing permissions and
15 # limitations under the License.
16
17 # Basic json related functionalities
18 module jsonable is pkgconfig("json")
19
20 in "C Header" `{
21 #define __STRICT_ANSI__
22 #include <json/json.h>
23 `}
24
25 # Type supported by the Json format
26 interface Jsonable
27 end
28
29 # Main object type used by C library
30 private extern JsonObject `{ struct json_object* `}
31 # Give up ownership of this object and decrease the reference count.
32 fun put `{ json_object_put( recv ); `}
33
34 # Aquire ownership of this object and increase the reference count.
35 fun get `{ json_object_get( recv ); `}
36 end
37
38 redef class SequenceRead[ V ]
39 super Jsonable
40 end
41
42 redef class String
43 super Jsonable
44 end
45
46 # Can b converted to a Json object
47 redef class Map[ K, V ]
48 super Jsonable
49 end
50
51 redef class Int
52 super Jsonable
53 end
54
55 redef class Bool
56 super Jsonable
57 end
58
59 redef class Float
60 super Jsonable
61 end