efl/src/lib/eolian_cxx/eo_types.hh

90 lines
1.7 KiB
C++

#ifndef EOLIAN_CXX_EO_TYPES_HH
#define EOLIAN_CXX_EO_TYPES_HH
#include <string>
#include <vector>
namespace efl { namespace eolian {
struct eo_constructor;
struct eo_parameter;
struct eo_function;
struct eo_event;
typedef std::vector<std::string> extensions_container_type;
typedef std::vector<eo_constructor> constructors_container_type;
typedef std::vector<eo_function> functions_container_type;
typedef std::vector<eo_parameter> parameters_container_type;
typedef std::vector<eo_event> events_container_type;
struct eo_generator_options
{
std::vector<std::string> cxx_headers;
std::vector<std::string> c_headers;
};
struct eo_class
{
enum eo_class_type
{
regular_, regular_noninst_, interface_, mixin_
};
eo_class_type type;
std::string name;
std::string eo_name;
std::string parent;
extensions_container_type extensions;
constructors_container_type constructors;
functions_container_type functions;
events_container_type events;
std::string comment;
std::string name_space;
};
struct eo_parameter
{
std::string type;
std::string name;
};
struct eo_constructor
{
std::string name;
parameters_container_type params;
std::string comment;
};
struct eo_function
{
enum eo_function_type
{
regular_, class_
};
eo_function_type type;
std::string name;
std::string impl;
std::string ret;
parameters_container_type params;
std::string comment;
};
inline bool
function_is_void(eo_function const& func)
{
return func.ret == "void" || func.ret == "";
}
struct eo_event
{
std::string name;
parameters_container_type params;
bool is_hot;
std::string comment;
};
} }
#endif // EFL_EOLIAN_CXX_EO_TYPES_HH