libscratchcpp
A library for C++ based Scratch project players
Loading...
Searching...
No Matches
value_functions.h
Go to the documentation of this file.
1// SPDX-License-Identifier: Apache-2.0
2
3#pragma once
4
5#include "valuedata.h"
6
7namespace libscratchcpp
8{
9
11using Rgb = unsigned int;
12
14inline constexpr int red(Rgb rgb)
15{
16 return ((rgb >> 16) & 0xff);
17}
18
20inline constexpr int green(Rgb rgb)
21{
22 return ((rgb >> 8) & 0xff);
23}
24
26inline constexpr int blue(Rgb rgb)
27{
28 return (rgb & 0xff);
29}
30
32inline constexpr int alpha(Rgb rgb)
33{
34 return rgb >> 24;
35}
36
38inline constexpr Rgb rgb(int r, int g, int b)
39{
40 return (0xffu << 24) | ((r & 0xffu) << 16) | ((g & 0xffu) << 8) | (b & 0xffu);
41}
42
44inline constexpr Rgb rgba(int r, int g, int b, int a)
45{
46 return ((a & 0xffu) << 24) | ((r & 0xffu) << 16) | ((g & 0xffu) << 8) | (b & 0xffu);
47}
48
49extern "C"
50{
51 void value_free(ValueData *v);
52
53 void value_init(ValueData *v);
54
55 void value_assign_double(ValueData *v, double numberValue);
56 void value_assign_bool(ValueData *v, bool boolValue);
57 void value_assign_string(ValueData *v, const std::string &stringValue);
58 void value_assign_cstring(ValueData *v, const char *stringValue);
59 void value_assign_stringPtr(ValueData *v, const StringPtr *stringValue);
60 void value_assign_pointer(ValueData *v, const void *pointerValue);
61 void value_assign_copy(ValueData *v, const ValueData *another);
62
63 bool value_isInfinity(const ValueData *v);
64 bool value_isNegativeInfinity(const ValueData *v);
65 bool value_isNaN(const ValueData *v);
66 bool value_isNumber(const ValueData *v);
67 bool value_isValidNumber(const ValueData *v);
68 bool value_isInt(const ValueData *v);
69 bool value_isBool(const ValueData *v);
70 bool value_isString(const ValueData *v);
71 bool value_isPointer(const ValueData *v);
72
73 long value_toLong(const ValueData *v);
74 int value_toInt(const ValueData *v);
75 double value_toDouble(const ValueData *v);
76 bool value_toBool(const ValueData *v);
77 void value_toString(const ValueData *v, std::string *dst);
78 void value_toStringPtr(const ValueData *v, StringPtr *dst);
79 void value_toUtf16(const ValueData *v, std::u16string *dst);
80 Rgb value_toRgba(const ValueData *v);
81 const void *value_toPointer(const ValueData *v);
82
83 bool value_doubleIsInt(double v);
84
85 void value_doubleToStringPtr(double v, StringPtr *dst);
86 const StringPtr *value_boolToStringPtr(bool v);
87 double value_stringToDouble(const StringPtr *s);
88 double value_stringToDoubleWithCheck(const StringPtr *s, bool *ok);
89 bool value_stringToBool(const StringPtr *s);
90
91 void value_add(const ValueData *v1, const ValueData *v2, ValueData *dst);
92 void value_subtract(const ValueData *v1, const ValueData *v2, ValueData *dst);
93 void value_multiply(const ValueData *v1, const ValueData *v2, ValueData *dst);
94 void value_divide(const ValueData *v1, const ValueData *v2, ValueData *dst);
95 void value_mod(const ValueData *v1, const ValueData *v2, ValueData *dst);
96
97 bool value_equals(const ValueData *v1, const ValueData *v2);
98 bool value_greater(const ValueData *v1, const ValueData *v2);
99 bool value_lower(const ValueData *v1, const ValueData *v2);
100}
101
102} // namespace libscratchcpp
The main namespace of the library.
Definition asset.h:10
void value_assign_stringPtr(ValueData *v, const StringPtr *stringValue)
Definition value_functions.cpp:74
void value_mod(const ValueData *v1, const ValueData *v2, ValueData *dst)
Definition value_functions.cpp:526
bool value_isInfinity(const ValueData *v)
Definition value_functions.cpp:121
bool value_isNaN(const ValueData *v)
Definition value_functions.cpp:147
unsigned int Rgb
Definition value_functions.h:11
int value_toInt(const ValueData *v)
Definition value_functions.cpp:240
void value_assign_copy(ValueData *v, const ValueData *another)
Definition value_functions.cpp:94
void value_assign_pointer(ValueData *v, const void *pointerValue)
Definition value_functions.cpp:85
double value_toDouble(const ValueData *v)
Definition value_functions.cpp:253
bool value_lower(const ValueData *v1, const ValueData *v2)
Definition value_functions.cpp:548
double value_stringToDouble(const StringPtr *s)
Definition value_functions.cpp:467
void value_free(ValueData *v)
Definition value_functions.cpp:18
void value_toString(const ValueData *v, std::string *dst)
Definition value_functions.cpp:282
void value_multiply(const ValueData *v1, const ValueData *v2, ValueData *dst)
Definition value_functions.cpp:514
void value_toUtf16(const ValueData *v, std::u16string *dst)
Definition value_functions.cpp:305
bool value_isValidNumber(const ValueData *v)
Definition value_functions.cpp:166
void value_init(ValueData *v)
Definition value_functions.cpp:30
void value_assign_bool(ValueData *v, bool boolValue)
Definition value_functions.cpp:48
bool value_toBool(const ValueData *v)
Definition value_functions.cpp:266
void value_assign_string(ValueData *v, const std::string &stringValue)
Definition value_functions.cpp:57
bool value_isPointer(const ValueData *v)
Definition value_functions.cpp:207
void value_toStringPtr(const ValueData *v, StringPtr *dst)
Definition value_functions.cpp:291
constexpr int green(Rgb rgb)
Definition value_functions.h:20
bool value_isString(const ValueData *v)
Definition value_functions.cpp:219
const StringPtr * value_boolToStringPtr(bool v)
Definition value_functions.cpp:461
bool value_stringToBool(const StringPtr *s)
Definition value_functions.cpp:494
const void * value_toPointer(const ValueData *v)
Definition value_functions.cpp:366
void value_divide(const ValueData *v1, const ValueData *v2, ValueData *dst)
Definition value_functions.cpp:520
bool value_doubleIsInt(double v)
Definition value_functions.cpp:375
constexpr int alpha(Rgb rgb)
Definition value_functions.h:32
bool value_isNumber(const ValueData *v)
Definition value_functions.cpp:160
bool value_isBool(const ValueData *v)
Definition value_functions.cpp:213
bool value_isInt(const ValueData *v)
Definition value_functions.cpp:186
void value_doubleToStringPtr(double v, StringPtr *dst)
Definition value_functions.cpp:386
constexpr int red(Rgb rgb)
Definition value_functions.h:14
void value_subtract(const ValueData *v1, const ValueData *v2, ValueData *dst)
Definition value_functions.cpp:508
bool value_isNegativeInfinity(const ValueData *v)
Definition value_functions.cpp:134
void value_add(const ValueData *v1, const ValueData *v2, ValueData *dst)
Definition value_functions.cpp:502
void value_assign_double(ValueData *v, double numberValue)
Definition value_functions.cpp:39
long value_toLong(const ValueData *v)
Definition value_functions.cpp:227
constexpr Rgb rgb(int r, int g, int b)
Definition value_functions.h:38
bool value_greater(const ValueData *v1, const ValueData *v2)
Definition value_functions.cpp:542
Rgb value_toRgba(const ValueData *v)
Definition value_functions.cpp:314
constexpr Rgb rgba(int r, int g, int b, int a)
Definition value_functions.h:44
void value_assign_cstring(ValueData *v, const char *stringValue)
Definition value_functions.cpp:63
bool value_equals(const ValueData *v1, const ValueData *v2)
Definition value_functions.cpp:536
constexpr int blue(Rgb rgb)
Definition value_functions.h:26
double value_stringToDoubleWithCheck(const StringPtr *s, bool *ok)
Definition value_functions.cpp:481