File: ObjectPreview.cpp

package info (click to toggle)
codelite 17.0.0%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 136,204 kB
  • sloc: cpp: 491,547; ansic: 280,393; php: 10,259; sh: 8,930; lisp: 7,664; vhdl: 6,518; python: 6,020; lex: 4,920; yacc: 3,123; perl: 2,385; javascript: 1,715; cs: 1,193; xml: 1,110; makefile: 804; cobol: 741; sql: 709; ruby: 620; f90: 566; ada: 534; asm: 464; fortran: 350; objc: 289; tcl: 258; java: 157; erlang: 61; pascal: 51; ml: 49; awk: 44; haskell: 36
file content (75 lines) | stat: -rw-r--r-- 2,207 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#include "ObjectPreview.h"
#include "PropertyPreview.h"

ObjectPreview::ObjectPreview() {}

ObjectPreview::~ObjectPreview() { DeleteProperties(); }

void ObjectPreview::FromJSON(const JSONItem& json)
{
    m_type = json.namedObject("type").toString();
    m_subtype = json.namedObject("subtype").toString();
    m_description = json.namedObject("description").toString();
    m_overflow = json.namedObject("overflow").toBool(m_overflow);

    DeleteProperties();
    if(json.hasNamedObject("properties")) {
        JSONItem props = json.namedObject("properties");
        int size = props.arraySize();
        for(int i = 0; i < size; ++i) {
            JSONItem prop = props.arrayItem(i);
            PropertyPreview* pp = new PropertyPreview();
            pp->FromJSON(prop);
            m_properties.push_back(pp);
        }
    }
}

JSONItem ObjectPreview::ToJSON(const wxString& name) const
{
    JSONItem json = JSONItem::createObject(name);
    json.addProperty("type", m_type);
    json.addProperty("subtype", m_subtype);
    json.addProperty("description", m_description);
    json.addProperty("overflow", m_overflow);
    if(!m_properties.empty()) {
        JSONItem arr = JSONItem::createArray("properties");
        for(size_t i = 0; i < m_properties.size(); ++i) {
            arr.arrayAppend(m_properties[i]->ToJSON(""));
        }
    }
    return json;
}

void ObjectPreview::DeleteProperties()
{
    for(size_t i = 0; i < m_properties.size(); ++i) {
        wxDELETE(m_properties[i]);
    }
    m_properties.clear();
}

wxString ObjectPreview::ToString() const
{
    wxString str;
    if(IsEmpty()) {
        return "{...}";
    } else {
        str << GetType();
        if(!GetSubtype().IsEmpty()) { str << " (" << GetSubtype() << ")"; }
        if(!GetProperties().empty()) {
            str << ": [";
            for(size_t i = 0; i < m_properties.size(); ++i) {
                str << m_properties[i]->ToString() << ", ";
            }
        }
        if(IsOverflow()) {
            str << "...";
        } else {
            // remove the last comma we added
            str.RemoveLast(2);
        }
        if(!GetProperties().empty()) { str << "]"; }
        return str;
    }
}