|
C/C++ Reference
|
00001 /* 00002 * ____ _________ __ _ 00003 * / __ \___ ____ _/ /_ __(_)___ ___ ___ / / ____ ____ _(_)____ 00004 * / /_/ / _ \/ __ `/ / / / / / __ `__ \/ _ \/ / / __ \/ __ `/ / ___/ 00005 * / _, _/ __/ /_/ / / / / / / / / / / / __/ /___/ /_/ / /_/ / / /__ 00006 * /_/ |_|\___/\__,_/_/ /_/ /_/_/ /_/ /_/\___/_____/\____/\__, /_/\___/ 00007 * /____/ 00008 * 00009 * Barracuda Embedded Web-Server 00010 * 00011 **************************************************************************** 00012 * HEADER 00013 * 00014 * $Id: JSerializer.h 2648 2012-04-26 20:27:21Z wini $ 00015 * 00016 * COPYRIGHT: Real Time Logic LLC, 2006-2008 00017 * 00018 * This software is copyrighted by and is the sole property of Real 00019 * Time Logic LLC. All rights, title, ownership, or other interests in 00020 * the software remain the property of Real Time Logic LLC. This 00021 * software may only be used in accordance with the terms and 00022 * conditions stipulated in the corresponding license agreement under 00023 * which the software has been supplied. Any unauthorized use, 00024 * duplication, transmission, distribution, or disclosure of this 00025 * software is expressly forbidden. 00026 * 00027 * This Copyright notice may not be removed or modified without prior 00028 * written consent of Real Time Logic LLC. 00029 * 00030 * Real Time Logic LLC. reserves the right to modify this software 00031 * without notice. 00032 * 00033 * http://www.realtimelogic.com 00034 **************************************************************************** 00035 * 00036 */ 00037 00038 #ifndef __JSerializer_h 00039 #define __JSerializer_h 00040 00041 #include "JVal.h" 00042 #include "BufPrint.h" 00043 00053 typedef struct JSerializer 00054 { 00055 #ifdef __cplusplus 00056 00058 JSerializer(JErr* err, BufPrint* out); 00059 ~JSerializer(); 00060 00063 int setInt(S32 val); 00064 00067 int setLong(S64 val); 00068 #ifndef NO_DOUBLE 00069 00072 int setDouble(double val); 00073 #endif 00074 00078 int setString(const char* val); 00079 00085 int fmtString(const char* fmt,...); 00086 00090 int vFmtString(const char* fmt,va_list argList); 00091 00094 int setBoolean(bool val); 00095 00098 int setNull(); 00099 00102 int setJV(struct JVal* val, bool iterateNext=false); 00103 00141 int set(const char* fmt, ...); 00142 00148 int setMemberName(const char* name); 00149 00161 int beginObject(); 00162 00165 int endObject(); 00166 00169 int beginArray(); 00170 00173 int endArray(); 00174 00177 JErr* getErr(); 00178 00181 int flush(); 00182 00185 int commit(); 00186 00189 BufPrint* getBufPrint(); 00190 00191 #endif 00192 JErr* err; 00193 struct 00194 { 00195 S32 level; 00196 U8 data[64]; 00197 }objectStack; 00198 BufPrint* out; 00199 BaBool objectMember; 00200 BaBool startNewObj; 00201 } JSerializer; 00202 #ifdef __cplusplus 00203 extern "C" { 00204 #endif 00205 BA_API void JSerializer_constructor(JSerializer* o, JErr* err, BufPrint* out); 00206 #define JSerializer_destructor(o) JSerializer_flush(o) 00207 BA_API int JSerializer_flush(JSerializer* o); 00208 BA_API int JSerializer_commit(JSerializer* o); 00209 #define JSerializer_getErr(o) (o)->err 00210 BA_API int JSerializer_setInt(JSerializer* o, S32 val); 00211 BA_API int JSerializer_setLong(JSerializer* o, S64 val); 00212 #ifdef NO_DOUBLE 00213 #define JSerializer_setDouble JSerializer_setInt 00214 #else 00215 BA_API int JSerializer_setDouble(JSerializer* o, double val); 00216 #endif 00217 00218 BA_API int JSerializer_fmtString(JSerializer* o, const char* fmt,...); 00219 BA_API int JSerializer_vFmtString( 00220 JSerializer* o, const char* fmt,va_list argList); 00221 BA_API int JSerializer_setString(JSerializer* o, const char* val); 00222 BA_API int JSerializer_setBoolean(JSerializer* o, BaBool val); 00223 BA_API int JSerializer_setNull(JSerializer* o); 00224 BA_API int JSerializer_setJV( 00225 JSerializer* o, struct JVal* val, BaBool iterateNext); 00226 BA_API int JSerializer_vSetJV( 00227 JSerializer* o,const char** fmt,va_list* argList); 00228 BA_API int JSerializer_set(JSerializer* o, const char* fmt, ...); 00229 BA_API int JSerializer_setMemberName(JSerializer* o, const char* name); 00230 BA_API int JSerializer_beginObject(JSerializer* o); 00231 BA_API int JSerializer_endObject(JSerializer* o); 00232 BA_API int JSerializer_beginArray(JSerializer* o); 00233 BA_API int JSerializer_endArray(JSerializer* o); 00234 #define JSerializer_getBufPrint(o) (o)->out 00235 #ifdef __cplusplus 00236 } 00237 inline JSerializer::JSerializer(JErr* err, BufPrint* out) { 00238 JSerializer_constructor(this,err, out); } 00239 inline JSerializer::~JSerializer() { 00240 JSerializer_destructor(this); } 00241 inline int JSerializer::setInt(S32 val) { 00242 return JSerializer_setInt(this, val); } 00243 inline int JSerializer::setLong(S64 val) { 00244 return JSerializer_setLong(this, val); } 00245 #ifndef NO_DOUBLE 00246 inline int JSerializer::setDouble(double val) { 00247 return JSerializer_setDouble(this, val); } 00248 #endif 00249 inline int JSerializer::fmtString(const char* fmt,...) { 00250 int retv; va_list argList; 00251 va_start(argList, fmt); 00252 retv = JSerializer_fmtString(this, fmt, argList); 00253 va_end(argList); 00254 return retv; 00255 } 00256 inline int JSerializer::vFmtString(const char* fmt,va_list argList) { 00257 return JSerializer_vFmtString(this, fmt, argList); } 00258 inline int JSerializer::setString(const char* val) { 00259 return JSerializer_setString(this, val); } 00260 inline int JSerializer::setBoolean(bool val) { 00261 return JSerializer_setBoolean(this, val ? TRUE : FALSE); } 00262 inline int JSerializer::setNull() { 00263 return JSerializer_setNull(this); } 00264 inline int JSerializer::setJV(struct JVal* val, bool iterateNext) { 00265 return JSerializer_setJV(this,val,iterateNext?TRUE:FALSE); } 00266 inline int JSerializer::set(const char* fmt, ...) { 00267 int retv; va_list argList; 00268 va_start(argList, fmt); 00269 retv=JSerializer_vSetJV(this,&fmt,&argList); 00270 va_end(argList); 00271 return retv; 00272 } 00273 inline int JSerializer::setMemberName(const char* name) { 00274 return JSerializer_setMemberName(this, name); } 00275 inline int JSerializer::beginObject() { 00276 return JSerializer_beginObject(this); } 00277 inline int JSerializer::endObject() { 00278 return JSerializer_endObject(this); } 00279 inline int JSerializer::beginArray() { 00280 return JSerializer_beginArray(this); } 00281 inline int JSerializer::endArray() { 00282 return JSerializer_endArray(this); } 00283 inline JErr* JSerializer::getErr() { 00284 return JSerializer_getErr(this); } 00285 inline int JSerializer::flush() { 00286 return JSerializer_flush(this); } 00287 inline int JSerializer::commit() { 00288 return JSerializer_commit(this); } 00289 inline BufPrint* JSerializer::getBufPrint() { 00290 return JSerializer_getBufPrint(this); } 00291 #endif 00292 /* end of JSON */ 00294 00295 #endif