Google-ProtocolBuffers-Dynamic
view release on metacpan or search on metacpan
src/mapper.h view on Meta::CPAN
WarnContext *warn_context;
MapperContext mapper_context;
};
class MapperField : public Refcounted {
public:
MapperField(pTHX_ const Mapper *mapper, const Mapper::Field *field);
~MapperField();
const char *name();
bool is_repeated();
bool is_extension();
bool is_map();
// presence
bool has_field(HV *self);
void clear_field(HV *self);
// optional/oneof/required
SV *get_scalar(HV *self, SV *target);
void set_scalar(HV *self, SV *value);
// repeated
SV *get_item(HV *self, int index, SV *target);
void set_item(HV *self, int index, SV *value);
void add_item(HV *self, SV *value);
int list_size(HV *self);
SV *get_list(HV *self);
void set_list(HV *self, SV *ref);
// map
SV *get_item(HV *self, SV *key, SV *target);
void set_item(HV *self, SV *key, SV *value);
SV *get_map(HV *self);
void set_map(HV *self, SV *ref);
static MapperField *find_extension(pTHX_ CV *cv, SV *extension);
static MapperField *find_scalar_extension(pTHX_ CV *cv, SV *extension);
static MapperField *find_repeated_extension(pTHX_ CV *cv, SV *extension);
private:
DECL_THX_MEMBER;
SV *get_read_field(HV *self);
SV *get_write_field(HV *self);
SV *get_read_array_ref(HV *self);
AV *get_read_array(HV *self);
AV *get_write_array(HV *self);
SV *get_read_hash_ref(HV *self);
HV *get_read_hash(HV *self);
HV *get_write_hash(HV *self);
void copy_default(SV *target);
void copy_value(SV *target, SV *value);
void clear_oneof(HV *self);
const Mapper::Field *field;
const Mapper *mapper;
};
class MethodMapper : public Refcounted {
public:
MethodMapper(pTHX_ Dynamic *registry, const std::string &method, const upb::MessageDef *input_def, const upb::MessageDef *output_def, bool client_streaming, bool server_streaming);
~MethodMapper();
SV *method_name_key() const { return method_name_key_sv; }
SV *serialize_key() const { return serialize_key_sv; }
SV *deserialize_key() const { return deserialize_key_sv; }
SV *method_name() const { return method_name_sv; }
SV *serialize() const { return serialize_sv; }
SV *deserialize() const { return deserialize_sv; }
SV *grpc_call() const { return (SV *) grpc_call_sv; }
void resolve_input_output();
private:
DECL_THX_MEMBER;
Dynamic *registry;
const upb::MessageDef *input_def, *output_def;
SV *method_name_key_sv, *serialize_key_sv, *deserialize_key_sv;
SV *method_name_sv, *serialize_sv, *deserialize_sv;
CV *grpc_call_sv;
};
class WarnContext {
public:
static void setup(pTHX);
static WarnContext *get(pTHX);
void warn_with_context(pTHX_ SV *warning) const;
void set_context(MapperContext *cxt) { context = cxt; }
void localize_warning_handler(pTHX);
private:
WarnContext(pTHX);
MapperContext *context;
SV *chained_handler;
SV *warn_handler;
};
};
#endif
( run in 1.185 second using v1.01-cache-2.11-cpan-39bf76dae61 )