/
winxedxx_types.h
105 lines (94 loc) · 3.02 KB
/
winxedxx_types.h
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#ifndef INCLUDE_WINXEDXX_TYPES_H
#define INCLUDE_WINXEDXX_TYPES_H
// winxedxx_types.h
// (C) 2011 Julián Albo
#include <string>
#include <map>
namespace WinxedXX
{
class WxxObject;
class WxxObjectArray;
class WxxLibrary;
class WxxFunctionVars
{
protected:
WxxFunctionVars() :
refcount(1)
{
}
public:
void decref()
{
if (--refcount == 0)
delete this;
}
private:
size_t refcount;
};
class WxxObjectPtr
{
public:
WxxObjectPtr();
WxxObjectPtr(int value);
WxxObjectPtr(double value);
WxxObjectPtr(const std::string &value);
WxxObjectPtr(const char *value);
WxxObjectPtr(const WxxObjectPtr &old);
WxxObjectPtr(WxxObject * obj);
WxxObjectPtr(WxxObjectPtr (*)(const WxxObjectArray&));
~WxxObjectPtr();
std::string class_name() const;
WxxObjectPtr & set(int value);
WxxObjectPtr & set(double value);
WxxObjectPtr & set(const char *s);
WxxObjectPtr & set(const std::string &s);
WxxObjectPtr &operator = (const WxxObjectPtr &from);
WxxObjectPtr & operator = (int i);
WxxObjectPtr & operator = (double value);
WxxObjectPtr & operator = (const std::string &s);
WxxObjectPtr & operator = (const char *s);
int is_equal(const WxxObjectPtr &from) const;
int is_same(const WxxObjectPtr &from) const;
operator int() const;
operator bool() const;
operator double() const;
operator std::string() const;
WxxObjectPtr & operator++();
int is_null() const;
int instanceof(const std::string &type);
std::string get_string() const;
int elements() const;
std::string get_string_keyed(int i) const;
WxxObjectPtr get_pmc_keyed(int i);
WxxObjectPtr get_pmc_keyed(const std::string &s);
WxxObjectPtr get_pmc_keyed(const char *s);
WxxObjectPtr get_pmc_keyed(const WxxObjectPtr &key);
void set_pmc_keyed(int i, const WxxObjectPtr &value);
WxxObjectPtr & set_pmc_keyed(const std::string &s, const WxxObjectPtr &value);
WxxObjectPtr & set_pmc_keyed(const WxxObjectPtr &key, const WxxObjectPtr &value);
int exists(const std::string &key);
void print();
WxxObjectPtr & get_attr_str(const std::string &s);
void set_attr_str(const std::string &s, const WxxObjectPtr &value);
void set_attr_str(const char *s, const WxxObjectPtr &value);
void push(WxxObjectPtr obj);
void push(int i);
void push(double value);
void push(const char *str);
void push(const std::string &str);
WxxObjectPtr get_iter();
WxxObjectPtr shift_pmc();
WxxObjectPtr operator()(const WxxObjectArray &args);
WxxObjectPtr call_method(const std::string &methname);
WxxObjectPtr call_method(const std::string &methname, WxxObjectArray &args);
WxxLibrary *getlib();
private:
WxxObject *object;
};
extern WxxObjectPtr winxedxxnull;
WxxObjectPtr wxx_error(const std::string &message);
WxxObjectPtr wxx_error(const std::string &message, int severity);
WxxObjectPtr wxx_error(const std::string &message, int severity, int type);
} // namespace WinxedXX
#endif
// End of winxedxx_types.h