Clownfish-CFC

 view release on metacpan or  search on metacpan

lib/Clownfish/CFC.xs  view on Meta::CPAN

    else {
        return newSV(0);
    }
}

MODULE = Clownfish::CFC   PACKAGE = Clownfish::CFC::Base

void
DESTROY(self)
    CFCBase *self;
PPCODE:
    CFCBase_decref((CFCBase*)self);


MODULE = Clownfish::CFC   PACKAGE = Clownfish::CFC::Model::CBlock

SV*
_new(contents)
    const char *contents;
CODE:
    CFCCBlock *self = CFCCBlock_new(contents);
    RETVAL = S_cfcbase_to_perlref(self);
    CFCBase_decref((CFCBase*)self);
OUTPUT: RETVAL

void
_set_or_get(self, ...)
    CFCCBlock *self;
ALIAS:
    get_contents = 2
PPCODE:
{
    START_SET_OR_GET_SWITCH
        case 2: {
                const char *contents = CFCCBlock_get_contents(self);
                retval = newSVpvn(contents, strlen(contents));
            }
            break;
    END_SET_OR_GET_SWITCH
}

lib/Clownfish/CFC.xs  view on Meta::CPAN

    SV *unused;
    const char *class_name;
CODE:
    CHY_UNUSED_VAR(unused);
    CFCClass *klass = CFCClass_fetch_singleton(class_name);
    RETVAL = S_cfcbase_to_perlref(klass);
OUTPUT: RETVAL

void
_clear_registry(...)
PPCODE:
    CHY_UNUSED_VAR(items);
    CFCClass_clear_registry();

void
add_child(self, child)
    CFCClass *self;
    CFCClass *child;
PPCODE:
    CFCClass_add_child(self, child);

void
add_member_var(self, var)
    CFCClass *self;
    CFCVariable *var;
PPCODE:
    CFCClass_add_member_var(self, var);

void
add_function(self, func)
    CFCClass *self;
    CFCFunction *func;
PPCODE:
    CFCClass_add_function(self, func);

void
add_method(self, method)
    CFCClass *self;
    CFCMethod *method;
PPCODE:
    CFCClass_add_method(self, method);

void
grow_tree(self)
    CFCClass *self;
PPCODE:
    CFCClass_grow_tree(self);

void
add_inert_var(self, var)
    CFCClass *self;
    CFCVariable *var;
PPCODE:
    CFCClass_add_inert_var(self, var);

SV*
function(self, sym)
    CFCClass *self;
    const char *sym;
CODE:
    CFCFunction *func = CFCClass_function(self, sym);
    RETVAL = S_cfcbase_to_perlref(func);
OUTPUT: RETVAL

lib/Clownfish/CFC.xs  view on Meta::CPAN

    CFCClass *self;
    const char *sym;
CODE:
    CFCMethod *method = CFCClass_fresh_method(self, sym);
    RETVAL = S_cfcbase_to_perlref(method);
OUTPUT: RETVAL

void
resolve_types(self)
    CFCClass *self;
PPCODE:
    CFCClass_resolve_types(self);

void
_set_or_get(self, ...)
    CFCClass *self;
ALIAS:
    get_exposure          = 2
    get_name              = 4
    get_nickname          = 6
    set_parent            = 7

lib/Clownfish/CFC.xs  view on Meta::CPAN

    children              = 32
    functions             = 34
    methods               = 36
    member_vars           = 38
    inert_vars            = 40
    tree_to_ladder        = 42
    fresh_methods         = 44
    fresh_member_vars     = 46
    privacy_symbol        = 48
    included              = 50
