print_.defaults = {'_default1': ('s', 'n', 'f', 'return {WRAPPED}(d,stdout,'
                                                '"{SUBWORD}",{MAINTYPE}_format);')}
print_.original = 4
print_.original_defaults = {'_default2': 2,
                            '_default1': 1}

#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
format_ = Function('format', 'bool', ('const {SUBTYPE}*', 'i'),
                                     ('char **',          'b'),
                                     ('size_t*',          's'))
format_.wrapping = {'bool': 'snprintf(*b,*s,"%s",*i?"true":"false");return true;',
                    'char': 'cutils_fmtc_repr(*b,*s,i,1);return true;',
                    'char*': 'size_t l=strlen(*i);if(*s<l+3)if(!(*b=realloc(*b,(*s=l*2+3))))'
                             'return false;cutils_fmtc_repr(*b,*s,*i,l);return true;',
                    'default': 'snprintf(*b,*s,"%{FORMAT}",*i);return true;'}
format_.generics = NotImplemented

#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
compare_ = Function('compare', 'bool', ('const void*', 'p1'),
                                       ('const void*', 'p2'),
                                       ('size_t',      's'))
compare_.wrapping = {'float': 'return cutils_fcmp_float_compare(*(float*)p1,*(float*)p2);',
                     'double': 'return cutils_fcmp_double_compare(*(double*)p1,*(double*)p2);',
                     'long double': 'return cutils_fcmp_long_double_compare('
                                    '*(long double*)p1,*(long double*)p2);',
                     'default': 'return !memcmp(p1,p2,s);'}
compare_.generics = NotImplemented



#------------------------------------------------------------------------------#
                       ('{SUBTYPE_1}**', 'k'), ('{SUBTYPE_2}**', 'v'),
                       supported='{SUPPORT_1}')
iter_items_.wrapping = _RETURN_DEF
iter_items_.original = 3

#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
compare_ = Function('compare', 'bool', ('const void*', 'p1'),
                    ('const void*', 'p2'), ('size_t', 's'))
compare_.wrapping = {
    'float': 'return cutils_fcmp_float_compare(*(float*)p1,*(float*)p2);',
    'double': 'return cutils_fcmp_double_compare(*(double*)p1,*(double*)p2);',
    'long double': 'return cutils_fcmp_long_double_compare('
    '*(long double*)p1,*(long double*)p2);',
    'default': 'return !memcmp(p1,p2,s);'
}
compare_.generics = NotImplemented


#------------------------------------------------------------------------------#
def generate(folder, macros_dict):
    methods(base_name=HASHM,
            base_type=PROTO,
            module_prefix=PREFIX,
            sub_types=C_TYPES,
            combine_sub_types=lambda t: itertools.product(t, repeat=2),
            support_types=SUPPORTS,
            guard=GUARD,
            base_header='static_hash_map.h',
            base_source='static_hash_map.c',
            output_header=os.path.join(folder, 'cshm.h'),
            output_source=os.path.join(folder, 'cshm.c'),
Esempio n. 3
0
iter_items_ = Function('items', 'bool', ('{SUPPORT_TYPE_1}*',  'i'),
                                        ('{SUBTYPE_1}**', 'k'),
                                        ('{SUBTYPE_2}**', 'v'), supported='{SUPPORT_1}')
iter_items_.wrapping = _RETURN_DEF
iter_items_.original = 3

#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
compare_ = Function('compare', 'bool', ('const void*', 'p1'),
                                       ('const void*', 'p2'),
                                       ('size_t',      's'))
compare_.wrapping = {'float': 'return cutils_fcmp_float_compare(*(float*)p1,*(float*)p2);',
                     'double': 'return cutils_fcmp_double_compare(*(double*)p1,*(double*)p2);',
                     'long double': 'return cutils_fcmp_long_double_compare('
                                    '*(long double*)p1,*(long double*)p2);',
                     'default': 'return !memcmp(p1,p2,s);'}
compare_.generics = NotImplemented

#------------------------------------------------------------------------------#
def generate(folder, macros_dict):
    methods(base_name=HASHM,
            base_type=PROTO,
            module_prefix=PREFIX,
            sub_types=C_TYPES,
            combine_sub_types=lambda t: itertools.product(t, repeat=2),
            support_types=SUPPORTS,
            guard=GUARD,
            base_header='static_hash_map.h',
            base_source='static_hash_map.c',
            output_header=os.path.join(folder, 'cshm.h'),
            output_source=os.path.join(folder, 'cshm.c'),
            macros_dict=macros_dict,
Esempio n. 4
0
                                                '"{SUBWORD}",{MAINTYPE}_format);')}
print_.original = 4
print_.original_defaults = {'_default2': 2,
                            '_default1': 1}

#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
# TODO: is there a way to make this inline?
format_ = Function('format', 'bool', ('const {SUBTYPE}*', 'i'),
                                     ('char**',           'b'),
                                     ('size_t*',          's'))
format_.wrapping = {'bool': 'snprintf(*b,*s,"%s",*i?"true":"false");return true;',
                    'char': 'cutils_fmtc_repr(*b,*s,i,1);return true;',
                    'char*': 'size_t l=strlen(*i);if(*s<l+3)if(!(*b=realloc(*b,(*s=l*2+3))))'
                             'return false;cutils_fmtc_repr(*b,*s,*i,l);return true;',
                    'default': 'snprintf(*b,*s,"%{FORMAT}",*i);return true;'}
format_.generics = NotImplemented

#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
# TODO: is there a way to make this inline?
compare_ = Function('compare', 'bool', ('const void*', 'p1'),
                                       ('const void*', 'p2'),
                                       ('size_t',      's'))
compare_.wrapping = {'float': 'return cutils_fcmp_float_compare(*(float*)p1,*(float*)p2);',
                     'double': 'return cutils_fcmp_double_compare(*(double*)p1,*(double*)p2);',
                     'long double': 'return cutils_fcmp_long_double_compare('
                                    '*(long double*)p1,*(long double*)p2);',
                     'default': 'return !memcmp(p1,p2,s);'}
compare_.generics = NotImplemented