Adding JsonSchema parser implementation for simulator and Updating Raml Parser.
[platform/upstream/iotivity.git] / service / simulator / ramlparser / raml / model / Schema.h
1 /******************************************************************\r
2  *\r
3  * Copyright 2015 Samsung Electronics All Rights Reserved.\r
4  *\r
5  *\r
6  *\r
7  * Licensed under the Apache License, Version 2.0 (the "License");\r
8  * you may not use this file except in compliance with the License.\r
9  * You may obtain a copy of the License at\r
10  *\r
11  *      http://www.apache.org/licenses/LICENSE-2.0\r
12  *\r
13  * Unless required by applicable law or agreed to in writing, software\r
14  * distributed under the License is distributed on an "AS IS" BASIS,\r
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
16  * See the License for the specific language governing permissions and\r
17  * limitations under the License.\r
18  *\r
19  ******************************************************************/\r
20 \r
21 #ifndef SCHEMAS_H\r
22 #define SCHEMAS_H\r
23 \r
24 #include <string>\r
25 #include "cJSON.h"\r
26 #include "IncludeResolver.h"\r
27 \r
28 #include "JsonSchema.h"\r
29 \r
30 namespace RAML\r
31 {\r
32     class Schema\r
33     {\r
34         public:\r
35             virtual cJSON *getJson() const;\r
36             virtual void setJson(cJSON *cjson);\r
37             virtual std::string getSchema() const;\r
38             virtual void setSchema(const std::string &schema);\r
39             virtual JsonSchemaPtr const &getProperties() const;\r
40 \r
41             Schema(const std::string &schema, const IncludeResolverPtr &includeResolver): m_schema(schema) ,\r
42                 m_cjson(cJSON_Parse(schema.c_str())),\r
43                 m_resProperties(std::make_shared<JsonSchema>(m_cjson, includeResolver) ) ,\r
44                 m_includeResolver(includeResolver) {}\r
45             Schema(): m_cjson(NULL), m_includeResolver(NULL), m_resProperties(std::make_shared<JsonSchema>()) {}\r
46             ~Schema() { cJSON_Delete(m_cjson); }\r
47 \r
48         private:\r
49             cJSON *m_cjson;\r
50             std::string m_schema;\r
51             JsonSchemaPtr m_resProperties;\r
52             IncludeResolverPtr m_includeResolver;\r
53     };\r
54     typedef std::shared_ptr<Schema> SchemaPtr;\r
55 \r
56 }\r
57 #endif\r