OpenShot Audio Library | OpenShotAudio
0.3.2
Loading...
Searching...
No Matches
juce_DynamicObject.cpp
1
/*
2
==============================================================================
3
4
This file is part of the JUCE library.
5
Copyright (c) 2017 - ROLI Ltd.
6
7
JUCE is an open source library subject to commercial or open-source
8
licensing.
9
10
The code included in this file is provided under the terms of the ISC license
11
http://www.isc.org/downloads/software-support-policy/isc-license. Permission
12
To use, copy, modify, and/or distribute this software for any purpose with or
13
without fee is hereby granted provided that the above copyright notice and
14
this permission notice appear in all copies.
15
16
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
17
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
18
DISCLAIMED.
19
20
==============================================================================
21
*/
22
23
namespace
juce
24
{
25
26
DynamicObject::DynamicObject()
27
{
28
}
29
30
DynamicObject::DynamicObject (
const
DynamicObject& other)
31
: ReferenceCountedObject(), properties (other.properties)
32
{
33
}
34
35
DynamicObject::~DynamicObject()
36
{
37
}
38
39
bool
DynamicObject::hasProperty (
const
Identifier
&
propertyName
)
const
40
{
41
const
var
*
const
v = properties.getVarPointer (
propertyName
);
42
return
v !=
nullptr
&& ! v->isMethod();
43
}
44
45
const
var
& DynamicObject::getProperty (
const
Identifier
&
propertyName
)
const
46
{
47
return
properties [
propertyName
];
48
}
49
50
void
DynamicObject::setProperty (
const
Identifier
&
propertyName
,
const
var
& newValue)
51
{
52
properties.set (
propertyName
, newValue);
53
}
54
55
void
DynamicObject::removeProperty (
const
Identifier
&
propertyName
)
56
{
57
properties.
remove
(
propertyName
);
58
}
59
60
bool
DynamicObject::hasMethod (
const
Identifier
&
methodName
)
const
61
{
62
return
getProperty (
methodName
).isMethod();
63
}
64
65
var
DynamicObject::invokeMethod (
Identifier
method
,
const
var::NativeFunctionArgs
&
args
)
66
{
67
if
(
auto
function = properties [
method
].getNativeFunction())
68
return
function (
args
);
69
70
return
{};
71
}
72
73
void
DynamicObject::setMethod (
Identifier
name, var::NativeFunction function)
74
{
75
properties.set (name,
var
(function));
76
}
77
78
void
DynamicObject::clear()
79
{
80
properties.clear();
81
}
82
83
void
DynamicObject::cloneAllProperties()
84
{
85
for
(
int
i = properties.size(); --i >= 0;)
86
if
(
auto
* v = properties.getVarPointerAt (i))
87
*v = v->clone();
88
}
89
90
DynamicObject::Ptr
DynamicObject::clone()
91
{
92
Ptr
d (
new
DynamicObject
(*
this
));
93
d->
cloneAllProperties
();
94
return
d;
95
}
96
97
void
DynamicObject::writeAsJSON (
OutputStream
&
out
,
const
int
indentLevel
,
const
bool
allOnOneLine
,
int
maximumDecimalPlaces
)
98
{
99
out
<<
'{'
;
100
if
(!
allOnOneLine
)
101
out
<< newLine;
102
103
const
int
numValues
= properties.
size
();
104
105
for
(
int
i = 0; i <
numValues
; ++i)
106
{
107
if
(!
allOnOneLine
)
108
JSONFormatter::writeSpaces (
out
,
indentLevel
+ JSONFormatter::indentSize);
109
110
out
<<
'"'
;
111
JSONFormatter::writeString (
out
, properties.getName (i));
112
out
<<
"\": "
;
113
JSONFormatter::write (
out
, properties.getValueAt (i),
indentLevel
+ JSONFormatter::indentSize,
allOnOneLine
,
maximumDecimalPlaces
);
114
115
if
(i <
numValues
- 1)
116
{
117
if
(
allOnOneLine
)
118
out
<<
", "
;
119
else
120
out
<<
','
<< newLine;
121
}
122
else
if
(!
allOnOneLine
)
123
out
<< newLine;
124
}
125
126
if
(!
allOnOneLine
)
127
JSONFormatter::writeSpaces (
out
,
indentLevel
);
128
129
out
<<
'}'
;
130
}
131
132
}
// namespace juce
juce::Array
Definition
juce_Array.h:56
juce::Array::size
int size() const noexcept
Definition
juce_Array.h:215
juce::DynamicObject
Definition
juce_DynamicObject.h:40
juce::DynamicObject::cloneAllProperties
void cloneAllProperties()
Definition
juce_DynamicObject.cpp:83
juce::Identifier
Definition
juce_Identifier.h:39
juce::OutputStream
Definition
juce_OutputStream.h:38
juce::ReferenceCountedObjectPtr< DynamicObject >
juce::var
Definition
juce_Variant.h:42
juce::var::remove
void remove(int index)
Definition
juce_Variant.cpp:742
juce::var::NativeFunctionArgs
Definition
juce_Variant.h:49
JuceLibraryCode
modules
juce_core
containers
juce_DynamicObject.cpp
Generated by
1.9.8