PPCODE:
{
    START_SET_OR_GET_SWITCH
        case 2: {
                const char *value = CFCClass_get_exposure(self);
                retval = newSVpvn(value, strlen(value));
            }
            break;
        case 4: {
                const char *value = CFCClass_get_name(self);
                retval = newSVpvn(value, strlen(value));

lib/Clownfish/CFC.xs  view on Meta::CPAN

void
_set_or_get(self, ...)
    CFCDocuComment *self;
ALIAS:
    get_description = 2
    get_brief       = 4
    get_long        = 6
    get_param_names = 8
    get_param_docs  = 10
    get_retval      = 12
PPCODE:
{
    START_SET_OR_GET_SWITCH
        case 2: {
                const char *description = CFCDocuComment_get_description(self);
                retval = newSVpvn(description, strlen(description));
            }
            break;
        case 4: {
                const char *brief = CFCDocuComment_get_brief(self);
                retval = newSVpvn(brief, strlen(brief));

lib/Clownfish/CFC.xs  view on Meta::CPAN

CODE:
    CFCFile *self = CFCFile_new(parcel, spec);
    RETVAL = S_cfcbase_to_perlref(self);
    CFCBase_decref((CFCBase*)self);
OUTPUT: RETVAL

void
add_block(self, block)
    CFCFile *self;
    CFCBase *block;
PPCODE:
    CFCFile_add_block(self, block);

void
_set_or_get(self, ...)
    CFCFile *self;
ALIAS:
    set_modified       = 1
    get_modified       = 2
    get_path_part      = 4
    guard_name         = 6
    guard_start        = 8
    guard_close        = 10
    blocks             = 12
    classes            = 14
    get_source_dir     = 16
    included           = 18
    get_parcel         = 20
    get_path           = 22
PPCODE:
{
    START_SET_OR_GET_SWITCH
        case 1:
            CFCFile_set_modified(self, !!SvTRUE(ST(1)));
            break;
        case 2:
            retval = newSViv(CFCFile_get_modified(self));
            break;
        case 4: {
                const char *value = CFCFile_get_path_part(self);

lib/Clownfish/CFC.xs  view on Meta::CPAN

    CFCBase_decref((CFCBase*)self);
OUTPUT: RETVAL

void
_set_or_get(self, ...)
    CFCFileSpec *self;
ALIAS:
    get_source_dir     = 2
    get_path_part      = 4
    included           = 6
PPCODE:
{
    START_SET_OR_GET_SWITCH
        case 2: {
                const char *value = CFCFileSpec_get_source_dir(self);
                retval = newSVpv(value, strlen(value));
            }
            break;
        case 4: {
                const char *value = CFCFileSpec_get_path_part(self);
                retval = newSVpv(value, strlen(value));

lib/Clownfish/CFC.xs  view on Meta::CPAN

        SvOK(name_sv) ? SvPV_nolen(name_sv) : NULL;
    CFCFunction *self = CFCFunction_new(exposure, name, return_type,
                                        param_list, docucomment, is_inline);
    RETVAL = S_cfcbase_to_perlref(self);
    CFCBase_decref((CFCBase*)self);
OUTPUT: RETVAL

void
resolve_types(self)
    CFCFunction *self;
PPCODE:
    CFCFunction_resolve_types(self);

SV*
_various_function_syms(self, klass)
    CFCFunction *self;
    CFCClass    *klass;
ALIAS:
    short_func_sym = 1
    full_func_sym  = 2
CODE:

lib/Clownfish/CFC.xs  view on Meta::CPAN


void
_set_or_get(self, ...)
    CFCFunction *self;
ALIAS:
    get_return_type    = 2
    get_param_list     = 4
    get_docucomment    = 6
    inline             = 8
    void               = 10
PPCODE:
{
    START_SET_OR_GET_SWITCH
        case 2: {
                CFCType *type = CFCFunction_get_return_type(self);
                retval = S_cfcbase_to_perlref(type);
            }
            break;
        case 4: {
                CFCParamList *param_list = CFCFunction_get_param_list(self);
                retval = S_cfcbase_to_perlref(param_list);

lib/Clownfish/CFC.xs  view on Meta::CPAN

CODE:
    CFCHierarchy *self = CFCHierarchy_new(dest);
    RETVAL = S_cfcbase_to_perlref(self);
    CFCBase_decref((CFCBase*)self);
OUTPUT: RETVAL

void
add_source_dir(self, source_dir)
    CFCHierarchy *self;
    const char *source_dir;
PPCODE:
    CFCHierarchy_add_source_dir(self, source_dir);

void
add_include_dir(self, include_dir)
    CFCHierarchy *self;
    const char *include_dir;
PPCODE:
    CFCHierarchy_add_include_dir(self, include_dir);

void
build(self)
    CFCHierarchy *self;
PPCODE:
    CFCHierarchy_build(self);

void
read_host_data_json(self)
    CFCHierarchy *self;
PPCODE:
    CFCHierarchy_read_host_data_json(self, "perl");

int
propagate_modified(self, ...)
    CFCHierarchy *self;
CODE:
    int modified = items > 1 ? !!SvTRUE(ST(1)) : 0;
    RETVAL = CFCHierarchy_propagate_modified(self, modified);
OUTPUT: RETVAL

void
write_log(self)
    CFCHierarchy *self;
PPCODE:
    CFCHierarchy_write_log(self);

void
_set_or_get(self, ...)
    CFCHierarchy *self;
ALIAS:
    get_dest          = 2
    get_include_dest  = 4
    get_source_dest   = 6
    files             = 8
    ordered_classes   = 10
    get_source_dirs   = 12
    get_include_dirs  = 14
PPCODE:
{
    START_SET_OR_GET_SWITCH
        case 2: {
                const char *value = CFCHierarchy_get_dest(self);
                retval = newSVpv(value, strlen(value));
            }
            break;
        case 4: {
                const char *value = CFCHierarchy_get_include_dest(self);
                retval = newSVpv(value, strlen(value));

lib/Clownfish/CFC.xs  view on Meta::CPAN

    CFCMethod *self;
    CFCMethod *other;
CODE:
    RETVAL = CFCMethod_compatible(self, other);
OUTPUT: RETVAL

void
override(self, other)
    CFCMethod *self;
    CFCMethod *other;
PPCODE:
    CFCMethod_override(self, other);

SV*
finalize(self)
    CFCMethod *self;
CODE:
    CFCMethod *finalized = CFCMethod_finalize(self);
    RETVAL = S_cfcbase_to_perlref(finalized);
    CFCBase_decref((CFCBase*)finalized);
OUTPUT: RETVAL

void
resolve_types(self)
    CFCMethod *self;
PPCODE:
    CFCMethod_resolve_types(self);

void
exclude_from_host(self)
    CFCMethod *self;
PPCODE:
    CFCMethod_exclude_from_host(self);

SV*
_various_method_syms(self, invoker)
    CFCMethod *self;
    CFCClass  *invoker;
ALIAS:
    short_method_sym  = 1
    full_method_sym   = 2
    full_offset_sym   = 3

lib/Clownfish/CFC.xs  view on Meta::CPAN

_set_or_get(self, ...)
    CFCMethod *self;
ALIAS:
    abstract           = 12
    novel              = 14
    final              = 16
    self_type          = 18
    set_host_alias     = 19
    get_host_alias     = 20
    excluded_from_host = 22
PPCODE:
{
    START_SET_OR_GET_SWITCH
        case 12:
            retval = newSViv(CFCMethod_abstract(self));
            break;
        case 14:
            retval = newSViv(CFCMethod_novel(self));
            break;
        case 16:
            retval = newSViv(CFCMethod_final(self));

lib/Clownfish/CFC.xs  view on Meta::CPAN

    CFCParamList *self = CFCParamList_new(variadic);
    RETVAL = S_cfcbase_to_perlref(self);
    CFCBase_decref((CFCBase*)self);
OUTPUT: RETVAL

void
add_param(self, variable, value_sv)
    CFCParamList *self;
    CFCVariable  *variable;
    SV *value_sv;
PPCODE:
    const char *value = SvOK(value_sv) ? SvPV_nolen(value_sv) : NULL;
    CFCParamList_add_param(self, variable, value);

void
resolve_types(self)
    CFCParamList *self;
PPCODE:
    CFCParamList_resolve_types(self);

void
_set_or_get(self, ...)
    CFCParamList *self;
ALIAS:
    get_variables      = 2
    get_initial_values = 4
    variadic           = 6
    num_vars           = 8
    to_c               = 10
    name_list          = 12
PPCODE:
{
    START_SET_OR_GET_SWITCH
        case 2: {
                AV *av = newAV();
                CFCVariable **vars = CFCParamList_get_variables(self);
                int num_vars = CFCParamList_num_vars(self);
                for (int i = 0; i < num_vars; i++) {
                    SV *ref = S_cfcbase_to_perlref(vars[i]);
                    av_store(av, i, ref);
                }

lib/Clownfish/CFC.xs  view on Meta::CPAN

    CHY_UNUSED_VAR(unused);
    const char *name  = SvOK(name_sv)  ? SvPV_nolen(name_sv)  : NULL;
    CFCParcel *self = CFCParcel_fetch(name);
    RETVAL = S_cfcbase_to_perlref(self);
OUTPUT: RETVAL


void
register(self)
    CFCParcel *self;
PPCODE:
    CFCParcel_register(self);

int
equals(self, other)
    CFCParcel *self;
    CFCParcel *other;
CODE:
    RETVAL = CFCParcel_equals(self, other);
OUTPUT: RETVAL

lib/Clownfish/CFC.xs  view on Meta::CPAN

CODE:
    CHY_UNUSED_VAR(items);
    CFCParcel **all_parcels = CFCParcel_all_parcels();
    RETVAL = S_array_of_cfcbase_to_av((CFCBase**)all_parcels);
OUTPUT: RETVAL

void
add_inherited_parcel(self, inherited)
    CFCParcel *self;
    CFCParcel *inherited;
PPCODE:
    CFCParcel_add_inherited_parcel(self, inherited);

int
has_prereq(self, parcel)
    CFCParcel *self;
    CFCParcel *parcel;
CODE:
    RETVAL = CFCParcel_has_prereq(self, parcel);
OUTPUT: RETVAL

void
add_struct_sym(self, struct_sym)
    CFCParcel  *self;
    const char *struct_sym;
PPCODE:
    CFCParcel_add_struct_sym(self, struct_sym);

SV*
lookup_struct_sym(self, struct_sym)
    CFCParcel  *self;
    const char *struct_sym;
CODE:
    CFCParcel *parcel = CFCParcel_lookup_struct_sym(self, struct_sym);
    RETVAL = S_cfcbase_to_perlref(parcel);
OUTPUT: RETVAL

void
reap_singletons(...)
PPCODE:
    CHY_UNUSED_VAR(items);
    CFCParcel_reap_singletons();

void
_set_or_get(self, ...)
    CFCParcel *self;
ALIAS:
    get_name          = 2
    get_nickname      = 4
    get_prefix        = 6
    get_Prefix        = 8
    get_PREFIX        = 10
    get_version       = 12
    get_prereqs       = 14
    included          = 16
    prereq_parcels    = 20
    inherited_parcels = 22
    get_xs_module     = 24
PPCODE:
{
    START_SET_OR_GET_SWITCH
        case 2: {
                const char *name = CFCParcel_get_name(self);
                retval = newSVpvn(name, strlen(name));
            }
            break;
        case 4: {
                const char *nickname = CFCParcel_get_nickname(self);
                retval = newSVpvn(nickname, strlen(nickname));

lib/Clownfish/CFC.xs  view on Meta::CPAN

    RETVAL = S_cfcbase_to_perlref(self);
    CFCBase_decref((CFCBase*)self);
OUTPUT: RETVAL

void
_set_or_get(self, ...)
    CFCPrereq *self;
ALIAS:
    get_name    = 2
    get_version = 4
PPCODE:
{
    START_SET_OR_GET_SWITCH
        case 2: {
                const char *name = CFCPrereq_get_name(self);
                retval = newSVpvn(name, strlen(name));
            }
            break;
        case 4: {
                CFCVersion *value = CFCPrereq_get_version(self);
                retval = S_cfcbase_to_perlref(value);

lib/Clownfish/CFC.xs  view on Meta::CPAN

void
_set_or_get(self, ...)
    CFCSymbol *self;
ALIAS:
    get_exposure       = 8
    get_name           = 10
    public             = 18
    private            = 20
    parcel             = 22
    local              = 24
PPCODE:
{
    START_SET_OR_GET_SWITCH
        case 8: {
                const char *exposure = CFCSymbol_get_exposure(self);
                retval = newSVpvn(exposure, strlen(exposure));
            }
            break;
        case 10: {
                const char *name = CFCSymbol_get_name(self);
                retval = newSVpvn(name, strlen(name));

lib/Clownfish/CFC.xs  view on Meta::CPAN

unsigned
COMPOSITE(...)
CODE:
    CHY_UNUSED_VAR(items);
    RETVAL = CFCTYPE_COMPOSITE;
OUTPUT: RETVAL

void
resolve(self)
    CFCType *self;
PPCODE:
    CFCType_resolve(self);

void
_set_or_get(self, ...)
    CFCType *self;
ALIAS:
    set_specifier   = 1
    get_specifier   = 2
    get_parcel      = 4
    get_indirection = 6

lib/Clownfish/CFC.xs  view on Meta::CPAN

    is_integer      = 20
    is_floating     = 22
    cfish_string    = 24
    is_va_list      = 26
    is_arbitrary    = 28
    is_composite    = 30
    get_width       = 32
    incremented     = 34
    decremented     = 36
    get_array       = 38
PPCODE:
{
    START_SET_OR_GET_SWITCH
        case 1:
            CFCType_set_specifier(self, SvPV_nolen(ST(1)));
            break;
        case 2: {
                const char *specifier = CFCType_get_specifier(self);
                retval = newSVpvn(specifier, strlen(specifier));
            }
            break;

lib/Clownfish/CFC.xs  view on Meta::CPAN

    const char *orig;
    const char *dest;
CODE:
    RETVAL = CFCUtil_current(orig, dest);
OUTPUT: RETVAL

void
write_if_changed(path, content_sv)
    const char *path;
    SV *content_sv;
PPCODE:
    STRLEN len;
    char *content = SvPV(content_sv, len);
    CFCUtil_write_if_changed(path, content, len);

int
is_dir(path)
    const char *path;
CODE:
    RETVAL = CFCUtil_is_dir(path);
OUTPUT: RETVAL

lib/Clownfish/CFC.xs  view on Meta::CPAN

equals(self, other)
    CFCVariable *self;
    CFCVariable *other;
CODE:
    RETVAL = CFCVariable_equals(self, other);
OUTPUT: RETVAL

void
resolve_type(self)
    CFCVariable *self;
PPCODE:
    CFCVariable_resolve_type(self);

SV*
global_c(self, klass)
    CFCVariable *self;
    CFCClass    *klass;
CODE:
    char *global_c = CFCVariable_global_c(self, klass);
    RETVAL = S_sv_eat_c_string(global_c);
OUTPUT: RETVAL

void
_set_or_get(self, ...)
    CFCVariable *self;
ALIAS:
    get_type          = 2
    local_c           = 4
    local_declaration = 8
PPCODE:
{
    START_SET_OR_GET_SWITCH
        case 2: {
                CFCType *type = CFCVariable_get_type(self);
                retval = S_cfcbase_to_perlref(type);
            }
            break;
        case 4: {
                const char *local_c = CFCVariable_local_c(self);
                retval = newSVpvn(local_c, strlen(local_c));

lib/Clownfish/CFC.xs  view on Meta::CPAN

    RETVAL = S_cfcbase_to_perlref(self);
    CFCBase_decref((CFCBase*)self);
OUTPUT: RETVAL

void
_set_or_get(self, ...)
    CFCVersion *self;
ALIAS:
    get_major         = 2
    get_vstring       = 4
PPCODE:
{
    START_SET_OR_GET_SWITCH
        case 2: 
            retval = newSVuv(CFCVersion_get_major(self));
            break;
        case 4: {
                const char *value = CFCVersion_get_vstring(self);
                retval = newSVpvn(value, strlen(value));
            }
            break;

lib/Clownfish/CFC.xs  view on Meta::CPAN

        modified = !!SvIV(ST(1));
    }
    RETVAL = CFCBindCore_write_all_modified(self, modified);
}
OUTPUT: RETVAL

void
copy_headers(self, dest_dir)
    CFCBindCore *self;
    const char *dest_dir;
PPCODE:
    CFCBindCore_copy_headers(self, dest_dir);

void
write_host_data_json(self, dest_dir)
    CFCBindCore *self;
    const char *dest_dir;
PPCODE:
    CFCBindCore_write_host_data_json(self, dest_dir, "perl");


MODULE = Clownfish::CFC  PACKAGE = Clownfish::CFC::Binding::Core::Function

SV*
func_declaration(unused, func, klass)
    SV          *unused;
    CFCFunction *func;
    CFCClass    *klass;

lib/Clownfish/CFC.xs  view on Meta::CPAN

OUTPUT: RETVAL

MODULE = Clownfish::CFC  PACKAGE = Clownfish::CFC::Binding::Core::File

void
_write_h(file, dest, header, footer)
    CFCFile *file;
    const char *dest;
    const char *header;
    const char *footer;
PPCODE:
    CFCBindFile_write_h(file, dest, header, footer);

MODULE = Clownfish   PACKAGE = Clownfish::CFC::Binding::Perl

SV*
_new(hierarchy, lib_dir, header, footer)
    CFCHierarchy *hierarchy;
    const char *lib_dir;
    const char *header;
    const char *footer;

lib/Clownfish/CFC.xs  view on Meta::CPAN

        SV *path = S_sv_eat_c_string(written[i]);
        av_push(modified, path);
    }
    FREEMEM(written);
    RETVAL = newRV_noinc((SV*)modified);
OUTPUT: RETVAL

void
write_host_code(self)
    CFCPerl *self;
PPCODE:
    CFCPerl_write_host_code(self);

void
write_hostdefs(self)
    CFCPerl *self;
PPCODE:
    CFCPerl_write_hostdefs(self);

void
_write_bindings(self, boot_class, sv)
    CFCPerl *self;
    const char *boot_class;
    SV *sv;
PPCODE:
    CFCParcel **parcels = (CFCParcel**)
        S_av_to_array_of_cfcbase(sv, "Clownfish::CFC::Model::Parcel");
    CFCPerl_write_bindings(self, boot_class, parcels);
    FREEMEM(parcels);

void
write_xs_typemap(self)
    CFCPerl *self;
PPCODE:
    CFCPerl_write_xs_typemap(self);


MODULE = Clownfish   PACKAGE = Clownfish::CFC::Binding::Perl::Subroutine

void
_set_or_get(self, ...)
    CFCPerlSub *self;
ALIAS:
    get_class_name     = 2
    use_labeled_params = 4
    perl_name          = 6
    get_param_list     = 8
    c_name             = 10
    c_name_list        = 12
PPCODE:
{
    START_SET_OR_GET_SWITCH
        case 2: {
                const char *value = CFCPerlSub_get_class_name(self);
                retval = newSVpvn(value, strlen(value));
            }
            break;
        case 4:
            retval = newSViv(CFCPerlSub_use_labeled_params(self));
            break;

lib/Clownfish/CFC.xs  view on Meta::CPAN

CODE:
    CFCPerlClass *self = CFCPerlClass_new(parcel, class_name);
    RETVAL = S_cfcbase_to_perlref(self);
    CFCBase_decref((CFCBase*)self);
OUTPUT: RETVAL

void
register(unused, binding)
    SV *unused;
    CFCPerlClass *binding;
PPCODE:
    CHY_UNUSED_VAR(unused);
    CFCPerlClass_add_to_registry(binding);

SV*
singleton(unused_sv, class_name)
    SV *unused_sv;
    const char *class_name;
CODE:
    CHY_UNUSED_VAR(unused_sv);
    CFCPerlClass *binding = CFCPerlClass_singleton(class_name);

lib/Clownfish/CFC.xs  view on Meta::CPAN

SV*
registered(...)
CODE:
    CHY_UNUSED_VAR(items);
    CFCPerlClass **registry = CFCPerlClass_registry();
    RETVAL = S_array_of_cfcbase_to_av((CFCBase**)registry);
OUTPUT: RETVAL

void
_clear_registry(...)
PPCODE:
    CHY_UNUSED_VAR(items);
    CFCPerlClass_clear_registry();

void
_bind_method(self, alias_sv, meth_sv)
    CFCPerlClass *self;
    SV *alias_sv;
    SV *meth_sv;
PPCODE:
    const char *alias = SvOK(alias_sv) ? SvPVutf8_nolen(alias_sv) : NULL;
    const char *meth  = SvOK(meth_sv)  ? SvPVutf8_nolen(meth_sv)  : NULL;
    CFCPerlClass_bind_method(self, alias, meth);

void
_bind_constructor(self, alias_sv, init_sv)
    CFCPerlClass *self;
    SV *alias_sv;
    SV *init_sv;
PPCODE:
    const char *alias = SvOK(alias_sv) ? SvPVutf8_nolen(alias_sv) : NULL;
    const char *init  = SvOK(init_sv)  ? SvPVutf8_nolen(init_sv)  : NULL;
    CFCPerlClass_bind_constructor(self, alias, init);

void
exclude_method(self, method)
    CFCPerlClass *self;
    const char *method;
PPCODE:
    CFCPerlClass_exclude_method(self, method);

void
exclude_constructor(self)
    CFCPerlClass *self;
PPCODE:
    CFCPerlClass_exclude_constructor(self);

void
append_xs(self, xs)
    CFCPerlClass *self;
    const char *xs;
PPCODE:
    CFCPerlClass_append_xs(self, xs);

SV*
method_bindings(unused, klass)
    SV *unused;
    CFCClass *klass;
CODE:
    CHY_UNUSED_VAR(unused);
    CFCPerlMethod **bound = CFCPerlClass_method_bindings(klass);
    RETVAL = S_array_of_cfcbase_to_av((CFCBase**)bound);

lib/Clownfish/CFC.xs  view on Meta::CPAN


void
_set_or_get(self, ...)
    CFCPerlClass *self;
ALIAS:
    get_class_name     = 2
    get_client         = 4
    get_xs_code        = 6
    set_pod_spec       = 7
    get_pod_spec       = 8
PPCODE:
{
    START_SET_OR_GET_SWITCH
        case 2: {
                const char *value = CFCPerlClass_get_class_name(self);
                retval = newSVpvn(value, strlen(value));
            }
            break;
        case 4: {
                CFCClass *value = CFCPerlClass_get_client(self);
                retval = S_cfcbase_to_perlref(value);

lib/Clownfish/CFC.xs  view on Meta::CPAN

                retval = S_cfcbase_to_perlref(value);
            }
            break;
    END_SET_OR_GET_SWITCH
}

void
add_class_alias(self, alias)
    CFCPerlClass *self;
    const char *alias;
PPCODE:
    CFCPerlClass_add_class_alias(self, alias);

SV*
get_class_aliases(self)
    CFCPerlClass *self;
CODE:
    const char **aliases = CFCPerlClass_get_class_aliases(self);
    RETVAL = S_string_array_to_av(aliases);
OUTPUT: RETVAL

lib/Clownfish/CFC.xs  view on Meta::CPAN

    CFCBase_decref((CFCBase*)self);
OUTPUT: RETVAL

void
_add_method(self, alias, method_sv, sample_sv, pod_sv)
    CFCPerlPod *self;
    const char *alias;
    SV *method_sv;
    SV *sample_sv;
    SV *pod_sv;
PPCODE:
    const char *method = SvPOK(method_sv) ? SvPVutf8_nolen(method_sv) : NULL;
    const char *sample = SvPOK(sample_sv) ? SvPVutf8_nolen(sample_sv) : NULL;
    const char *pod    = SvPOK(pod_sv)    ? SvPVutf8_nolen(pod_sv)    : NULL;
    CFCPerlPod_add_method(self, alias, method, sample, pod);

void
_add_constructor(self, alias_sv, func_sv, sample_sv, pod_sv)
    CFCPerlPod *self;
    SV *alias_sv;
    SV *func_sv;
    SV *sample_sv;
    SV *pod_sv;
PPCODE:
    const char *alias  = SvPOK(alias_sv)  ? SvPVutf8_nolen(alias_sv)  : NULL;
    const char *func   = SvPOK(func_sv)   ? SvPVutf8_nolen(func_sv)   : NULL;
    const char *sample = SvPOK(sample_sv) ? SvPVutf8_nolen(sample_sv) : NULL;
    const char *pod    = SvPOK(pod_sv)    ? SvPVutf8_nolen(pod_sv)    : NULL;
    CFCPerlPod_add_constructor(self, alias, func, sample, pod);

SV*
methods_pod(self, klass)
    CFCPerlPod *self;
    CFCClass   *klass;

lib/Clownfish/CFC.xs  view on Meta::CPAN

OUTPUT: RETVAL

void
_set_or_get(self, ...)
    CFCPerlPod *self;
ALIAS:
    set_synopsis       = 1
    get_synopsis       = 2
    set_description    = 3
    get_description    = 4
PPCODE:
{
    START_SET_OR_GET_SWITCH
        case 1: {
                const char *val = SvOK(ST(1)) ? SvPVutf8_nolen(ST(1)) : NULL;
                CFCPerlPod_set_synopsis(self, val);
            }
            break;
        case 2: {
                const char *value = CFCPerlPod_get_synopsis(self);
                retval = newSVpvn(value, strlen(value));

lib/Clownfish/CFC.xs  view on Meta::CPAN

to_perl(type, cf_var)
    CFCType *type;
    const char *cf_var;
CODE:
    RETVAL = S_sv_eat_c_string(CFCPerlTypeMap_to_perl(type, cf_var));
OUTPUT: RETVAL

void
_write_xs_typemap(hierarchy)
    CFCHierarchy *hierarchy;
PPCODE:
    CFCPerlTypeMap_write_xs_typemap(hierarchy);


MODULE = Clownfish::CFC   PACKAGE = Clownfish::CFC::Parser

SV*
new(klass)
    const char *klass;
CODE:
    if (strcmp(klass, "Clownfish::CFC::Parser")) {

lib/Clownfish/CFC.xs  view on Meta::CPAN

CODE:
    CFCFile *got = CFCParser_parse_file(self, string, file_spec);
    RETVAL = S_cfcbase_to_perlref(got);
    CFCBase_decref((CFCBase*)got);
OUTPUT: RETVAL

void
set_parcel(self, parcel)
    CFCParser *self;
    CFCParcel *parcel;
PPCODE:
    CFCParser_set_parcel(self, parcel);

void
set_class_name(self, class_name)
    CFCParser  *self;
    const char *class_name;
PPCODE:
    CFCParser_set_class_name(self, class_name);

SV*
get_parcel(self)
    CFCParser *self;
CODE:
    CFCParcel *parcel = CFCParser_get_parcel(self);
    RETVAL = S_cfcbase_to_perlref((CFCBase*)parcel);
OUTPUT: RETVAL



( run in 2.121 seconds using v1.01-cache-2.11-cpan-71847e10f99 )