Home | Develop | Download | Contact
Json.hpp
1/*
2 * Json.hpp
3 *
4 * Copyright 2011 Fernando Pujaico Rivera <fernando.pujaico.rivera@gmail.com>
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19 * MA 02110-1301, USA.
20 *
21 */
22
23#ifndef __JSON_HPP__
24#define __JSON_HPP__
25
47#include <iostream>
48#include <string>
49#include <vector>
50#include <Pds/JsonElement>
51#include <map>
52
53namespace Pds{
54
62class Json
63{
64private:
65
67 std::map<std::string,Pds::JsonElement> V;
68
69public:
70
87
101 Json(const Pds::Json &J);
102
104
109public:
110
121 void MakeEmpty(void);
122
146
159 bool Copy(const Pds::Json &J);
160
165public:
166
177 bool IsEmpty(void) const;
178
183public:
184
197 bool Add(const std::string &Label,const Pds::JsonElement &E);
198
222 template <typename Datum>
223 bool Add(const std::string &Label, const Datum &data);
224
232 bool Add(const std::string &Label, const char *data);
233
238public:
239
251 Pds::JsonElement Get(const std::string &Label) const;
252
260 std::string GetType(const std::string &Label) const;
261
285 bool LabelIsOfType(const std::string &Label, const std::string &Type) const ;
286
316 template <typename Datum>
317 Datum &In(std::string Label);
318
348 template <typename Datum>
349 const Datum &At(std::string Label) const;
350
355public:
356
370 bool &Boolean(const std::string &Label);
371
379 long int &Integer(const std::string &Label);
380
388 double &Real(const std::string &Label);
389
397 std::string &String(const std::string &Label);
398
406 Pds::Json &JsonChild(const std::string &Label);
407
415 std::vector<bool> &ArrayB(const std::string &Label);
416
424 std::vector<long int> &ArrayI(const std::string &Label);
425
433 std::vector<double> &ArrayR(const std::string &Label);
434
442 std::vector<std::string> &ArrayS(const std::string &Label);
443
451 std::vector<Pds::Json> &ArrayJ(const std::string &Label);
452
457public:
458
467 void Print(void) const;
468
475 void Print(bool last,unsigned int Ntabs) const;
476
482 void Print(const std::string &str) const;
483
490 std::string ToString(unsigned int Ntabs=0) const;
491
496public:
497
510 bool Save(const std::string &filepath) const;
511
518 bool SaveInStream(std::ofstream &myfile) const;
519
520 bool Load(const std::string &filepath);
521
522 bool LoadFromString(const std::string &str) ;
527};// class Json
528}//Pds
529
533#endif
La clase tipo Pds::JsonElement . Esta clase genera un elemento de una estructura Json....
Definition: JsonElement.hpp:52
La clase tipo Pds::Json . Esta clase genera una estructura capaz de almacenar datos del formato Json....
Definition: Json.hpp:63
std::map< std::string, Pds::JsonElement > V
Definition: Json.hpp:67
bool SaveInStream(std::ofstream &myfile) const
Salva el objeto Json en un stream.
double & Real(const std::string &Label)
Retorna una referencia a un dato de tipo "Real" en el objeto de tipo Json.
std::vector< double > & ArrayR(const std::string &Label)
Retorna una referencia a un dato de tipo "ArrayR" en el objeto de tipo Json.
Json(const Pds::Json &J)
Crea un objeto de tipo Pds::Json copiando datos desde otro Json. Este es un Copy assignment construct...
std::string & String(const std::string &Label)
Retorna una referencia a un dato de tipo "String" en el objeto de tipo Json.
bool LoadFromString(const std::string &str)
std::string ToString(unsigned int Ntabs=0) const
Retorna un std::string con texto en formato Json.
Json()
Crea un objeto de tipo Pds::Json vacio.
bool LabelIsOfType(const std::string &Label, const std::string &Type) const
Dada una etiqueta, retorna true si el dato con etiqueta Label es de tipo Type o false si no.
std::vector< long int > & ArrayI(const std::string &Label)
Retorna una referencia a un dato de tipo "ArrayI" en el objeto de tipo Json.
Datum & In(std::string Label)
Retorna una referencia a un dato de tipo "Datum" en el objeto de tipo Json.
std::vector< std::string > & ArrayS(const std::string &Label)
Retorna una referencia a un dato de tipo "ArrayS" en el objeto de tipo Json.
void Print(const std::string &str) const
Retorna un std::string con texto en formato Json.
bool Copy(const Pds::Json &J)
Copia en si mismo (A), el contenido de un objeto J. Este método es similar a usar el operador = ....
void Print(bool last, unsigned int Ntabs) const
Retorna un std::string con texto en formato Json.
Pds::Json & JsonChild(const std::string &Label)
Retorna una referencia a un dato de tipo "Json" en el objeto de tipo Json.
void Print(void) const
Retorna un std::string con texto en formato Json.
const Datum & At(std::string Label) const
Retorna una referencia no modificable a un dato de tipo "Datum" en el objeto de tipo Json.
Pds::JsonElement Get(const std::string &Label) const
Retorna un elemento en una estructura de tipo Json.
std::vector< Pds::Json > & ArrayJ(const std::string &Label)
Retorna una referencia a un dato de tipo "ArrayJ" en el objeto de tipo Json.
std::vector< bool > & ArrayB(const std::string &Label)
Retorna una referencia a un dato de tipo "ArrayB" en el objeto de tipo Json.
bool & Boolean(const std::string &Label)
Retorna una referencia a un dato de tipo "Boolean" en el objeto de tipo Json.
std::string GetType(const std::string &Label) const
Retorna el tipo del elemento en una estructura de tipo Json.
bool Load(const std::string &filepath)
bool IsEmpty(void) const
Verifica si el objeto Json es nulo, es decir sin elementos.
bool Add(const std::string &Label, const Datum &data)
Agrega un elemento de tipo Datum a la estructura Json.
Pds::Json & operator=(const Pds::Json &J)
Copia en si mismo (A), un objeto J. Este operador es similar al método Copy(). No importa el tamaño d...
bool Add(const std::string &Label, const Pds::JsonElement &E)
Agrega un elementos Json a la estructura Json.
bool Save(const std::string &filepath) const
Salva el objeto Json en un archivo.
bool Add(const std::string &Label, const char *data)
Agrega un elemento de tipo const char * a la estructura Json.
void MakeEmpty(void)
Libera los datos internos del objeto y lo convierte en uno nulo, es decir sin elementos Json.
long int & Integer(const std::string &Label)
Retorna una referencia a un dato de tipo "Integer" en el objeto de tipo Json.
Nombre de espacio para Pds (Procesamiento Digital de Senales)
Definition: AbstractRV.hpp:42

Enlaces de interés

HomePage Bazaar Download Bug report Ayuda Developer Feed