Lines Matching refs:outln

204     def outln(self, text):
440 self.outln(' * ' + line)
444 self.outln('#define {0} 1'.format(name))
445 self.outln('')
448 self.outln('#define {0} 1'.format(name))
449 self.outln('')
460 self.outln('#define ' + name.ljust(self.max_enum_name_len + 3) + self.enums[name] + '')
464 self.outln('typedef {0} (GLAPIENTRY *{1})({2});'.format(func.ret_type,
471 self.outln('/* GL dispatch header.')
472 self.outln(' * This is code-generated from the GL API XML files from Khronos.')
474 self.outln(' */')
475 self.outln('')
477 self.outln('#pragma once')
479 self.outln('#include <inttypes.h>')
480 self.outln('#include <stddef.h>')
481 self.outln('')
486 self.outln('#include "epoxy/common.h"')
489 self.outln('#include "epoxy/gl.h"')
491 self.outln('#include "EGL/eglplatform.h"')
494 self.outln('#ifndef EGL_CAST')
495 self.outln('#if defined(__cplusplus)')
496 self.outln('#define EGL_CAST(type, value) (static_cast<type>(value))')
497 self.outln('#else')
498 self.outln('#define EGL_CAST(type, value) ((type) (value))')
499 self.outln('#endif')
500 self.outln('#endif')
507 self.outln('#define __khrplatform_h_ 1')
508 self.outln('typedef int8_t khronos_int8_t;')
509 self.outln('typedef int16_t khronos_int16_t;')
510 self.outln('typedef int32_t khronos_int32_t;')
511 self.outln('typedef int64_t khronos_int64_t;')
512 self.outln('typedef uint8_t khronos_uint8_t;')
513 self.outln('typedef uint16_t khronos_uint16_t;')
514 self.outln('typedef uint32_t khronos_uint32_t;')
515 self.outln('typedef uint64_t khronos_uint64_t;')
516 self.outln('typedef float khronos_float_t;')
517 self.outln('typedef long khronos_intptr_t;')
518 self.outln('typedef long khronos_ssize_t;')
519 self.outln('typedef unsigned long khronos_usize_t;')
520 self.outln('typedef uint64_t khronos_utime_nanoseconds_t;')
521 self.outln('typedef int64_t khronos_stime_nanoseconds_t;')
522 self.outln('#define KHRONOS_MAX_ENUM 0x7FFFFFFF')
523 self.outln('typedef enum {')
524 self.outln(' KHRONOS_FALSE = 0,')
525 self.outln(' KHRONOS_TRUE = 1,')
526 self.outln(' KHRONOS_BOOLEAN_ENUM_FORCE_SIZE = KHRONOS_MAX_ENUM')
527 self.outln('} khronos_boolean_enum_t;')
528 self.outln('typedef uintptr_t khronos_uintptr_t;')
531 self.outln('#include <X11/Xlib.h>')
532 self.outln('#include <X11/Xutil.h>')
535 self.outln('')
537 self.outln('')
541 self.outln('EPOXY_PUBLIC {0} (EPOXY_CALLSPEC *epoxy_{1})({2});'.format(func.ret_type,
544 self.outln('')
547 self.outln('#define {0} epoxy_{0}'.format(func.name))
550 self.outln('static {0}'.format(func.ptr_type))
551 self.outln('epoxy_{0}_resolver(void)'.format(func.wrapped_name))
552 self.outln('{')
588 self.outln(' static const enum {0}_provider providers[] = {{'.format(self.target))
590 self.outln(' {0},'.format(provider.enum))
591 self.outln(' {0}_provider_terminator'.format(self.target))
592 self.outln(' };')
594 self.outln(' static const uint32_t entrypoints[] = {')
597 self.outln(' {0} /* "{1}" */,'.format(self.entrypoint_string_offset[provider.name], provider.name))
599 self.outln(' 0 /* None */,')
600 self.outln(' };')
602 self.outln(' return {0}_provider_resolver(entrypoint_strings + {1} /* "{2}" */,'.format(self.target,
605 self.outln(' providers, entrypoints);')
608 self.outln(' return {0}_single_resolver({1}, {2} /* {3} */);'.format(self.target,
612 self.outln('}')
613 self.outln('')
623 self.outln('GEN_THUNKS({0}, ({1}), ({2}))'.format(func.wrapped_name,
627 self.outln('GEN_THUNKS_RET({0}, {1}, ({2}), ({3}))'.format(func.ret_type,
633 self.outln('{0} epoxy_{1} = epoxy_{1}_global_rewrite_ptr;'.format(func.ptr_type, func.wrapped_name))
634 self.outln('')
640 self.outln('')
641 self.outln('enum {0}_provider {{'.format(self.target))
647 self.outln(' {0}_provider_terminator = 0,'.format(self.target))
651 self.outln(' {0},'.format(enum))
652 self.outln('} PACKED;')
653 self.outln('ENDPACKED')
654 self.outln('')
663 self.outln('static const char *enum_string =')
665 self.outln(' "{0}\\0"'.format(human_name))
668 self.outln(' ;')
669 self.outln('')
673 self.outln('static const uint16_t enum_string_offsets[] = {')
674 self.outln(' -1, /* {0}_provider_terminator, unused */'.format(self.target))
677 self.outln(' {1}, /* {0} */'.format(human_name, self.enum_string_offset[human_name]))
678 self.outln('};')
679 self.outln('')
682 self.outln('static const char entrypoint_strings[] = {')
689 self.outln(" '{0}',".format(c))
690 self.outln(' 0, // {0}'.format(func.name))
691 self.outln(' 0 };')
694 self.outln('')
697 self.outln('static void *{0}_provider_resolver(const char *name,'.format(self.target))
698 self.outln(' const enum {0}_provider *providers,'.format(self.target))
699 self.outln(' const uint32_t *entrypoints)')
700 self.outln('{')
701 self.outln(' int i;')
703 self.outln(' for (i = 0; providers[i] != {0}_provider_terminator; i++) {{'.format(self.target))
704 self.outln(' const char *provider_name = enum_string + enum_string_offsets[providers[i]];')
705 self.outln(' switch (providers[i]) {')
706 self.outln('')
710 self.outln(' case {0}:'.format(enum))
711 self.outln(' if ({0})'.format(self.provider_condition[human_name]))
712 self.outln(' return {0};'.format(self.provider_loader[human_name]).format("entrypoint_strings + entrypoints[i]"))
713 self.outln(' break;')
715 self.outln(' case {0}_provider_terminator:'.format(self.target))
716 self.outln(' abort(); /* Not reached */')
717 self.outln(' }')
718 self.outln(' }')
719 self.outln('')
721 self.outln(' if (epoxy_resolver_failure_handler)')
722 self.outln(' return epoxy_resolver_failure_handler(name);')
723 self.outln('')
729 self.outln(' fprintf(stderr, "No provider of %s found. Requires one of:\\n", name);')
730 self.outln(' for (i = 0; providers[i] != {0}_provider_terminator; i++) {{'.format(self.target))
731 self.outln(' fprintf(stderr, " %s\\n", enum_string + enum_string_offsets[providers[i]]);')
732 self.outln(' }')
733 self.outln(' if (providers[0] == {0}_provider_terminator) {{'.format(self.target))
734 self.outln(' fprintf(stderr, " No known providers. This is likely a bug "')
735 self.outln(' "in libepoxy code generation\\n");')
736 self.outln(' }')
737 self.outln(' abort();')
739 self.outln('}')
740 self.outln('')
743 self.outln('EPOXY_NOINLINE static void *')
744 self.outln('{0};'.format(single_resolver_proto))
745 self.outln('')
746 self.outln('static void *')
747 self.outln('{0}'.format(single_resolver_proto))
748 self.outln('{')
749 self.outln(' enum {0}_provider providers[] = {{'.format(self.target))
750 self.outln(' provider,')
751 self.outln(' {0}_provider_terminator'.format(self.target))
752 self.outln(' };')
753 self.outln(' return {0}_provider_resolver(entrypoint_strings + entrypoint_offset,'.format(self.target))
754 self.outln(' providers, &entrypoint_offset);')
755 self.outln('}')
756 self.outln('')
761 self.outln('/* GL dispatch code.')
762 self.outln(' * This is code-generated from the GL API XML files from Khronos.')
764 self.outln(' */')
765 self.outln('')
766 self.outln('#include "config.h"')
767 self.outln('')
768 self.outln('#include <stdlib.h>')
769 self.outln('#include <string.h>')
770 self.outln('#include <stdio.h>')
771 self.outln('')
772 self.outln('#include "dispatch_common.h"')
773 self.outln('#include "epoxy/{0}.h"'.format(self.target))
774 self.outln('')
775 self.outln('#ifdef __GNUC__')
776 self.outln('#define EPOXY_NOINLINE __attribute__((noinline))')
777 self.outln('#elif defined (_MSC_VER)')
778 self.outln('#define EPOXY_NOINLINE __declspec(noinline)')
779 self.outln('#endif')
781 self.outln('struct dispatch_table {')
783 self.outln(' {0} epoxy_{1};'.format(func.ptr_type, func.wrapped_name))
784 self.outln('};')
785 self.outln('')
791 self.outln('#if USING_DISPATCH_TABLE')
792 self.outln('static inline struct dispatch_table *')
793 self.outln('get_dispatch_table(void);')
794 self.outln('')
795 self.outln('#endif')
807 self.outln('')
809 self.outln('#if USING_DISPATCH_TABLE')
811 self.outln('static struct dispatch_table resolver_table = {')
813 self.outln(' epoxy_{0}_dispatch_table_rewrite_ptr, /* {0} */'.format(func.wrapped_name))
814 self.outln('};')
815 self.outln('')
817 self.outln('uint32_t {0}_tls_index;'.format(self.target))
818 self.outln('uint32_t {0}_tls_size = sizeof(struct dispatch_table);'.format(self.target))
819 self.outln('')
821 self.outln('static inline struct dispatch_table *')
822 self.outln('get_dispatch_table(void)')
823 self.outln('{')
824 self.outln(' return TlsGetValue({0}_tls_index);'.format(self.target))
825 self.outln('}')
826 self.outln('')
828 self.outln('void')
829 self.outln('{0}_init_dispatch_table(void)'.format(self.target))
830 self.outln('{')
831 self.outln(' struct dispatch_table *dispatch_table = get_dispatch_table();')
832 self.outln(' memcpy(dispatch_table, &resolver_table, sizeof(resolver_table));')
833 self.outln('}')
834 self.outln('')
836 self.outln('void')
837 self.outln('{0}_switch_to_dispatch_table(void)'.format(self.target))
838 self.outln('{')
841 self.outln(' epoxy_{0} = epoxy_{0}_dispatch_table_thunk;'.format(func.wrapped_name))
843 self.outln('}')
844 self.outln('')
846 self.outln('#endif /* !USING_DISPATCH_TABLE */')